summaryrefslogtreecommitdiffstats
path: root/app/toscalib/templates/property_item.py
diff options
context:
space:
mode:
authorStone, Avi (as206k) <as206k@att.com>2018-04-12 16:41:45 +0300
committerStone, Avi (as206k) <as206k@att.com>2018-04-12 16:41:45 +0300
commit879e94b78193798e8b170fca9b924d2c3881f7ba (patch)
tree150de697138a7593869eaae455add025b06a6e04 /app/toscalib/templates/property_item.py
parent7e02c7aaab14828ef8baaef98865f26d98e3b795 (diff)
DCAE-D tosca-lab initial commit
DCAE-D tosca-lab initial commit Change-Id: Ia42934ce7c75abe05fa106585c9334c8b048ee36 Issue-ID: SDC-1218 Signed-off-by: Stone, Avi (as206k) <as206k@att.com>
Diffstat (limited to 'app/toscalib/templates/property_item.py')
-rw-r--r--app/toscalib/templates/property_item.py95
1 files changed, 95 insertions, 0 deletions
diff --git a/app/toscalib/templates/property_item.py b/app/toscalib/templates/property_item.py
new file mode 100644
index 0000000..dc6aea7
--- /dev/null
+++ b/app/toscalib/templates/property_item.py
@@ -0,0 +1,95 @@
+#Author: Shu Shi
+#emaiL: shushi@research.att.com
+
+
+from toscalib.templates.constant import *
+import ast, logging
+
+class PropertyItem(object):
+ def __init__(self, definition):
+ self.name = definition.name
+ self.type_obj = definition.type_obj
+ self.filled = False
+ self.definition = definition
+ self.value = None
+ self.required = definition.required
+ self.sub_pointer = None
+ self.used = True
+ self.parent_node = None
+
+ def _assign(self, value):
+# from toscalib.templates.capability_item import CapabilityItem
+ from toscalib.templates.value import Value
+ if value is None:
+ return False
+# elif isinstance(value, CapabilityItem):
+# self.value = value
+# self.filled = True
+ else:
+ self.value = Value(self.type_obj, value)
+# formatted_value = self.type._format_value(value)
+ if self.value is None:
+ logging.warning( 'Value can not be assigned: validation failed!')
+ else:
+ self.filled = True
+
+# if self.sub_pointer is not None:
+# self.sub_pointer._assign(value)
+
+ return True
+
+ def _direct_assign(self, value):
+ self.value = value
+ if value is not None:
+ self.filled = True
+
+ def _update_prefix(self, prefix):
+ self.name = prefix + self.name
+
+ def _update_parent_node(self, parent):
+ self.parent_node = parent
+
+ def _propagate_substitution_value(self):
+ if self.sub_pointer is None:
+ return True
+ if self.value is not None:
+# self.sub_pointer._direct_assign(self.value)
+ self.sub_pointer._assign(self.value._get_value()[0])
+
+ return True
+
+ def _propagate_attr_substitution_value(self):
+ if self.sub_pointer is None or hasattr(self.sub_pointer, 'value') is False:
+ return True
+ self._direct_assign(self.sub_pointer.value)
+ return True
+
+ def _prepare_input_type_output(self, tags):
+ out_details= {}
+ out_details[YMO_PROP_TYPE] = self.type_obj.name
+ if hasattr(self.definition, 'default') is True and self.definition.default is not None:
+ if 'w_default' in tags:
+ return {}
+ out_details[YMO_PROP_DEFAULT] = self.definition.default
+
+ out_val = {}
+ out_val[self.name] =out_details
+ return out_val
+
+ def _prepare_output_type_output(self):
+ out_val = {}
+ val_body = self.value._get_value()[0]
+ out_val[self.name] =dict(value=val_body)
+ return out_val
+
+ def _prepare_heat_output(self):
+ type_out = {}
+ type_out[self.name] =dict(type=self.type.name)
+ val_out = {}
+ if self.filled:
+ val_out[self.name] = self.value
+ else:
+ val_out[self.name] = None
+
+ return type_out, val_out
+