From 0c7bc062700c44c837d5180b25ce18aea2bf6dbe Mon Sep 17 00:00:00 2001 From: "ying.yunlong" Date: Tue, 22 Aug 2017 09:33:34 +0800 Subject: [PATCH] Implement parser convert fp logic After parse the nsd package, add _get_all_fp function to convert the fp info. Change-Id: Ia205b4c511206c971e1df34ef4e48703399d536d Issue-ID: VFC-124 Signed-off-by: ying.yunlong --- lcm/pub/utils/toscaparser/nsdmodel.py | 49 +++++++++++++++++++++++++++++------ 1 file changed, 41 insertions(+), 8 deletions(-) diff --git a/lcm/pub/utils/toscaparser/nsdmodel.py b/lcm/pub/utils/toscaparser/nsdmodel.py index 7ea68a0f..1838014d 100644 --- a/lcm/pub/utils/toscaparser/nsdmodel.py +++ b/lcm/pub/utils/toscaparser/nsdmodel.py @@ -22,13 +22,8 @@ class EtsiNsdInfoModel(BaseInfoModel): self.vls = self.get_all_vl(nodeTemplates) self.cps = self.get_all_cp(nodeTemplates) self.routers = self.get_all_router(nodeTemplates) - # self.fps = self._get_all_fp(nodeTemplates) - # self.vnffgs = self._get_all_vnffg(tosca.topology_template.groups) - # self.server_groups = self.get_all_server_group(tosca.topology_template.groups) - # self.ns_exposed = self.get_all_endpoint_exposed(tosca.topology_template) - # self.policies = self._get_policies_scaling(tosca.topology_template.policies) - # self.ns_flavours = self.get_all_flavour(tosca.topology_template.groups) - # self.nested_ns = self.get_all_nested_ns(nodeTemplates) + self.fps = self._get_all_fp(nodeTemplates) + def buildInputs(self, top_inputs): ret = {} @@ -201,4 +196,42 @@ class EtsiNsdInfoModel(BaseInfoModel): if len(external_vls) > 0: if 'relationship' in external_vls[0] and 'properties' in external_vls[0]['relationship'] and 'router_ip_address' in external_vls[0]['relationship']['properties']: return external_vls[0]['relationship']['properties']['router_ip_address'] - return [] \ No newline at end of file + return [] + + def _get_all_fp(self, nodeTemplates): + fps = [] + for node in nodeTemplates: + if self._isFp(node): + fp = {} + fp['fp_id'] = node['name'] + fp['description'] = node['description'] + fp['properties'] = node['properties'] + fp['forwarder_list'] = self._getForwarderList(node, nodeTemplates) + + fps.append(fp) + return fps + + def _isFp(self, node): + return node['nodeType'].upper().find('.FP.') >= 0 or node['nodeType'].upper().find('.SFP.') >= 0 or node[ + 'nodeType'].upper().endswith('.FP') or node['nodeType'].upper().endswith('.SFP') + + def _getForwarderList(self, node, node_templates): + forwarderList = [] + if 'requirements' in node: + for item in node['requirements']: + for key, value in item.items(): + if key == 'forwarder': + tmpnode = self.get_node_by_req(node_templates, value) + type = 'cp' if self.isCp(tmpnode) else 'vnf' + req_node_name = self.get_requirement_node_name(value) + if isinstance(value, dict) and 'capability' in value: + forwarderList.append( + {"type": type, "node_name": req_node_name, "capability": value['capability']}) + else: + forwarderList.append({"type": type, "node_name": req_node_name, "capability": ""}) + + return forwarderList + + def get_node_by_req(self, node_templates, req): + req_node_name = self.get_requirement_node_name(req) + return self.get_node_by_name(node_templates, req_node_name) -- 2.16.6