aboutsummaryrefslogtreecommitdiffstats
path: root/catalog/pub/utils
diff options
context:
space:
mode:
Diffstat (limited to 'catalog/pub/utils')
-rw-r--r--catalog/pub/utils/toscaparser/basemodel.py19
-rw-r--r--catalog/pub/utils/toscaparser/nsdmodel.py27
-rw-r--r--catalog/pub/utils/toscaparser/testdata/ns/ran.csarbin3067 -> 3036 bytes
-rw-r--r--catalog/pub/utils/toscaparser/vnfdmodel.py54
4 files changed, 71 insertions, 29 deletions
diff --git a/catalog/pub/utils/toscaparser/basemodel.py b/catalog/pub/utils/toscaparser/basemodel.py
index 705e3aaf..89e669a2 100644
--- a/catalog/pub/utils/toscaparser/basemodel.py
+++ b/catalog/pub/utils/toscaparser/basemodel.py
@@ -53,6 +53,7 @@ class BaseInfoModel(object):
def __init__(self, path, params):
tosca = self.buildToscaTemplate(path, params)
+ self.description = tosca.description
self.parseModel(tosca)
def parseModel(self, tosca):
@@ -491,3 +492,21 @@ class BaseInfoModel(object):
else:
next_node = requirement[k]
graph.add_node(next_node, [node.name])
+
+ def get_substitution_mappings(self, tosca):
+ node = {
+ 'properties': {},
+ 'requirements': {},
+ 'capabilities': {},
+ 'metadata': {}
+ }
+ metadata = None
+ substitution_mappings = tosca.tpl['topology_template'].get('substitution_mappings', None)
+ if substitution_mappings:
+ node['type'] = substitution_mappings['node_type']
+ node['properties'] = substitution_mappings.get('properties', {})
+ node['requirements'] = substitution_mappings.get('requirements', {})
+ node['capabilities'] = substitution_mappings.get('capabilities', {})
+ metadata = substitution_mappings.get('metadata', {})
+ node['metadata'] = metadata if metadata and metadata != {} else self.buildMetadata(tosca)
+ return node
diff --git a/catalog/pub/utils/toscaparser/nsdmodel.py b/catalog/pub/utils/toscaparser/nsdmodel.py
index 03133861..096579c2 100644
--- a/catalog/pub/utils/toscaparser/nsdmodel.py
+++ b/catalog/pub/utils/toscaparser/nsdmodel.py
@@ -36,6 +36,7 @@ class EtsiNsdInfoModel(BaseInfoModel):
def parseModel(self, tosca):
self.metadata = self.buildMetadata(tosca)
+ self.ns = self._build_ns(tosca)
self.inputs = self.buildInputs(tosca)
nodeTemplates = map(functools.partial(self.buildNode, tosca=tosca), tosca.nodetemplates)
types = tosca.topology_template.custom_defs
@@ -176,3 +177,29 @@ class EtsiNsdInfoModel(BaseInfoModel):
for key, value in item.items():
rets.append({"key_name": key, "vl_id": self.get_requirement_node_name(value)})
return rets
+
+ def _build_ns(self, tosca):
+ ns = self.get_substitution_mappings(tosca)
+ properties = ns.get("properties", {})
+ metadata = ns.get("metadata", {})
+ 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", "")
+ properties["descriptor_id"] = descriptor_id
+ if properties.get("verison", "") == "":
+ version = metadata.get("template_version", "")
+ if version == "":
+ version = metadata.get("version", "")
+ properties["verison"] = version
+ if properties.get("designer", "") == "":
+ author = metadata.get("template_author", "")
+ properties["designer"] = author
+ if properties.get("name", "") == "":
+ template_name = metadata.get("template_name", "")
+ if template_name == "":
+ template_name = metadata.get("name", "")
+ properties["name"] = template_name
+ return ns
diff --git a/catalog/pub/utils/toscaparser/testdata/ns/ran.csar b/catalog/pub/utils/toscaparser/testdata/ns/ran.csar
index ad9c7d96..a9f85a53 100644
--- a/catalog/pub/utils/toscaparser/testdata/ns/ran.csar
+++ b/catalog/pub/utils/toscaparser/testdata/ns/ran.csar
Binary files differ
diff --git a/catalog/pub/utils/toscaparser/vnfdmodel.py b/catalog/pub/utils/toscaparser/vnfdmodel.py
index 0494bd63..ce0206fe 100644
--- a/catalog/pub/utils/toscaparser/vnfdmodel.py
+++ b/catalog/pub/utils/toscaparser/vnfdmodel.py
@@ -34,7 +34,7 @@ class EtsiVnfdInfoModel(BaseInfoModel):
def parseModel(self, tosca):
self.vnf = {}
- self.vnf = self.build_vnf(tosca)
+ self.vnf = self._build_vnf(tosca)
self.metadata = self.buildMetadata(tosca)
self.inputs = self.buildInputs(tosca)
nodeTemplates = map(functools.partial(self.buildNode, tosca=tosca),
@@ -45,7 +45,7 @@ class EtsiVnfdInfoModel(BaseInfoModel):
self.vdus = self._get_all_vdu(nodeTemplates, node_types)
self.vls = self._get_all_vl(nodeTemplates, node_types)
self.cps = self._get_all_cp(nodeTemplates, node_types)
- self.vnf_exposed = self._get_all_endpoint_exposed(tosca.topology_template)
+ self.vnf_exposed = self._get_all_endpoint_exposed()
self.graph = self.get_deploy_graph(tosca, NFV_VNF_RELATIONSHIPS)
def _get_all_volume_storage(self, nodeTemplates, node_types):
@@ -189,54 +189,52 @@ class EtsiVnfdInfoModel(BaseInfoModel):
cp_vl[key] = value
return cp_vl
- def _get_all_endpoint_exposed(self, topo_tpl):
- if 'substitution_mappings' in topo_tpl.tpl:
- external_cps = self._get_external_cps(topo_tpl.tpl['substitution_mappings'])
- forward_cps = self._get_forward_cps(topo_tpl.tpl['substitution_mappings'])
+ def _get_all_endpoint_exposed(self):
+ if self.vnf:
+ external_cps = self._get_external_cps(self.vnf.get('requirements', None))
+ forward_cps = self._get_forward_cps(self.vnf.get('capabilities', None))
return {"external_cps": external_cps, "forward_cps": forward_cps}
return {}
- def _get_external_cps(self, subs_mappings):
+ def _get_external_cps(self, vnf_requirements):
external_cps = []
- if 'requirements' in subs_mappings:
- for key, value in subs_mappings['requirements'].items():
+ if vnf_requirements:
+ for key, value in vnf_requirements.items():
if isinstance(value, list) and len(value) > 0:
external_cps.append({"key_name": key, "cpd_id": value[0]})
else:
external_cps.append({"key_name": key, "cpd_id": value})
return external_cps
- def _get_forward_cps(self, subs_mappings):
+ def _get_forward_cps(self, vnf_capabilities):
forward_cps = []
- if 'capabilities' in subs_mappings:
- for key, value in subs_mappings['capabilities'].items():
+ if vnf_capabilities:
+ for key, value in vnf_capabilities.items():
if isinstance(value, list) and len(value) > 0:
forward_cps.append({"key_name": key, "cpd_id": value[0]})
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 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)
+ def _build_vnf(self, tosca):
+ vnf = self.get_substitution_mappings(tosca)
+ properties = vnf.get("properties", {})
+ metadata = vnf.get("metadata", {})
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
+ properties["descriptor_id"] = descriptor_id
if properties.get("descriptor_verison", "") == "":
version = metadata.get("template_version", "")
@@ -255,7 +253,5 @@ class EtsiVnfdInfoModel(BaseInfoModel):
if template_name == "":
template_name = metadata.get("template_name", "")
properties["template_name"] = template_name
- vnf = {}
- vnf['properties'] = properties
- vnf['metadata'] = metadata
+
return vnf