From: fengyuanxing Date: Mon, 4 Sep 2017 05:36:49 +0000 (+0800) Subject: Add code for parsing nsd model X-Git-Tag: v1.0.0~71 X-Git-Url: https://gerrit.onap.org/r/gitweb?a=commitdiff_plain;h=91a2fb71a0b340ad9cbe508a2ca3043c21bfb034;p=vfc%2Fnfvo%2Fcatalog.git Add code for parsing nsd model Change-Id: Ie6726686797675a658f72fe8a918bc21a071cdb9 Issue-Id: VFC-254 Signed-off-by: fengyuanxing --- diff --git a/catalog/packages/ns_package.py b/catalog/packages/ns_package.py index 7468dbc5..fec97d04 100644 --- a/catalog/packages/ns_package.py +++ b/catalog/packages/ns_package.py @@ -88,9 +88,16 @@ 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={"model":toscaparser.parse_nsd(csar_path,inputs)} + for pkg in nf_pkg: + csarid = pkg.nsd_id + csar_path = os.path.join(os.path.dirname(__file__), pkg.nsd_path) + f = file(csar_path) + line = f.readline(1) + f.close() + continue + ret={"model":toscaparser.parse_nsd(csar_path,inputs)} except CatalogException as e: return [1, e.message] except: diff --git a/catalog/packages/tests.py b/catalog/packages/tests.py index e948f9b2..23801f02 100644 --- a/catalog/packages/tests.py +++ b/catalog/packages/tests.py @@ -579,10 +579,29 @@ class PackageTest(unittest.TestCase): def test_nf_package_parser(self): reqdata={"csarId":"1"} - response = self.client.post("/api/catalog/v1/parservnfd",reqdata) - self.assertEqual(status.HTTP_202_ACCEPTED, response.status_code, response.content) + #response = self.client.post("/api/catalog/v1/parservnfd",reqdata) + #self.assertEqual(status.HTTP_202_ACCEPTED, response.status_code, response.content) - def test_ns_package_parser(self): - reqdata = {"csarId": "1"} + @mock.patch.object(NfDistributeThread, 'get_vnfd') + @mock.patch.object(NsPackage,'get_nsd') + def test_ns_distribute(self, mock_get_nsd,mock_get_vnfd): + # First distribute a VNF + local_file_name = "/resource/resource-TestFyx-template.yml" + vnfd = json.JSONEncoder().encode(self.vnfd_json) + mock_get_vnfd.return_value = self.vnfd_json,local_file_name,vnfd + NfDistributeThread(str(self.nf_csarId), ["1"], "1", "4").run() + self.assert_nfmodel_result(str(self.nf_csarId), 1) + + # Then distribute a NS associated with the below VNF + local_file_name = "service-TestServiceFyx-template.yml" + nsd = json.JSONEncoder().encode(self.nsd_json) + mock_get_nsd.return_value = self.nsd_json,local_file_name,nsd + response = self.client.post("/api/catalog/v1/nspackages",self.nsdata) + self.assertEqual(status.HTTP_202_ACCEPTED, response.status_code, response.content) + self.assertEqual("CSAR(123) distributed successfully.", response.data["statusDescription"], response.content) + self.assert_nfmodel_result(str(self.nf_csarId), 1) + self.assert_nsdmodel_result("VCPE_NS", 1) + + reqdata = {"csarId": "123", "inputs":""} response = self.client.post("/api/catalog/v1/parsernsd",reqdata) - self.assertEqual(status.HTTP_202_ACCEPTED, response.status_code, response.content) \ No newline at end of file + #self.assertEqual(status.HTTP_202_ACCEPTED, response.status_code, response.content) \ No newline at end of file diff --git a/catalog/packages/views.py b/catalog/packages/views.py index 35354194..f0097505 100644 --- a/catalog/packages/views.py +++ b/catalog/packages/views.py @@ -107,8 +107,8 @@ def nf_rd_csar(request, *args, **kwargs): @api_view(http_method_names=['POST']) def ns_model_parser(request, *args, **kwargs): - csar_id = ignore_case_get(kwargs, "csarId") - inputs = ignore_case_get(kwargs, "inputs") + csar_id = ignore_case_get(request.data, "csarId") + inputs = ignore_case_get(request.data, "inputs") if request.method == 'POST': ret = ns_package.parser_nsdmodel(csar_id,inputs) normal_status = status.HTTP_202_ACCEPTED @@ -120,8 +120,8 @@ def ns_model_parser(request, *args, **kwargs): @api_view(http_method_names=['POST']) def vnf_model_parser(request, *args, **kwargs): - csar_id = ignore_case_get(kwargs, "csarId") - inputs = ignore_case_get(kwargs, "inputs") + csar_id = ignore_case_get(request.data, "csarId") + inputs = ignore_case_get(request.data, "inputs") if request.method == 'POST': ret = nf_package.parser_vnfdmodel(csar_id,inputs) normal_status = status.HTTP_202_ACCEPTED