summaryrefslogtreecommitdiff
path: root/ironic/drivers/modules/snmp.py
diff options
context:
space:
mode:
authorMathieu Mitchell <mmitchell@iweb.com>2015-07-02 17:59:39 -0400
committerMathieu Mitchell <mmitchell@iweb.com>2015-07-27 11:35:12 -0400
commit61f2f075694b88f1f5dd8cc8f055d868640ab3d3 (patch)
treec186213096ae2652bd3e10f0d1276fe6ea49e070 /ironic/drivers/modules/snmp.py
parent7f88443bce1c236da94a24eca577d4a579466016 (diff)
downloadironic-61f2f075694b88f1f5dd8cc8f055d868640ab3d3.tar.gz
Introduce support for APC MasterSwitchPlus and Rack PDU
Provide 3 new snmp_driver values for different APC product families: - apc_masterswitch - apc_masterswitchplus - apc_rackpdu The "apc" snmp_driver is still supported and maps to the MasterSwitch driver to avoid breaking backwards compatibility. Different APC product families support different OIDs for power control. - APC MasterSwitch uses sPDUOutletCtl - APC MasterSwitchPlus uses sPDUOutletControlMSPOutletCommand - APC Rack PDU uses rPDUOutletControlOutletCommand Change-Id: I9d8724543d7da7b1c9cdc180c3396d131ed52615 Closes-Bug: #1471025
Diffstat (limited to 'ironic/drivers/modules/snmp.py')
-rw-r--r--ironic/drivers/modules/snmp.py37
1 files changed, 33 insertions, 4 deletions
diff --git a/ironic/drivers/modules/snmp.py b/ironic/drivers/modules/snmp.py
index 1f62ff36c..66259e75c 100644
--- a/ironic/drivers/modules/snmp.py
+++ b/ironic/drivers/modules/snmp.py
@@ -398,10 +398,10 @@ class SNMPDriverAten(SNMPDriverSimple):
return self.oid_enterprise + self.oid_device + (outlet, 0,)
-class SNMPDriverAPC(SNMPDriverSimple):
- """SNMP driver class for APC PDU devices.
+class SNMPDriverAPCMasterSwitch(SNMPDriverSimple):
+ """SNMP driver class for APC MasterSwitch PDU devices.
- SNMP objects for APC PDU:
+ SNMP objects for APC SNMPDriverAPCMasterSwitch PDU:
1.3.6.1.4.1.318.1.1.4.4.2.1.3 sPDUOutletCtl
Values: 1=On, 2=Off, 3=PowerCycle, [...more options follow]
"""
@@ -411,6 +411,32 @@ class SNMPDriverAPC(SNMPDriverSimple):
value_power_off = 2
+class SNMPDriverAPCMasterSwitchPlus(SNMPDriverSimple):
+ """SNMP driver class for APC MasterSwitchPlus PDU devices.
+
+ SNMP objects for APC SNMPDriverAPCMasterSwitchPlus PDU:
+ 1.3.6.1.4.1.318.1.1.6.5.1.1.5 sPDUOutletControlMSPOutletCommand
+ Values: 1=On, 3=Off, [...more options follow]
+ """
+
+ oid_device = (318, 1, 1, 6, 5, 1, 1, 5)
+ value_power_on = 1
+ value_power_off = 3
+
+
+class SNMPDriverAPCRackPDU(SNMPDriverSimple):
+ """SNMP driver class for APC RackPDU devices.
+
+ SNMP objects for APC SNMPDriverAPCMasterSwitch PDU:
+ # 1.3.6.1.4.1.318.1.1.12.3.3.1.1.4 rPDUOutletControlOutletCommand
+ Values: 1=On, 2=Off, 3=PowerCycle, [...more options follow]
+ """
+
+ oid_device = (318, 1, 1, 12, 3, 3, 1, 1, 4)
+ value_power_on = 1
+ value_power_off = 2
+
+
class SNMPDriverCyberPower(SNMPDriverSimple):
"""SNMP driver class for CyberPower PDU devices.
@@ -522,7 +548,10 @@ class SNMPDriverEatonPower(SNMPDriverBase):
# A dictionary of supported drivers keyed by snmp_driver attribute
DRIVER_CLASSES = {
- 'apc': SNMPDriverAPC,
+ 'apc': SNMPDriverAPCMasterSwitch,
+ 'apc_masterswitch': SNMPDriverAPCMasterSwitch,
+ 'apc_masterswitchplus': SNMPDriverAPCMasterSwitchPlus,
+ 'apc_rackpdu': SNMPDriverAPCRackPDU,
'aten': SNMPDriverAten,
'cyberpower': SNMPDriverCyberPower,
'eatonpower': SNMPDriverEatonPower,