summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorying.yunlong <ying.yunlong@zte.com.cn>2017-08-21 19:42:48 +0800
committerying.yunlong <ying.yunlong@zte.com.cn>2017-08-21 19:42:48 +0800
commit0db275fd404ecfb05a0dbcf794ec35ab47c66005 (patch)
tree619845e7b7829ba97b1c70762c80c16c01c44c54
parent8cbcd37037db63c7962f8c4644aa23accd5ffd72 (diff)
Add convert router logic
After parse the nsd package, add get_all_router function to convert the router info. Change-Id: I6be26d8b12fe41176c2d9148b68fc106636ae9bb Issue-ID: VFC-123 Signed-off-by: ying.yunlong <ying.yunlong@zte.com.cn>
-rw-r--r--lcm/pub/utils/toscaparser/nsdmodel.py37
1 files changed, 35 insertions, 2 deletions
diff --git a/lcm/pub/utils/toscaparser/nsdmodel.py b/lcm/pub/utils/toscaparser/nsdmodel.py
index ae902df6..7ea68a0f 100644
--- a/lcm/pub/utils/toscaparser/nsdmodel.py
+++ b/lcm/pub/utils/toscaparser/nsdmodel.py
@@ -21,7 +21,7 @@ class EtsiNsdInfoModel(BaseInfoModel):
self.pnfs = self._get_all_pnf(nodeTemplates)
self.vls = self.get_all_vl(nodeTemplates)
self.cps = self.get_all_cp(nodeTemplates)
- # self.routers = self.get_all_router(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)
@@ -168,4 +168,37 @@ class EtsiNsdInfoModel(BaseInfoModel):
node = self.get_node_by_name(node_templates, node_id)
if self.isPnf(node):
return node_id
- return "" \ No newline at end of file
+ return ""
+
+ def get_all_router(self, nodeTemplates):
+ rets = []
+ for node in nodeTemplates:
+ if self._isRouter(node):
+ ret = {}
+ ret['router_id'] = node['name']
+ ret['description'] = node['description']
+ ret['properties'] = node['properties']
+ ret['external_vl_id'] = self._get_router_external_vl_id(node)
+ ret['external_ip_addresses'] = self._get_external_ip_addresses(node)
+
+ rets.append(ret)
+ return rets
+
+ def _isRouter(self, node):
+ return node['nodeType'].upper().find('.ROUTER.') >= 0 or node['nodeType'].upper().endswith('.ROUTER')
+
+ def _get_router_external_vl(self, node):
+ return self.getRequirementByName(node, 'external_virtual_link')
+
+ def _get_router_external_vl_id(self, node):
+ ids = map(lambda x: self.get_requirement_node_name(x), self._get_router_external_vl(node))
+ if len(ids) > 0:
+ return ids[0]
+ return ""
+
+ def _get_external_ip_addresses(self, node):
+ external_vls = self._get_router_external_vl(node)
+ 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