+ def create_virual_link_event(self, event_id, event_msg):
+ """ Update Virtual Link Event """
+ self._log.debug("Creating Virtual Link Event id [%s], msg [%s]",
+ event_id, event_msg)
+
+ @asyncio.coroutine
+ def update_virual_link_event(self, event_id, event_msg):
+ """ Update Virtual Link Event """
+ self._log.debug("Updating Virtual Link Event id [%s], msg [%s]",
+ event_id, event_msg)
+ # event id and vlr_id are the same.
+ # Use event id to look up the VLR and update and publish state change
+ vlr = None
+
+ if event_id in self._vlrs:
+ vlr = self._vlrs[event_id]
+
+ if vlr is None:
+ self._log.error("Received VLR Event notifcation for unknown VLR - event-id:%s",
+ event_id)
+ return
+
+ if event_msg.resource_info.resource_state == 'active':
+ with self._dts.transaction(flags=0) as xact:
+ yield from vlr.ready(event_msg, xact)
+ elif event_msg.resource_info.resource_state == 'failed':
+ with self._dts.transaction(flags=0) as xact:
+ if event_msg.resource_info.resource_errors:
+ vlr._state_failed_reason = str(event_msg.resource_info.resource_errors)
+ yield from vlr.failed(event_msg, xact)
+ else:
+ self._log.warning("Receieved unknown resource state %s for event id %s vlr:%s",
+ event_msg.resource_info.resource_state, event_id, vlr.name)
+
+ def delete_virual_link_event(self, event_id):
+ """ Delete Virtual Link Event """
+ self._log.debug("Deleting Virtual Link Event id [%s]",
+ event_id)
+
+
+class VnsProject(ManoProject):
+
+ def __init__(self, name, tasklet, **kw):
+ super(VnsProject, self).__init__(tasklet.log, name)
+ self.update(tasklet)
+
+ self._vlr_handler = None
+ self._vnsm = None
+ # A mapping of instantiated vlr_id's to VirtualLinkRecord objects
+ self._vlrs = {}
+
+ @asyncio.coroutine
+ def register (self):
+ try:
+ self._vnsm = VnsManager(dts=self._dts,
+ log=self.log,
+ log_hdl=self.log_hdl,
+ loop=self.loop,
+ project=self)
+ yield from self._vnsm.run()
+ except Exception as e:
+ self.log.exception("VNS Task failed to run", e)
+
+ def deregister(self):
+ self._log.debug("De-register project {}".format(self.name))
+ self._vnsm.deregister()
+