Fix: Nova aggregate API throws an uncaught exception on invalid host
Add ComputeHostNotFound to the caught exceptions. Resolves bug 1154138. Change-Id: I385b88b85caf534f51db70577eb62361e8cc461f
This commit is contained in:
parent
562b078742
commit
e94deedd42
|
@ -167,7 +167,8 @@ class AggregateController(object):
|
|||
authorize(context)
|
||||
try:
|
||||
aggregate = self.api.remove_host_from_aggregate(context, id, host)
|
||||
except (exception.AggregateNotFound, exception.AggregateHostNotFound):
|
||||
except (exception.AggregateNotFound, exception.AggregateHostNotFound,
|
||||
exception.ComputeHostNotFound):
|
||||
LOG.info(_("Cannot remove host %(host)s in aggregate "
|
||||
"%(id)s") % locals())
|
||||
raise exc.HTTPNotFound
|
||||
|
|
|
@ -202,7 +202,7 @@ class AggregateTestCase(test.TestCase):
|
|||
self.assertRaises(exc.HTTPBadRequest, self.controller.update,
|
||||
self.req, "2", body=test_metadata)
|
||||
|
||||
def test_update_with_bad_host_aggregate(self):
|
||||
def test_update_with_bad_aggregate(self):
|
||||
test_metadata = {"aggregate": {"name": "test_name"}}
|
||||
|
||||
def stub_update_aggregate(context, aggregate, metadata):
|
||||
|
@ -236,7 +236,7 @@ class AggregateTestCase(test.TestCase):
|
|||
stub_add_host_to_aggregate)
|
||||
|
||||
self.assertRaises(exc.HTTPConflict, self.controller.action,
|
||||
self.req, "duplicate_aggregate",
|
||||
self.req, "1",
|
||||
body={"add_host": {"host": "host1"}})
|
||||
|
||||
def test_add_host_with_bad_aggregate(self):
|
||||
|
@ -256,12 +256,12 @@ class AggregateTestCase(test.TestCase):
|
|||
stub_add_host_to_aggregate)
|
||||
|
||||
self.assertRaises(exc.HTTPNotFound, self.controller.action,
|
||||
self.req, "bogus_aggregate",
|
||||
body={"add_host": {"host": "host1"}})
|
||||
self.req, "1",
|
||||
body={"add_host": {"host": "bogus_host"}})
|
||||
|
||||
def test_add_host_with_missing_host(self):
|
||||
self.assertRaises(exc.HTTPBadRequest, self.controller.action,
|
||||
self.req, "1", body={"asdf": "asdf"})
|
||||
self.req, "1", body={"add_host": {"asdf": "asdf"}})
|
||||
|
||||
def test_remove_host(self):
|
||||
def stub_remove_host_from_aggregate(context, aggregate, host):
|
||||
|
@ -288,7 +288,7 @@ class AggregateTestCase(test.TestCase):
|
|||
self.req, "bogus_aggregate",
|
||||
body={"remove_host": {"host": "host1"}})
|
||||
|
||||
def test_remove_host_with_bad_host(self):
|
||||
def test_remove_host_with_host_not_in_aggregate(self):
|
||||
def stub_remove_host_from_aggregate(context, aggregate, host):
|
||||
raise exception.AggregateHostNotFound(aggregate_id=aggregate,
|
||||
host=host)
|
||||
|
@ -297,16 +297,27 @@ class AggregateTestCase(test.TestCase):
|
|||
stub_remove_host_from_aggregate)
|
||||
|
||||
self.assertRaises(exc.HTTPNotFound, self.controller.action,
|
||||
self.req, "bogus_aggregate",
|
||||
self.req, "1",
|
||||
body={"remove_host": {"host": "host1"}})
|
||||
|
||||
def test_remove_host_with_bad_host(self):
|
||||
def stub_remove_host_from_aggregate(context, aggregate, host):
|
||||
raise exception.ComputeHostNotFound(host=host)
|
||||
self.stubs.Set(self.controller.api,
|
||||
"remove_host_from_aggregate",
|
||||
stub_remove_host_from_aggregate)
|
||||
|
||||
self.assertRaises(exc.HTTPNotFound, self.controller.action,
|
||||
self.req, "1", body={"remove_host": {"host": "bogushost"}})
|
||||
|
||||
def test_remove_host_with_missing_host(self):
|
||||
self.assertRaises(exc.HTTPBadRequest, self.controller.action,
|
||||
self.req, "1", body={"asdf": "asdf"})
|
||||
|
||||
def test_remove_host_with_extra_param(self):
|
||||
self.assertRaises(exc.HTTPBadRequest, self.controller.action,
|
||||
self.req, "1", body={"asdf": "asdf", "host": "asdf"})
|
||||
self.req, "1", body={"remove_host": {"asdf": "asdf",
|
||||
"host": "asdf"}})
|
||||
|
||||
def test_set_metadata(self):
|
||||
body = {"set_metadata": {"metadata": {"foo": "bar"}}}
|
||||
|
@ -325,7 +336,7 @@ class AggregateTestCase(test.TestCase):
|
|||
|
||||
self.assertEqual(AGGREGATE, result["aggregate"])
|
||||
|
||||
def test_set_metadata_with_bad_host_aggregate(self):
|
||||
def test_set_metadata_with_bad_aggregate(self):
|
||||
body = {"set_metadata": {"metadata": {"foo": "bar"}}}
|
||||
|
||||
def stub_update_aggregate(context, aggregate, metadata):
|
||||
|
@ -340,12 +351,12 @@ class AggregateTestCase(test.TestCase):
|
|||
def test_set_metadata_with_missing_metadata(self):
|
||||
body = {"asdf": {"foo": "bar"}}
|
||||
self.assertRaises(exc.HTTPBadRequest, self.controller.action,
|
||||
self.req, "bad_aggregate", body=body)
|
||||
self.req, "1", body=body)
|
||||
|
||||
def test_set_metadata_with_extra_params(self):
|
||||
body = {"metadata": {"foo": "bar"}, "asdf": {"foo": "bar"}}
|
||||
self.assertRaises(exc.HTTPBadRequest, self.controller.action,
|
||||
self.req, "bad_aggregate", body=body)
|
||||
self.req, "1", body=body)
|
||||
|
||||
def test_delete_aggregate(self):
|
||||
def stub_delete_aggregate(context, aggregate):
|
||||
|
|
Loading…
Reference in New Issue