Exit w/ valid code when no servers are deleted.
This change updates do_delete in v1_1/shell.py to keep track of deletion failures and raises an exception when all of the specified servers cannot be deleted. This in turn causes nova client to exit with a correct exit code when no successful deletes occur. Change-Id: I16ee7a4c754cf2e8add09a41becbcc37edc767ff Fixes: bug #1185009
This commit is contained in:
parent
f67c5e0cf9
commit
fa0d6e85a2
novaclient
@ -383,6 +383,9 @@ class FakeHTTPClient(base_client.HTTPClient):
|
||||
def delete_servers_1234(self, **kw):
|
||||
return (202, {}, None)
|
||||
|
||||
def delete_servers_5678(self, **kw):
|
||||
return (202, {}, None)
|
||||
|
||||
def delete_servers_1234_metadata_test_key(self, **kw):
|
||||
return (204, {}, None)
|
||||
|
||||
|
@ -635,6 +635,32 @@ class ShellTest(utils.TestCase):
|
||||
self.run_command('delete sample-server')
|
||||
self.assert_called('DELETE', '/servers/1234')
|
||||
|
||||
def test_delete_two_with_two_existent(self):
|
||||
self.run_command('delete 1234 5678')
|
||||
self.assert_called('DELETE', '/servers/1234', pos=-3)
|
||||
self.assert_called('DELETE', '/servers/5678', pos=-1)
|
||||
self.run_command('delete sample-server sample-server2')
|
||||
self.assert_called('DELETE', '/servers/1234', pos=-3)
|
||||
self.assert_called('DELETE', '/servers/5678', pos=-1)
|
||||
|
||||
def test_delete_two_with_one_nonexistent(self):
|
||||
self.run_command('delete 1234 123456789')
|
||||
self.assert_called_anytime('DELETE', '/servers/1234')
|
||||
self.run_command('delete sample-server nonexistentserver')
|
||||
self.assert_called_anytime('DELETE', '/servers/1234')
|
||||
|
||||
def test_delete_one_with_one_nonexistent(self):
|
||||
cmd = 'delete 123456789'
|
||||
self.assertRaises(exceptions.CommandError, self.run_command, cmd)
|
||||
cmd = 'delete nonexistent-server1'
|
||||
self.assertRaises(exceptions.CommandError, self.run_command, cmd)
|
||||
|
||||
def test_delete_two_with_two_nonexistent(self):
|
||||
cmd = 'delete 123456789 987654321'
|
||||
self.assertRaises(exceptions.CommandError, self.run_command, cmd)
|
||||
cmd = 'delete nonexistent-server1 nonexistent-server2'
|
||||
self.assertRaises(exceptions.CommandError, self.run_command, cmd)
|
||||
|
||||
def test_diagnostics(self):
|
||||
self.run_command('diagnostics 1234')
|
||||
self.assert_called('GET', '/servers/1234/diagnostics')
|
||||
|
@ -1337,12 +1337,19 @@ def do_show(cs, args):
|
||||
help='Name or ID of server(s).')
|
||||
def do_delete(cs, args):
|
||||
"""Immediately shut down and delete specified server(s)."""
|
||||
failure_count = 0
|
||||
|
||||
for server in args.server:
|
||||
try:
|
||||
_find_server(cs, server).delete()
|
||||
except Exception as e:
|
||||
failure_count += 1
|
||||
print(e)
|
||||
|
||||
if failure_count == len(args.server):
|
||||
raise exceptions.CommandError("Unable to delete any of the specified "
|
||||
"servers.")
|
||||
|
||||
|
||||
def _find_server(cs, server):
|
||||
"""Get a server by name or ID."""
|
||||
|
Loading…
x
Reference in New Issue
Block a user