X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=rwlaunchpad%2Fplugins%2Frwnsm%2Frift%2Ftasklets%2Frwnsmtasklet%2Frwvnffgmgr.py;h=0b04efd992f43745db51eb4a95e7a3a1df534ec0;hb=a3bb91f092d378448cb870eccd45d43865de143c;hp=cf83612054c77ea318b446a6f462f2c7dafaaf55;hpb=f5cc4bef2e58d556749a043a21b94800de688d3e;p=osm%2FSO.git diff --git a/rwlaunchpad/plugins/rwnsm/rift/tasklets/rwnsmtasklet/rwvnffgmgr.py b/rwlaunchpad/plugins/rwnsm/rift/tasklets/rwnsmtasklet/rwvnffgmgr.py index cf836120..0b04efd9 100755 --- a/rwlaunchpad/plugins/rwnsm/rift/tasklets/rwnsmtasklet/rwvnffgmgr.py +++ b/rwlaunchpad/plugins/rwnsm/rift/tasklets/rwnsmtasklet/rwvnffgmgr.py @@ -1,6 +1,6 @@ # -# Copyright 2016 RIFT.IO Inc +# Copyright 2016-2017 RIFT.IO Inc # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -19,7 +19,7 @@ import asyncio from gi.repository import ( RwDts as rwdts, - RwsdnYang, + RwsdnalYang, RwTypes, ProtobufC, ) @@ -61,25 +61,31 @@ class VnffgrUpdateFailed(Exception): class VnffgMgr(object): """ Implements the interface to backend plugins to fetch topology """ - def __init__(self, dts, log, log_hdl, loop): + def __init__(self, dts, log, log_hdl, loop, project): self._account = {} self._dts = dts self._log = log self._log_hdl = log_hdl self._loop = loop + self._project = project self._sdn = {} - self._sdn_handler = SDNAccountDtsHandler(self._dts,self._log,self) + self._sdn_handler = SDNAccountDtsHandler(self._dts, self._log, self) self._vnffgr_list = {} @asyncio.coroutine def register(self): yield from self._sdn_handler.register() + def deregister(self): + self._log.debug("Project {} de-register vnffgmgr". + format(self._project.name)) + self._sdn_handler.deregister() + def set_sdn_account(self,account): if (account.name in self._account): self._log.error("SDN Account is already set") else: - sdn_account = RwsdnYang.SDNAccount() + sdn_account = RwsdnalYang.SDNAccount() sdn_account.from_dict(account.as_dict()) sdn_account.name = account.name self._account[account.name] = sdn_account @@ -102,7 +108,7 @@ class VnffgMgr(object): def get_sdn_account(self, name): """ - Creates an object for class RwsdnYang.SdnAccount() + Creates an object for class RwsdnalYang.SdnAccount() """ if (name in self._account): return self._account[name] @@ -172,7 +178,7 @@ class VnffgMgr(object): sdn_plugin = self.get_sdn_plugin(sdn_acct_name) for rsp in vnffgr.rsp: - vnffg = RwsdnYang.VNFFGChain() + vnffg = RwsdnalYang.VNFFGChain() vnffg.name = rsp.name vnffg.classifier_name = rsp.classifier_name @@ -230,7 +236,7 @@ class VnffgMgr(object): else: self._log.error("No RSP wiht name %s found; Skipping classifier %s creation",classifier.rsp_id_ref,classifier.name) continue - vnffgcl = RwsdnYang.VNFFGClassifier() + vnffgcl = RwsdnalYang.VNFFGClassifier() vnffgcl.name = classifier.name vnffgcl.rsp_name = cl_rsp_name vnffgcl.port_id = vnffgr_cl[0].port_id @@ -329,8 +335,10 @@ class SDNAccountDtsHandler(object): self._dts = dts self._log = log self._parent = parent + self._project = self._parent._project self._sdn_account = {} + self._reg = None def _set_sdn_account(self, account): self._log.info("Setting sdn account: {}".format(account)) @@ -380,9 +388,11 @@ class SDNAccountDtsHandler(object): if msg.has_field("account_type"): errmsg = "Cannot update SDN account's account-type." self._log.error(errmsg) - xact_info.send_error_xpath(RwTypes.RwStatus.FAILURE, - SDNAccountDtsHandler.XPATH, - errmsg) + xact_info.send_error_xpath( + RwTypes.RwStatus.FAILURE, + self._project.add_project(SDNAccountDtsHandler.XPATH), + errmsg + ) raise SdnAccountError(errmsg) # Update the sdn account record @@ -392,9 +402,11 @@ class SDNAccountDtsHandler(object): if not msg.has_field('account_type'): errmsg = "New SDN account must contain account-type field." self._log.error(errmsg) - xact_info.send_error_xpath(RwTypes.RwStatus.FAILURE, - SDNAccountDtsHandler.XPATH, - errmsg) + xact_info.send_error_xpath( + RwTypes.RwStatus.FAILURE, + self._project.add_project(SDNAccountDtsHandler.XPATH), + errmsg + ) raise SdnAccountError(errmsg) # Set the sdn account record @@ -403,20 +415,23 @@ class SDNAccountDtsHandler(object): xact_info.respond_xpath(rwdts.XactRspCode.ACK) - self._log.debug("Registering for Sdn Account config using xpath: %s", - SDNAccountDtsHandler.XPATH, - ) + xpath = self._project.add_project(SDNAccountDtsHandler.XPATH) + self._log.debug("Registering for Sdn Account config using xpath: {}". + format(xpath)) acg_handler = rift.tasklets.AppConfGroup.Handler( on_apply=apply_config, ) with self._dts.appconf_group_create(acg_handler) as acg: - acg.register( - xpath=SDNAccountDtsHandler.XPATH, - flags=rwdts.Flag.SUBSCRIBER | rwdts.Flag.DELTA_READY, - on_prepare=on_prepare - ) - - - + self._reg = acg.register( + xpath=xpath, + flags=rwdts.Flag.SUBSCRIBER | rwdts.Flag.DELTA_READY, + on_prepare=on_prepare + ) + + def deregister(self): + self._log.debug("De-register SDN Account handler in vnffg for project". + format(self._project.name)) + self._reg.deregister() + self._reg = None