From 4551e64d93a026790d6cab8f44cc4fe12834357c Mon Sep 17 00:00:00 2001 From: Noorul Islam K M Date: Wed, 5 Feb 2014 17:16:05 +0530 Subject: [PATCH] Use CrudManager for assembly and component Change-Id: I2b698b3dbe0a0bf04f6fbebc873912bc01d1a598 --- solumclient/common/base.py | 22 +++++++++++++++++++++- solumclient/v1/assembly.py | 5 +++-- solumclient/v1/component.py | 5 +++-- 3 files changed, 27 insertions(+), 5 deletions(-) diff --git a/solumclient/common/base.py b/solumclient/common/base.py index 2000bd0..de407c4 100644 --- a/solumclient/common/base.py +++ b/solumclient/common/base.py @@ -13,9 +13,10 @@ # under the License. from solumclient.openstack.common.apiclient import base +from solumclient.openstack.common.py3kcompat import urlutils -class BaseManager(base.BaseManager): +class ManagerMixin(): def _get(self, url, response_key=None): """Get an object from collection. @@ -63,3 +64,22 @@ class BaseManager(base.BaseManager): pass return [obj_class(self, res, loaded=True) for res in data if res] + + +class BaseManager(ManagerMixin, base.BaseManager): + pass + + +class CrudManager(ManagerMixin, base.CrudManager): + def list(self, base_url=None, **kwargs): + """List the collection. + + :param base_url: if provided, the generated URL will be appended to it + """ + kwargs = self._filter_kwargs(kwargs) + + return self._list( + '%(base_url)s%(query)s' % { + 'base_url': self.build_url(base_url=base_url, **kwargs), + 'query': '?%s' % urlutils.urlencode(kwargs) if kwargs else '', + }) diff --git a/solumclient/v1/assembly.py b/solumclient/v1/assembly.py index 7460ff9..522cdd7 100644 --- a/solumclient/v1/assembly.py +++ b/solumclient/v1/assembly.py @@ -21,8 +21,9 @@ class Assembly(apiclient_base.Resource): return "" % self._info -class AssemblyManager(solum_base.BaseManager): +class AssemblyManager(solum_base.CrudManager): resource_class = Assembly + collection_key = 'assemblies' def list(self, **kwargs): - return self._list('/v1/assemblies') + return super(AssemblyManager, self).list(base_url="/v1", **kwargs) diff --git a/solumclient/v1/component.py b/solumclient/v1/component.py index c47b54d..d7016e1 100644 --- a/solumclient/v1/component.py +++ b/solumclient/v1/component.py @@ -21,8 +21,9 @@ class Component(apiclient_base.Resource): return "" % self._info -class ComponentManager(solum_base.BaseManager): +class ComponentManager(solum_base.CrudManager): resource_class = Component + collection_key = 'components' def list(self, **kwargs): - return self._list('/v1/components') + return super(ComponentManager, self).list(base_url="/v1", **kwargs)