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, {})
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)
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, {})
def test_generate_id(self): generated_id = helpers.generate_id() self.assertTrue(re.match(r'[a-z0-9]{32}', generated_id))