#
-# 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.
from gi.repository import (
RwDts as rwdts,
- RwsdnYang,
+ RwsdnalYang,
RwTypes,
ProtobufC,
)
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
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]
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
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
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))
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
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
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