New event handling imported from att-workflow-driver

Change-Id: I692e4eb7604a42d47416474fac1c45dbf0ccfbe1
diff --git a/xos/synchronizer/event_steps/onu_event.py b/xos/synchronizer/event_steps/onu_event.py
index 3a18c26..8d64254 100644
--- a/xos/synchronizer/event_steps/onu_event.py
+++ b/xos/synchronizer/event_steps/onu_event.py
@@ -16,6 +16,8 @@
 
 import json
 from xossynchronizer.event_steps.eventstep import EventStep
+from helpers import TtHelpers
+
 
 class ONUEventStep(EventStep):
     topics = ["onu.events"]
@@ -26,31 +28,16 @@
     def __init__(self, *args, **kwargs):
         super(ONUEventStep, self).__init__(*args, **kwargs)
 
-    def get_tt_si(self, event):
-        try:
-            tt_si = self.model_accessor.TtWorkflowDriverServiceInstance.objects.get(serial_number=event["serialNumber"])
-            tt_si.no_sync = False;
-            tt_si.uni_port_id = long(event["portNumber"])
-            tt_si.of_dpid = event["deviceId"]
-            self.log.debug("onu.events: Found existing TtWorkflowDriverServiceInstance", si=tt_si)
-        except IndexError:
-            # create an TtWorkflowDriverServiceInstance, the validation will be triggered in the corresponding sync step
-            tt_si = self.model_accessor.TtWorkflowDriverServiceInstance(
-                serial_number=event["serialNumber"],
-                of_dpid=event["deviceId"],
-                uni_port_id=long(event["portNumber"]),
-                owner=self.model_accessor.TtWorkflowDriverService.objects.first() # we assume there is only one TtWorkflowDriverService
-            )
-            self.log.debug("onu.events: Created new TtWorkflowDriverServiceInstance", si=tt_si)
-        return tt_si
-
     def process_event(self, event):
         value = json.loads(event.value)
         self.log.info("onu.events: received event", value=value)
 
         if value["status"] == "activated":
             self.log.info("onu.events: activated onu", value=value)
-            tt_si = self.get_tt_si(value)
+            tt_si = TtHelpers.find_or_create_tt_si(self.model_accessor, self.log, value)
+            tt_si.no_sync = False
+            tt_si.uni_port_id = long(value["portNumber"])
+            tt_si.of_dpid = value["deviceId"]
             tt_si.onu_state = "ENABLED"
             tt_si.save_changed_fields(always_update_timestamp=True)
         elif value["status"] == "disabled":