summaryrefslogtreecommitdiff
path: root/openstackclient/compute
diff options
context:
space:
mode:
authorZuul <zuul@review.opendev.org>2020-10-13 14:53:11 +0000
committerGerrit Code Review <review@openstack.org>2020-10-13 14:53:12 +0000
commit73765da3104cfdc977a77fb30ea0623a9ba67e5d (patch)
treedb1c6f271f2093cd34d5a9873496b5993ad61b32 /openstackclient/compute
parent375fe315255535ad0a6451aa0d9270ca5c3ba3b9 (diff)
parent4855fef8b8f29542ebdaf86aa5da4daa1f97b060 (diff)
downloadpython-openstackclient-73765da3104cfdc977a77fb30ea0623a9ba67e5d.tar.gz
Merge "Compute: Add 'keypair create --type' parameter"
Diffstat (limited to 'openstackclient/compute')
-rw-r--r--openstackclient/compute/v2/keypair.py42
1 files changed, 33 insertions, 9 deletions
diff --git a/openstackclient/compute/v2/keypair.py b/openstackclient/compute/v2/keypair.py
index 2b365ceb..6affaca3 100644
--- a/openstackclient/compute/v2/keypair.py
+++ b/openstackclient/compute/v2/keypair.py
@@ -20,6 +20,7 @@ import logging
import os
import sys
+from novaclient import api_versions
from osc_lib.command import command
from osc_lib import exceptions
from osc_lib import utils
@@ -53,6 +54,15 @@ class CreateKeypair(command.ShowOne):
help=_("Filename for private key to save. If not used, "
"print private key in console.")
)
+ parser.add_argument(
+ '--type',
+ metavar='<type>',
+ choices=['ssh', 'x509'],
+ help=_(
+ "Keypair type. Can be ssh or x509. "
+ "(Supported by API versions '2.2' - '2.latest')"
+ ),
+ )
return parser
def take_action(self, parsed_args):
@@ -70,17 +80,28 @@ class CreateKeypair(command.ShowOne):
"exception": e}
)
- keypair = compute_client.keypairs.create(
- parsed_args.name,
- public_key=public_key,
- )
+ kwargs = {
+ 'name': parsed_args.name,
+ 'public_key': public_key,
+ }
+ if parsed_args.type:
+ 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.'
+ )
+ raise exceptions.CommandError(msg)
+
+ kwargs['key_type'] = parsed_args.type
+
+ keypair = compute_client.keypairs.create(**kwargs)
private_key = parsed_args.private_key
# Save private key into specified file
if private_key:
try:
with io.open(
- os.path.expanduser(parsed_args.private_key), 'w+'
+ os.path.expanduser(parsed_args.private_key), 'w+'
) as p:
p.write(keypair.private_key)
except IOError as e:
@@ -150,10 +171,13 @@ class ListKeypair(command.Lister):
)
data = compute_client.keypairs.list()
- return (columns,
- (utils.get_item_properties(
- s, columns,
- ) for s in data))
+ if compute_client.api_version >= api_versions.APIVersion('2.2'):
+ columns += ("Type", )
+
+ return (
+ columns,
+ (utils.get_item_properties(s, columns) for s in data),
+ )
class ShowKeypair(command.ShowOne):