RIFT 16526 Copy the icon image also to the UI logos location for UI update.
[osm/SO.git] / rwlaunchpad / plugins / rwpkgmgr / rift / tasklets / rwpkgmgr / rpc.py
index f55a8fd..5c3303f 100644 (file)
@@ -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)