| #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 |
| |