Allow restore command with name param

when we try to restore an instance, it's already deleted state,
so we need to add 'delete=True' as default to restore command,
otherwise, the search function can't find the instance
whose state is deleted with the given name

Change-Id: I81cdc46897d76333452069a691824264ad504518
Closes-Bug: 1534644
This commit is contained in:
jichenjc 2016-01-23 22:06:48 +08:00
parent 51504e713e
commit 6791a8be69
3 changed files with 13 additions and 1 deletions

View File

@ -380,6 +380,10 @@ class ManagerWithFind(Manager):
all_tenants = kwargs['all_tenants']
list_kwargs['search_opts']['all_tenants'] = all_tenants
searches = [(k, v) for k, v in searches if k != 'all_tenants']
if "deleted" in kwargs:
deleted = kwargs['deleted']
list_kwargs['search_opts']['deleted'] = deleted
searches = [(k, v) for k, v in searches if k != 'deleted']
listing = self.list(**list_kwargs)

View File

@ -1252,6 +1252,14 @@ class ShellTest(utils.TestCase):
self.run_command('restore sample-server')
self.assert_called('POST', '/servers/1234/action', {'restore': None})
def test_restore_withname(self):
self.run_command('restore sample-server')
self.assert_called('GET',
'/servers?deleted=True&name=sample-server', pos=0)
self.assert_called('GET', '/servers/1234', pos=1)
self.assert_called('POST', '/servers/1234/action', {'restore': None},
pos=2)
def test_delete_two_with_two_existent(self):
self.run_command('delete 1234 5678')
self.assert_called('DELETE', '/servers/1234', pos=-5)

View File

@ -25,4 +25,4 @@ def do_force_delete(cs, args):
@cliutils.arg('server', metavar='<server>', help='Name or ID of server.')
def do_restore(cs, args):
"""Restore a soft-deleted server."""
utils.find_resource(cs.servers, args.server).restore()
utils.find_resource(cs.servers, args.server, deleted=True).restore()