From 93ba2a0e69bcd2f542d4ad18ea54d9b2afcc1e25 Mon Sep 17 00:00:00 2001 From: Haibin Huang Date: Thu, 26 Apr 2018 00:24:56 +0800 Subject: Fix inject files can not inject to vm Change-Id: I99359c17ae4ba3fd752f0cf5b14a70256db9ce98 Issue-ID: VFC-657 Signed-off-by: Haibin Huang --- catalog/pub/utils/toscaparser/vnfdmodel.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) 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) -- cgit 1.2.3-korg