aboutsummaryrefslogtreecommitdiffstats
path: root/catalog/pub/utils/toscaparser/vnfdmodel.py
diff options
context:
space:
mode:
Diffstat (limited to 'catalog/pub/utils/toscaparser/vnfdmodel.py')
-rw-r--r--catalog/pub/utils/toscaparser/vnfdmodel.py72
1 files changed, 59 insertions, 13 deletions
diff --git a/catalog/pub/utils/toscaparser/vnfdmodel.py b/catalog/pub/utils/toscaparser/vnfdmodel.py
index 74b28f54..0494bd63 100644
--- a/catalog/pub/utils/toscaparser/vnfdmodel.py
+++ b/catalog/pub/utils/toscaparser/vnfdmodel.py
@@ -16,6 +16,8 @@ import functools
import logging
import os
from catalog.pub.utils.toscaparser.basemodel import BaseInfoModel
+# from catalog.pub.exceptions import CatalogException
+
logger = logging.getLogger(__name__)
SECTIONS = (VDU_COMPUTE_TYPE, VNF_VL_TYPE, VDU_CP_TYPE, VDU_STORAGE_TYPE) = \
@@ -31,6 +33,8 @@ class EtsiVnfdInfoModel(BaseInfoModel):
super(EtsiVnfdInfoModel, self).__init__(path, params)
def parseModel(self, tosca):
+ self.vnf = {}
+ self.vnf = self.build_vnf(tosca)
self.metadata = self.buildMetadata(tosca)
self.inputs = self.buildInputs(tosca)
nodeTemplates = map(functools.partial(self.buildNode, tosca=tosca),
@@ -72,22 +76,20 @@ class EtsiVnfdInfoModel(BaseInfoModel):
ret['properties'] = node['properties']
if 'inject_files' in node['properties']:
inject_files = node['properties']['inject_files']
- if isinstance(inject_files, list):
- for inject_file in inject_files:
- source_path = os.path.join(self.basepath, inject_file['source_path'])
+ 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
+ if 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_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)
-
+ inject_files["source_data_base64"] = source_data_base64
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))
@@ -213,3 +215,47 @@ class EtsiVnfdInfoModel(BaseInfoModel):
else:
forward_cps.append({"key_name": key, "cpd_id": value})
return forward_cps
+
+ def get_substitution_mappings(self, tosca):
+ node = {}
+ substitution_mappings = tosca.tpl['topology_template'].get('substitution_mappings', None)
+ if substitution_mappings:
+ node = substitution_mappings.get('properties', {})
+ node['type'] = substitution_mappings['node_type']
+ return node
+
+ def build_vnf(self, tosca):
+ properties = self.get_substitution_mappings(tosca)
+ metadata = self.buildMetadata(tosca)
+ if properties.get("descriptor_id", "") == "":
+ descriptor_id = metadata.get("descriptor_id", "")
+ if descriptor_id == "":
+ descriptor_id = metadata.get("id", "")
+ if descriptor_id == "":
+ descriptor_id = metadata.get("UUID", "")
+ # if descriptor_id == "":
+ # raise CatalogException('descriptor_id is Null.')
+ else:
+ properties["descriptor_id"] = descriptor_id
+
+ if properties.get("descriptor_verison", "") == "":
+ version = metadata.get("template_version", "")
+ if version == "":
+ version = metadata.get("version", "")
+ properties["descriptor_verison"] = version
+
+ if properties.get("provider", "") == "":
+ provider = metadata.get("template_author", "")
+ if provider == "":
+ provider = metadata.get("provider", "")
+ properties["provider"] = provider
+
+ if properties.get("template_name", "") == "":
+ template_name = metadata.get("template_name", "")
+ if template_name == "":
+ template_name = metadata.get("template_name", "")
+ properties["template_name"] = template_name
+ vnf = {}
+ vnf['properties'] = properties
+ vnf['metadata'] = metadata
+ return vnf