"nova boot" should not log an error if subsidiary commands fail
Fix: Intially the cli was raising "CommadError" in case the requested flavor or image were not present. This error category was not approrpiate as it signifies an error in the command syntax. When the requested resource (flavour/image) does not exist, a ResourceNotFound error should be raised. So, added a new error category "ResourceNotFound" to cater for this scenario and updated the code to raise this new error. "nova show <instance_name>" command has also been updated to raise "ResourceNotFound" error when the requested vm for which details have to be displayed does not exist. Closes-Bug: #1258488 Change-Id: If64a087944586ef5792efe3baa62e455b9bbaa07
This commit is contained in:
parent
d07699de84
commit
b78c0d4f46
novaclient
@ -55,6 +55,11 @@ class CommandError(ClientException):
|
||||
pass
|
||||
|
||||
|
||||
class ResourceNotFound(ClientException):
|
||||
"""Error in getting the resource."""
|
||||
pass
|
||||
|
||||
|
||||
class AuthorizationFailure(ClientException):
|
||||
"""Cannot authorize API client."""
|
||||
pass
|
||||
|
@ -89,15 +89,15 @@ class FindResourceTestCase(test_utils.TestCase):
|
||||
|
||||
def test_find_none(self):
|
||||
"""Test a few non-valid inputs."""
|
||||
self.assertRaises(exceptions.CommandError,
|
||||
self.assertRaises(exceptions.ResourceNotFound,
|
||||
utils.find_resource,
|
||||
self.manager,
|
||||
'asdf')
|
||||
self.assertRaises(exceptions.CommandError,
|
||||
self.assertRaises(exceptions.ResourceNotFound,
|
||||
utils.find_resource,
|
||||
self.manager,
|
||||
None)
|
||||
self.assertRaises(exceptions.CommandError,
|
||||
self.assertRaises(exceptions.ResourceNotFound,
|
||||
utils.find_resource,
|
||||
self.manager,
|
||||
{})
|
||||
|
@ -953,7 +953,7 @@ class ShellTest(utils.TestCase):
|
||||
self.assert_called('GET', '/flavors/1', pos=-1)
|
||||
|
||||
def test_show_bad_id(self):
|
||||
self.assertRaises(exceptions.CommandError,
|
||||
self.assertRaises(exceptions.ResourceNotFound,
|
||||
self.run_command, 'show xxx')
|
||||
|
||||
@mock.patch('novaclient.v1_1.shell.utils.print_dict')
|
||||
|
@ -241,7 +241,7 @@ def find_resource(manager, name_or_id, **find_args):
|
||||
msg = _("No %(class)s with a name or ID of '%(name)s' exists.") % \
|
||||
{'class': manager.resource_class.__name__.lower(),
|
||||
'name': name_or_id}
|
||||
raise exceptions.CommandError(msg)
|
||||
raise exceptions.ResourceNotFound(msg)
|
||||
except exceptions.NoUniqueMatch:
|
||||
msg = (_("Multiple %(class)s matches found for '%(name)s', use an ID "
|
||||
"to be more specific.") %
|
||||
|
Loading…
x
Reference in New Issue
Block a user