Ejemplo n.º 1
0
    def __init__(self, murano_class, owner, object_store, object_id=None,
                 name=None, known_classes=None, defaults=None, this=None):
        if known_classes is None:
            known_classes = {}
        self.__owner = owner.real_this if owner else None
        self.__object_id = object_id or helpers.generate_id()
        self.__type = murano_class
        self.__properties = {}
        self.__parents = {}
        self.__defaults = defaults or {}
        self.__this = this
        self.__name = name
        self.__extension = None
        self.__object_store = weakref.ref(object_store)
        self.__config = murano_class.package.get_class_config(
            murano_class.name)
        if not isinstance(self.__config, dict):
            self.__config = {}
        known_classes[murano_class.name] = self
        for parent_class in murano_class.parents(self.real_this.type):
            name = parent_class.name
            if name not in known_classes:
                obj = parent_class.new(
                    owner, object_store, object_id=self.__object_id,
                    known_classes=known_classes, defaults=defaults,
                    this=self.real_this).object

                self.__parents[name] = known_classes[name] = obj
            else:
                self.__parents[name] = known_classes[name]
        self.__initialized = False
Ejemplo n.º 2
0
    def __init__(self, murano_class, owner, object_id=None, name=None,
                 known_classes=None, this=None, metadata=None):
        self._initialized = False
        self._destroyed = False
        if known_classes is None:
            known_classes = {}
        if this is None:
            self._owner = owner
        self._object_id = object_id or helpers.generate_id()
        self._type = murano_class
        self._properties = {}
        self._parents = {}
        self._this = this
        self._name = name
        self._extension = None
        self._executor = helpers.weak_ref(helpers.get_executor())
        self._config = murano_class.package.get_class_config(
            murano_class.name)
        self._metadata = metadata
        if not isinstance(self._config, dict):
            self._config = {}
        known_classes[murano_class.name] = self
        for parent_class in murano_class.parents:
            name = parent_class.name
            if name not in known_classes:
                obj = MuranoObject(
                    parent_class, owner,
                    object_id=self._object_id,
                    known_classes=known_classes, this=self.real_this)

                self._parents[name] = known_classes[name] = obj
            else:
                self._parents[name] = known_classes[name]
        self._destruction_dependencies = []
Ejemplo n.º 3
0
    def __init__(self,
                 class_loader,
                 namespace_resolver,
                 name,
                 package,
                 parents=None):
        self._package = package
        self._class_loader = class_loader
        self._methods = {}
        self._namespace_resolver = namespace_resolver
        self._name = namespace_resolver.resolve_name(name)
        self._properties = {}
        self._config = {}
        if self._name == 'io.murano.Object':
            self._parents = []
        else:
            self._parents = parents or [
                class_loader.get_class('io.murano.Object')
            ]

        class_name = 'mc' + helpers.generate_id()
        parents_class = [p.object_class for p in self._parents]
        bases = tuple(parents_class) or (murano_object.MuranoObject, )

        self.object_class = type(class_name, bases, {})
Ejemplo n.º 4
0
    def __init__(self,
                 murano_class,
                 owner,
                 object_id=None,
                 name=None,
                 known_classes=None,
                 this=None):
        self.__initialized = False
        if known_classes is None:
            known_classes = {}
        self.__owner = owner.real_this if owner else None
        self.__object_id = object_id or helpers.generate_id()
        self.__type = murano_class
        self.__properties = {}
        self.__parents = {}
        self.__this = this
        self.__name = name
        self.__extension = None
        self.__config = murano_class.package.get_class_config(
            murano_class.name)
        if not isinstance(self.__config, dict):
            self.__config = {}
        known_classes[murano_class.name] = self
        for parent_class in murano_class.parents:
            name = parent_class.name
            if name not in known_classes:
                obj = MuranoObject(parent_class,
                                   owner,
                                   object_id=self.__object_id,
                                   known_classes=known_classes,
                                   this=self.real_this)

                self.__parents[name] = known_classes[name] = obj
            else:
                self.__parents[name] = known_classes[name]
