1 # Copyright 2018 ZTE Corporation.
3 # Licensed under the Apache License, Version 2.0 (the "License");
4 # you may not use this file except in compliance with the License.
5 # You may obtain a copy of the License at
7 # http://www.apache.org/licenses/LICENSE-2.0
9 # Unless required by applicable law or agreed to in writing, software
10 # distributed under the License is distributed on an "AS IS" BASIS,
11 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 # See the License for the specific language governing permissions and
13 # limitations under the License.
20 from django.test import TestCase
22 from catalog.pub.utils.toscaparser import parse_vnfd, parse_pnfd, parse_nsd
23 from catalog.pub.utils.toscaparser.graph import Graph
25 logger = logging.getLogger(__name__)
28 class TestToscaparser(TestCase):
35 def test_vnfd_parse(self):
36 self.remove_temp_dir()
37 input_parameters = [{"value": "222222", "key": "sdncontroller"}]
38 vcpe = ["vgw", "infra", "vbng", "vbrgemu", "vgmux"]
39 main_template = 'Definitions/MainServiceTemplate.yaml'
40 for vcpe_part in vcpe:
41 sriov_path = os.path.dirname(os.path.abspath(__file__)) + "/testdata/vnf/vcpesriov"
42 main_template_path = ("%s/%s/%s" % (sriov_path, vcpe_part, main_template))
43 logger.debug("main_template:%s", main_template_path)
44 vnfd_json = parse_vnfd(main_template_path, input_parameters)
45 metadata = json.loads(vnfd_json).get("metadata")
46 logger.debug("sriov metadata:%s", metadata)
47 self.assertEqual(("vCPE_%s" % vcpe_part), metadata.get("template_name", ""))
48 if vcpe_part == "infra":
49 self.assertEqual("b1bb0ce7-1111-4fa7-95ed-4840d70a1177", json.loads(vnfd_json)["vnf"]["properties"]["descriptor_id"])
51 dpdk_path = os.path.dirname(os.path.abspath(__file__)) + "/testdata/vnf/vcpedpdk"
52 for vcpe_part in vcpe:
53 main_template_path = ("%s/%s/%s" % (dpdk_path, vcpe_part, main_template))
54 logger.debug("main_template_path:%s", main_template_path)
55 vnfd_json = parse_vnfd(main_template_path, input_parameters)
56 metadata = json.loads(vnfd_json).get("metadata")
57 logger.debug("dpdk metadata:%s", metadata)
58 self.assertEqual(("vCPE_%s" % vcpe_part), metadata.get("template_name", ""))
60 def test_pnfd_parse(self):
61 self.remove_temp_dir()
62 main_template_path = os.path.dirname(os.path.abspath(__file__)) + "/testdata/pnf/ran-du/ran-du.yaml"
63 pnfd_json = parse_pnfd(main_template_path)
64 pnfd_dict = json.loads(pnfd_json)
65 metadata = pnfd_dict.get("metadata")
66 self.assertEqual("RAN_DU", metadata.get("template_name", ""))
67 descriptor_id = pnfd_dict["pnf"]["properties"]["descriptor_id"]
68 self.assertEqual(1, descriptor_id)
70 def test_nsd_parse(self):
71 self.remove_temp_dir()
72 ran_csar = os.path.dirname(os.path.abspath(__file__)) + "/testdata/ns/ran/ran-ns.yaml"
73 nsd_json = parse_nsd(ran_csar, [])
74 logger.debug("NS ran json: %s" % nsd_json)
75 metadata = json.loads(nsd_json).get("metadata")
76 self.assertEqual("RAN-NS", metadata.get("nsd_name", ""))
78 def test_service_descriptor_parse(self):
79 self.remove_temp_dir()
80 service_test_csar = os.path.dirname(os.path.abspath(__file__)) + "/testdata/ns/service-vims/Definitions/service-VimsV2-template.yml"
81 test_json = parse_nsd(service_test_csar, [])
82 logger.debug("service-vIMS json: %s" % test_json)
83 metadata = json.loads(test_json).get("metadata")
84 self.assertEqual("vIMS_v2", metadata.get("nsd_name", ""))
86 def remove_temp_dir(self):
87 tempdir = tempfile.gettempdir()
88 for dir in os.listdir(tempdir):
89 if dir.startswith("tmp"):
90 path = tempfile.tempdir + "/" + dir
91 if (not os.path.isfile(path)) and os.path.exists(path):
92 shutil.rmtree(tempfile.tempdir + "/" + dir)
98 "vl_flat_net": ["cucp", "cuup"],
99 "vl_ext_net": ["cucp", "cuup"],
103 self.assertEqual(['vl_ext_net', 'vl_flat_net'].sort(), graph.get_pre_nodes("cucp").sort())