Merge "Extend ns instant with new parser support"
[vfc/nfvo/lcm.git] / lcm / pub / utils / toscaparser / vnfdmodel.py
1 import functools
2
3 from lcm.pub.utils.toscaparser import EtsiNsdInfoModel
4
5
6 class EtsiVnfdInfoModel(EtsiNsdInfoModel):
7
8     def __init__(self, path, params):
9         super(EtsiVnfdInfoModel, self).__init__(path, params)
10
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)
15
16         nodeTemplates = map(functools.partial(self.buildNode, inputs=tosca.inputs, parsed_params=tosca.parsed_params),
17                             tosca.nodetemplates)
18
19         self.services = self._get_all_services(nodeTemplates)
20
21
22     def _get_all_services(self, nodeTemplates):
23         ret = []
24         for node in nodeTemplates:
25             if self.isService(node):
26                 service = {}
27                 service['serviceId'] = node['name']
28                 if 'description' in node:
29                     service['description'] = node['description']
30                 service['properties'] = node['properties']
31                 service['dependencies'] = map(lambda x: self.get_requirement_node_name(x),
32                                               self.getNodeDependencys(node))
33                 service['networks'] = map(lambda x: self.get_requirement_node_name(x), self.getVirtualLinks(node))
34
35                 ret.append(service)
36         return ret