715ddc3324e7a397e3e7d84e402aeded6918e52a
[osm/SO.git] / common / python / rift / mano / tosca_translator / rwmano / tosca / tosca_forwarding_graph.py
1 from rift.mano.tosca_translator.rwmano.syntax.mano_resource import ManoResource
2 from toscaparser.functions import GetInput
3
4 TARGET_CLASS_NAME = 'ToscaForwardingGraph'
5 class ToscaForwardingGraph(ManoResource):
6 '''Translate TOSCA node type tosca.nodes.nfv.FP'''
7 toscatype = 'tosca.groups.nfv.VNFFG'
8
9 def __init__(self, log, group, metadata=None):
10 #super(ToscaForwardingGraph, self).__init__(log, nodetemplate, type_='forwardgraph', metadata=metadata)
11 super(ToscaForwardingGraph, self).__init__(log,
12 group,
13 type_="vnfgd",
14 metadata=metadata)
15 self.name = group.name
16 self.type_ = 'vnffg'
17 self.metadata = metadata
18 self.group = group
19 self.properties = {}
20 self.classifiers = []
21 self.rsp = []
22 self.log = log
23
24 def get_tosca_group_props(self):
25 tosca_props = {}
26 for prop in self.group.get_properties_objects():
27 if isinstance(prop.value, GetInput):
28 tosca_props[prop.name] = {'get_param': prop.value.input_name}
29 else:
30 tosca_props[prop.name] = prop.value
31 return tosca_props
32
33 def handle_properties(self, nodes, groups):
34 self.properties['name'] = self.name
35 self.properties['vendor'] = self.metadata['vendor']
36 self.properties['id'] = self.id
37 self.properties['classifier'] = []
38 self.properties['rsp'] = []
39
40 tosca_props = self.get_tosca_group_props()
41 forwarding_paths = []
42 for member in self.group.members:
43 forwarding_paths.append(member)
44
45 for forwarding_path in forwarding_paths:
46 node = self.get_node_with_name(forwarding_path, nodes)
47 if node.classifier is not None:
48 self.properties['classifier'].append(node.classifier)
49 if node.rsp is not None:
50 self.properties['rsp'].append(node.rsp)
51
52 def generate_yang_model_gi(self, nsd, vnfds):
53 try:
54 nsd.vnffgd.add().from_dict(self.properties)
55 except Exception as e:
56 err_msg = "Error updating VNNFG to nsd"
57 self.log.error(err_msg)
58 raise e
59
60 def generate_yang_model(self, nsd, vnfds, use_gi=False):
61 if use_gi:
62 return self.generate_yang_model_gi(nsd, vnfds)