diff options
author | Stephen Finucane <sfinucan@redhat.com> | 2021-07-27 11:08:35 +0100 |
---|---|---|
committer | Stephen Finucane <sfinucan@redhat.com> | 2021-07-27 11:15:23 +0100 |
commit | e0dc31f32eb6720059439e791713e2c61f81bf70 (patch) | |
tree | 0b75e29e3558f49b55cdf6394f0d780013179cd2 | |
parent | c1209601b4f4b81690a186e51aa819c783367fae (diff) | |
download | python-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.py | 8 | ||||
-rw-r--r-- | openstackclient/volume/v1/volume.py | 10 |
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, |