summaryrefslogtreecommitdiff
path: root/openstackclient/compute
diff options
context:
space:
mode:
authorZuul <zuul@review.opendev.org>2019-06-21 20:59:49 +0000
committerGerrit Code Review <review@openstack.org>2019-06-21 20:59:49 +0000
commit17611a72c501ca2096c4a7f7cd98590ac8bc973c (patch)
tree1898139b1d4f3abacd8cd3873ef557306c062d87 /openstackclient/compute
parente5cb150b6f8dc99aa73f99534b639c2f611a98d7 (diff)
parent187be0ac22be5d2d1c42d45e9299e62cfc3796ae (diff)
downloadpython-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.py47
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?