diff options
| author | Jenkins <jenkins@review.openstack.org> | 2013-06-06 13:11:21 +0000 |
|---|---|---|
| committer | Gerrit Code Review <review@openstack.org> | 2013-06-06 13:11:21 +0000 |
| commit | 2ec2e7ee31a9a7305d524bceaf2c10f89ef27f02 (patch) | |
| tree | 210493cba71688151954d8660c3c457da99a7d0f /keystoneclient/base.py | |
| parent | 4b90bc5c314fa52ece212451fbfec7ba7eced3b1 (diff) | |
| parent | e7162cbbcc55ca8437a01464476b14d1d4ec6fc4 (diff) | |
| download | python-keystoneclient-2ec2e7ee31a9a7305d524bceaf2c10f89ef27f02.tar.gz | |
Merge "Add find() method to CrudManager"
Diffstat (limited to 'keystoneclient/base.py')
| -rw-r--r-- | keystoneclient/base.py | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/keystoneclient/base.py b/keystoneclient/base.py index c57ee62..d40c969 100644 --- a/keystoneclient/base.py +++ b/keystoneclient/base.py @@ -271,6 +271,28 @@ class CrudManager(Manager): return self._delete( self.build_url(**kwargs)) + def find(self, base_url=None, **kwargs): + """ + Find a single item with attributes matching ``**kwargs``. + """ + kwargs = self._filter_kwargs(kwargs) + + rl = self._list( + '%(base_url)s%(query)s' % { + 'base_url': self.build_url(base_url=base_url, **kwargs), + 'query': '?%s' % urllib.urlencode(kwargs) if kwargs else '', + }, + self.collection_key) + num = len(rl) + + if num == 0: + msg = "No %s matching %s." % (self.resource_class.__name__, kwargs) + raise exceptions.NotFound(404, msg) + elif num > 1: + raise exceptions.NoUniqueMatch + else: + return rl[0] + class Resource(object): """ |
