blob: 8bc261297c8a9dce2d0ee32dae6b314865ca0f6e (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
|
from toscalib.templates.property_item import PropertyItem
from toscalib.types.property import PropertyDefinition
from toscalib.templates.constant import *
class OperationItem(object):
def __init__(self, definition, name = None, content = None):
if definition is not None:
self.name = definition.name
self.implementation = definition.implementation
self.definition = definition
self.inputs = {}
self.parent_node = None
for prop in definition.inputs.keys():
self.inputs[prop] = PropertyItem(definition.inputs[prop])
else:
self.name = name
self.implementation = None
self.definition = None
self.inputs = {}
self.parent_node = None
if content is not None:
self._parse_pre_defined_content(content)
def _parse_pre_defined_content(self, content):
if content is None:
return
if type(content) is not dict:
self.implementation = content
return
for key_name in content.keys():
if key_name == 'implementation':
self.implementation = content[key_name]
if key_name == 'inputs':
input_sec = content['inputs']
for input_item in input_sec.keys():
self.inputs[input_item] = PropertyItem(PropertyDefinition(input_item))
self.inputs[input_item]._assign(input_sec[input_item])
def _update_parent_node(self, parent):
self.parent_node = parent
for prop in iter(self.inputs.values()):
prop._update_parent_node(parent)
def _prepare_output(self, tags=''):
output = {}
# if self.implementation is not None:
# output[YMO_OP_IMPLEMENTATION] = self.implementation
# if 'cloudify' in tags:
# output[YMO_OP_EXECUTOR] = 'central_deployment_agent'
if len(self.inputs) > 0:
inputs = {}
for prop_name in self.inputs.keys():
prop_item = self.inputs[prop_name]
if prop_item.value is None:
prop_value = None
else:
prop_value = prop_item.value._get_value(tags)[0]
inputs[prop_name] = prop_value
output[YMO_OP_INPUTS] = inputs
return output
|