diff options
| author | Zuul <zuul@review.opendev.org> | 2020-10-13 14:53:11 +0000 |
|---|---|---|
| committer | Gerrit Code Review <review@openstack.org> | 2020-10-13 14:53:12 +0000 |
| commit | 73765da3104cfdc977a77fb30ea0623a9ba67e5d (patch) | |
| tree | db1c6f271f2093cd34d5a9873496b5993ad61b32 /openstackclient/compute | |
| parent | 375fe315255535ad0a6451aa0d9270ca5c3ba3b9 (diff) | |
| parent | 4855fef8b8f29542ebdaf86aa5da4daa1f97b060 (diff) | |
| download | python-openstackclient-73765da3104cfdc977a77fb30ea0623a9ba67e5d.tar.gz | |
Merge "Compute: Add 'keypair create --type' parameter"
Diffstat (limited to 'openstackclient/compute')
| -rw-r--r-- | openstackclient/compute/v2/keypair.py | 42 |
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): |
