X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=rwlaunchpad%2Fplugins%2Frwresmgr%2Frift%2Ftasklets%2Frwresmgrtasklet%2Frwresmgrtasklet.py;h=929e483668082f29ad4372dd0b14185ff4c6dadc;hb=a3bb91f092d378448cb870eccd45d43865de143c;hp=cdcadc73b013fe60f8ace968bb73bee5d36d83c0;hpb=255ff03a528a3090ce7f46f0a63b65da3e6f9bcf;p=osm%2FSO.git diff --git a/rwlaunchpad/plugins/rwresmgr/rift/tasklets/rwresmgrtasklet/rwresmgrtasklet.py b/rwlaunchpad/plugins/rwresmgr/rift/tasklets/rwresmgrtasklet/rwresmgrtasklet.py index cdcadc73..929e4836 100755 --- a/rwlaunchpad/plugins/rwresmgr/rift/tasklets/rwresmgrtasklet/rwresmgrtasklet.py +++ b/rwlaunchpad/plugins/rwresmgr/rift/tasklets/rwresmgrtasklet/rwresmgrtasklet.py @@ -34,6 +34,10 @@ from gi.repository import ( ) import rift.tasklets +from rift.mano.utils.project import ( + ManoProject, + ProjectHandler, +) from . import rwresmgr_core as Core from . import rwresmgr_config as Config @@ -41,11 +45,13 @@ from . import rwresmgr_events as Event class ResourceManager(object): - def __init__(self, log, log_hdl, loop, dts): + def __init__(self, log, log_hdl, loop, dts, project): self._log = log self._log_hdl = log_hdl self._loop = loop self._dts = dts + self._project = project + self.config_handler = Config.ResourceMgrConfig(self._dts, self._log, self._log_hdl, self._loop, self) self.event_handler = Event.ResourceMgrEvent(self._dts, self._log, self._loop, self) self.core = Core.ResourceMgrCore(self._dts, self._log, self._log_hdl, self._loop, self) @@ -55,6 +61,10 @@ class ResourceManager(object): yield from self.config_handler.register() yield from self.event_handler.register() + def deregister(self): + self.event_handler.deregister() + self.config_handler.deregister() + def add_cloud_account_config(self, account): self._log.debug("Received Cloud-Account add config event for account: %s", account.name) self.core.add_cloud_account(account) @@ -113,7 +123,7 @@ class ResourceManager(object): @asyncio.coroutine def reallocate_virtual_network(self, event_id, cloud_account_name, request, resource): - self._log.info("Received network resource allocation request with event-id: %s", event_id) + self._log.info("Received network resource reallocation request with event-id: %s", event_id) resource = yield from self.core.reallocate_virtual_resource(event_id, cloud_account_name, request, 'network', resource) return resource @@ -140,7 +150,7 @@ class ResourceManager(object): @asyncio.coroutine def reallocate_virtual_compute(self, event_id, cloud_account_name, request, resource): - self._log.info("Received compute resource allocation request " + self._log.info("Received compute resource reallocation request " "(cloud account: %s) with event-id: %s", cloud_account_name, event_id) resource = yield from self.core.reallocate_virtual_resource( @@ -160,16 +170,45 @@ class ResourceManager(object): return info +class ResMgrProject(ManoProject): + + def __init__(self, name, tasklet, **kw): + super(ResMgrProject, self).__init__(tasklet.log, name) + self.update(tasklet) + + self._resource_manager = None + + @asyncio.coroutine + def register (self): + self._log.debug("Initializing the Resource Manager tasklet for project {}". + format(self.name)) + self._resource_manager = ResourceManager(self._log, + self._log_hdl, + self._loop, + self._dts, + self,) + yield from self._resource_manager.register() + + def deregister(self): + self._log.debug("De-registering project {}".format(self.name)) + self._resource_manager.deregister() + + class ResMgrTasklet(rift.tasklets.Tasklet): def __init__(self, *args, **kwargs): super(ResMgrTasklet, self).__init__(*args, **kwargs) self.rwlog.set_category("rw-resource-mgr-log") self._dts = None - self._resource_manager = None + self._project_handler = None + self.projects = {} + + @property + def dts(self): + return self._dts def start(self): super(ResMgrTasklet, self).start() - self.log.info("Starting ResMgrTasklet") + self.log.debug("Starting ResMgrTasklet") self.log.debug("Registering with dts") @@ -192,12 +231,9 @@ class ResMgrTasklet(rift.tasklets.Tasklet): @asyncio.coroutine def init(self): - self._log.info("Initializing the Resource Manager tasklet") - self._resource_manager = ResourceManager(self.log, - self.log_hdl, - self.loop, - self._dts) - yield from self._resource_manager.register() + self.log.debug("creating project handler") + self.project_handler = ProjectHandler(self, ResMgrProject) + self.project_handler.register() @asyncio.coroutine def run(self):