diff options
| author | Stephen Finucane <sfinucan@redhat.com> | 2020-11-18 15:55:44 +0000 |
|---|---|---|
| committer | Stephen Finucane <sfinucan@redhat.com> | 2021-01-08 12:14:43 +0000 |
| commit | fc24142ed41e15622687558c68d670bdc37223f0 (patch) | |
| tree | 3a03305fa3dd74fece5cc754f58e7b99bd4de6de /openstackclient/compute | |
| parent | 8a0f3fc6a8b30328c575bb5c3fc21ddc4f500d9d (diff) | |
| download | python-openstackclient-fc24142ed41e15622687558c68d670bdc37223f0.tar.gz | |
compute: Add missing options for 'keypair list'
Add pagination parameters, '--limit' and '--marker'. This isn't
compatible with our client-side '--project' parameter so we error out
for that.
Change-Id: I403cf0fb7aabad4a3dfda5adae62d47ecf7faf5c
Signed-off-by: Stephen Finucane <sfinucan@redhat.com>
Diffstat (limited to 'openstackclient/compute')
| -rw-r--r-- | openstackclient/compute/v2/keypair.py | 47 |
1 files changed, 44 insertions, 3 deletions
diff --git a/openstackclient/compute/v2/keypair.py b/openstackclient/compute/v2/keypair.py index 19e30bff..7dabf78d 100644 --- a/openstackclient/compute/v2/keypair.py +++ b/openstackclient/compute/v2/keypair.py @@ -249,12 +249,43 @@ class ListKeypair(command.Lister): ), ) identity_common.add_project_domain_option_to_parser(parser) + parser.add_argument( + '--marker', + help=_('The last keypair ID of the previous page'), + ) + parser.add_argument( + '--limit', + type=int, + help=_('Maximum number of keypairs to display'), + ) return parser def take_action(self, parsed_args): compute_client = self.app.client_manager.sdk_connection.compute identity_client = self.app.client_manager.identity + kwargs = {} + + if parsed_args.marker: + if not sdk_utils.supports_microversion(compute_client, '2.35'): + msg = _( + '--os-compute-api-version 2.35 or greater is required ' + 'to support the --marker option' + ) + raise exceptions.CommandError(msg) + + kwargs['marker'] = parsed_args.marker + + if parsed_args.limit: + if not sdk_utils.supports_microversion(compute_client, '2.35'): + msg = _( + '--os-compute-api-version 2.35 or greater is required ' + 'to support the --limit option' + ) + raise exceptions.CommandError(msg) + + kwargs['limit'] = parsed_args.limit + if parsed_args.project: if not sdk_utils.supports_microversion(compute_client, '2.10'): msg = _( @@ -263,6 +294,14 @@ class ListKeypair(command.Lister): ) raise exceptions.CommandError(msg) + if parsed_args.marker: + # NOTE(stephenfin): Because we're doing this client-side, we + # can't really rely on the marker, because we don't know what + # user the marker is associated with + msg = _( + '--project is not compatible with --marker' + ) + # NOTE(stephenfin): This is done client side because nova doesn't # currently support doing so server-side. If this is slow, we can # think about spinning up a threadpool or similar. @@ -275,7 +314,8 @@ class ListKeypair(command.Lister): data = [] for user in users: - data.extend(compute_client.keypairs(user_id=user.id)) + kwargs['user_id'] = user.id + data.extend(compute_client.keypairs(**kwargs)) elif parsed_args.user: if not sdk_utils.supports_microversion(compute_client, '2.10'): msg = _( @@ -289,10 +329,11 @@ class ListKeypair(command.Lister): parsed_args.user, parsed_args.user_domain, ) + kwargs['user_id'] = user.id - data = compute_client.keypairs(user_id=user.id) + data = compute_client.keypairs(**kwargs) else: - data = compute_client.keypairs() + data = compute_client.keypairs(**kwargs) columns = ( "Name", |
