summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHaibin Huang <haibin.huang@intel.com>2018-04-26 00:24:56 +0800
committerHaibin Huang <haibin.huang@intel.com>2018-04-28 15:59:42 +0800
commit93ba2a0e69bcd2f542d4ad18ea54d9b2afcc1e25 (patch)
treec0de6353490a33acb40d2ee3bc0ed47540aa67bf
parentbdcc05baa7f989737015afbf499883b53c948e59 (diff)
Fix inject files can not inject to vm
Change-Id: I99359c17ae4ba3fd752f0cf5b14a70256db9ce98 Issue-ID: VFC-657 Signed-off-by: Haibin Huang <haibin.huang@intel.com>
-rw-r--r--catalog/pub/utils/toscaparser/vnfdmodel.py13
1 files changed, 13 insertions, 0 deletions
diff --git a/catalog/pub/utils/toscaparser/vnfdmodel.py b/catalog/pub/utils/toscaparser/vnfdmodel.py
index 524cf85f..7934a847 100644
--- a/catalog/pub/utils/toscaparser/vnfdmodel.py
+++ b/catalog/pub/utils/toscaparser/vnfdmodel.py
@@ -14,6 +14,7 @@
import functools
import logging
+import os
from catalog.pub.utils.toscaparser import EtsiNsdInfoModel
logger = logging.getLogger(__name__)
@@ -31,6 +32,7 @@ class EtsiVnfdInfoModel(EtsiNsdInfoModel):
nodeTemplates = map(functools.partial(self.buildNode, tosca=tosca),
tosca.nodetemplates)
node_types = tosca.topology_template.custom_defs
+ self.basepath = self._get_base_path(tosca)
self.services = self._get_all_services(nodeTemplates)
self.vcloud = self._get_all_vcloud(nodeTemplates)
self.vcenter = self._get_all_vcenter(nodeTemplates)
@@ -48,6 +50,10 @@ class EtsiVnfdInfoModel(EtsiNsdInfoModel):
self.vnf_exposed = self.get_all_endpoint_exposed(tosca.topology_template)
self.vnf_flavours = self.get_all_flavour(tosca.topology_template.groups)
+ def _get_base_path(self, tosca):
+ fpath, fname = os.path.split(tosca.path)
+ return fpath
+
def _get_all_services(self, nodeTemplates):
ret = []
for node in nodeTemplates:
@@ -169,6 +175,13 @@ class EtsiVnfdInfoModel(EtsiNsdInfoModel):
if 'description' in node:
ret['description'] = node['description']
ret['properties'] = node['properties']
+ for inject_file in ret['properties']['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
+
ret['image_file'] = self.get_node_image_file(node)
local_storages = self.getRequirementByName(node, 'local_storage')
ret['local_storages'] = map(lambda x: self.get_requirement_node_name(x), local_storages)