Add tosca parser 73/10073/1
authormaopengzhang <zhang.maopeng1@zte.com.cn>
Sat, 2 Sep 2017 07:35:28 +0000 (15:35 +0800)
committermaopengzhang <zhang.maopeng1@zte.com.cn>
Sat, 2 Sep 2017 07:35:28 +0000 (15:35 +0800)
add tosca parser API in catalog

Change-Id: Ib255d7d44db5833dd645e7ee81d181dbfcb975d4
Issue-ID: VFC-35
Signed-off-by: maopengzhang <zhang.maopeng1@zte.com.cn>
catalog/packages/nf_package.py
catalog/packages/ns_package.py
catalog/packages/tests.py
catalog/packages/urls.py
catalog/packages/views.py
catalog/pub/msapi/nfvolcm.py
catalog/swagger/tests.py
catalog/swagger/vfc.catalog.swagger.json

index 10fccda..f2e1df9 100644 (file)
@@ -59,18 +59,18 @@ def nf_get_csar(csar_id):
     return ret
 
 def parser_vnfmodel(csar_id,inputs):
-    ret = None
+    ret= None
     try:
         nf_pkg = NfPackageModel.objects.filter(nfpackageid=csar_id)
         if nf_pkg:
              csar_path=nf_pkg["vnfd_path"]
-             ret=toscaparser.parse_vnfd(csar_path,inputs)
+             ret={"model":toscaparser.parse_vnfd(csar_path,inputs)}
     except CatalogException as e:
         return [1, e.message]
     except:
         logger.error(traceback.format_exc())
         return [1, str(sys.exc_info())]
-    return ret
+    return [0,ret]
 #####################################################################################
 
 class NfDistributeThread(threading.Thread):
index 5c32e4e..8174b44 100644 (file)
@@ -84,19 +84,19 @@ def ns_get_csar(csar_id):
         return [1, str(sys.exc_info())]
     return ret
 
-def parser_nsmodel(csar_id,inputs):
-    ret = None
+def parser_nsdmodel(csar_id,inputs):
+    ret= None
     try:
         nf_pkg = NSDModel.objects.filter(id=csar_id)
         if nf_pkg:
              csar_path=nf_pkg["nsd_path"]
-             ret=toscaparser.parse_nsd(csar_path,inputs)
+             ret={"model":toscaparser.parse_nsd(csar_path,inputs)}
     except CatalogException as e:
         return [1, e.message]
     except:
         logger.error(traceback.format_exc())
         return [1, str(sys.exc_info())]
-    return ret
+    return [0,ret]
 
 ###############################################################################################################
 
@@ -167,7 +167,7 @@ class NsPackage(object):
                 "csarId": ns.id,
                 "nsdId": ns.nsd_id
             })
-        return [0, csars]
+        return [0,csars]
 
     def get_csar(self, csar_id):
         package_info = {}
index 94d3a21..4c23b9d 100644 (file)
@@ -37,6 +37,17 @@ class PackageTest(unittest.TestCase):
             "csarId": str(self.ns_csarId)
         }
 
+        self.csars= [
+            {
+                "csarId": "1",
+                "nsdId": "1"
+            },
+            {
+                "csarId": "2",
+                 "nsdId": "2"
+            }
+        ]
+
         self.nfdata = {
             "csarId": str(self.nf_csarId)
         }
@@ -437,12 +448,14 @@ class PackageTest(unittest.TestCase):
     def tearDown(self):
         pass
 
+    @mock.patch.object(NsPackage, 'get_csars')
+    def test_nspackages_get(self,mock_get_csars):
+
+        mock_get_csars.return_value = [0,self.csars]
 
-    def test_nspackages_get(self):
         response = self.client.get("/api/catalog/v1/nspackages")
-        print response
         self.assertEqual(status.HTTP_200_OK, response.status_code, response.content)
-        self.assertEquals([],response.data)
+        self.assertEquals(self.csars,response.data)
 
     @mock.patch.object(NsPackage,'get_nsd')
     def test_ns_distribute_2(self, mock_get_nsd):
@@ -543,15 +556,12 @@ class PackageTest(unittest.TestCase):
 
         self.assertEquals(size, len(vnfdmodels))
 
-
     def test_nf_package_parser(self):
-        # reqdata={"csarId":"1"}
-        # response = self.client.post("api/catalog/v1/vnfpackages/model",reqdata)
-        # self.assertEqual(status.HTTP_202_ACCEPTED, response.status_code, response.content)
-        pass
+         reqdata={"csarId":"1"}
+         response = self.client.post("/api/catalog/v1/vnfpackagemodel",reqdata)
+         self.assertEqual(status.HTTP_202_ACCEPTED, response.status_code, response.content)
 
     def test_ns_package_parser(self):
-        # reqdata={"csarId":"1"}
-        # response = self.client.post("api/catalog/v1/nspackages/model",reqdata)
-        # self.assertEqual(status.HTTP_202_ACCEPTED, response.status_code, response.content)
-        pass
\ No newline at end of file
+        reqdata = {"csarId": "1"}
+        response = self.client.post("/api/catalog/v1/nspackagemodel",reqdata)
+        self.assertEqual(status.HTTP_202_ACCEPTED, response.status_code, response.content)
\ No newline at end of file
index 2768ee3..f372464 100644 (file)
@@ -20,8 +20,8 @@ urlpatterns = [
     url(r'^api/catalog/v1/nspackages/(?P<csarId>[0-9a-zA-Z\-\_]+)$', views.ns_rd_csar, name='nspackage_rd'),
     url(r'^api/catalog/v1/vnfpackages$', views.nfpackages_rc, name='nfpackages_rc'),
     url(r'^api/catalog/v1/vnfpackages/(?P<csarId>[0-9a-zA-Z\-\_]+)$', views.nf_rd_csar, name='nfpackage_rd'),
-    url(r'^api/catalog/v1/nspackages/model', views.ns_model_parser, name='ns_model_parser'),
-    url(r'^api/catalog/v1/vnfpackages/model', views.vnf_model_parser, name='vnf_model_parser')
+    url(r'^api/catalog/v1/nspackagemodel$', views.ns_model_parser, name='nsmodelparser_rc'),
+    url(r'^api/catalog/v1/vnfpackagemodel$', views.vnf_model_parser, name='vnfmodelparser_rc'),
 
 ]
 
