Merge pull request #26 from JoProvost/simple_pdu

Let PDU outlets notify the core directly
This commit is contained in:
stephanerobert 2016-10-21 11:45:39 -04:00 committed by GitHub
commit 022a9ecd9e
4 changed files with 21 additions and 25 deletions

View File

@ -45,18 +45,25 @@ class PDUOutletStates(BasePDUOutletStates):
class PDUOutlet(object):
states = PDUOutletStates()
def __init__(self, outlet_number, pdu):
def __init__(self, pdu_name, outlet_number, core):
self.pdu_name = pdu_name
self.outlet_number = outlet_number
self.pdu = pdu
self.core = core
self.oid = None
@property
def state(self):
return self.pdu.get_outlet_state(self.outlet_number)
return self.states.from_core(
self.core.get_pdu_outlet_state(
pdu=self.pdu_name,
outlet=self.outlet_number))
@state.setter
def state(self, state):
self.pdu.set_outlet_state(self.outlet_number, state)
self.core.pdu_outlet_state_changed(
pdu=self.pdu_name,
outlet=self.outlet_number,
state=self.states.to_core(state))
class PDU(object):
@ -66,24 +73,12 @@ class PDU(object):
def __init__(self, name, core):
self.name = name
self.core = core
self.oids = [
self.outlet_class(outlet_number=o + self.outlet_index_start,
pdu=self,
self.outlet_class(pdu_name=self.name,
outlet_number=o + self.outlet_index_start,
core=core,
) for o in range(self.outlet_count)
]
self.oid_mapping = {oid.oid: oid for oid in self.oids}
def set_outlet_state(self, outlet_number, value):
self.core.pdu_outlet_state_changed(
pdu=self.name,
outlet=outlet_number,
state=self.outlet_class.states.to_core(value))
def get_outlet_state(self, outlet_number):
return self.outlet_class.states.from_core(
self.core.get_pdu_outlet_state(
pdu=self.name,
outlet=outlet_number))

View File

@ -42,9 +42,9 @@ class APCRackPDUOutletStates(BasePDUOutletStates):
class APCRackPDUOutlet(PDUOutlet):
states = APCRackPDUOutletStates()
def __init__(self, outlet_number, pdu):
def __init__(self, pdu_name, outlet_number, core):
super(APCRackPDUOutlet, self).__init__(
outlet_number, pdu)
pdu_name, outlet_number, core)
self.oid = rPDU_outlet_control_outlet_command + (self.outlet_number, )

View File

@ -40,9 +40,9 @@ class BaytechMRP27PDUOutletStates(BasePDUOutletStates):
class BaytechMRP27PDUOutlet(PDUOutlet):
states = BaytechMRP27PDUOutletStates()
def __init__(self, outlet_number, pdu):
def __init__(self, pdu_name, outlet_number, core):
super(BaytechMRP27PDUOutlet, self).__init__(
outlet_number, pdu)
pdu_name, outlet_number, core)
self.oid = sBTA_modules_RPC_outlet_state + (1, self.outlet_number)

View File

@ -37,8 +37,9 @@ class TestPDU(PDUTestCase):
def test_get_valid_oid_wrong_community(self):
self.core_mock.get_pdu_outlet_state.return_value = core.POWER_ON
self.pdu.oid_mapping[enterprises + (88, 1)] = \
pdu.PDUOutlet(outlet_number=1,
pdu=self.pdu)
pdu.PDUOutlet(pdu_name=self.pdu.name,
outlet_number=1,
core=self.core_mock)
self.assertEqual(self.pdu.outlet_class.states.ON,
self.snmp_get(enterprises + (88, 1)))