Enable "openstack server lock" command to take multiple servers.

Current "openstack server lock" command could only lock one server.
Improve it to be able to handle more than one servers. Also improve
the doc to reflect the new feature.

Change-Id: Ifcf103b1c32e6c547ac09f688b887b1c03f92b09
Implements: blueprint cmd-with-multi-servers
This commit is contained in:
Tang Chen 2015-11-13 10:25:27 +08:00
parent 90d86ef01c
commit c1f0ad6d71
3 changed files with 12 additions and 10 deletions

View File

@ -253,17 +253,17 @@ List servers
server lock
-----------
Lock a server. A non-admin user will not be able to execute actions
Lock server(s). A non-admin user will not be able to execute actions
.. program:: server lock
.. code:: bash
os server lock
<server>
<server> [<server> ...]
.. describe:: <server>
Server (name or ID)
Server(s) to lock (name or ID)
server migrate
--------------

View File

@ -169,7 +169,7 @@ Those actions with an opposite action are noted in parens if applicable.
* ``delete`` (``create``) - delete specific occurrences of the specified objects
* ``issue`` (``revoke``) - issue a token
* ``list`` - display summary information about multiple objects
* ``lock`` (``unlock``) - lock a server so that non-admin user won't be able to execute actions
* ``lock`` (``unlock``) - lock one or more servers so that non-admin user won't be able to execute actions
* ``migrate`` - move a server to a different host; ``--live`` performs a
live migration if possible
* ``pause`` (``unpause``) - stop one or more servers and leave them in memory

View File

@ -798,7 +798,7 @@ class ListServer(lister.Lister):
class LockServer(command.Command):
"""Lock a server. A non-admin user will not be able to execute actions"""
"""Lock server(s). A non-admin user will not be able to execute actions"""
log = logging.getLogger(__name__ + '.LockServer')
@ -807,7 +807,8 @@ class LockServer(command.Command):
parser.add_argument(
'server',
metavar='<server>',
help=_('Server (name or ID)'),
nargs='+',
help=_('Server(s) to lock (name or ID)'),
)
return parser
@ -815,10 +816,11 @@ class LockServer(command.Command):
def take_action(self, parsed_args):
compute_client = self.app.client_manager.compute
utils.find_resource(
compute_client.servers,
parsed_args.server,
).lock()
for server in parsed_args.server:
utils.find_resource(
compute_client.servers,
server,
).lock()
# FIXME(dtroyer): Here is what I want, how with argparse/cliff?