Add nf pkg get and delete logic 79/7779/1
authorfujinhua <fu.jinhua@zte.com.cn>
Thu, 17 Aug 2017 01:14:30 +0000 (09:14 +0800)
committerfujinhua <fu.jinhua@zte.com.cn>
Thu, 17 Aug 2017 01:14:30 +0000 (09:14 +0800)
Change-Id: I6ffe7163a5da74c4ae1bdd52923ba3fc47646f69
Issue-Id: VFC-104
Signed-off-by: fujinhua <fu.jinhua@zte.com.cn>
lcm/packages/sdc_nf_package.py
lcm/packages/urls.py
lcm/packages/views.py

index 88bfd5c..01df781 100644 (file)
@@ -34,6 +34,29 @@ logger = logging.getLogger(__name__)
 
 JOB_ERROR = 255
 
+def nf_get_csars():
+    ret = None
+    try:
+        ret = SdcNfPackage().get_csars()
+    except NSLCMException as e:
+        return [1, e.message]
+    except:
+        logger.error(traceback.format_exc())
+        return [1, str(sys.exc_info())]
+    return ret
+
+def nf_get_csar(csar_id):
+    ret = None
+    try:
+        ret = SdcNfPackage().get_csar(csar_id)
+    except NSLCMException as e:
+        return [1, e.message]
+    except:
+        logger.error(traceback.format_exc())
+        return [1, str(sys.exc_info())]
+    return ret
+
+#####################################################################################
 
 class SdcNfDistributeThread(threading.Thread):
     """
@@ -158,14 +181,14 @@ class SdcNfPackage(object):
         pass
 
     def get_csars(self):
-        ret = {"csars": []}
+        csars = {"csars": []}
         nf_pkgs = NfPackageModel.objects.filter()
         for nf_pkg in nf_pkgs:
-            ret["csars"].append({
+            csars["csars"].append({
                 "csarId": nf_pkg.nfpackageid,
                 "vnfdId": nf_pkg.vnfdid
             })
-        return ret
+        return [0, csars]
         
     def get_csar(self, csar_id):
         pkg_info = {}
index bef33f3..10bf835 100644 (file)
@@ -20,6 +20,7 @@ urlpatterns = [
     url(r'^api/nslcm/v1/nspackage$', views.ns_distribute_get, name='ns_distribute_get'),
     url(r'^api/nslcm/v1/nspackage/(?P<csarId>[0-9a-zA-Z\-\_]+)$', views.ns_rd_csar, name='ns_rd_csar'),
     url(r'^api/nslcm/v1/vnfpackage$', views.nf_distribute_get, name='nf_distribute_get'),
+    url(r'^api/nslcm/v1/vnfpackage/(?P<csarId>[0-9a-zA-Z\-\_]+)$', views.nf_rd_csar, name='nf_rd_csar'),
     #########################################################################################
     url(r'^api/nslcm/v0/nspackage/(?P<csarId>[0-9a-zA-Z\-\_]+)$', views.ns_access_csar, name='ns_access_csar'),
     url(r'^api/nslcm/v0/nspackage$', views.ns_on_boarding, name='ns_on_boarding'),
index 44c1c76..a5d91ab 100644 (file)
@@ -66,19 +66,41 @@ def ns_rd_csar(request, *args, **kwargs):
 @api_view(http_method_names=['POST', 'GET'])
 def nf_distribute_get(request, *args, **kwargs):
     logger.debug("Enter %s%s, method is %s", fun_name(), request.data, request.method)
+    ret, normal_status = None, None
     if request.method == 'GET':
-        ret = sdc_nf_package.SdcNfPackage().get_csars()
-        logger.debug("csars=%s", ret)
-        return Response(data=ret, status=status.HTTP_200_OK)
-    csar_id = ignore_case_get(request.data, "csarId")
-    vim_ids = ignore_case_get(request.data, "vimIds")
-    lab_vim_id = ignore_case_get(request.data, "labVimId")
-    job_id = str(uuid.uuid4())
-    sdc_nf_package.SdcNfDistributeThread(csar_id, vim_ids, lab_vim_id, job_id).start()
-    ret = {"jobId": job_id}
+        ret = sdc_nf_package.nf_get_csars()
+        normal_status = status.HTTP_200_OK
+    else:
+        csar_id = ignore_case_get(request.data, "csarId")
+        vim_ids = ignore_case_get(request.data, "vimIds")
+        lab_vim_id = ignore_case_get(request.data, "labVimId")
+        job_id = str(uuid.uuid4())
+        sdc_nf_package.SdcNfDistributeThread(csar_id, vim_ids, lab_vim_id, job_id).start()
+        ret = [0, {"jobId": job_id}]
+        normal_status = status.HTTP_202_ACCEPTED
     logger.debug("Leave %s, Return value is %s", fun_name(), ret)
-    return Response(data=ret, status=status.HTTP_202_ACCEPTED)
+    if ret[0] != 0:
+        return Response(data={'error': ret[1]}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
+    return Response(data=ret[1], status=normal_status)
 
+@api_view(http_method_names=['GET', 'DELETE'])
+def nf_rd_csar(request, *args, **kwargs):
+    csar_id = ignore_case_get(kwargs, "csarId")
+    logger.info("Enter %s, method is %s, csar_id is %s", fun_name(), request.method, csar_id)
+    ret, normal_status = None, None
+    if request.method == 'GET':
+        ret = sdc_nf_package.nf_get_csar(csar_id)
+        normal_status = status.HTTP_200_OK
+    else:
+        force_delete = csar_id.endswith("force")
+        if force_delete:
+            csar_id = csar_id[:-5]
+        ret = sdc_nf_package.nf_delete_csar(csar_id, force_delete)
+        normal_status = status.HTTP_202_ACCEPTED
+    logger.info("Leave %s, Return value is %s", fun_name(), str(ret))
+    if ret[0] != 0:
+        return Response(data={'error': ret[1]}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
+    return Response(data=ret[1], status=normal_status)
 
 ####################################################################################################