VOL-1474: Support for GetChildDevice and proper PeerPort
Correct peerport relationship needed for get child devices
to work. Also set root device properly
Change-Id: I8320e809cfd54206ef69ba3a75c42875a6539008
diff --git a/python/adapters/brcm_openomci_onu/brcm_openomci_onu_handler.py b/python/adapters/brcm_openomci_onu/brcm_openomci_onu_handler.py
index 817a138..c9eefaf 100644
--- a/python/adapters/brcm_openomci_onu/brcm_openomci_onu_handler.py
+++ b/python/adapters/brcm_openomci_onu/brcm_openomci_onu_handler.py
@@ -172,23 +172,18 @@
def activate(self, device):
self.log.debug('function-entry', device=device)
- # first we verify that we got parent reference and proxy info
assert device.parent_id
+ assert device.parent_port_no
assert device.proxy_address.device_id
- # register for proxied messages right away
self.proxy_address = device.proxy_address
self.parent_id = device.parent_id
- # TODO NEW CORE: seems no reason for this now
- #parent_device = yield self.adapter_agent.get_device(self.parent_id)
- #if parent_device.type == 'openolt':
- # self.parent_adapter = registry('adapter_loader'). \
- # get_agent(parent_device.adapter).adapter
+ self._pon_port_number = device.parent_port_no
if self.enabled is not True:
self.log.info('activating-new-onu')
# populate what we know. rest comes later after mib sync
- device.root = True
+ device.root = False
device.vendor = 'Broadcom'
device.connect_status = ConnectStatus.REACHABLE
device.oper_status = OperStatus.DISCOVERED
@@ -283,15 +278,12 @@
self.log.debug('function-entry', device=device)
self._pon = PonPort.create(self, self._pon_port_number)
+ self._pon.add_peer(self.parent_id, self._pon_port_number)
+ self.log.debug('adding-pon-port-to-agent', pon=self._pon.get_port())
+
yield self.adapter_agent.port_created(device.id, self._pon.get_port())
- self.log.debug('added-pon-port-to-agent', pon=self._pon)
-
- # TODO NEW CORE: Need to either get logical device id from core or use regular device id
- #parent_device = yield self.adapter_agent.get_device(device.parent_id)
- #self.logical_device_id = parent_device.parent_id
-
- #self.adapter_agent.update_device(device)
+ self.log.debug('added-pon-port-to-agent', pon=self._pon.get_port())
# Create and start the OpenOMCI ONU Device Entry for this ONU
self._onu_omci_device = self.omci_agent.add_device(self.device_id,
diff --git a/python/adapters/brcm_openomci_onu/pon_port.py b/python/adapters/brcm_openomci_onu/pon_port.py
index 887d3f3..9f9755b 100644
--- a/python/adapters/brcm_openomci_onu/pon_port.py
+++ b/python/adapters/brcm_openomci_onu/pon_port.py
@@ -41,6 +41,7 @@
self._deferred = None
self._port = None
self._port_number = port_no
+ self._peers = []
self._next_entity_id = PonPort.MIN_GEM_ENTITY_ID
self._admin_state = AdminState.ENABLED
@@ -151,15 +152,19 @@
"""
self.log.debug('function-entry')
- if self._port is None:
- self._port = Port(port_no=self.port_number,
- label='PON port',
- type=Port.PON_ONU,
- admin_state=self._admin_state,
- oper_status=self._oper_status,
- peers=[])
+ self._port = Port(port_no=self.port_number,
+ label='PON port',
+ type=Port.PON_ONU,
+ admin_state=self._admin_state,
+ oper_status=self._oper_status,
+ peers=self._peers)
return self._port
+ def add_peer(self, parent_device_id, parent_port_no):
+ self.log.debug('add-peer-port', parent_device_id=parent_device_id, parent_port_no=parent_port_no)
+ new_peer = Port.PeerPort(device_id=parent_device_id, port_no=parent_port_no)
+ self._peers.extend([new_peer])
+
@inlineCallbacks
def _update_adapter_agent(self):
"""