summaryrefslogtreecommitdiff
path: root/openstackclient/compute
diff options
context:
space:
mode:
authorStephen Finucane <sfinucan@redhat.com>2020-11-18 15:55:44 +0000
committerStephen Finucane <sfinucan@redhat.com>2021-01-08 12:14:43 +0000
commitfc24142ed41e15622687558c68d670bdc37223f0 (patch)
tree3a03305fa3dd74fece5cc754f58e7b99bd4de6de /openstackclient/compute
parent8a0f3fc6a8b30328c575bb5c3fc21ddc4f500d9d (diff)
downloadpython-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.py47
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",