Fix vf-c parse inject_files with error 30/70730/1
authorHuang Haibin <haibin.huang@intel.com>
Thu, 18 Oct 2018 11:55:02 +0000 (19:55 +0800)
committerHuang Haibin <haibin.huang@intel.com>
Thu, 18 Oct 2018 11:57:42 +0000 (19:57 +0800)
Change-Id: I4ae3f236e12345211050ba04eb74d709c08ea9f3
Issue-ID: VFC-1157
Signed-off-by: Huang Haibin <haibin.huang@intel.com>
17 files changed:
catalog/pub/utils/toscaparser/testdata/vnf/infra.csar [deleted file]
catalog/pub/utils/toscaparser/testdata/vnf/vbng.csar [deleted file]
catalog/pub/utils/toscaparser/testdata/vnf/vbrgemu.csar [deleted file]
catalog/pub/utils/toscaparser/testdata/vnf/vcpedpdk/infra.csar [new file with mode: 0644]
catalog/pub/utils/toscaparser/testdata/vnf/vcpedpdk/vbng.csar [new file with mode: 0644]
catalog/pub/utils/toscaparser/testdata/vnf/vcpedpdk/vbrgemu.csar [new file with mode: 0644]
catalog/pub/utils/toscaparser/testdata/vnf/vcpedpdk/vgmux.csar [new file with mode: 0644]
catalog/pub/utils/toscaparser/testdata/vnf/vcpedpdk/vgw.csar [new file with mode: 0644]
catalog/pub/utils/toscaparser/testdata/vnf/vcpesriov/infra.csar [new file with mode: 0644]
catalog/pub/utils/toscaparser/testdata/vnf/vcpesriov/vbng.csar [new file with mode: 0644]
catalog/pub/utils/toscaparser/testdata/vnf/vcpesriov/vbrgemu.csar [new file with mode: 0644]
catalog/pub/utils/toscaparser/testdata/vnf/vcpesriov/vgmux.csar [new file with mode: 0644]
catalog/pub/utils/toscaparser/testdata/vnf/vcpesriov/vgw.csar [new file with mode: 0644]
catalog/pub/utils/toscaparser/testdata/vnf/vgmux.csar [deleted file]
catalog/pub/utils/toscaparser/testdata/vnf/vgw.csar [deleted file]
catalog/pub/utils/toscaparser/tests.py
catalog/pub/utils/toscaparser/vnfdmodel.py

