diff options
Diffstat (limited to 'catalog/pub/utils')
-rw-r--r-- | catalog/pub/utils/toscaparser/basemodel.py | 19 | ||||
-rw-r--r-- | catalog/pub/utils/toscaparser/nsdmodel.py | 27 | ||||
-rw-r--r-- | catalog/pub/utils/toscaparser/testdata/ns/ran.csar | bin | 3067 -> 3036 bytes | |||
-rw-r--r-- | catalog/pub/utils/toscaparser/vnfdmodel.py | 54 |
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 Binary files differindex ad9c7d96..a9f85a53 100644 --- a/catalog/pub/utils/toscaparser/testdata/ns/ran.csar +++ b/catalog/pub/utils/toscaparser/testdata/ns/ran.csar 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 |