def __new__(cls, name, env=None, provider=None, **kwargs): env = env or Environment.get_instance() provider = provider or getattr(cls, 'provider', None) r_type = cls.__name__ if r_type not in env.resources: env.resources[r_type] = {} if name not in env.resources[r_type]: obj = super(Resource, cls).__new__(cls) env.resources[r_type][name] = obj env.resource_list.append(obj) return obj obj = env.resources[r_type][name] if obj.provider != provider: raise Fail("Duplicate resource %r with a different provider %r != %r" % (obj, provider, obj.provider)) obj.override(**kwargs) return obj
def __init__(self, name, env=None, provider=None, **kwargs): if hasattr(self, 'name'): return self.name = name self.env = env or Environment.get_instance() self.provider = provider or getattr(self, 'provider', None) self.log = logging.getLogger("kokki.resource") self.arguments = {} for key, value in kwargs.items(): try: arg = self._arguments[key] except KeyError: raise Fail("%s received unsupported argument %s" % (self, key)) else: try: self.arguments[key] = arg.validate(value) except InvalidArgument, exc: raise InvalidArgument("%s %s" % (self, exc))
def __new__(cls, name, env=None, provider=None, **kwargs): env = env or Environment.get_instance() provider = provider or getattr(cls, 'provider', None) r_type = cls.__name__ if r_type not in env.resources: env.resources[r_type] = {} if name not in env.resources[r_type]: obj = super(Resource, cls).__new__(cls) env.resources[r_type][name] = obj env.resource_list.append(obj) return obj obj = env.resources[r_type][name] if obj.provider != provider: raise Fail( "Duplicate resource %r with a different provider %r != %r" % (obj, provider, obj.provider)) obj.override(**kwargs) return obj