def func(*args, **kwargs): self._insert_instruction() with helpers.with_object_store(self.__object_store): context = helpers.get_context() return to_mutable( self.__object.type.invoke(item, self.__object, args, kwargs, context), helpers.get_yaql_engine(context))
def _insert_instruction(): context = helpers.get_context() if context: frame = inspect.stack()[2] location = dsl_types.ExpressionFilePosition( os.path.abspath(frame[1]), frame[2], -1, frame[2], -1) context[constants.CTX_CURRENT_INSTRUCTION] = NativeInstruction( frame[4][0].strip(), location)
def __call__(self, __expression, *args, **kwargs): context = helpers.get_context().create_child_context() for i, param in enumerate(args): context['$' + str(i + 1)] = helpers.evaluate(param, context) for arg_name, arg_value in kwargs.iteritems(): context['$' + arg_name] = helpers.evaluate(arg_value, context) parsed = self.engine(__expression) res = parsed.evaluate(context=context) return to_mutable(res, self.engine)
def _insert_instruction(): context = helpers.get_context() if context: frame = inspect.stack()[2] location = dsl_types.ExpressionFilePosition( os.path.abspath(frame[1]), frame[2], -1, frame[2], -1) context[constants.CTX_CURRENT_INSTRUCTION] = NativeInstruction( frame[4][0].strip(), location)
def __call__(self, __expression, *args, **kwargs): context = helpers.get_context().create_child_context() for i, param in enumerate(args): context['$' + str(i + 1)] = helpers.evaluate(param, context) for arg_name, arg_value in six.iteritems(kwargs): context['$' + arg_name] = helpers.evaluate(arg_value, context) parsed = self.engine(__expression) res = parsed.evaluate(context=context) return to_mutable(res, self.engine)
def find_owner(self, type, optional=False): context = helpers.get_context().create_child_context() yaql_engine = helpers.get_yaql_engine(context) context['$1'] = self.object context['$2'] = type expr_str = '$1.find($2)' if not optional: expr_str += '.require()' result = yaql_engine(expr_str).evaluate(context=context) return None if result is None else MuranoObjectInterface(result)
def spawn(func, *args, **kwargs): context = helpers.get_context() object_store = helpers.get_object_store() def wrapper(): with helpers.with_object_store(object_store): with helpers.contextual(context): return func(*args, **kwargs) return eventlet.spawn(wrapper)
def spawn(func, *args, **kwargs): context = helpers.get_context() object_store = helpers.get_object_store() def wrapper(): with helpers.with_object_store(object_store): with helpers.contextual(context): return func(*args, **kwargs) return eventlet.spawn(wrapper)
def to_dictionary(self, include_hidden=False, serialization_type=dsl_types.DumpTypes.Serializable, allow_refs=False): context = helpers.get_context() result = {} for parent in self.__parents.values(): result.update( parent.to_dictionary(include_hidden, dsl_types.DumpTypes.Serializable, allow_refs)) skip_usages = (dsl_types.PropertyUsages.Runtime, dsl_types.PropertyUsages.Config) for property_name in self.type.properties: if property_name in self.__properties: spec = self.type.properties[property_name] if spec.usage not in skip_usages or include_hidden: prop_value = self.__properties[property_name] if isinstance(prop_value, MuranoObject) and allow_refs: meta = [ m for m in spec.get_meta(context) if m.type.name == ('io.murano.metadata.' 'engine.Serialize') ] if meta and meta[0].get_property( 'as', context) == 'reference': prop_value = prop_value.object_id result[property_name] = prop_value if serialization_type == dsl_types.DumpTypes.Inline: result.pop('?') result = { self.type: result, 'id': self.object_id, 'name': self.name } elif serialization_type == dsl_types.DumpTypes.Mixed: result.update({ '?': { 'type': self.type, 'id': self.object_id, 'name': self.name, } }) else: result.update({ '?': { 'type': helpers.format_type_string(self.type), 'id': self.object_id, 'name': self.name } }) return result
def to_dictionary(self, include_hidden=False, serialization_type=serializer.DumpTypes.Serializable, allow_refs=False): context = helpers.get_context() result = {} for parent in self.__parents.values(): result.update(parent.to_dictionary( include_hidden, serializer.DumpTypes.Serializable, allow_refs)) for property_name in self.type.properties: if property_name in self.__properties: spec = self.type.properties[property_name] if (spec.usage != dsl_types.PropertyUsages.Runtime or include_hidden): prop_value = self.__properties[property_name] if isinstance(prop_value, MuranoObject) and allow_refs: meta = [m for m in spec.get_meta(context) if m.type.name == ('io.murano.metadata.' 'engine.Serialize')] if meta and meta[0].get_property( 'as', context) == 'reference': prop_value = prop_value.object_id result[property_name] = prop_value if serialization_type == serializer.DumpTypes.Inline: result.pop('?') result = { self.type: result, 'id': self.object_id, 'name': self.name } elif serialization_type == serializer.DumpTypes.Mixed: result.update({'?': { 'type': self.type, 'id': self.object_id, 'name': self.name, }}) else: result.update({'?': { 'type': self.type.name, 'id': self.object_id, 'name': self.name, 'classVersion': str(self.type.version), 'package': self.type.package.name }}) return result
def to_dictionary(self, include_hidden=False, serialization_type=dsl_types.DumpTypes.Serializable, allow_refs=False, with_destruction_dependencies=False): context = helpers.get_context() result = {} for parent in self._parents.values(): result.update( parent.to_dictionary(include_hidden, dsl_types.DumpTypes.Serializable, allow_refs)) skip_usages = (dsl_types.PropertyUsages.Runtime, dsl_types.PropertyUsages.Config) for property_name in self.type.properties: if property_name in self.real_this._properties: spec = self.type.properties[property_name] if spec.usage not in skip_usages or include_hidden: prop_value = self.real_this._properties[property_name] if isinstance(prop_value, MuranoObject) and allow_refs: meta = [ m for m in spec.get_meta(context) if m.type.name == ('io.murano.metadata.' 'engine.Serialize') ] if meta and meta[0].get_property( 'as', context) == 'reference': prop_value = prop_value.object_id result[property_name] = prop_value if serialization_type == dsl_types.DumpTypes.Inline: result.pop('?') result = { self.type: result, 'id': self.object_id, 'name': self.name, 'metadata': self.metadata } header = result else: if serialization_type == dsl_types.DumpTypes.Mixed: result.update({ '?': { 'type': self.type, 'id': self.object_id, 'name': self.name, 'metadata': self.metadata } }) else: result.update({ '?': { 'type': helpers.format_type_string(self.type), 'id': self.object_id, 'name': self.name, 'metadata': self.metadata } }) header = result['?'] if self.destroyed: header['destroyed'] = True if with_destruction_dependencies: dds = [] for record in self.destruction_dependencies: subscriber = record['subscriber']() if not subscriber or self.executor.object_store.is_doomed( subscriber): continue dds.append({ 'subscriber': subscriber.object_id, 'handler': record['handler'] }) if dds: header.setdefault('dependencies', {})['onDestruction'] = dds return result
def context(self): return helpers.get_context()
def __setitem__(self, key, value): context = helpers.get_context() value = helpers.evaluate(value, context) self.__object.set_property(key, value, context)
def __getitem__(self, item): context = helpers.get_context() return to_mutable( self.__object.get_property(item, context), helpers.get_yaql_engine(context))
def context(self): return helpers.get_context()
def func(*args, **kwargs): self._insert_instruction() return self.__object.type.invoke( item, executor, self.__object, args, kwargs, helpers.get_context())
def yaql(self, receiver=utils.NO_VALUE): return yaql_interface.YaqlInterface( helpers.get_context(), helpers.get_yaql_engine(), receiver)
def new(properties, owner=None, type=None): context = helpers.get_context() return helpers.get_object_store().load( properties, owner, type or get_this(context).type, context=context)
def __getitem__(self, item): return helpers.get_context()[item]
def yaql(self, receiver=utils.NO_VALUE): return yaql_interface.YaqlInterface( helpers.get_context(), helpers.get_yaql_engine(), receiver)
def __setitem__(self, key, value): context = helpers.get_context() value = helpers.evaluate(value, context) self.object.set_property(key, value, context)
def func(*args, **kwargs): self._insert_instruction() return self.__object.type.invoke(item, executor, self.__object, args, kwargs, helpers.get_context())
def __getitem__(self, item): return helpers.get_context()[item]
def __setitem__(self, key, value): helpers.get_context()[key] = value
def func(*args, **kwargs): self._insert_instruction() with helpers.with_object_store(self.__object_store): return self.__object.type.invoke( item, self.__object, args, kwargs, helpers.get_context())
def __setitem__(self, key, value): helpers.get_context()[key] = value
def __getitem__(self, item): context = helpers.get_context() return to_mutable( self.object.get_property(item, context), helpers.get_yaql_engine(context))