예제 #1
0
파일: dsl.py 프로젝트: Aqsamm/murano
 def check(self, value, context, *args, **kwargs):
     if not super(MuranoTypeParameter, self).check(
             value, context, *args, **kwargs):
         return False
     if isinstance(value, six.string_types):
         if not self._resolve_strings:
             return False
         value = helpers.get_class(value, context).get_reference()
     if isinstance(value, dsl_types.MuranoTypeReference):
         if not self._base_type:
             return True
         return self._base_type.is_compatible(value)
     return True
예제 #2
0
 def check(self, value, context, *args, **kwargs):
     if not super(MuranoTypeParameter, self).check(
             value, context, *args, **kwargs):
         return False
     if isinstance(value, six.string_types):
         if not self._resolve_strings:
             return False
         value = helpers.get_class(value, context).get_reference()
     if isinstance(value, dsl_types.MuranoTypeReference):
         if not self._base_type:
             return True
         return self._base_type.is_compatible(value)
     return True
예제 #3
0
 def find_owner(self, type, optional=False):
     if isinstance(type, six.string_types):
         type = helpers.get_class(type)
     elif isinstance(type, dsl_types.MuranoTypeReference):
         type = type.type
     owner = helpers.find_object_owner(
         self.object, lambda t: type.is_compatible(t))
     if owner:
         return MuranoObjectInterface(owner)
     if not optional:
         raise ValueError('Object is not owned by any instance of type '
                          '{0}'.format(type.name))
     return None
예제 #4
0
파일: dsl.py 프로젝트: Aqsamm/murano
 def find_owner(self, type, optional=False):
     if isinstance(type, six.string_types):
         type = helpers.get_class(type)
     elif isinstance(type, dsl_types.MuranoTypeReference):
         type = type.type
     p = self.__object.owner
     while p is not None:
         if type.is_compatible(p):
             return MuranoObjectInterface(p, self.__executor)
         p = p.owner
     if not optional:
         raise ValueError('Object is not owned by any instance of type '
                          '{0}'.format(type.name))
     return None
예제 #5
0
파일: dsl.py 프로젝트: Aqsamm/murano
 def convert(self, value, sender, context, function_spec, engine,
             *args, **kwargs):
     context = self._context or context
     if isinstance(value, yaql_expressions.Expression):
         value = value(utils.NO_VALUE, context, engine)
     value = super(MuranoTypeParameter, self).convert(
         value, sender, context, function_spec, engine)
     if isinstance(value, six.string_types):
         value = helpers.get_class(value, context).get_reference()
     if self._base_type and not self._base_type.is_compatible(value):
         raise ValueError('Value must be subtype of {0}'.format(
             self._base_type.name
         ))
     return value
예제 #6
0
 def find_owner(self, type, optional=False):
     if isinstance(type, six.string_types):
         type = helpers.get_class(type)
     elif isinstance(type, dsl_types.MuranoTypeReference):
         type = type.type
     p = self.__object.owner
     while p is not None:
         if type.is_compatible(p):
             return MuranoObjectInterface(p)
         p = p.owner
     if not optional:
         raise ValueError('Object is not owned by any instance of type '
                          '{0}'.format(type.name))
     return None
예제 #7
0
 def convert(self, value, sender, context, function_spec, engine,
             *args, **kwargs):
     context = self._context or context
     if isinstance(value, yaql_expressions.Expression):
         value = value(utils.NO_VALUE, context, engine)
     value = super(MuranoTypeName, self).convert(
         value, sender, context, function_spec, engine)
     if isinstance(value, types.StringTypes):
         murano_type = helpers.get_type(context)
         value = dsl_types.MuranoClassReference(
             helpers.get_class(
                 murano_type.namespace_resolver.resolve_name(
                     value), context))
     return value
예제 #8
0
 def convert(self, value, sender, context, function_spec, engine, *args,
             **kwargs):
     context = self._context or context
     if isinstance(value, yaql_expressions.Expression):
         value = value(utils.NO_VALUE, context, engine)
     value = super(MuranoTypeParameter,
                   self).convert(value, sender, context, function_spec,
                                 engine)
     if isinstance(value, six.string_types):
         value = helpers.get_class(value, context).get_reference()
     if self._base_type and not self._base_type.is_compatible(value):
         raise ValueError('Value must be subtype of {0}'.format(
             self._base_type.name))
     return value
예제 #9
0
 def convert(self, value, sender, context, function_spec, engine, *args,
             **kwargs):
     context = self._context or context
     if isinstance(value, yaql_expressions.Expression):
         value = value(utils.NO_VALUE, context, engine)
     value = super(MuranoTypeName, self).convert(value, sender, context,
                                                 function_spec, engine)
     if isinstance(value, types.StringTypes):
         murano_type = helpers.get_type(context)
         value = dsl_types.MuranoClassReference(
             helpers.get_class(
                 murano_type.namespace_resolver.resolve_name(value),
                 context))
     return value
예제 #10
0
 def implementation(ctx=None):
     value2 = value
     if ctx is None:
         ctx = self._context or context
     if isinstance(value2, yaql_expressions.Expression):
         value2 = value2(utils.NO_VALUE, ctx, engine)
     value2 = super(MuranoTypeParameter, self).convert(
         value2, sender, ctx, function_spec, engine)
     if isinstance(value2, six.string_types):
         value2 = helpers.get_class(value2, ctx).get_reference()
     if self._base_type and not self._base_type.is_compatible(value):
         raise ValueError('Value must be subtype of {0}'.format(
             self._base_type.name
         ))
     return value2
예제 #11
0
 def convert(self, value, sender, context, function_spec, engine,
             *args, **kwargs):
     context = self._context or context
     if isinstance(value, yaql_expressions.Expression):
         value = value(utils.NO_VALUE, context, engine)
     value = super(MuranoTypeName, self).convert(
         value, sender, context, function_spec, engine)
     if isinstance(value, six.string_types):
         if function_spec.meta.get(constants.META_MURANO_METHOD):
             context = helpers.get_caller_context(context)
         murano_type = helpers.get_type(context)
         value = helpers.get_class(
             murano_type.namespace_resolver.resolve_name(value),
             context).get_reference()
     return value
예제 #12
0
def ns_resolve(context, prefix, name):
    return helpers.get_class(prefix + ':' + name, context).get_reference()
예제 #13
0
def ns_resolve(context, prefix, name):
    murano_type = helpers.get_type(context)
    return dsl_types.MuranoClassReference(
        helpers.get_class(
            murano_type.namespace_resolver.resolve_name(prefix + ':' + name),
            context))
예제 #14
0
def ns_resolve(context, prefix, name):
    murano_type = helpers.get_type(context)
    return dsl_types.MuranoClassReference(
        helpers.get_class(
            murano_type.namespace_resolver.resolve_name(
                prefix + ':' + name), context))
예제 #15
0
def ns_resolve(context, prefix, name):
    murano_type = helpers.get_type(context)
    return helpers.get_class(murano_type.namespace_resolver.resolve_name(prefix + ":" + name), context).get_reference()
예제 #16
0
def ns_resolve(context, prefix, name):
    return helpers.get_class(prefix + ':' + name, context).get_reference()