diff options
| author | Zuul <zuul@review.opendev.org> | 2020-11-04 00:28:41 +0000 |
|---|---|---|
| committer | Gerrit Code Review <review@openstack.org> | 2020-11-04 00:28:41 +0000 |
| commit | cb6659d7cd28f9c9c6481c9222ff6d3a5308410a (patch) | |
| tree | f8a8131d7ea2093793ba9982793aa91bf11d65e7 /openstackclient/compute | |
| parent | 71cdb113fe1113eb164ec4581b001a7baf4e7355 (diff) | |
| parent | 17f641e1c3ac58acdc39d064369395198d2654d2 (diff) | |
| download | python-openstackclient-cb6659d7cd28f9c9c6481c9222ff6d3a5308410a.tar.gz | |
Merge "Compute: Add user id support for keypair"
Diffstat (limited to 'openstackclient/compute')
| -rw-r--r-- | openstackclient/compute/v2/keypair.py | 86 |
1 files changed, 82 insertions, 4 deletions
diff --git a/openstackclient/compute/v2/keypair.py b/openstackclient/compute/v2/keypair.py index 8c365cf0..726dbfb9 100644 --- a/openstackclient/compute/v2/keypair.py +++ b/openstackclient/compute/v2/keypair.py @@ -64,10 +64,20 @@ class CreateKeypair(command.ShowOne): "(Supported by API versions '2.2' - '2.latest')" ), ) + parser.add_argument( + '--user', + metavar='<user>', + help=_( + 'The owner of the keypair. (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 public_key = parsed_args.public_key if public_key: @@ -89,12 +99,26 @@ class CreateKeypair(command.ShowOne): if compute_client.api_version < api_versions.APIVersion('2.2'): msg = _( '--os-compute-api-version 2.2 or greater is required to ' - 'support the --type option.' + 'support the --type option' ) raise exceptions.CommandError(msg) kwargs['key_type'] = parsed_args.type + 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 + keypair = compute_client.keypairs.create(**kwargs) private_key = parsed_args.private_key @@ -139,16 +163,43 @@ class DeleteKeypair(command.Command): nargs='+', help=_("Name of key(s) to delete (name only)") ) + parser.add_argument( + '--user', + metavar='<user>', + help=_( + 'The owner of the keypair. (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 = {} result = 0 + + 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 + for n in parsed_args.name: try: data = utils.find_resource( compute_client.keypairs, n) - compute_client.keypairs.delete(data.name) + compute_client.keypairs.delete(data.name, **kwargs) except Exception as e: result += 1 LOG.error(_("Failed to delete key with name " @@ -261,12 +312,39 @@ class ShowKeypair(command.ShowOne): default=False, help=_("Show only bare public key paired with the generated key") ) + parser.add_argument( + '--user', + metavar='<user>', + help=_( + 'The owner of the keypair. (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 - keypair = utils.find_resource(compute_client.keypairs, - parsed_args.name) + 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 + + keypair = utils.find_resource( + compute_client.keypairs, parsed_args.name, **kwargs) info = {} info.update(keypair._info) |
