From 2f6cd660c61ef22f96db65de94dd5f9212937f9d Mon Sep 17 00:00:00 2001 From: lkuchlan Date: Tue, 8 Aug 2023 12:17:20 +0300 Subject: [PATCH] Enable the option to return the response body As a continuation of the patch mentioned below: https://review.opendev.org/c/openstack/python-manilaclient/+/890330 Change-Id: I4c1c1e089a726608124693c13eca73ce12fd5b8e --- manilaclient/base.py | 5 ++++- manilaclient/tests/unit/v2/test_shares.py | 6 +++--- manilaclient/v2/shares.py | 19 +++++++++++-------- 3 files changed, 18 insertions(+), 12 deletions(-) diff --git a/manilaclient/base.py b/manilaclient/base.py index 72cb7da32..be138f6ba 100644 --- a/manilaclient/base.py +++ b/manilaclient/base.py @@ -64,7 +64,8 @@ class Manager(utils.HookableMixin): def api_version(self): return self.api.api_version - def _list(self, url, response_key, manager=None, body=None): + def _list(self, url, response_key, manager=None, body=None, + return_raw=None): """List the collection. :param url: a partial URL, e.g., '/shares' @@ -97,6 +98,8 @@ class Manager(utils.HookableMixin): pass with self.completion_cache('human_id', obj_class, mode="w"): with self.completion_cache('uuid', obj_class, mode="w"): + if return_raw: + return data resource = [obj_class(manager, res, loaded=True) for res in data if res] if 'count' in body: diff --git a/manilaclient/tests/unit/v2/test_shares.py b/manilaclient/tests/unit/v2/test_shares.py index 0acf67cc8..a98eb30a1 100644 --- a/manilaclient/tests/unit/v2/test_shares.py +++ b/manilaclient/tests/unit/v2/test_shares.py @@ -332,15 +332,15 @@ class SharesTest(utils.TestCase): if version >= api_versions.APIVersion('2.69'): manager.do_list.assert_called_once_with( detailed=False, search_opts=search_opts3, - sort_key=None, sort_dir=None) + sort_key=None, sort_dir=None, return_raw=False) elif version >= api_versions.APIVersion('2.35'): manager.do_list.assert_called_once_with( detailed=False, search_opts=search_opts2, - sort_key=None, sort_dir=None) + sort_key=None, sort_dir=None, return_raw=False) else: manager.do_list.assert_called_once_with( detailed=False, search_opts=search_opts1, - sort_key=None, sort_dir=None) + sort_key=None, sort_dir=None, return_raw=False) def test_list_shares_index_with_search_opts(self): search_opts = { diff --git a/manilaclient/v2/shares.py b/manilaclient/v2/shares.py index 71c493904..aae179c2d 100644 --- a/manilaclient/v2/shares.py +++ b/manilaclient/v2/shares.py @@ -345,31 +345,34 @@ class ShareManager(base.MetadataCapableManager): @api_versions.wraps("1.0", "2.34") def list(self, detailed=True, search_opts=None, - sort_key=None, sort_dir=None): + sort_key=None, sort_dir=None, return_raw=False): """Get a list of all shares.""" search_opts = search_opts or {} search_opts.pop("export_location", None) search_opts.pop("is_soft_deleted", None) return self.do_list(detailed=detailed, search_opts=search_opts, - sort_key=sort_key, sort_dir=sort_dir) + sort_key=sort_key, sort_dir=sort_dir, + return_raw=return_raw) @api_versions.wraps("2.35", "2.68") # noqa def list(self, detailed=True, search_opts=None, # noqa - sort_key=None, sort_dir=None): + sort_key=None, sort_dir=None, return_raw=False): """Get a list of all shares.""" search_opts.pop("is_soft_deleted", None) return self.do_list(detailed=detailed, search_opts=search_opts, - sort_key=sort_key, sort_dir=sort_dir) + sort_key=sort_key, sort_dir=sort_dir, + return_raw=return_raw) @api_versions.wraps("2.69") # noqa def list(self, detailed=True, search_opts=None, # noqa - sort_key=None, sort_dir=None): + sort_key=None, sort_dir=None, return_raw=False): """Get a list of all shares.""" return self.do_list(detailed=detailed, search_opts=search_opts, - sort_key=sort_key, sort_dir=sort_dir) + sort_key=sort_key, sort_dir=sort_dir, + return_raw=return_raw) def do_list(self, detailed=True, search_opts=None, - sort_key=None, sort_dir=None): + sort_key=None, sort_dir=None, return_raw=False): """Get a list of all shares. :param detailed: Whether to return detailed share info or not. @@ -440,7 +443,7 @@ class ShareManager(base.MetadataCapableManager): else: path = "/shares%s" % (query_string,) - return self._list(path, 'shares') + return self._list(path, 'shares', return_raw=return_raw) def delete(self, share, share_group_id=None): """Delete a share.