support new tosca type 75/49775/3
authorHuang Haibin <haibin.huang@intel.com>
Thu, 31 May 2018 22:00:36 +0000 (06:00 +0800)
committerHuang Haibin <haibin.huang@intel.com>
Thu, 31 May 2018 22:21:41 +0000 (06:21 +0800)
Change-Id: I379ff76af1b2dff5ab01a0df10abe894b7afb73f
Issue-ID: VFC-875
Signed-off-by: Huang Haibin <haibin.huang@intel.com>
catalog/pub/utils/toscaparser/basemodel.py
catalog/pub/utils/toscaparser/nsdmodel.py
catalog/pub/utils/toscaparser/vnfdmodel.py

index 47d9bba..465249d 100644 (file)
@@ -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']:
index e1a459a..c01ea7e 100644 (file)
@@ -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(
index 7934a84..c85b7d1 100644 (file)
@@ -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)