X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=rwlaunchpad%2Fplugins%2Frwresmgr%2Frift%2Ftasklets%2Frwresmgrtasklet%2Frwresmgr_config.py;h=8f1a19c815cbd03201db4eee8fdb02f60604e516;hb=f314b4af9744068a7ed7a6a6314220c3aa857523;hp=5035b1862054150cfa3ae6dc67f03824e055d772;hpb=6f1a3fe149e4a6b9803382cb299c902f4cf58ec9;p=osm%2FSO.git diff --git a/rwlaunchpad/plugins/rwresmgr/rift/tasklets/rwresmgrtasklet/rwresmgr_config.py b/rwlaunchpad/plugins/rwresmgr/rift/tasklets/rwresmgrtasklet/rwresmgr_config.py index 5035b186..8f1a19c8 100644 --- a/rwlaunchpad/plugins/rwresmgr/rift/tasklets/rwresmgrtasklet/rwresmgr_config.py +++ b/rwlaunchpad/plugins/rwresmgr/rift/tasklets/rwresmgrtasklet/rwresmgr_config.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. @@ -51,12 +51,27 @@ class ResourceMgrConfig(object): self._parent = parent self._cloud_sub = None + self._res_sub = None + self._project = parent._project @asyncio.coroutine def register(self): yield from self.register_resource_pool_operational_data() - self.register_cloud_account_config() + yield from self.register_cloud_account_config() + + def deregister(self): + self._log.debug("De-register for project {}".format(self._project.name)) + if self._cloud_sub: + self._cloud_sub.deregister() + self._cloud_sub = None + + if self._res_sub: + self._res_sub.delete_element( + self._project.add_project(ResourceMgrConfig.XPATH_POOL_OPER_DATA)) + self._res_sub.deregister() + self._res_sub = None + @asyncio.coroutine def register_cloud_account_config(self): def on_add_cloud_account_apply(account): self._log.debug("Received on_add_cloud_account: %s", account) @@ -78,16 +93,17 @@ class ResourceMgrConfig(object): ) self._cloud_sub = rift.mano.cloud.CloudAccountConfigSubscriber( - self._dts, self._log, self._rwlog_hdl, cloud_callbacks - ) - self._cloud_sub.register() + self._dts, self._log, self._rwlog_hdl, + self._project, cloud_callbacks + ) + yield from self._cloud_sub.register() @asyncio.coroutine def register_resource_pool_operational_data(self): @asyncio.coroutine def on_prepare(xact_info, action, ks_path, msg): self._log.debug("ResourceMgr providing resource-pool information") - msg = RwResourceMgrYang.ResourcePoolRecords() + msg = RwResourceMgrYang.YangData_RwProject_Project_ResourcePoolRecords() cloud_accounts = self._parent.get_cloud_account_names() for cloud_account_name in cloud_accounts: @@ -102,14 +118,14 @@ class ResourceMgrConfig(object): cloud_account_msg.records.append(pool_info) xact_info.respond_xpath(rwdts.XactRspCode.ACK, - ResourceMgrConfig.XPATH_POOL_OPER_DATA, + self._project.add_project(ResourceMgrConfig.XPATH_POOL_OPER_DATA), msg=msg,) - self._log.debug("Registering for Resource Mgr resource-pool-record using xpath: %s", - ResourceMgrConfig.XPATH_POOL_OPER_DATA) + xpath = self._project.add_project(ResourceMgrConfig.XPATH_POOL_OPER_DATA) + self._log.debug("Registering for Resource Mgr resource-pool-record using xpath: {}". + format(xpath)) handler=rift.tasklets.DTS.RegistrationHandler(on_prepare=on_prepare) - response = yield from self._dts.register(xpath=ResourceMgrConfig.XPATH_POOL_OPER_DATA, - handler=handler, - flags=rwdts.Flag.PUBLISHER) - + self._res_sub = yield from self._dts.register(xpath=xpath, + handler=handler, + flags=rwdts.Flag.PUBLISHER)