add VFC NS query via CSARID
[vfc/nfvo/lcm.git] / lcm / ns / views.py
index ffe35a4..9a25027 100644 (file)
@@ -24,6 +24,7 @@ from lcm.ns.ns_create import CreateNSService
 from lcm.ns.ns_get import GetNSInfoService
 from lcm.ns.ns_instant import InstantNSService
 from lcm.ns.ns_manual_scale import NSManualScaleService
+from lcm.ns.ns_heal import NSHealService
 from lcm.ns.ns_terminate import TerminateNsService, DeleteNsService
 from lcm.pub.database.models import NSInstModel, ServiceBaseInfoModel
 from lcm.pub.utils.jobutil import JobUtil, JOB_TYPE
@@ -37,7 +38,14 @@ logger = logging.getLogger(__name__)
 class CreateNSView(APIView):
     def get(self, request):
         logger.debug("CreateNSView::get")
-        ret = GetNSInfoService().get_ns_info()
+        filter=None
+        csarId = ignore_case_get(request.META, 'csarId')
+        if csarId:
+            filter ={
+            "csarId":csarId
+            }
+
+        ret = GetNSInfoService(filter).get_ns_info()
         logger.debug("CreateNSView::get::ret=%s", ret)
         return Response(data=ret, status=status.HTTP_200_OK)
 
@@ -78,10 +86,25 @@ class TerminateNSView(APIView):
         return Response(data=ret, status=status.HTTP_202_ACCEPTED)
 
 
+class NSHealView(APIView):
+    def post(self, request, ns_instance_id):
+        logger.debug("Enter HealNSView::post %s", request.data)
+        job_id = JobUtil.create_job("VNF", JOB_TYPE.HEAL_VNF, ns_instance_id)
+        try:
+            NSHealService(ns_instance_id, request.data, job_id).start()
+        except Exception as e:
+            logger.error("Exception in HealNSView: %s", e.message)
+            return Response(data={'error': e.message}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
+        ret = {'jobId': job_id}
+        logger.debug("Leave HealNSView::post ret=%s", ret)
+        return Response(data=ret, status=status.HTTP_202_ACCEPTED)
+
+
 class NSDetailView(APIView):
     def get(self, request, ns_instance_id):
         logger.debug("Enter NSDetailView::get ns(%s)", ns_instance_id)
-        ret = GetNSInfoService(ns_instance_id).get_ns_info()
+        ns_filter ={"ns_inst_id":ns_instance_id}
+        ret = GetNSInfoService(ns_filter).get_ns_info()
         if not ret:
             return Response(status=status.HTTP_404_NOT_FOUND)
         logger.debug("Leave NSDetailView::get::ret=%s", ret)
@@ -139,7 +162,7 @@ class NSInstPostDealView(APIView):
             "fileUri":file_url
         }
         req_param = json.JSONEncoder().encode(input_data)
-        policy_engine_url = 'openoapi/polengine/v1/policyinfo'
+        policy_engine_url = 'api/polengine/v1/policyinfo'
         ret = req_by_msb(policy_engine_url, "POST", req_param)
         if ret[0] != 0:
             logger.error("Failed to send ns policy req")