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')
         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']:
 
         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)
     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
     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:
                 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):
                 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
         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(
 
         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)
         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)
 
     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')
                 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)