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