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)
25 def _get_all_services(self, nodeTemplates):
27 for node in nodeTemplates:
28 if self.isService(node):
30 service['serviceId'] = node['name']
31 if 'description' in node:
32 service['description'] = node['description']
33 service['properties'] = node['properties']
34 service['dependencies'] = map(lambda x: self.get_requirement_node_name(x),
35 self.getNodeDependencys(node))
36 service['networks'] = map(lambda x: self.get_requirement_node_name(x), self.getVirtualLinks(node))
41 def _get_all_vcloud(self, nodeTemplates):
43 for node in nodeTemplates:
44 if self._isVcloud(node):
46 if 'vdc_name' in node['properties']:
47 ret['vdc_name'] = node['properties']['vdc_name']
50 if 'storage_clusters' in node['properties']:
51 ret['storage_clusters'] = node['properties']['storage_clusters']
53 ret['storage_clusters'] = []
58 def _isVcloud(self, node):
59 return node['nodeType'].upper().find('.VCLOUD.') >= 0 or node['nodeType'].upper().endswith('.VCLOUD')
61 def _get_all_vcenter(self, nodeTemplates):
63 for node in nodeTemplates:
64 if self._isVcenter(node):
66 if 'compute_clusters' in node['properties']:
67 ret['compute_clusters'] = node['properties']['compute_clusters']
69 ret['compute_clusters'] = []
70 if 'storage_clusters' in node['properties']:
71 ret['storage_clusters'] = node['properties']['storage_clusters']
73 ret['storage_clusters'] = []
74 if 'network_clusters' in node['properties']:
75 ret['network_clusters'] = node['properties']['network_clusters']
77 ret['network_clusters'] = []
82 def _isVcenter(self, node):
83 return node['nodeType'].upper().find('.VCENTER.') >= 0 or node['nodeType'].upper().endswith('.VCENTER')
85 def _get_all_image_file(self, nodeTemplates):
87 for node in nodeTemplates:
88 if self._isImageFile(node):
90 ret['image_file_id'] = node['name']
91 if 'description' in node:
92 ret['description'] = node['description']
93 ret['properties'] = node['properties']
98 def _isImageFile(self, node):
99 return node['nodeType'].upper().find('.IMAGEFILE.') >= 0 or node['nodeType'].upper().endswith('.IMAGEFILE')