diff --git a/catalog/pub/utils/toscaparser/testdata/vnf/infra.csar b/catalog/pub/utils/toscaparser/testdata/vnf/infra.csar
deleted file mode 100644 (file)
index 315b0bf..0000000
Binary files a/catalog/pub/utils/toscaparser/testdata/vnf/infra.csar and /dev/null differ
diff --git a/catalog/pub/utils/toscaparser/testdata/vnf/vbng.csar b/catalog/pub/utils/toscaparser/testdata/vnf/vbng.csar
deleted file mode 100644 (file)
index 7180dc1..0000000
Binary files a/catalog/pub/utils/toscaparser/testdata/vnf/vbng.csar and /dev/null differ
diff --git a/catalog/pub/utils/toscaparser/testdata/vnf/vbrgemu.csar b/catalog/pub/utils/toscaparser/testdata/vnf/vbrgemu.csar
deleted file mode 100644 (file)
index 69fdbde..0000000
Binary files a/catalog/pub/utils/toscaparser/testdata/vnf/vbrgemu.csar and /dev/null differ
diff --git a/catalog/pub/utils/toscaparser/testdata/vnf/vcpedpdk/infra.csar b/catalog/pub/utils/toscaparser/testdata/vnf/vcpedpdk/infra.csar
new file mode 100644 (file)
index 0000000..5c9fbcf
Binary files /dev/null and b/catalog/pub/utils/toscaparser/testdata/vnf/vcpedpdk/infra.csar differ
diff --git a/catalog/pub/utils/toscaparser/testdata/vnf/vcpedpdk/vbng.csar b/catalog/pub/utils/toscaparser/testdata/vnf/vcpedpdk/vbng.csar
new file mode 100644 (file)
index 0000000..b11a6ef
Binary files /dev/null and b/catalog/pub/utils/toscaparser/testdata/vnf/vcpedpdk/vbng.csar differ
diff --git a/catalog/pub/utils/toscaparser/testdata/vnf/vcpedpdk/vbrgemu.csar b/catalog/pub/utils/toscaparser/testdata/vnf/vcpedpdk/vbrgemu.csar
new file mode 100644 (file)
index 0000000..730ea8d
Binary files /dev/null and b/catalog/pub/utils/toscaparser/testdata/vnf/vcpedpdk/vbrgemu.csar differ
diff --git a/catalog/pub/utils/toscaparser/testdata/vnf/vcpedpdk/vgmux.csar b/catalog/pub/utils/toscaparser/testdata/vnf/vcpedpdk/vgmux.csar
new file mode 100644 (file)
index 0000000..b0f37a7
Binary files /dev/null and b/catalog/pub/utils/toscaparser/testdata/vnf/vcpedpdk/vgmux.csar differ
diff --git a/catalog/pub/utils/toscaparser/testdata/vnf/vcpedpdk/vgw.csar b/catalog/pub/utils/toscaparser/testdata/vnf/vcpedpdk/vgw.csar
new file mode 100644 (file)
index 0000000..ca652bf
Binary files /dev/null and b/catalog/pub/utils/toscaparser/testdata/vnf/vcpedpdk/vgw.csar differ
diff --git a/catalog/pub/utils/toscaparser/testdata/vnf/vcpesriov/infra.csar b/catalog/pub/utils/toscaparser/testdata/vnf/vcpesriov/infra.csar
new file mode 100644 (file)
index 0000000..4547db4
Binary files /dev/null and b/catalog/pub/utils/toscaparser/testdata/vnf/vcpesriov/infra.csar differ
diff --git a/catalog/pub/utils/toscaparser/testdata/vnf/vcpesriov/vbng.csar b/catalog/pub/utils/toscaparser/testdata/vnf/vcpesriov/vbng.csar
new file mode 100644 (file)
index 0000000..5011563
Binary files /dev/null and b/catalog/pub/utils/toscaparser/testdata/vnf/vcpesriov/vbng.csar differ
diff --git a/catalog/pub/utils/toscaparser/testdata/vnf/vcpesriov/vbrgemu.csar b/catalog/pub/utils/toscaparser/testdata/vnf/vcpesriov/vbrgemu.csar
new file mode 100644 (file)
index 0000000..0f99199
Binary files /dev/null and b/catalog/pub/utils/toscaparser/testdata/vnf/vcpesriov/vbrgemu.csar differ
diff --git a/catalog/pub/utils/toscaparser/testdata/vnf/vcpesriov/vgmux.csar b/catalog/pub/utils/toscaparser/testdata/vnf/vcpesriov/vgmux.csar
new file mode 100644 (file)
index 0000000..3d2dbf7
Binary files /dev/null and b/catalog/pub/utils/toscaparser/testdata/vnf/vcpesriov/vgmux.csar differ
diff --git a/catalog/pub/utils/toscaparser/testdata/vnf/vcpesriov/vgw.csar b/catalog/pub/utils/toscaparser/testdata/vnf/vcpesriov/vgw.csar
new file mode 100644 (file)
index 0000000..5e47b77
Binary files /dev/null and b/catalog/pub/utils/toscaparser/testdata/vnf/vcpesriov/vgw.csar differ
diff --git a/catalog/pub/utils/toscaparser/testdata/vnf/vgmux.csar b/catalog/pub/utils/toscaparser/testdata/vnf/vgmux.csar
deleted file mode 100644 (file)
index 4108b69..0000000
Binary files a/catalog/pub/utils/toscaparser/testdata/vnf/vgmux.csar and /dev/null differ
diff --git a/catalog/pub/utils/toscaparser/testdata/vnf/vgw.csar b/catalog/pub/utils/toscaparser/testdata/vnf/vgw.csar
deleted file mode 100644 (file)
index e23dd27..0000000
Binary files a/catalog/pub/utils/toscaparser/testdata/vnf/vgw.csar and /dev/null differ
index fe55902..004911d 100644 (file)
@@ -34,15 +34,24 @@ class TestToscaparser(TestCase):
 
     def test_vnfd_parse(self):
         self.remove_temp_dir()
