diff options
author | 2017-08-21 19:42:48 +0800 | |
---|---|---|
committer | 2017-08-21 19:42:48 +0800 | |
commit | 0db275fd404ecfb05a0dbcf794ec35ab47c66005 (patch) | |
tree | 619845e7b7829ba97b1c70762c80c16c01c44c54 | |
parent | 8cbcd37037db63c7962f8c4644aa23accd5ffd72 (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.py | 37 |
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 |