diff options
| author | Zuul <zuul@review.opendev.org> | 2019-06-21 20:59:49 +0000 |
|---|---|---|
| committer | Gerrit Code Review <review@openstack.org> | 2019-06-21 20:59:49 +0000 |
| commit | 17611a72c501ca2096c4a7f7cd98590ac8bc973c (patch) | |
| tree | 1898139b1d4f3abacd8cd3873ef557306c062d87 /openstackclient/compute | |
| parent | e5cb150b6f8dc99aa73f99534b639c2f611a98d7 (diff) | |
| parent | 187be0ac22be5d2d1c42d45e9299e62cfc3796ae (diff) | |
| download | python-openstackclient-17611a72c501ca2096c4a7f7cd98590ac8bc973c.tar.gz | |
Merge "Microversion 2.73: Support adding the reason behind a server lock"
Diffstat (limited to 'openstackclient/compute')
| -rw-r--r-- | openstackclient/compute/v2/server.py | 47 |
1 files changed, 43 insertions, 4 deletions
diff --git a/openstackclient/compute/v2/server.py b/openstackclient/compute/v2/server.py index 1d022f03..a7822ec8 100644 --- a/openstackclient/compute/v2/server.py +++ b/openstackclient/compute/v2/server.py @@ -1160,6 +1160,21 @@ class ListServer(command.Lister): " The provided time should be an ISO 8061 formatted time" " (e.g., 2016-03-04T06:27:59Z).") ) + lock_group = parser.add_mutually_exclusive_group() + lock_group.add_argument( + '--locked', + action='store_true', + default=False, + help=_('Only display locked servers. ' + 'Requires ``--os-compute-api-version`` 2.73 or greater.'), + ) + lock_group.add_argument( + '--unlocked', + action='store_true', + default=False, + help=_('Only display unlocked servers. ' + 'Requires ``--os-compute-api-version`` 2.73 or greater.'), + ) return parser def take_action(self, parsed_args): @@ -1215,6 +1230,18 @@ class ListServer(command.Lister): 'changes-before': parsed_args.changes_before, 'changes-since': parsed_args.changes_since, } + support_locked = (compute_client.api_version >= + api_versions.APIVersion('2.73')) + if not support_locked and (parsed_args.locked or parsed_args.unlocked): + msg = _('--os-compute-api-version 2.73 or greater is required to ' + 'use the (un)locked filter option.') + raise exceptions.CommandError(msg) + elif support_locked: + # Only from 2.73. + if parsed_args.locked: + search_opts['locked'] = True + if parsed_args.unlocked: + search_opts['locked'] = False LOG.debug('search options: %s', search_opts) if search_opts['changes-before']: @@ -1412,16 +1439,28 @@ class LockServer(command.Command): nargs='+', help=_('Server(s) to lock (name or ID)'), ) + parser.add_argument( + '--reason', + metavar='<reason>', + default=None, + help=_("Reason for locking the server(s). Requires " + "``--os-compute-api-version`` 2.73 or greater.") + ) return parser def take_action(self, parsed_args): compute_client = self.app.client_manager.compute + support_reason = compute_client.api_version >= api_versions.APIVersion( + '2.73') + if not support_reason and parsed_args.reason: + msg = _('--os-compute-api-version 2.73 or greater is required to ' + 'use the --reason option.') + raise exceptions.CommandError(msg) for server in parsed_args.server: - utils.find_resource( - compute_client.servers, - server, - ).lock() + serv = utils.find_resource(compute_client.servers, server) + (serv.lock(reason=parsed_args.reason) if support_reason + else serv.lock()) # FIXME(dtroyer): Here is what I want, how with argparse/cliff? |
