summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStephen Finucane <sfinucan@redhat.com>2021-07-27 11:08:35 +0100
committerStephen Finucane <sfinucan@redhat.com>2021-07-27 11:15:23 +0100
commite0dc31f32eb6720059439e791713e2c61f81bf70 (patch)
tree0b75e29e3558f49b55cdf6394f0d780013179cd2
parentc1209601b4f4b81690a186e51aa819c783367fae (diff)
downloadpython-openstackclient-e0dc31f32eb6720059439e791713e2c61f81bf70.tar.gz
volume: Add missing 'volume list --offset' parameter
Looking at the code for the ancient v1 cinder API, we see that this supported offset-style pagination [1][2][3]. Add this parameter, simplifying a future patch to standardize pagination across OSC. [1] https://github.com/openstack/cinder/blob/juno-eol/cinder/api/v1/volumes.py#L259 [2] https://github.com/openstack/cinder/blob/juno-eol/cinder/api/v1/volumes.py#L292 [3] https://github.com/openstack/cinder/blob/juno-eol/cinder/api/common.py#L120 Change-Id: Ifec208ea9ed7afb4bebced6132abb96a3af034b5 Signed-off-by: Stephen Finucane <sfinucan@redhat.com>
-rw-r--r--openstackclient/tests/unit/volume/v1/test_volume.py8
-rw-r--r--openstackclient/volume/v1/volume.py10
2 files changed, 16 insertions, 2 deletions
diff --git a/openstackclient/tests/unit/volume/v1/test_volume.py b/openstackclient/tests/unit/volume/v1/test_volume.py
index 704a66da..b8002d63 100644
--- a/openstackclient/tests/unit/volume/v1/test_volume.py
+++ b/openstackclient/tests/unit/volume/v1/test_volume.py
@@ -858,9 +858,10 @@ class TestVolumeList(TestVolume):
), )
self.assertItemsEqual(datalist, tuple(data))
- def test_volume_list_with_limit(self):
+ def test_volume_list_with_limit_and_offset(self):
arglist = [
'--limit', '2',
+ '--offset', '5',
]
verifylist = [
('long', False),
@@ -868,6 +869,7 @@ class TestVolumeList(TestVolume):
('name', None),
('status', None),
('limit', 2),
+ ('offset', 5),
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
@@ -876,9 +878,11 @@ class TestVolumeList(TestVolume):
self.volumes_mock.list.assert_called_once_with(
limit=2,
search_opts={
+ 'offset': 5,
'status': None,
'display_name': None,
- 'all_tenants': False, }
+ 'all_tenants': False,
+ },
)
self.assertEqual(self.columns, columns)
self.assertItemsEqual(self.datalist, tuple(data))
diff --git a/openstackclient/volume/v1/volume.py b/openstackclient/volume/v1/volume.py
index 460bd85a..dfbb0c54 100644
--- a/openstackclient/volume/v1/volume.py
+++ b/openstackclient/volume/v1/volume.py
@@ -328,6 +328,13 @@ class ListVolume(command.Lister):
help=_('List additional fields in output'),
)
parser.add_argument(
+ '--offset',
+ type=int,
+ action=parseractions.NonNegativeAction,
+ metavar='<offset>',
+ help=_('Index from which to start listing volumes'),
+ )
+ parser.add_argument(
'--limit',
type=int,
action=parseractions.NonNegativeAction,
@@ -395,6 +402,9 @@ class ListVolume(command.Lister):
'status': parsed_args.status,
}
+ if parsed_args.offset:
+ search_opts['offset'] = parsed_args.offset
+
data = volume_client.volumes.list(
search_opts=search_opts,
limit=parsed_args.limit,