From 1563877dcaea3458b9e3a69026df4deb5a3cfbab Mon Sep 17 00:00:00 2001 From: maopengzhang Date: Sun, 30 Sep 2018 14:18:16 +0800 Subject: [PATCH] add sdc service csar related to PNF add sdc service csar related to PNF Change-Id: I2586fd2397ad9799e2b9a229fcb6117135bf8a94 Issue-ID: VFC-1102 Signed-off-by: maopengzhang --- catalog/pub/utils/toscaparser/__init__.py | 3 - catalog/pub/utils/toscaparser/basemodel.py | 34 +++++++++- catalog/pub/utils/toscaparser/graph.py | 74 +++++++++++++++++++++ catalog/pub/utils/toscaparser/nsdmodel.py | 6 +- catalog/pub/utils/toscaparser/servicemodel.py | 19 ++++-- catalog/pub/utils/toscaparser/testdata/ns/ran.csar | Bin 2804 -> 3067 bytes .../toscaparser/testdata/ns/service-vIMS.csar | Bin 0 -> 54472 bytes catalog/pub/utils/toscaparser/tests.py | 37 +++++++---- catalog/pub/utils/toscaparser/vnfdmodel.py | 4 ++ 9 files changed, 150 insertions(+), 27 deletions(-) create mode 100644 catalog/pub/utils/toscaparser/graph.py create mode 100644 catalog/pub/utils/toscaparser/testdata/ns/service-vIMS.csar diff --git a/catalog/pub/utils/toscaparser/__init__.py b/catalog/pub/utils/toscaparser/__init__.py index 12df6e89..b94ff4df 100644 --- a/catalog/pub/utils/toscaparser/__init__.py +++ b/catalog/pub/utils/toscaparser/__init__.py @@ -25,7 +25,6 @@ def parse_nsd(path, input_parameters=[], isETSI=True): tosca_obj = EtsiNsdInfoModel(path, input_parameters) else: tosca_obj = SdcServiceModel(path, input_parameters) - strResponse = json.dumps(tosca_obj, default=lambda obj: obj.__dict__) strResponse = strResponse.replace(': null', ': ""') return strResponse @@ -35,7 +34,6 @@ def parse_vnfd(path, input_parameters=[], isETSI=True): if isETSI: tosca_obj = EtsiVnfdInfoModel(path, input_parameters) else: - # SDC VF Model TBD tosca_obj = {} strResponse = json.dumps(tosca_obj, default=lambda obj: obj.__dict__) strResponse = strResponse.replace(': null', ': ""') @@ -46,7 +44,6 @@ def parse_pnfd(path, input_parameters=[], isETSI=True): if isETSI: tosca_obj = PnfdInfoModel(path, input_parameters) else: - # SDC PNF Model TBD tosca_obj = {} strResponse = json.dumps(tosca_obj, default=lambda obj: obj.__dict__) strResponse = strResponse.replace(': null', ': ""') diff --git a/catalog/pub/utils/toscaparser/basemodel.py b/catalog/pub/utils/toscaparser/basemodel.py index f45f7469..7df59ff8 100644 --- a/catalog/pub/utils/toscaparser/basemodel.py +++ b/catalog/pub/utils/toscaparser/basemodel.py @@ -24,6 +24,7 @@ import paramiko from toscaparser.tosca_template import ToscaTemplate from toscaparser.properties import Property from toscaparser.functions import Function, Concat, GetInput, get_function, function_mappings +from catalog.pub.utils.toscaparser.graph import Graph from catalog.pub.utils.toscaparser.dataentityext import DataEntityExt @@ -58,7 +59,8 @@ class BaseInfoModel(object): pass def buildInputs(self, tosca): - return tosca.tpl.get(TOPOLOGY_TEMPLATE, '').get(INPUTS, {}) + topo = tosca.tpl.get(TOPOLOGY_TEMPLATE, None) + return topo.get(INPUTS, {}) if topo else {} def buildToscaTemplate(self, path, params): file_name = None @@ -455,9 +457,37 @@ class BaseInfoModel(object): return False return True - def setTargetValues(dict_target, target_keys, dict_source, source_keys): + def setTargetValues(self, dict_target, target_keys, dict_source, source_keys): i = 0 for item in source_keys: dict_target[target_keys[i]] = dict_source.get(item, "") i += 1 return dict_target + + def get_deploy_graph(self, tosca, relations): + nodes = tosca.graph.nodetemplates + graph = Graph() + for node in nodes: + self._build_deploy_path(node, [], graph, relations) + return graph.to_dict() + + def _build_deploy_path(self, node, node_parent, graph, relations): + graph.add_node(node.name, node_parent) + type_require_set = {} + type_requires = node.type_definition.requirements + for type_require in type_requires: + type_require_set.update(type_require) + for requirement in node.requirements: + for k in requirement.keys(): + if type_require_set[k].get('relationship', None) in relations[0] or type_require_set[k].get('capability', None) in relations[0]: + if isinstance(requirement[k], dict): + next_node = requirement[k].get('node', None) + else: + next_node = requirement[k] + graph.add_node(next_node, [node.name]) + if type_require_set[k].get('relationship', None) in relations[1]: + if isinstance(requirement[k], dict): + next_node = requirement[k].get('node', None) + else: + next_node = requirement[k] + graph.add_node(next_node, [node.name]) diff --git a/catalog/pub/utils/toscaparser/graph.py b/catalog/pub/utils/toscaparser/graph.py new file mode 100644 index 00000000..6d38d12f --- /dev/null +++ b/catalog/pub/utils/toscaparser/graph.py @@ -0,0 +1,74 @@ +# Copyright 2018 ZTE Corporation. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from collections import deque +from collections import OrderedDict + + +class Graph(object): + + def __init__(self, graph_dict=None): + self.graph = OrderedDict() + if graph_dict: + for node, dep_nodes in graph_dict.iteritems(): + self.add_node(node, dep_nodes) + + def add_node(self, node, dep_nodes): + if node not in self.graph: + self.graph[node] = set() + if isinstance(dep_nodes, list): + for dep_node in dep_nodes: + if dep_node not in self.graph: + self.graph[dep_node] = set() + if dep_node not in self.graph[node]: + self.graph[node].add(dep_node) + + def get_pre_nodes(self, node): + return [k for k in self.graph if node in self.graph[k]] + + def topo_sort(self): + degree = {} + for node in self.graph: + degree[node] = 0 + + for node in self.graph: + for dependent in self.graph[node]: + degree[dependent] += 1 + + queue = deque() + for node in degree: + if degree[node] == 0: + queue.appendleft(node) + + sort_list = [] + while queue: + node = queue.pop() + sort_list.append(node) + for dependent in self.graph[node]: + degree[dependent] -= 1 + if degree[dependent] == 0: + queue.appendleft(dependent) + + if len(sort_list) == len(self.graph): + return sort_list + else: + return None + + def to_dict(self): + dict = {} + for node, dependents in self.graph.iteritems(): + dict[node] = [] + for dep in dependents: + dict[node].append(dep) + return dict diff --git a/catalog/pub/utils/toscaparser/nsdmodel.py b/catalog/pub/utils/toscaparser/nsdmodel.py index 9d72642f..22a75b94 100644 --- a/catalog/pub/utils/toscaparser/nsdmodel.py +++ b/catalog/pub/utils/toscaparser/nsdmodel.py @@ -15,6 +15,7 @@ import functools import logging from catalog.pub.utils.toscaparser.basemodel import BaseInfoModel + logger = logging.getLogger(__name__) SECTIONS = (NS_TYPE, NS_VNF_TYPE, NS_VL_TYPE, NS_PNF_TYPE, NS_NFP_TYPE, NS_VNFFG_TYPE) = \ @@ -25,6 +26,8 @@ SECTIONS = (NS_TYPE, NS_VNF_TYPE, NS_VL_TYPE, NS_PNF_TYPE, NS_NFP_TYPE, NS_VNFFG 'tosca.nodes.nfv.NFP', 'tosca.nodes.nfv.VNFFG') +NFV_NS_RELATIONSHIPS = [["tosca.relationships.nfv.VirtualLinksTo", "tosca.relationships.DependsOn"], []] + class EtsiNsdInfoModel(BaseInfoModel): @@ -44,6 +47,7 @@ class EtsiNsdInfoModel(BaseInfoModel): self.vnffgs = self._get_all_vnffg(tosca.topology_template.groups, types) self.ns_exposed = self._get_all_endpoint_exposed(tosca.topology_template) self.nested_ns = self._get_all_nested_ns(nodeTemplates, types) + self.graph = self.get_deploy_graph(tosca, NFV_NS_RELATIONSHIPS) def _get_all_vnf(self, nodeTemplates, node_types): vnfs = [] @@ -159,7 +163,7 @@ class EtsiNsdInfoModel(BaseInfoModel): ns['ns_id'] = node['name'] ns['description'] = node['description'] ns['properties'] = node['properties'] - ns['networks'] = self._get_networks(node) + ns['networks'] = self._get_networks(node, node_types) nss.append(ns) return nss diff --git a/catalog/pub/utils/toscaparser/servicemodel.py b/catalog/pub/utils/toscaparser/servicemodel.py index 249710d9..bccd417d 100644 --- a/catalog/pub/utils/toscaparser/servicemodel.py +++ b/catalog/pub/utils/toscaparser/servicemodel.py @@ -40,6 +40,8 @@ SDC_PNF_METADATA_SECTIONS = (SDC_PNF_UUID, SDC_PNF_INVARIANTUUID, SDC_PNF_NAME, SDC_PNF_SECTIONS = (SDC_PNF_ID, SDC_PNF_METADATA, SDC_PNF_PROPERTIES, SDC_PNF_DESCRIPTION) = \ ("name", "metadata", "properties", "description") +SERVICE_RELATIONSHIPS = [["tosca.relationships.network.LinksTo", "tosca.relationships.nfv.VirtualLinksTo", "tosca.capabilities.nfv.VirtualLinkable", "tosca.relationships.DependsOn"], []] + class SdcServiceModel(BaseInfoModel): @@ -49,12 +51,14 @@ class SdcServiceModel(BaseInfoModel): def parseModel(self, tosca): self.metadata = self._buildServiceMetadata(tosca) self.inputs = self.buildInputs(tosca) - nodeTemplates = map(functools.partial(self.buildNode, tosca=tosca), tosca.nodetemplates) - types = tosca.topology_template.custom_defs - self.basepath = self.get_base_path(tosca) - self.vnfs = self._get_all_vnf(nodeTemplates, types) - self.pnfs = self._get_all_pnf(nodeTemplates, types) - self.vls = self._get_all_vl(nodeTemplates, types) + if hasattr(tosca, 'nodetemplates'): + nodeTemplates = map(functools.partial(self.buildNode, tosca=tosca), tosca.nodetemplates) + types = tosca.topology_template.custom_defs + self.basepath = self.get_base_path(tosca) + self.vnfs = self._get_all_vnf(nodeTemplates, types) + self.pnfs = self._get_all_pnf(nodeTemplates, types) + self.vls = self._get_all_vl(nodeTemplates, types) + self.graph = self.get_deploy_graph(tosca, SERVICE_RELATIONSHIPS) def _buildServiceMetadata(self, tosca): """ SDC service Meta Format @@ -71,7 +75,8 @@ class SdcServiceModel(BaseInfoModel): namingPolicy: '' """ metadata_temp = self.buildMetadata(tosca) - self.setTargetValues(self.metadata, NS_METADATA_SECTIONS, metadata_temp, SDC_SERVICE_METADATA_SECTIONS) + metadata = {} + return self.setTargetValues(metadata, NS_METADATA_SECTIONS, metadata_temp, SDC_SERVICE_METADATA_SECTIONS) def _get_all_vnf(self, nodeTemplates, node_types): """ SDC Resource Metadata diff --git a/catalog/pub/utils/toscaparser/testdata/ns/ran.csar b/catalog/pub/utils/toscaparser/testdata/ns/ran.csar index acd4909381823b6460fa6850f9d0a57d46c4aeee..ad9c7d960ea3c83febf566176bef3df6cac0eee0 100644 GIT binary patch literal 3067 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 diff --git a/catalog/pub/utils/toscaparser/testdata/ns/service-vIMS.csar b/catalog/pub/utils/toscaparser/testdata/ns/service-vIMS.csar new file mode 100644 index 0000000000000000000000000000000000000000..754dfbc34531e6df45142bc412a2d9895742df3c GIT binary patch literal 54472 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