diff --git a/novaclient/base.py b/novaclient/base.py index 4958500eb..bca3779e8 100644 --- a/novaclient/base.py +++ b/novaclient/base.py @@ -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) diff --git a/novaclient/tests/unit/v2/test_shell.py b/novaclient/tests/unit/v2/test_shell.py index b058a0433..63e178629 100644 --- a/novaclient/tests/unit/v2/test_shell.py +++ b/novaclient/tests/unit/v2/test_shell.py @@ -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) diff --git a/novaclient/v2/contrib/deferred_delete.py b/novaclient/v2/contrib/deferred_delete.py index 5d8d7d9e3..35e24d0d4 100644 --- a/novaclient/v2/contrib/deferred_delete.py +++ b/novaclient/v2/contrib/deferred_delete.py @@ -25,4 +25,4 @@ def do_force_delete(cs, args): @cliutils.arg('server', metavar='', 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()