From 98a0016cfa1d39bcc37144f0c7700e9a9d6b2c0b Mon Sep 17 00:00:00 2001 From: Stephen Finucane Date: Tue, 29 Sep 2020 16:30:34 +0100 Subject: Add support for 'keypairs list --user' parameter This has been supported by nova and novaclient since the veritable dark ages. Add it to OSC. Change-Id: Ifc95e7dd6c00807c80e87e10046ab154d0989014 Signed-off-by: Stephen Finucane --- openstackclient/compute/v2/keypair.py | 35 ++++++++++++++++++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) (limited to 'openstackclient/compute') diff --git a/openstackclient/compute/v2/keypair.py b/openstackclient/compute/v2/keypair.py index 6affaca3..ae653e76 100644 --- a/openstackclient/compute/v2/keypair.py +++ b/openstackclient/compute/v2/keypair.py @@ -26,6 +26,7 @@ from osc_lib import exceptions from osc_lib import utils from openstackclient.i18n import _ +from openstackclient.identity import common as identity_common LOG = logging.getLogger(__name__) @@ -163,13 +164,45 @@ class DeleteKeypair(command.Command): class ListKeypair(command.Lister): _description = _("List key fingerprints") + def get_parser(self, prog_name): + parser = super().get_parser(prog_name) + parser.add_argument( + '--user', + metavar='', + help=_( + 'Show keypairs for another user (admin only) (name or ID). ' + 'Requires ``--os-compute-api-version`` 2.10 or greater.' + ), + ) + identity_common.add_user_domain_option_to_parser(parser) + return parser + def take_action(self, parsed_args): compute_client = self.app.client_manager.compute + identity_client = self.app.client_manager.identity + + kwargs = {} + + if parsed_args.user: + if compute_client.api_version < api_versions.APIVersion('2.10'): + msg = _( + '--os-compute-api-version 2.10 or greater is required to ' + 'support the --user option' + ) + raise exceptions.CommandError(msg) + + kwargs['user_id'] = identity_common.find_user( + identity_client, + parsed_args.user, + parsed_args.user_domain, + ).id + + data = compute_client.keypairs.list(**kwargs) + columns = ( "Name", "Fingerprint" ) - data = compute_client.keypairs.list() if compute_client.api_version >= api_versions.APIVersion('2.2'): columns += ("Type", ) -- cgit v1.2.1