Fix vnfd "source_data_base64" not encoded as expect issue 99/91499/1
authorOlivia.Zhan <zhan.jie1@zte.com.cn>
Tue, 16 Jul 2019 08:29:32 +0000 (16:29 +0800)
committerOlivia.Zhan <zhan.jie1@zte.com.cn>
Tue, 16 Jul 2019 08:29:32 +0000 (16:29 +0800)
Issue-ID: VFC-1429
Signed-off-by: Olivia.Zhan <zhan.jie1@zte.com.cn>
Change-Id: Ie9c810d93c1c7f309f1f82ffec3bfee9b1099e25

genericparser/pub/utils/toscaparsers/vnfdparser/vnfd_sol_251.py
genericparser/pub/utils/toscaparsers/vnfdparser/vnfd_sol_base.py

index d0365a7..e71623a 100644 (file)
@@ -15,6 +15,7 @@
 import functools
 import logging
 import os
+import base64
 
 
 logger = logging.getLogger(__name__)
@@ -139,14 +140,16 @@ class VnfdSOL251():
                     if isinstance(inject_files, list):
                         for inject_file in inject_files:
                             source_path = os.path.join(self.model.basepath, inject_file['source_path'])
-                            with open(source_path, "rt") as f:
+                            with open(source_path, "rb") as f:
                                 source_data = f.read()
-                                inject_file["source_data_base64"] = source_data
+                                source_data_base64 = base64.b64encode(source_data)
+                                inject_file["source_data_base64"] = source_data_base64.decode()
                     if isinstance(inject_files, dict):
                         source_path = os.path.join(self.model.basepath, inject_files['source_path'])
-                        with open(source_path, "rt") as f:
+                        with open(source_path, "rb") as f:
                             source_data = f.read()
-                            inject_files["source_data_base64"] = source_data
+                            source_data_base64 = base64.b64encode(source_data)
+                            inject_files["source_data_base64"] = source_data_base64.decode()
                 virtual_storages = self.model.getRequirementByName(node, 'virtual_storage')
                 ret['virtual_storages'] = list(map(functools.partial(self._trans_virtual_storage), virtual_storages))
                 ret['dependencies'] = [self.model.get_requirement_node_name(x) for x in self.model.getNodeDependencys(node)]
index cc941b2..7b3a1a0 100644 (file)
@@ -15,6 +15,7 @@
 import functools
 import logging
 import os
+import base64
 
 
 logger = logging.getLogger(__name__)
@@ -118,14 +119,16 @@ class VnfdSOLBase():
                     if isinstance(inject_files, list):
                         for inject_file in inject_files:
                             source_path = os.path.join(self.model.basepath, inject_file['source_path'])
-                            with open(source_path, "rt") as f:
+                            with open(source_path, "rb") as f:
                                 source_data = f.read()
-                                inject_file["source_data_base64"] = source_data
+                                source_data_base64 = base64.b64encode(source_data)
+                                inject_file["source_data_base64"] = source_data_base64.decode()
                     if isinstance(inject_files, dict):
                         source_path = os.path.join(self.model.basepath, inject_files['source_path'])
-                        with open(source_path, "rt") as f:
+                        with open(source_path, "rb") as f:
                             source_data = f.read()
-                            inject_files["source_data_base64"] = source_data
+                            source_data_base64 = base64.b64encode(source_data)
+                            inject_files["source_data_base64"] = source_data_base64.decode()
                 virtual_storages = self.model.getRequirementByName(node, 'virtual_storage')
                 ret['virtual_storages'] = list(map(functools.partial(self._trans_virtual_storage), virtual_storages))
                 ret['dependencies'] = [self.model.get_requirement_node_name(x) for x in self.model.getNodeDependencys(node)]