Add buildArtifacts and build_interfaces
[vfc/nfvo/lcm.git] / lcm / pub / utils / toscaparser / nsdmodel.py
1 import functools
2
3 from lcm.pub.utils.toscaparser.basemodel import BaseInfoModel
4
5
6 class EtsiNsdInfoModel(BaseInfoModel):
7
8     def __init__(self, path, params):
9         tosca = self.buildToscaTemplate(path, params)
10         self.parseModel(tosca)
11
12     def parseModel(self, tosca):
13         self.buidMetadata(tosca)
14         if hasattr(tosca, 'topology_template') and hasattr(tosca.topology_template, 'inputs'):
15             self.inputs = self.buildInputs(tosca.topology_template.inputs)
16
17         nodeTemplates = map(functools.partial(self.buildNode, inputs=tosca.inputs, parsed_params=tosca.parsed_params),
18                             tosca.nodetemplates)
19
20         # self.vnfs = self._get_all_vnf(nodeTemplates)
21         # self.pnfs = self._get_all_pnf(nodeTemplates)
22         # self.vls = self.get_all_vl(nodeTemplates)
23         # self.cps = self.get_all_cp(nodeTemplates)
24         # self.routers = self.get_all_router(nodeTemplates)
25         # self.fps = self._get_all_fp(nodeTemplates)
26         # self.vnffgs = self._get_all_vnffg(tosca.topology_template.groups)
27         # self.server_groups = self.get_all_server_group(tosca.topology_template.groups)
28         # self.ns_exposed = self.get_all_endpoint_exposed(tosca.topology_template)
29         # self.policies = self._get_policies_scaling(tosca.topology_template.policies)
30         # self.ns_flavours = self.get_all_flavour(tosca.topology_template.groups)
31         # self.nested_ns = self.get_all_nested_ns(nodeTemplates)
32
33     def buildInputs(self, top_inputs):
34         ret = {}
35         for tmpinput in top_inputs:
36             tmp = {}
37             tmp['type'] = tmpinput.type
38             tmp['description'] = tmpinput.description
39             tmp['default'] = tmpinput.default
40
41             ret[tmpinput.name] = tmp
42         return ret
43
44     def buildNode(self, nodeTemplate, inputs, parsed_params):
45         ret ={}
46         ret['name'] = nodeTemplate.name
47         ret['nodeType'] = nodeTemplate.type
48         if 'description' in nodeTemplate.entity_tpl:
49             ret['description'] = nodeTemplate.entity_tpl['description']
50         else:
51             ret['description'] = ''
52         props = self.buildProperties(nodeTemplate, parsed_params)
53         ret['properties'] = self.verify_properties(props, inputs, parsed_params)
54         ret['requirements'] = self.build_requirements(nodeTemplate)
55         self.buildCapabilities(nodeTemplate, inputs, ret)
56         self.buildArtifacts(nodeTemplate, inputs, ret)
57         interfaces = self.build_interfaces(nodeTemplate)
58         if interfaces: ret['interfaces'] = interfaces
59         return ret