Ejemplo n.º 5
0
 def __init__(self, __name, **kwargs):
     self.data = {
         '?': {
             'type': __name,
             'id': helpers.generate_id()
         }
     }
     self.data.update(kwargs)
Ejemplo n.º 6
0
 def __init__(self, __name, __id=None, **kwargs):
     self.data = {
         '?': {
             'type': __name,
             'id': __id or helpers.generate_id()
         }
     }
     self.data.update(kwargs)
Ejemplo n.º 7
0
 def __init__(self, __name, __id=None, class_version=None, **kwargs):
     self.data = {
         '?': {
             'type': __name,
             'id': __id or helpers.generate_id()
         }
     }
     if class_version is not None:
         self.data['?']['classVersion'] = class_version
     self.data.update(kwargs)
Ejemplo n.º 8
0
    def __init__(self, class_loader, namespace_resolver, name, package,
                 parents=None):
        self._package = package
        self._class_loader = class_loader
        self._methods = {}
        self._namespace_resolver = namespace_resolver
        self._name = namespace_resolver.resolve_name(name)
        self._properties = {}
        if self._name == 'io.murano.Object':
            self._parents = []
        else:
            self._parents = parents or [
                class_loader.get_class('io.murano.Object')]

        class_name = 'mc' + helpers.generate_id()
        parents_class = [p.object_class for p in self._parents]
        bases = tuple(parents_class) or (murano_object.MuranoObject,)

        self.object_class = type(class_name, bases, {})
Ejemplo n.º 9
0
    def __init__(self,
                 murano_class,
                 owner,
                 object_store,
                 executor,
                 object_id=None,
                 name=None,
                 known_classes=None,
                 this=None):
        if known_classes is None:
            known_classes = {}
        self.__owner = owner.real_this if owner else None
        self.__object_id = object_id or helpers.generate_id()
        self.__type = murano_class
        self.__properties = {}
        self.__parents = {}
        self.__this = this
        self.__name = name
        self.__extension = None
        self.__object_store = \
            None if object_store is None else weakref.ref(object_store)
        self.__executor = weakref.ref(executor)
        self.__config = murano_class.package.get_class_config(
            murano_class.name)
        if not isinstance(self.__config, dict):
            self.__config = {}
        known_classes[murano_class.name] = self
        for parent_class in murano_class.parents(self.real_this.type):
            name = parent_class.name
            if name not in known_classes:
                obj = parent_class.new(owner,
                                       object_store,
                                       executor,
                                       object_id=self.__object_id,
                                       known_classes=known_classes,
                                       this=self.real_this).object

                self.__parents[name] = known_classes[name] = obj
            else:
                self.__parents[name] = known_classes[name]
        self.__initialized = False
Ejemplo n.º 10
0
    def import_class(self, cls, name=None):
        if not name:
            if inspect.isclass(cls):
                name = cls._murano_class_name
            else:
                name = cls.__class__._murano_class_name

        m_class = self.get_class(name, create_missing=True)
        if inspect.isclass(cls):
            if issubclass(cls, murano_object.MuranoObject):
                m_class.object_class = cls
            else:
                mpc_name = 'mpc' + helpers.generate_id()
                bases = (cls, murano_object.MuranoObject)
                m_class.object_class = type(mpc_name, bases, {})

        for item in dir(cls):
            method = getattr(cls, item)
            if ((inspect.isfunction(method) or inspect.ismethod(method)) and
                    not item.startswith('_')):
                m_class.add_method(item, method)
Ejemplo n.º 11
0
    def test_generate_id(self):
        generated_id = helpers.generate_id()

        self.assertTrue(re.match(r'[a-z0-9]{32}', generated_id))
Ejemplo n.º 12
0
    def test_generate_id(self):
        generated_id = helpers.generate_id()

        self.assertTrue(re.match(r'[a-z0-9]{32}', generated_id))