summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorying.yunlong <ying.yunlong@zte.com.cn>2017-08-22 09:33:34 +0800
committerying.yunlong <ying.yunlong@zte.com.cn>2017-08-22 09:33:34 +0800
commit0c7bc062700c44c837d5180b25ce18aea2bf6dbe (patch)
tree3f9973ae4c0c217465011ddb9bfb593abc7ed054
parent0db275fd404ecfb05a0dbcf794ec35ab47c66005 (diff)
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 <ying.yunlong@zte.com.cn>
-rw-r--r--lcm/pub/utils/toscaparser/nsdmodel.py49
1 files 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)