diff options
author | Mathieu Mitchell <mmitchell@iweb.com> | 2015-07-02 17:59:39 -0400 |
---|---|---|
committer | Mathieu Mitchell <mmitchell@iweb.com> | 2015-07-27 11:35:12 -0400 |
commit | 61f2f075694b88f1f5dd8cc8f055d868640ab3d3 (patch) | |
tree | c186213096ae2652bd3e10f0d1276fe6ea49e070 /ironic/drivers/modules/snmp.py | |
parent | 7f88443bce1c236da94a24eca577d4a579466016 (diff) | |
download | ironic-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.py | 37 |
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, |