Merge pull request #26 from JoProvost/simple_pdu
Let PDU outlets notify the core directly
This commit is contained in:
commit
022a9ecd9e
@ -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))
|
||||
|
@ -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, )
|
||||
|
||||
|
||||
|
@ -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)
|
||||
|
||||
|
||||
|
@ -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)))
|
||||
|
Loading…
x
Reference in New Issue
Block a user