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)
24 self.volume_storages = self._get_all_volume_storage(nodeTemplates)
27 def _get_all_services(self, nodeTemplates):
29 for node in nodeTemplates:
30 if self.isService(node):
32 service['serviceId'] = node['name']
33 if 'description' in node:
34 service['description'] = node['description']
35 service['properties'] = node['properties']
36 service['dependencies'] = map(lambda x: self.get_requirement_node_name(x),
37 self.getNodeDependencys(node))
38 service['networks'] = map(lambda x: self.get_requirement_node_name(x), self.getVirtualLinks(node))
43 def _get_all_vcloud(self, nodeTemplates):
45 for node in nodeTemplates:
46 if self._isVcloud(node):
48 if 'vdc_name' in node['properties']:
49 ret['vdc_name'] = node['properties']['vdc_name']
52 if 'storage_clusters' in node['properties']:
53 ret['storage_clusters'] = node['properties']['storage_clusters']
55 ret['storage_clusters'] = []
60 def _isVcloud(self, node):
61 return node['nodeType'].upper().find('.VCLOUD.') >= 0 or node['nodeType'].upper().endswith('.VCLOUD')
63 def _get_all_vcenter(self, nodeTemplates):
65 for node in nodeTemplates:
66 if self._isVcenter(node):
68 if 'compute_clusters' in node['properties']:
69 ret['compute_clusters'] = node['properties']['compute_clusters']
71 ret['compute_clusters'] = []
72 if 'storage_clusters' in node['properties']:
73 ret['storage_clusters'] = node['properties']['storage_clusters']
75 ret['storage_clusters'] = []
76 if 'network_clusters' in node['properties']:
77 ret['network_clusters'] = node['properties']['network_clusters']
79 ret['network_clusters'] = []
84 def _isVcenter(self, node):
85 return node['nodeType'].upper().find('.VCENTER.') >= 0 or node['nodeType'].upper().endswith('.VCENTER')
87 def _get_all_image_file(self, nodeTemplates):
89 for node in nodeTemplates:
90 if self._isImageFile(node):
92 ret['image_file_id'] = node['name']
93 if 'description' in node:
94 ret['description'] = node['description']
95 ret['properties'] = node['properties']
100 def _isImageFile(self, node):
101 return node['nodeType'].upper().find('.IMAGEFILE.') >= 0 or node['nodeType'].upper().endswith('.IMAGEFILE')
103 def _get_all_local_storage(self, nodeTemplates):
105 for node in nodeTemplates:
106 if self._isLocalStorage(node):
108 ret['local_storage_id'] = node['name']
109 if 'description' in node:
110 ret['description'] = node['description']
111 ret['properties'] = node['properties']
116 def _isLocalStorage(self, node):
117 return node['nodeType'].upper().find('.LOCALSTORAGE.') >= 0 or node['nodeType'].upper().endswith(
120 def _get_all_volume_storage(self, nodeTemplates):
122 for node in nodeTemplates:
123 if self._isVolumeStorage(node):
125 ret['volume_storage_id'] = node['name']
126 if 'description' in node:
127 ret['description'] = node['description']
128 ret['properties'] = node['properties']
129 ret['image_file'] = map(lambda x: self.get_requirement_node_name(x),
130 self.getRequirementByName(node, 'image_file'))
135 def _isVolumeStorage(self, node):
136 return node['nodeType'].upper().find('.VOLUMESTORAGE.') >= 0 or node['nodeType'].upper().endswith(