index 248c6a1..d4e44cd 100644 (file)
@@ -110,8 +110,8 @@ def ns_model_parser(request, *args, **kwargs):
     csar_id = ignore_case_get(kwargs, "csarId")
     inputs = ignore_case_get(kwargs, "inputs")
     if request.method == 'POST':
-        ret = ns_package.parser_nsmodel(csar_id,inputs)
-        normal_status = status.HTTP_200_OK
+        ret = ns_package.parser_nsdmodel(csar_id,inputs)
+        normal_status = status.HTTP_202_ACCEPTED
 
     logger.info("Leave %s, Return value is %s", fun_name(), str(ret))
     if ret[0] != 0:
@@ -123,8 +123,8 @@ def vnf_model_parser(request, *args, **kwargs):
     csar_id = ignore_case_get(kwargs, "csarId")
     inputs = ignore_case_get(kwargs, "inputs")
     if request.method == 'POST':
-        ret = nf_package.parser_nfmodel(csar_id,inputs)
-        normal_status = status.HTTP_200_OK
+        ret = nf_package.parser_vnfmodel(csar_id,inputs)
+        normal_status = status.HTTP_202_ACCEPTED
 
     logger.info("Leave %s, Return value is %s", fun_name(), str(ret))
     if ret[0] != 0:
index e25430e..17cf686 100644 (file)
@@ -33,6 +33,11 @@ def call_lcm(resource, method, content=''):
         method=method,
         content=content)
 
+def get_nsInstances(csarid):
+    nsInstances=call_lcm("/nlcm/v1/ns ","get")
+
+
+
 # Mock code because the REST API from nfvolcm to delete ns instance is not implemented
 def delete_ns_inst_mock():
     return [0,'success']
index 40aaea7..46e3f0d 100644 (file)
@@ -24,7 +24,6 @@ class SampleViewTest(unittest.TestCase):
 
     def test_sample(self):
         response = self.client.get("/api/catalog/v1/swagger.json")
-        print response
         self.assertEqual(status.HTTP_200_OK, response.status_code, response.content)
 #        resp_data = json.loads(response.content)
 #        self.assertEqual({"status": "active"}, resp_data)
index ece4cd4..5ff983e 100644 (file)
         }\r
       }\r
     },\r
+    "/nspackagemodel": {\r
+      "post": {\r
+        "tags": [\r
+          "model"\r
+        ],\r
+        "summary": "ns package model",\r
+        "description": "ns package model",\r
+        "operationId": "ms_model_parser",\r
+        "consumes": [\r
+          "application/json"\r
+        ],\r
+        "produces": [\r
+          "application/json"\r
+        ],\r
+        "parameters": [\r
+          {\r
+            "in": "body",\r
+            "name": "body",\r
+            "description": "distribute request param",\r
+            "required": true,\r
+            "schema": {\r
+              "$ref": "#/definitions/modelParserRequest"\r
+            }\r
+          }\r
+        ],\r
+        "responses": {\r
+          "202": {\r
+            "description": "",\r
+            "schema": {\r
+              "$ref": "#/definitions/modelParserResponse"\r
+            }\r
+          },\r
+          "500": {\r
+            "description": "internal error"\r
+          }\r
+        }\r
+      }\r
+     },\r
     "/vnfpackages": {\r
       "get": {\r
         "tags": [\r
           }\r
         }\r
       }\r
-    }\r
+    },\r
+    "/vnfpackagemodel": {\r
+      "post": {\r
+        "tags": [\r
+          "model"\r
+        ],\r
+        "summary": "vnf package model",\r
+        "description": "vnf package model",\r
+        "operationId": "vnf_model_parser",\r
+        "consumes": [\r
+          "application/json"\r
+        ],\r
+        "produces": [\r
+          "application/json"\r
+        ],\r
+        "parameters": [\r
+          {\r
+            "in": "body",\r
+            "name": "body",\r
+            "description": "distribute request param",\r
+            "required": true,\r
+            "schema": {\r
+              "$ref": "#/definitions/modelParserRequest"\r
+            }\r
+          }\r
+        ],\r
+        "responses": {\r
+          "202": {\r
+            "description": "",\r
+            "schema": {\r
+              "$ref": "#/definitions/modelParserResponse"\r
+            }\r
+          },\r
+          "500": {\r
+            "description": "internal error"\r
+          }\r
+        }\r
+      }\r
+     }\r
   },\r
   "definitions": {\r
     "NsPkgDistributeRequest": {\r
           "description": "image file path in the csar or image url in external repository"\r
         }\r
       }\r
+    },\r
+    "modelParserRequest":{\r
+      "type": "object",\r
+      "properties": {\r
+        "csarId": {\r
+          "type": "string",\r
+          "description": "csar Package Id"\r
+        },\r
+        "inputs": {\r
+          "type": "string",\r
+          "description": "csar package inputs"\r
+        }\r
+      }\r
+    },\r
+    "modelParserResponse":{\r
+      "type": "object",\r
+      "properties": {\r
+        "model": {\r
+          "type": "string",\r
+          "description": "model json data"\r
+        }\r
+      }\r
     }\r
+\r
   }\r
 }
\ No newline at end of file