diff options
-rw-r--r-- | catalog/pub/utils/toscaparser/basemodel.py | 6 | ||||
-rw-r--r-- | catalog/pub/utils/toscaparser/nsdmodel.py | 19 | ||||
-rw-r--r-- | catalog/pub/utils/toscaparser/vnfdmodel.py | 27 |
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) |