summaryrefslogtreecommitdiff
path: root/openstackclient/compute
diff options
context:
space:
mode:
authorZuul <zuul@review.opendev.org>2020-11-04 00:28:41 +0000
committerGerrit Code Review <review@openstack.org>2020-11-04 00:28:41 +0000
commitcb6659d7cd28f9c9c6481c9222ff6d3a5308410a (patch)
treef8a8131d7ea2093793ba9982793aa91bf11d65e7 /openstackclient/compute
parent71cdb113fe1113eb164ec4581b001a7baf4e7355 (diff)
parent17f641e1c3ac58acdc39d064369395198d2654d2 (diff)
downloadpython-openstackclient-cb6659d7cd28f9c9c6481c9222ff6d3a5308410a.tar.gz
Merge "Compute: Add user id support for keypair"
Diffstat (limited to 'openstackclient/compute')
-rw-r--r--openstackclient/compute/v2/keypair.py86
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)