diff --git a/tools/marvin/marvin/integration/lib/factory/CloudStackBaseFactory.py b/tools/marvin/marvin/integration/lib/factory/CloudStackBaseFactory.py index ff107546ca8..499dbc2ae36 100644 --- a/tools/marvin/marvin/integration/lib/factory/CloudStackBaseFactory.py +++ b/tools/marvin/marvin/integration/lib/factory/CloudStackBaseFactory.py @@ -32,18 +32,24 @@ class CloudStackBaseFactory(factory.Factory): @classmethod def _create(cls, target_class, *args, **kwargs): - if "apiclient" in kwargs: + if cls.apiclient: members = inspect.getmembers(target_class, - predicate=inspect.ismethod) + predicate=inspect.ismethod) creators = filter(lambda x: x[0] in CREATORS, members) assert creators, "How do I bring this guy into existence?" assert inspect.ismethod(creators[0][1]) creator = creators[0][1] - apiclient = kwargs["apiclient"] - clean_kwargs = dict((k, v) for k, v in kwargs.iteritems() - if k != "apiclient") - return creator(apiclient, factory=cls._build(target_class, - *args, **clean_kwargs) - ) + return creator(cls.apiclient, factory=cls._build(target_class, + *args, **kwargs)) else: - cls._build(target_class, *args, **kwargs) \ No newline at end of file + cls._build(target_class, *args, **kwargs) + + @classmethod + def _adjust_kwargs(cls, **kwargs): + if "apiclient" in kwargs: + cls.apiclient = kwargs["apiclient"] + clean_kwargs = dict((k, v) for k, v in kwargs.iteritems() + if k != "apiclient") + return clean_kwargs + else: + return kwargs \ No newline at end of file