Use CrudManager for assembly and component

Change-Id: I2b698b3dbe0a0bf04f6fbebc873912bc01d1a598
This commit is contained in:
Noorul Islam K M
2014-02-05 17:16:05 +05:30
parent 59cf88f878
commit 4551e64d93
3 changed files with 27 additions and 5 deletions

View File

@@ -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 '',
})

View File

@@ -21,8 +21,9 @@ class Assembly(apiclient_base.Resource):
return "<Assembly %s>" % 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)

View File

@@ -21,8 +21,9 @@ class Component(apiclient_base.Resource):
return "<Component %s>" % 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)