[CORD-3131] Reading uni_port_id from voltha based info
Change-Id: I0fecf37b3fe1286b12f50fc97046164eb5a9bf70
diff --git a/xos/synchronizer/steps/sync_volt_service_instance.py b/xos/synchronizer/steps/sync_volt_service_instance.py
index 98a5b92..2598f60 100644
--- a/xos/synchronizer/steps/sync_volt_service_instance.py
+++ b/xos/synchronizer/steps/sync_volt_service_instance.py
@@ -20,7 +20,7 @@
import requests
from multistructlog import create_logger
from requests.auth import HTTPBasicAuth
-from synchronizers.new_base.modelaccessor import VOLTService, VOLTServiceInstance, ServiceInstance, ONUDevice, model_accessor
+from synchronizers.new_base.modelaccessor import VOLTService, VOLTServiceInstance, ServiceInstance, model_accessor
from synchronizers.new_base.syncstep import SyncStep, DeferredException
from xosconfig import Config
@@ -41,14 +41,10 @@
c_tag = si.get_westbound_service_instance_properties("c_tag")
- # TODO understand if this can have a better modeling (VOLTHA should know this info for an ONU without manually inserting it in the subscriber)
- uni_port_id = si.get_westbound_service_instance_properties("uni_port_id")
+ olt_device = o.onu_device.pon_port.olt_device
- onu_device_name = si.get_westbound_service_instance_properties("onu_device")
-
- onu_device = ONUDevice.objects.get(serial_number=onu_device_name)
-
- olt_device = onu_device.pon_port.olt_device
+ # NOTE each ONU has only one UNI port!
+ uni_port_id = o.onu_device.uni_ports.first().port_no
if not olt_device.dp_id:
raise DeferredException("Waiting for OLTDevice %s to be synchronized" % olt_device.name)
diff --git a/xos/synchronizer/steps/test_sync_volt_service_instance.py b/xos/synchronizer/steps/test_sync_volt_service_instance.py
index da77395..6fc377a 100644
--- a/xos/synchronizer/steps/test_sync_volt_service_instance.py
+++ b/xos/synchronizer/steps/test_sync_volt_service_instance.py
@@ -76,12 +76,6 @@
self.sync_step = SyncVOLTServiceInstance
- # create a mock service instance
- o = Mock()
- o.id = 1
- o.owner_id = "volt_service"
- o.tologdict.return_value = {}
-
volt_service = Mock()
volt_service.onos_voltha_url = "onos_voltha_url"
volt_service.onos_voltha_port = 4321
@@ -91,10 +85,21 @@
si = Mock()
si.get_westbound_service_instance_properties = mock_get_westbound_service_instance_properties
+ uni_port = Mock()
+ uni_port.port_no = "uni_port_id"
+
onu_device = Mock()
onu_device.name = "BRCM1234"
onu_device.pon_port.olt_device.dp_id = None
onu_device.pon_port.olt_device.name = "Test OLT Device"
+ onu_device.uni_ports.first.return_value = uni_port
+
+ # create a mock service instance
+ o = Mock()
+ o.id = 1
+ o.owner_id = "volt_service"
+ o.onu_device = onu_device
+ o.tologdict.return_value = {}
self.o = o
self.si = si
@@ -110,10 +115,8 @@
self.onu_device.pon_port.olt_device.dp_id = None
with patch.object(ServiceInstance.objects, "get") as service_instance_mock, \
- patch.object(ONUDevice.objects, "get") as onu_device_mock, \
patch.object(VOLTService.objects, "get") as olt_service_mock:
service_instance_mock.return_value = self.si
- onu_device_mock.return_value = self.onu_device
olt_service_mock.return_value = self.volt_service
with self.assertRaises(DeferredException) as e:
@@ -129,10 +132,8 @@
self.onu_device.pon_port.olt_device.dp_id = "of:dp_id"
with patch.object(ServiceInstance.objects, "get") as service_instance_mock, \
- patch.object(ONUDevice.objects, "get") as onu_device_mock, \
patch.object(VOLTService.objects, "get") as olt_service_mock:
service_instance_mock.return_value = self.si
- onu_device_mock.return_value = self.onu_device
olt_service_mock.return_value = self.volt_service
self.sync_step().sync_record(self.o)
@@ -145,10 +146,8 @@
self.onu_device.pon_port.olt_device.dp_id = "of:dp_id"
with patch.object(ServiceInstance.objects, "get") as service_instance_mock, \
- patch.object(ONUDevice.objects, "get") as onu_device_mock, \
patch.object(VOLTService.objects, "get") as olt_service_mock:
service_instance_mock.return_value = self.si
- onu_device_mock.return_value = self.onu_device
olt_service_mock.return_value = self.volt_service
with self.assertRaises(Exception) as e: