fix creat pnf error 22/72422/2
authormaopengzhang <zhang.maopeng1@zte.com.cn>
Mon, 12 Nov 2018 12:08:27 +0000 (20:08 +0800)
committermaopengzhang <zhang.maopeng1@zte.com.cn>
Mon, 12 Nov 2018 12:10:16 +0000 (20:10 +0800)
fix  creat pnf error, etc

Change-Id: Id1a4ba83a04ac393bb9c4a5e1bf3f8f672d34509
Issue-ID: VFC-1158
Signed-off-by: maopengzhang <zhang.maopeng1@zte.com.cn>
lcm/ns/biz/ns_instant.py
lcm/ns_pnfs/biz/create_pnf.py
lcm/ns_pnfs/serializers/pnf_serializer.py
lcm/ns_pnfs/tests/test_create_pnf.py
lcm/pub/msapi/nslcm.py
lcm/pub/msapi/sdc_run_catalog.py

index 1f72b32..419c4d5 100644 (file)
@@ -267,7 +267,6 @@ class InstantNSService(object):
                 if pnfd["properties"]["descriptor_id"] == pnf["pnfdId"]:
                     k = pnfd["pnf_id"]
                     pnf["nsInstances"] = self.ns_inst_id
-                    # todo pnf["pnfdInfoId"]
                     pnfs[k] = {
                         "type": "CreatePnf",
                         "input": {
index c920713..342d637 100644 (file)
@@ -23,11 +23,11 @@ logger = logging.getLogger(__name__)
 
 class CreatePnf(object):
     def __init__(self, data):
-        self.pnfId = data.get("pnfId"),
-        self.pnfName = data.get("pnfName"),
-        self.pnfdId = data.get("pnfdId"),
-        self.pnfdInfoId = data.get("pnfdInfoId"),
-        self.pnfProfileId = data.get("pnfProfileId"),
+        self.pnfId = data.get("pnfId")
+        self.pnfName = data.get("pnfName")
+        self.pnfdId = data.get("pnfdId")
+        self.pnfdInfoId = data.get("pnfdInfoId", "")
+        self.pnfProfileId = data.get("pnfProfileId", "")
         self.cpInfo = data.get("cpInfo", "")
         self.emsId = data.get("emsId", "")
         self.nsInstances = data.get("nsInstances")
@@ -41,7 +41,7 @@ class CreatePnf(object):
         return GetPnf({"pnfId": self.pnfId}, True).do_biz()
 
     def check_pnfd_valid(self):
-        pnf_package_info = query_pnf_descriptor({"pnfId": self.pnfdInfoId})
+        pnf_package_info = query_pnf_descriptor({"pnfdId": self.pnfdId})
         if not pnf_package_info:
             raise NSLCMException("Pnfd(%s) does not exist." % self.pnfdInfoId)
 
@@ -59,7 +59,8 @@ class CreatePnf(object):
             if not pnfInstances.filter(nsInstances__contains=self.nsInstances):
                 for pnfInstance in pnfInstances:
                     new_nsInstances = pnfInstance.nsInstances + "," + self.nsInstances
-                    pnfInstance.update(nsInstances=new_nsInstances)
+                    pnfInstance.nsInstances = new_nsInstances
+                    pnfInstance.save()
         else:
             PNFInstModel(pnfId=self.pnfId,
                          pnfName=self.pnfName,
index b3d7410..1a5a981 100644 (file)
@@ -19,9 +19,9 @@ class PnfInstanceSerializer(serializers.Serializer):
     pnfId = serializers.CharField(help_text="Identifier of the PNF.", required=True, allow_null=False)
     pnfName = serializers.CharField(help_text="Name of the PNF.", required=True, allow_null=True)
     pnfdId = serializers.CharField(help_text="Identifier of the PNFD on which the PNF is based.", required=True, allow_null=True)
-    pnfdInfoId = serializers.CharField(help_text="Identifier of the PNFD information object related to this PNF.", required=True, allow_null=True)
+    pnfdInfoId = serializers.CharField(help_text="Identifier of the PNFD information object related to this PNF.", required=False, allow_null=True, allow_blank=True)
     pnfProfileId = serializers.CharField(help_text="Identifier of the related PnfProfile in the NSD on which the PNF is based.", required=True, allow_null=True)
-    cpInfo = serializers.CharField(help_text="Information on the external CP of the PNF.", required=True, allow_null=True)
+    cpInfo = serializers.CharField(help_text="Information on the external CP of the PNF.", required=False, allow_null=True, allow_blank=True)
 
 
 class PnfInstancesSerializer(serializers.ListSerializer):
index c248ecb..d691e65 100644 (file)
@@ -83,7 +83,27 @@ class TestCreatePnfViews(TestCase):
                 }
             ],
             "emsId": str(uuid.uuid4()),
-            "nsInstances": str(uuid.uuid4()) + "," + str(uuid.uuid4())
+            "nsInstances": str(uuid.uuid4())
+        }
+
+        response = self.client.post("/api/nslcm/v1/pnfs", data=data, format='json')
+        self.assertEqual(status.HTTP_201_CREATED, response.status_code)
+
+        data = {
+            "pnfId": id,
+            "pnfName": "Test PNF",
+            "pnfdId": str(uuid.uuid4()),
+            "pnfdInfoId": str(uuid.uuid4()),
+            "pnfProfileId": str(uuid.uuid4()),
+            "cpInfo": [
+                {
+                    "cpInstanceId": str(uuid.uuid4()),
+                    "cpdId": "pnf_ext_cp01",
+                    "cpProtocolData": []
+                }
+            ],
+            "emsId": str(uuid.uuid4()),
+            "nsInstances": str(uuid.uuid4())
         }
 
         response = self.client.post("/api/nslcm/v1/pnfs", data=data, format='json')
index 921e03f..4dd0d22 100644 (file)
@@ -24,14 +24,15 @@ def call_from_ns_cancel_resource(res_type, instid):
     method = "DELETE"
     if res_type == 'vl':
         uri = '/api/nslcm/v1/ns/vls/%s' % instid
-
     elif res_type == 'sfc':
         uri = '/api/nslcm/v1/ns/sfcs/%s' % instid
+    elif res_type == 'pnf':
+        uri = '/api/nslcm/v1/pnfs/%s' % instid
     else:
         # vnf
         method = "POST"
         uri = '/api/nslcm/v1/ns/terminatevnf/%s' % instid
     req_param = {}
     ret = req_by_msb(uri, method, json.dumps(req_param))
-    logger.info("[NS terminate] call vnfm [%s] result:%s" % (res_type, ret))
+    logger.info("[NS terminate] call res_type [%s] result:%s" % (res_type, ret))
     return ret
index 547a542..073b833 100644 (file)
@@ -59,11 +59,11 @@ def query_vnfpackage_by_id(csar_id):
 
 def query_pnf_descriptor(filter=None):
     if filter:
-        pnfdInfoId = filter.get("pnfdInfoId")
-        ret = req_by_msb("/api/catalog/v1/pnf_descriptors/%s" % pnfdInfoId, "GET")
+        pnfdId = filter.get("pnfdId")
+        ret = req_by_msb("/api/nsd/v1/pnf_descriptors?pnfdId=%s" % pnfdId, "GET")
     else:
-        ret = req_by_msb("/api/catalog/v1/pnf_descriptors", "GET")
+        ret = req_by_msb("/api/nsd/v1/pnf_descriptors", "GET")
     if ret[0] != 0:
         logger.error("Status code is %s, detail is %s.", ret[2], ret[1])
-        raise NSLCMException("Failed to query pnf descriptor(%s) from catalog." % pnfdInfoId)
+        raise NSLCMException("Failed to query pnf descriptor(%s) from catalog." % pnfdId)
     return json.JSONDecoder().decode(ret[1])