X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=rwlaunchpad%2Fplugins%2Frwnsm%2Frift%2Ftasklets%2Frwnsmtasklet%2Fopenmano_nsm.py;h=6c189464d96dfa71c92f5d5a342e4eb51f7a6f60;hb=7203e6545b8957eef84f60845285b3256269637e;hp=1f29d066e4105f66b9f3a8ff7e31001deec77ec5;hpb=168899eaf1e5b8b75110d1a4f2b9d739644370e4;p=osm%2FSO.git diff --git a/rwlaunchpad/plugins/rwnsm/rift/tasklets/rwnsmtasklet/openmano_nsm.py b/rwlaunchpad/plugins/rwnsm/rift/tasklets/rwnsmtasklet/openmano_nsm.py index 1f29d066..6c189464 100644 --- a/rwlaunchpad/plugins/rwnsm/rift/tasklets/rwnsmtasklet/openmano_nsm.py +++ b/rwlaunchpad/plugins/rwnsm/rift/tasklets/rwnsmtasklet/openmano_nsm.py @@ -153,7 +153,7 @@ class VnfrConsoleOperdataDtsHandler(object): class OpenmanoVnfr(object): - def __init__(self, log, loop, cli_api, vnfr): + def __init__(self, log, loop, cli_api, vnfr, nsd): self._log = log self._loop = loop self._cli_api = cli_api @@ -164,6 +164,8 @@ class OpenmanoVnfr(object): self._created = False + self.nsd = nsd + @property def vnfd(self): return rift2openmano.RiftVNFD(self._vnfr.vnfd) @@ -183,7 +185,7 @@ class OpenmanoVnfr(object): @property def openmano_vnfd(self): self._log.debug("Converting vnfd %s from rift to openmano", self.vnfd.id) - openmano_vnfd = rift2openmano.rift2openmano_vnfd(self.vnfd) + openmano_vnfd = rift2openmano.rift2openmano_vnfd(self.vnfd, self.nsd) return openmano_vnfd @property @@ -414,6 +416,7 @@ class OpenmanoNsr(object): @asyncio.coroutine def add_vlr(self, vlr): self._vlrs.append(vlr) + yield from self._publisher.publish_vlr(None, vlr.vlr_msg) yield from asyncio.sleep(1, loop=self._loop) @asyncio.coroutine @@ -426,11 +429,12 @@ class OpenmanoNsr(object): self._cli_api.ns_vim_network_delete, vlr.name, vlr.om_datacenter_name) + yield from self._publisher.unpublish_vlr(None, vlr.vlr_msg) yield from asyncio.sleep(1, loop=self._loop) @asyncio.coroutine def add_vnfr(self, vnfr): - vnfr = OpenmanoVnfr(self._log, self._loop, self._cli_api, vnfr) + vnfr = OpenmanoVnfr(self._log, self._loop, self._cli_api, vnfr, nsd=self.nsd) yield from vnfr.create() self._vnfrs.append(vnfr) @@ -791,6 +795,7 @@ class OpenmanoNsPlugin(rwnsmplugin.NsmPluginBase): self._cli_api = None self._http_api = None self._openmano_nsrs = {} + self._vnfr_uptime_tasks = {} self._set_ro_account(ro_account) @@ -857,6 +862,18 @@ class OpenmanoNsPlugin(rwnsmplugin.NsmPluginBase): self._log.debug("Attempting to publish openmano vnf: %s", vnfr_msg) with self._dts.transaction() as xact: yield from self._publisher.publish_vnfr(xact, vnfr_msg) + self._log.debug("Creating a task to update uptime for vnfr: %s", vnfr.id) + self._vnfr_uptime_tasks[vnfr.id] = self._loop.create_task(self.vnfr_uptime_update(vnfr)) + + def vnfr_uptime_update(self, vnfr): + try: + vnfr_ = RwVnfrYang.YangData_Vnfr_VnfrCatalog_Vnfr.from_dict({'id': vnfr.id}) + while True: + vnfr_.uptime = int(time.time()) - vnfr._create_time + yield from self._publisher.publish_vnfr(None, vnfr_) + yield from asyncio.sleep(2, loop=self._loop) + except asyncio.CancelledError: + self._log.debug("Received cancellation request for vnfr_uptime_update task") @asyncio.coroutine def instantiate_vl(self, nsr, vlr): @@ -877,6 +894,7 @@ class OpenmanoNsPlugin(rwnsmplugin.NsmPluginBase): """ nsr_id = nsr.id openmano_nsr = self._openmano_nsrs[nsr_id] + yield from openmano_nsr.terminate() yield from openmano_nsr.delete() @@ -892,7 +910,8 @@ class OpenmanoNsPlugin(rwnsmplugin.NsmPluginBase): """ Terminate the network service """ - pass + if vnfr.id in self._vnfr_uptime_tasks: + self._vnfr_uptime_tasks[vnfr.id].cancel() @asyncio.coroutine def terminate_vl(self, vlr):