summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHuang Haibin <haibin.huang@intel.com>2018-03-29 02:27:42 +0800
committerHuang Haibin <haibin.huang@intel.com>2018-03-30 01:01:27 +0800
commit1adb38741baa7baed3c9630207952b6a2471ac57 (patch)
treeb7c9f5bdb86b289a21dc12668699c761c7a7a9cd
parentda7dbc3813a88614cde28d666b610f7a3d337f10 (diff)
check cp type with all parent types
Change-Id: I01dad5e188be6db859d58661f9492a98851dc0df Issue-ID: VFC-858 Signed-off-by: Huang Haibin <haibin.huang@intel.com>
-rw-r--r--catalog/pub/utils/toscaparser/basemodel.py17
-rw-r--r--catalog/pub/utils/toscaparser/nsdmodel.py8
-rw-r--r--catalog/pub/utils/toscaparser/vnfdmodel.py8
3 files changed, 23 insertions, 10 deletions
diff --git a/catalog/pub/utils/toscaparser/basemodel.py b/catalog/pub/utils/toscaparser/basemodel.py
index 205bdb4e..20a990ba 100644
--- a/catalog/pub/utils/toscaparser/basemodel.py
+++ b/catalog/pub/utils/toscaparser/basemodel.py
@@ -29,6 +29,10 @@ from catalog.pub.utils.toscaparser.dataentityext import DataEntityExt
logger = logging.getLogger(__name__)
+# TOSCA template key names
+SECTIONS = (CP_TYPE) = \
+ ('tosca.nodes.nfv.Cp')
+
class BaseInfoModel(object):
@@ -231,6 +235,15 @@ class BaseInfoModel(object):
return node_template.entity_tpl['interfaces']
return None
+ def isNodeTypeX(self, node, nodeTypes, x):
+ node_type = node['nodeType']
+ while node_type.upper().find(x) == -1:
+ node_type_derived = node_type
+ node_type = nodeTypes[node_type]['derived_from']
+ if node_type == "tosca.nodes.Root" or node_type == node_type_derived:
+ return False
+ return True
+
def isVnf(self, node):
# return node['nodeType'].upper().find('.VNF.') >= 0 or node['nodeType'].upper().endswith('.VNF')
return node['nodeType'].upper().find('.VF.') >= 0 or node['nodeType'].upper().endswith('.VF')
@@ -238,8 +251,8 @@ class BaseInfoModel(object):
def isPnf(self, node):
return node['nodeType'].upper().find('.PNF.') >= 0 or node['nodeType'].upper().endswith('.PNF')
- def isCp(self, node):
- return node['nodeType'].upper().find('.CP.') >= 0 or node['nodeType'].upper().endswith('.CP')
+ def isCp(self, node, node_types):
+ return self.isNodeTypeX(node, node_types, CP_TYPE)
def isVl(self, node):
isvl = node['nodeType'].upper().find('.VIRTUALLINK.') >= 0 or node['nodeType'].upper().find('.VL.') >= 0
diff --git a/catalog/pub/utils/toscaparser/nsdmodel.py b/catalog/pub/utils/toscaparser/nsdmodel.py
index 7bf2bc60..37d1c117 100644
--- a/catalog/pub/utils/toscaparser/nsdmodel.py
+++ b/catalog/pub/utils/toscaparser/nsdmodel.py
@@ -30,11 +30,11 @@ class EtsiNsdInfoModel(BaseInfoModel):
nodeTemplates = map(functools.partial(self.buildNode, inputs=tosca.inputs, parsed_params=tosca.parsed_params),
tosca.nodetemplates)
-
+ node_types = tosca.topology_template.custom_defs
self.vnfs = self._get_all_vnf(nodeTemplates)
self.pnfs = self._get_all_pnf(nodeTemplates)
self.vls = self.get_all_vl(nodeTemplates)
- self.cps = self.get_all_cp(nodeTemplates)
+ self.cps = self.get_all_cp(nodeTemplates, node_types)
self.routers = self.get_all_router(nodeTemplates)
self.fps = self._get_all_fp(nodeTemplates)
self.vnffgs = self._get_all_vnffg(tosca.topology_template.groups)
@@ -166,10 +166,10 @@ class EtsiNsdInfoModel(BaseInfoModel):
def _isExternalVL(self, node):
return node['nodeType'].upper().find('.ROUTEEXTERNALVL') >= 0
- def get_all_cp(self, nodeTemplates):
+ def get_all_cp(self, nodeTemplates, node_types):
cps = []
for node in nodeTemplates:
- if self.isCp(node):
+ if self.isCp(node, node_types):
cp = {}
cp['cp_id'] = node['name']
cp['cpd_id'] = node['name']
diff --git a/catalog/pub/utils/toscaparser/vnfdmodel.py b/catalog/pub/utils/toscaparser/vnfdmodel.py
index 80722f7f..a2c24cfc 100644
--- a/catalog/pub/utils/toscaparser/vnfdmodel.py
+++ b/catalog/pub/utils/toscaparser/vnfdmodel.py
@@ -29,7 +29,7 @@ class EtsiVnfdInfoModel(EtsiNsdInfoModel):
nodeTemplates = map(functools.partial(self.buildNode, inputs=tosca.inputs, parsed_params=tosca.parsed_params),
tosca.nodetemplates)
-
+ node_types = tosca.topology_template.custom_defs
self.services = self._get_all_services(nodeTemplates)
self.vcloud = self._get_all_vcloud(nodeTemplates)
self.vcenter = self._get_all_vcenter(nodeTemplates)
@@ -38,7 +38,7 @@ class EtsiVnfdInfoModel(EtsiNsdInfoModel):
self.volume_storages = self._get_all_volume_storage(nodeTemplates)
self.vdus = self._get_all_vdu(nodeTemplates)
self.vls = self.get_all_vl(nodeTemplates)
- self.cps = self.get_all_cp(nodeTemplates)
+ self.cps = self.get_all_cp(nodeTemplates, node_types)
self.plugins = self.get_all_plugin(nodeTemplates)
self.routers = self.get_all_router(nodeTemplates)
self.server_groups = self.get_all_server_group(tosca.topology_template.groups)
@@ -241,10 +241,10 @@ class EtsiVnfdInfoModel(EtsiNsdInfoModel):
rets.append(ret)
return rets
- def get_all_cp(self, nodeTemplates):
+ def get_all_cp(self, nodeTemplates, node_types):
cps = []
for node in nodeTemplates:
- if self.isCp(node):
+ if self.isCp(node, node_types):
cp = {}
cp['cp_id'] = node['name']
cp['cpd_id'] = node['name']