3 from lcm.pub.utils.toscaparser import EtsiNsdInfoModel
6 class EtsiVnfdInfoModel(EtsiNsdInfoModel):
8 def __init__(self, path, params):
9 super(EtsiVnfdInfoModel, self).__init__(path, params)
11 def parseModel(self, tosca):
12 self.buidMetadata(tosca)
13 if hasattr(tosca, 'topology_template') and hasattr(tosca.topology_template, 'inputs'):
14 self.inputs = self.buildInputs(tosca.topology_template.inputs)
16 nodeTemplates = map(functools.partial(self.buildNode, inputs=tosca.inputs, parsed_params=tosca.parsed_params),
19 self.services = self._get_all_services(nodeTemplates)
20 self.vcloud = self._get_all_vcloud(nodeTemplates)
21 self.vcenter = self._get_all_vcenter(nodeTemplates)
22 self.image_files = self._get_all_image_file(nodeTemplates)
23 self.local_storages = self._get_all_local_storage(nodeTemplates)
26 def _get_all_services(self, nodeTemplates):
28 for node in nodeTemplates:
29 if self.isService(node):
31 service['serviceId'] = node['name']
32 if 'description' in node:
33 service['description'] = node['description']
34 service['properties'] = node['properties']
35 service['dependencies'] = map(lambda x: self.get_requirement_node_name(x),
36 self.getNodeDependencys(node))
37 service['networks'] = map(lambda x: self.get_requirement_node_name(x), self.getVirtualLinks(node))
42 def _get_all_vcloud(self, nodeTemplates):
44 for node in nodeTemplates:
45 if self._isVcloud(node):
47 if 'vdc_name' in node['properties']:
48 ret['vdc_name'] = node['properties']['vdc_name']
51 if 'storage_clusters' in node['properties']:
52 ret['storage_clusters'] = node['properties']['storage_clusters']
54 ret['storage_clusters'] = []
59 def _isVcloud(self, node):
60 return node['nodeType'].upper().find('.VCLOUD.') >= 0 or node['nodeType'].upper().endswith('.VCLOUD')
62 def _get_all_vcenter(self, nodeTemplates):
64 for node in nodeTemplates:
65 if self._isVcenter(node):
67 if 'compute_clusters' in node['properties']:
68 ret['compute_clusters'] = node['properties']['compute_clusters']
70 ret['compute_clusters'] = []
71 if 'storage_clusters' in node['properties']:
72 ret['storage_clusters'] = node['properties']['storage_clusters']
74 ret['storage_clusters'] = []
75 if 'network_clusters' in node['properties']:
76 ret['network_clusters'] = node['properties']['network_clusters']
78 ret['network_clusters'] = []
83 def _isVcenter(self, node):
84 return node['nodeType'].upper().find('.VCENTER.') >= 0 or node['nodeType'].upper().endswith('.VCENTER')
86 def _get_all_image_file(self, nodeTemplates):
88 for node in nodeTemplates:
89 if self._isImageFile(node):
91 ret['image_file_id'] = node['name']
92 if 'description' in node:
93 ret['description'] = node['description']
94 ret['properties'] = node['properties']
99 def _isImageFile(self, node):
100 return node['nodeType'].upper().find('.IMAGEFILE.') >= 0 or node['nodeType'].upper().endswith('.IMAGEFILE')
102 def _get_all_local_storage(self, nodeTemplates):
104 for node in nodeTemplates:
105 if self._isLocalStorage(node):
107 ret['local_storage_id'] = node['name']
108 if 'description' in node:
109 ret['description'] = node['description']
110 ret['properties'] = node['properties']
115 def _isLocalStorage(self, node):
116 return node['nodeType'].upper().find('.LOCALSTORAGE.') >= 0 or node['nodeType'].upper().endswith(