X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=rwlaunchpad%2Fplugins%2Frwpkgmgr%2Frift%2Ftasklets%2Frwpkgmgr%2Frpc.py;h=5c3303f4293789fc73a2afbd39bcdf56907d2be0;hb=a098b5d74a528a270d262c0428aba8a0c39992a2;hp=f55a8fdfba562479ad84dfa3c5c5f3b53d6e3ab0;hpb=07b439824b5eac4dc760ce56b52fbdcf5539db4c;p=osm%2FSO.git diff --git a/rwlaunchpad/plugins/rwpkgmgr/rift/tasklets/rwpkgmgr/rpc.py b/rwlaunchpad/plugins/rwpkgmgr/rift/tasklets/rwpkgmgr/rpc.py index f55a8fdf..5c3303f4 100644 --- a/rwlaunchpad/plugins/rwpkgmgr/rift/tasklets/rwpkgmgr/rpc.py +++ b/rwlaunchpad/plugins/rwpkgmgr/rift/tasklets/rwpkgmgr/rpc.py @@ -34,6 +34,7 @@ RPC_PKG_ENDPOINT = RwPkgMgmtYang.YangOutput_RwPkgMgmt_GetPackageEndpoint RPC_SCHEMA_ENDPOINT = RwPkgMgmtYang.YangOutput_RwPkgMgmt_GetPackageSchema RPC_PACKAGE_ADD_ENDPOINT = RwPkgMgmtYang.YangOutput_RwPkgMgmt_PackageFileAdd RPC_PACKAGE_DELETE_ENDPOINT = RwPkgMgmtYang.YangOutput_RwPkgMgmt_PackageFileDelete +RPC_PACKAGE_COPY_ENDPOINT = RwPkgMgmtYang.YangOutput_RwPkgMgmt_PackageCopy class EndpointDiscoveryRpcHandler(mano_dts.AbstractRpcHandler): @@ -55,8 +56,9 @@ class EndpointDiscoveryRpcHandler(mano_dts.AbstractRpcHandler): def callback(self, ks_path, msg): """Forwards the request to proxy. """ + url = yield from self.proxy.endpoint( - msg.package_type, + msg.package_type if msg.has_field('package_type') else "", msg.package_id) rpc_op = RPC_PKG_ENDPOINT.from_dict({"endpoint": url}) @@ -144,6 +146,33 @@ class PackageOperationsRpcHandler(mano_dts.AbstractRpcHandler): return rpc_op +class PackageCopyOperationsRpcHandler(mano_dts.AbstractRpcHandler): + def __init__(self, log, dts, loop, proxy, publisher): + """ + Args: + proxy: Any impl of .proxy.AbstractPackageManagerProxy + publisher: CopyStatusPublisher object + """ + super().__init__(log, dts, loop) + self.proxy = proxy + self.publisher = publisher + + @property + def xpath(self): + return "/rw-pkg-mgmt:package-copy" + + @asyncio.coroutine + def callback(self, ks_path, msg): + import uuid + copier = pkg_downloader.PackageFileCopier.from_rpc_input(msg, proxy=self.proxy, log=self.log) + + transaction_id, dest_package_id = yield from self.publisher.register_copier(copier) + rpc_op = RPC_PACKAGE_COPY_ENDPOINT.from_dict({ + "transaction_id":transaction_id, + "package_id":dest_package_id, + "package_type":msg.package_type}) + + return rpc_op class PackageDeleteOperationsRpcHandler(mano_dts.AbstractRpcHandler): def __init__(self, log, dts, loop, proxy): @@ -164,10 +193,13 @@ class PackageDeleteOperationsRpcHandler(mano_dts.AbstractRpcHandler): rpc_op = RPC_PACKAGE_DELETE_ENDPOINT.from_dict({"status": str(True)}) try: + package_file_type = msg.vnfd_file_type.lower() \ + if msg.package_type == 'VNFD' else msg.nsd_file_type.lower() self.proxy.package_file_delete( msg.package_type, msg.package_id, - msg.package_path) + msg.package_path, + package_file_type) except Exception as e: self.log.exception(e) rpc_op.status = str(False)