Beispiel #1
0
 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))
Beispiel #2
0
 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)
Beispiel #3
0
 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)
Beispiel #4
0
 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)
Beispiel #5
0
 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)
Beispiel #6
0
 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)
Beispiel #7
0
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)
Beispiel #8
0
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)
Beispiel #9
0
 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
Beispiel #10
0
 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
Beispiel #12
0
 def context(self):
     return helpers.get_context()
Beispiel #13
0
 def __setitem__(self, key, value):
     context = helpers.get_context()
     value = helpers.evaluate(value, context)
     self.__object.set_property(key, value, context)
Beispiel #14
0
 def __getitem__(self, item):
     context = helpers.get_context()
     return to_mutable(
         self.__object.get_property(item, context),
         helpers.get_yaql_engine(context))
Beispiel #15
0
 def context(self):
     return helpers.get_context()
Beispiel #16
0
 def func(*args, **kwargs):
     self._insert_instruction()
     return self.__object.type.invoke(
         item, executor, self.__object, args, kwargs,
         helpers.get_context())
Beispiel #17
0
 def yaql(self, receiver=utils.NO_VALUE):
     return yaql_interface.YaqlInterface(
         helpers.get_context(), helpers.get_yaql_engine(), receiver)
Beispiel #18
0
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)
Beispiel #19
0
 def __getitem__(self, item):
     return helpers.get_context()[item]
Beispiel #20
0
 def yaql(self, receiver=utils.NO_VALUE):
     return yaql_interface.YaqlInterface(
         helpers.get_context(), helpers.get_yaql_engine(), receiver)
Beispiel #21
0
 def __setitem__(self, key, value):
     context = helpers.get_context()
     value = helpers.evaluate(value, context)
     self.object.set_property(key, value, context)
Beispiel #22
0
 def func(*args, **kwargs):
     self._insert_instruction()
     return self.__object.type.invoke(item, executor, self.__object,
                                      args, kwargs,
                                      helpers.get_context())
Beispiel #23
0
 def __getitem__(self, item):
     return helpers.get_context()[item]
Beispiel #24
0
 def __setitem__(self, key, value):
     helpers.get_context()[key] = value
Beispiel #25
0
 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())
Beispiel #26
0
 def __setitem__(self, key, value):
     helpers.get_context()[key] = value
Beispiel #27
0
 def __getitem__(self, item):
     context = helpers.get_context()
     return to_mutable(
         self.object.get_property(item, context),
         helpers.get_yaql_engine(context))