diff options
author | Stephen Finucane <sfinucan@redhat.com> | 2020-04-08 09:57:41 +0100 |
---|---|---|
committer | Stephen Finucane <stephenfin@redhat.com> | 2020-04-08 17:27:33 +0100 |
commit | ea092b29880e71f0ba2d8e1eb93a9cf73edee2a2 (patch) | |
tree | 9380571295753ddc46901f75f0d98eb86d37e2e9 /novaclient/shell.py | |
parent | d712c0fbc7a320f6eea4f8741f2f8d6e517a6507 (diff) | |
download | python-novaclient-ea092b29880e71f0ba2d8e1eb93a9cf73edee2a2.tar.gz |
Make 'server list --config-drive' a boolean option
Instead of passing through whatever the user provides and exposing this
bug in the REST API, simply make the opt a boolean one in expectation of
a day where the API issues have been resolved.
This also introduces machinery necessary to use more of these types of
opts in the future.
Change-Id: I9033540ac65ac0ee7337f16bdd002060652092ea
Signed-off-by: Stephen Finucane <stephenfin@redhat.com>
Diffstat (limited to 'novaclient/shell.py')
-rw-r--r-- | novaclient/shell.py | 23 |
1 files changed, 17 insertions, 6 deletions
diff --git a/novaclient/shell.py b/novaclient/shell.py index a5d1e937..22952b7c 100644 --- a/novaclient/shell.py +++ b/novaclient/shell.py @@ -442,6 +442,7 @@ class OpenStackComputeShell(object): action_help = desc.strip() arguments = getattr(callback, 'arguments', []) + groups = {} subparser = subparsers.add_parser( command, @@ -456,10 +457,14 @@ class OpenStackComputeShell(object): ) self.subcommands[command] = subparser for (args, kwargs) in arguments: - start_version = kwargs.get("start_version", None) + kwargs = kwargs.copy() + + start_version = kwargs.pop("start_version", None) + end_version = kwargs.pop("end_version", None) + group = kwargs.pop("group", None) + if start_version: start_version = api_versions.APIVersion(start_version) - end_version = kwargs.get("end_version", None) if end_version: end_version = api_versions.APIVersion(end_version) else: @@ -471,10 +476,16 @@ class OpenStackComputeShell(object): "end": end_version.get_string()}) if not version.matches(start_version, end_version): continue - kw = kwargs.copy() - kw.pop("start_version", None) - kw.pop("end_version", None) - subparser.add_argument(*args, **kw) + + if group: + if group not in groups: + groups[group] = ( + subparser.add_mutually_exclusive_group() + ) + kwargs['dest'] = kwargs.get('dest', group) + groups[group].add_argument(*args, **kwargs) + else: + subparser.add_argument(*args, **kwargs) subparser.set_defaults(func=callback) def setup_debugging(self, debug): |