summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHuang Haibin <haibin.huang@intel.com>2018-06-01 06:00:36 +0800
committerHuang Haibin <haibin.huang@intel.com>2018-06-01 06:21:41 +0800
commit26e31ddfb4a8736582d55981bb439714088ef335 (patch)
tree3b19fc69773671d078277156e5a1a17acfa4e879
parent67a88b481bff73e9c6182dd9f28aaa927586f7d8 (diff)
support new tosca type
Change-Id: I379ff76af1b2dff5ab01a0df10abe894b7afb73f Issue-ID: VFC-875 Signed-off-by: Huang Haibin <haibin.huang@intel.com>
-rw-r--r--catalog/pub/utils/toscaparser/basemodel.py6
-rw-r--r--catalog/pub/utils/toscaparser/nsdmodel.py19
-rw-r--r--catalog/pub/utils/toscaparser/vnfdmodel.py27
3 files changed, 25 insertions, 27 deletions
diff --git a/catalog/pub/utils/toscaparser/basemodel.py b/catalog/pub/utils/toscaparser/basemodel.py
index 47d9bba9..465249d7 100644
--- a/catalog/pub/utils/toscaparser/basemodel.py
+++ b/catalog/pub/utils/toscaparser/basemodel.py
@@ -320,10 +320,10 @@ class BaseInfoModel(object):
return node['nodeType'].upper().find('.PNF.') >= 0 or node['nodeType'].upper().endswith('.PNF')
def isCp(self, node, node_types):
- return self.isNodeTypeX(node, node_types, CP_TYPE)
+ return node['nodeType'].upper().find('TOSCA.NODES.NFV.VDUCP') >= 0
def isVl(self, node, node_types):
- return self.isNodeTypeX(node, node_types, VL_TYPE)
+ return node['nodeType'].upper().find('TOSCA.NODES.NFV.VNFVIRTUALLINK') >= 0
def isService(self, node):
return node['nodeType'].upper().find('.SERVICE.') >= 0 or node['nodeType'].upper().endswith('.SERVICE')
@@ -430,7 +430,7 @@ class BaseInfoModel(object):
return node['nodeType'].upper().find('.NS.') >= 0 or node['nodeType'].upper().endswith('.NS')
def isVdu(self, node, node_types):
- return self.isNodeTypeX(node, node_types, VDU_TYPE)
+ return node['nodeType'].upper().find('TOSCA.NODES.NFV.VDU.COMPUTE') >= 0
def getCapabilityByName(self, node, capabilityName):
if 'capabilities' in node and capabilityName in node['capabilities']:
diff --git a/catalog/pub/utils/toscaparser/nsdmodel.py b/catalog/pub/utils/toscaparser/nsdmodel.py
index e1a459a2..c01ea7e4 100644
--- a/catalog/pub/utils/toscaparser/nsdmodel.py
+++ b/catalog/pub/utils/toscaparser/nsdmodel.py
@@ -36,7 +36,7 @@ class EtsiNsdInfoModel(BaseInfoModel):
self.vls = self.get_all_vl(nodeTemplates, node_types)
self.cps = self.get_all_cp(nodeTemplates, node_types)
self.routers = self.get_all_router(nodeTemplates)
- self.fps = self._get_all_fp(nodeTemplates)
+ self.fps = self._get_all_fp(nodeTemplates, node_types)
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)
@@ -141,12 +141,12 @@ class EtsiNsdInfoModel(BaseInfoModel):
def get_all_vl(self, nodeTemplates, node_types):
vls = []
for node in nodeTemplates:
- if self.isVl(node) or self._isExternalVL(node):
+ if self.isVl(node, node_types) or self._isExternalVL(node):
vl = dict()
vl['vl_id'] = node['name']
vl['description'] = node['description']
vl['properties'] = node['properties']
- vl['route_external'] = False if self.isVl(node) else True
+ vl['route_external'] = False if self.isVl(node, node_types) else True
# vl['route_id'] = self._get_vl_route_id(node)
vls.append(vl)
return vls
@@ -161,11 +161,6 @@ class EtsiNsdInfoModel(BaseInfoModel):
def _isExternalVL(self, node):
return node['nodeType'].upper().find('.ROUTEEXTERNALVL') >= 0
- def isVl(self, node):
- isvl = node['nodeType'].upper().find('.VIRTUALLINK.') >= 0 or node['nodeType'].upper().find('.VL.') >= 0
- isvl = isvl or node['nodeType'].upper().endswith('.VIRTUALLINK') or node['nodeType'].upper().endswith('.VL')
- return isvl
-
def get_all_cp(self, nodeTemplates, node_types):
cps = []
for node in nodeTemplates:
@@ -239,7 +234,7 @@ class EtsiNsdInfoModel(BaseInfoModel):
return external_vls[0]['relationship']['properties']['router_ip_address']
return []
- def _get_all_fp(self, nodeTemplates):
+ def _get_all_fp(self, nodeTemplates, node_types):
fps = []
for node in nodeTemplates:
if self._isFp(node):
@@ -247,7 +242,7 @@ class EtsiNsdInfoModel(BaseInfoModel):
fp['fp_id'] = node['name']
fp['description'] = node['description']
fp['properties'] = node['properties']
- fp['forwarder_list'] = self._getForwarderList(node, nodeTemplates)
+ fp['forwarder_list'] = self._getForwarderList(node, nodeTemplates, node_types)
fps.append(fp)
return fps
@@ -256,14 +251,14 @@ class EtsiNsdInfoModel(BaseInfoModel):
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):
+ def _getForwarderList(self, node, node_templates, node_types):
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'
+ type = 'cp' if self.isCp(tmpnode, node_types) else 'vnf'
req_node_name = self.get_requirement_node_name(value)
if isinstance(value, dict) and 'capability' in value:
forwarderList.append(
diff --git a/catalog/pub/utils/toscaparser/vnfdmodel.py b/catalog/pub/utils/toscaparser/vnfdmodel.py
index 7934a847..c85b7d1b 100644
--- a/catalog/pub/utils/toscaparser/vnfdmodel.py
+++ b/catalog/pub/utils/toscaparser/vnfdmodel.py
@@ -32,6 +32,7 @@ class EtsiVnfdInfoModel(EtsiNsdInfoModel):
nodeTemplates = map(functools.partial(self.buildNode, tosca=tosca),
tosca.nodetemplates)
node_types = tosca.topology_template.custom_defs
+ logger.error("customdefs:%s", node_types)
self.basepath = self._get_base_path(tosca)
self.services = self._get_all_services(nodeTemplates)
self.vcloud = self._get_all_vcloud(nodeTemplates)
@@ -41,6 +42,7 @@ class EtsiVnfdInfoModel(EtsiNsdInfoModel):
self.volume_storages = self._get_all_volume_storage(nodeTemplates)
self.vdus = self._get_all_vdu(nodeTemplates, node_types)
self.vls = self.get_all_vl(nodeTemplates, node_types)
+ logger.debug("vls:%s", self.vls)
self.cps = self.get_all_cp(nodeTemplates, node_types)
self.plugins = self.get_all_plugin(nodeTemplates)
self.routers = self.get_all_router(nodeTemplates)
@@ -168,21 +170,26 @@ class EtsiVnfdInfoModel(EtsiNsdInfoModel):
def _get_all_vdu(self, nodeTemplates, node_types):
rets = []
+ inject_files = []
for node in nodeTemplates:
+ logger.error("nodeTemplates :%s", node)
if self.isVdu(node, node_types):
ret = {}
ret['vdu_id'] = node['name']
+ ret['type'] = node['nodeType']
if 'description' in node:
ret['description'] = node['description']
ret['properties'] = node['properties']
- for inject_file in ret['properties']['inject_files']:
- source_path = os.path.join(self.basepath, inject_file['source_path'])
- with open(source_path, "rb") as f:
- source_data = f.read()
- source_data_base64 = source_data.encode("base64")
- inject_file["source_data_base64"] = source_data_base64
-
- ret['image_file'] = self.get_node_image_file(node)
+ if 'inject_files' in node['properties']:
+ inject_files = node['properties']['inject_files']
+ if inject_files is not None:
+ for inject_file in inject_files:
+ source_path = os.path.join(self.basepath, inject_file['source_path'])
+ with open(source_path, "rb") as f:
+ source_data = f.read()
+ source_data_base64 = source_data.encode("base64")
+ inject_file["source_data_base64"] = source_data_base64
+
local_storages = self.getRequirementByName(node, 'local_storage')
ret['local_storages'] = map(lambda x: self.get_requirement_node_name(x), local_storages)
volume_storages = self.getRequirementByName(node, 'volume_storage')
@@ -192,10 +199,6 @@ class EtsiVnfdInfoModel(EtsiNsdInfoModel):
virtual_compute = self.getCapabilityByName(node, 'virtual_compute')
if virtual_compute is not None and 'properties' in virtual_compute:
ret['virtual_compute'] = virtual_compute['properties']
- virtual_storage_names = self.getRequirementByName(node, 'virtual_storage')
- virtual_storage = self.getRequirementByNodeName(nodeTemplates, virtual_storage_names[0], 'properties')
- if virtual_storage is not None:
- ret['virtual_compute']['virtual_storage'] = virtual_storage
ret['vls'] = self.get_linked_vl_ids(node, nodeTemplates)