def _get_container(context, obj, class_name): namespace_resolver = helpers.get_type(context).namespace_resolver class_loader = helpers.get_class_loader(context) class_name = namespace_resolver.resolve_name(class_name) murano_class = class_loader.get_class(class_name) p = obj.parent while p is not None: if murano_class.is_compatible(p): return p p = p.parent return None
def _new(context, name, *args): murano_class = helpers.get_type(context) name = murano_class.namespace_resolver.resolve_name(name) parameters = {} arg_values = [t() for t in args] if len(arg_values) == 1 and isinstance( arg_values[0], types.DictionaryType): parameters = arg_values[0] elif len(arg_values) > 0: for p in arg_values: if not isinstance(p, types.TupleType) or \ not isinstance(p[0], types.StringType): raise SyntaxError() parameters[p[0]] = p[1] object_store = helpers.get_object_store(context) class_loader = helpers.get_class_loader(context) new_context = yaql.context.Context(parent_context=context) for key, value in parameters.iteritems(): new_context.set_data(value, key) return class_loader.get_class(name).new( None, object_store, new_context, parameters=parameters)
def _new(context, name, *args): murano_class = helpers.get_type(context) name = murano_class.namespace_resolver.resolve_name(name) parameters = {} arg_values = [t() for t in args] if len(arg_values) == 1 and isinstance(arg_values[0], types.DictionaryType): parameters = arg_values[0] elif len(arg_values) > 0: for p in arg_values: if not isinstance(p, types.TupleType) or \ not isinstance(p[0], types.StringType): raise SyntaxError() parameters[p[0]] = p[1] object_store = helpers.get_object_store(context) class_loader = helpers.get_class_loader(context) new_context = yaql.context.Context(parent_context=context) for key, value in parameters.iteritems(): new_context.set_data(value, key) return class_loader.get_class(name).new(None, object_store, new_context, parameters=parameters)
def _cast(context, value, type): if not '.' in type: murano_class = context.get_data('$?type') type = murano_class.namespace_resolver.resolve_name(type) class_loader = helpers.get_class_loader(context) return value.cast(class_loader.get_class(type))