+from . import subscriber
+
+class PackageManagerProject(ManoProject):
+
+ def __init__(self, name, tasklet, **kw):
+ super(PackageManagerProject, self).__init__(tasklet.log, name)
+ self.update(tasklet)
+ proxy = kw["proxy"]
+
+ args = [self.log, self.dts, self.loop, self]
+
+ # create catalog publishers
+ self.job_handler = pkg_publisher.DownloadStatusPublisher(*args)
+ self.copy_publisher = pkg_publisher.CopyStatusPublisher(*args)
+
+ # create catalog subscribers
+ self.vnfd_catalog_sub = subscriber.VnfdStatusSubscriber(*args)
+ self.nsd_catalog_sub = subscriber.NsdStatusSubscriber(*args)
+
+ args.append(proxy)
+ self.copy_rpc = rpc.PackageCopyOperationsRpcHandler(*(args + [self.copy_publisher]))
+
+ @asyncio.coroutine
+ def register (self):
+ try:
+ yield from self.vnfd_catalog_sub.register()
+ yield from self.nsd_catalog_sub.register()
+ yield from self.copy_rpc.register()
+ yield from self.copy_publisher.register()
+ yield from self.job_handler.register()
+ except Exception as e:
+ self.log.exception("Exception registering project {}: {}".
+ format(self.name, e))
+
+ def deregister (self):
+ self.job_handler.deregister()
+ self.copy_rpc.deregister()
+ self.copy_publisher.deregister()
+ self.vnfd_catalog_sub.deregister()
+ self.nsd_catalog_sub.deregister()