Merge "Exit w/ valid code when no servers are deleted."

This commit is contained in:
Jenkins 2013-06-12 23:30:15 +00:00 committed by Gerrit Code Review
commit 52fc0ab815
3 changed files with 36 additions and 0 deletions

View File

@ -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)

View File

@ -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')

View File

@ -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."""