New event handling imported from att-workflow-driver
Change-Id: I692e4eb7604a42d47416474fac1c45dbf0ccfbe1
diff --git a/xos/synchronizer/helpers.py b/xos/synchronizer/helpers.py
index e67890a..a300892 100644
--- a/xos/synchronizer/helpers.py
+++ b/xos/synchronizer/helpers.py
@@ -58,19 +58,21 @@
return [True, "ONU has been validated"]
@staticmethod
- def get_onu_sn(model_accessor, log, event):
- olt_service = model_accessor.VOLTService.objects.first()
- onu_sn = olt_service.get_onu_sn_from_openflow(event["deviceId"], event["portNumber"])
- if not onu_sn or onu_sn is None:
- log.exception("Cannot find onu serial number for this event", kafka_event=event)
- raise Exception("Cannot find onu serial number for this event")
-
- return onu_sn
-
- @staticmethod
- def get_si_by_sn(model_accessor, log, serial_number):
+ def find_or_create_tt_si(model_accessor, log, event):
try:
- return model_accessor.TtWorkflowDriverServiceInstance.objects.get(serial_number=serial_number)
+ tt_si = model_accessor.TtWorkflowDriverServiceInstance.objects.get(
+ serial_number=event["serialNumber"]
+ )
+ log.debug("TtHelpers: Found existing TtWorkflowDriverServiceInstance", si=tt_si)
except IndexError:
- log.exception("Cannot find tt-workflow-driver service instance for this serial number", serial_number=serial_number)
- raise Exception("Cannot find tt-workflow-driver service instance for this serial number %s", serial_number)
\ No newline at end of file
+ # create a TtWorkflowDriverServiceInstance, the validation will be
+ # triggered in the corresponding sync step
+ tt_si = model_accessor.TtWorkflowDriverServiceInstance(
+ serial_number=event["serialNumber"],
+ of_dpid=event["deviceId"],
+ uni_port_id=long(event["portNumber"]),
+ # we assume there is only one TtWorkflowDriverService
+ owner=model_accessor.TtWorkflowDriverService.objects.first()
+ )
+ log.debug("TtHelpers: Created new TtWorkflowDriverServiceInstance", si=tt_si)
+ return tt_si