-        csar_path = os.path.dirname(os.path.abspath(__file__)) + "/testdata/vnf"
         input_parameters = [{"value": "222222", "key": "sdncontroller"}]
-        vcpe = ["vgw"]
+        vcpe = ["vgw", "infra", "vbng", "vbrgemu", "vgmux"]
+        sriov_path = os.path.dirname(os.path.abspath(__file__)) + "/testdata/vnf/vcpesriov"
         for vcpe_part in vcpe:
-            csar_file = ("%s/%s.csar" % (csar_path, vcpe_part))
+            csar_file = ("%s/%s.csar" % (sriov_path, vcpe_part))
             logger.debug("csar_file:%s", csar_file)
             vnfd_json = parse_vnfd(csar_file, input_parameters)
             metadata = json.loads(vnfd_json).get("metadata")
-            logger.debug("metadata:%s", metadata)
+            logger.debug("sriov metadata:%s", metadata)
+            self.assertEqual(("vCPE_%s" % vcpe_part), metadata.get("template_name", ""))
+
+        dpdk_path = os.path.dirname(os.path.abspath(__file__)) + "/testdata/vnf/vcpedpdk"
+        for vcpe_part in vcpe:
+            csar_file = ("%s/%s.csar" % (dpdk_path, vcpe_part))
+            logger.debug("csar_file:%s", csar_file)
+            vnfd_json = parse_vnfd(csar_file, input_parameters)
+            metadata = json.loads(vnfd_json).get("metadata")
+            logger.debug("dpdk metadata:%s", metadata)
             self.assertEqual(("vCPE_%s" % vcpe_part), metadata.get("template_name", ""))
 
     def test_pnfd_parse(self):
index 0b6609b..74b28f5 100644 (file)
@@ -62,7 +62,7 @@ class EtsiVnfdInfoModel(BaseInfoModel):
         rets = []
         inject_files = []
         for node in nodeTemplates:
-            logger.error("nodeTemplates :%s", node)
+            logger.debug("nodeTemplates :%s", node)
             if self.isNodeTypeX(node, node_types, VDU_COMPUTE_TYPE):
                 ret = {}
                 ret['vdu_id'] = node['name']
@@ -72,13 +72,22 @@ class EtsiVnfdInfoModel(BaseInfoModel):
                 ret['properties'] = node['properties']
                 if 'inject_files' in node['properties']:
                     inject_files = node['properties']['inject_files']
-                if inject_files is not None:
+                if isinstance(inject_files, list):
                     for inject_file in inject_files:
                         source_path = os.path.join(self.basepath, inject_file['source_path'])
                         with open(source_path, "rb") as f:
                             source_data = f.read()
                             source_data_base64 = source_data.encode("base64")
                             inject_file["source_data_base64"] = source_data_base64
+                elif isinstance(inject_files, dict):
+                    source_path = os.path.join(self.basepath, inject_files['source_path'])
+                    with open(source_path, "rb") as f:
+                        source_data = f.read()
+                        source_data_base64 = source_data.encode("base64")
+                        inject_files["source_data_base64"] = source_data_base64
+                else:
+                    logger.warn("inject_files %s format is not right.", inject_files)
+
                 virtual_storages = self.getRequirementByName(node, 'virtual_storage')
                 ret['virtual_storages'] = map(functools.partial(self._trans_virtual_storage), virtual_storages)
                 ret['dependencies'] = map(lambda x: self.get_requirement_node_name(x), self.getNodeDependencys(node))