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":