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)
|
authorize(context)
|
||||||
try:
|
try:
|
||||||
aggregate = self.api.remove_host_from_aggregate(context, id, host)
|
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 "
|
LOG.info(_("Cannot remove host %(host)s in aggregate "
|
||||||
"%(id)s") % locals())
|
"%(id)s") % locals())
|
||||||
raise exc.HTTPNotFound
|
raise exc.HTTPNotFound
|
||||||
|
|
|
@ -202,7 +202,7 @@ class AggregateTestCase(test.TestCase):
|
||||||
self.assertRaises(exc.HTTPBadRequest, self.controller.update,
|
self.assertRaises(exc.HTTPBadRequest, self.controller.update,
|
||||||
self.req, "2", body=test_metadata)
|
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"}}
|
test_metadata = {"aggregate": {"name": "test_name"}}
|
||||||
|
|
||||||
def stub_update_aggregate(context, aggregate, metadata):
|
def stub_update_aggregate(context, aggregate, metadata):
|
||||||
|
@ -236,7 +236,7 @@ class AggregateTestCase(test.TestCase):
|
||||||
stub_add_host_to_aggregate)
|
stub_add_host_to_aggregate)
|
||||||
|
|
||||||
self.assertRaises(exc.HTTPConflict, self.controller.action,
|
self.assertRaises(exc.HTTPConflict, self.controller.action,
|
||||||
self.req, "duplicate_aggregate",
|
self.req, "1",
|
||||||
body={"add_host": {"host": "host1"}})
|
body={"add_host": {"host": "host1"}})
|
||||||
|
|
||||||
def test_add_host_with_bad_aggregate(self):
|
def test_add_host_with_bad_aggregate(self):
|
||||||
|
@ -256,12 +256,12 @@ class AggregateTestCase(test.TestCase):
|
||||||
stub_add_host_to_aggregate)
|
stub_add_host_to_aggregate)
|
||||||
|
|
||||||
self.assertRaises(exc.HTTPNotFound, self.controller.action,
|
self.assertRaises(exc.HTTPNotFound, self.controller.action,
|
||||||
self.req, "bogus_aggregate",
|
self.req, "1",
|
||||||
body={"add_host": {"host": "host1"}})
|
body={"add_host": {"host": "bogus_host"}})
|
||||||
|
|
||||||
def test_add_host_with_missing_host(self):
|
def test_add_host_with_missing_host(self):
|
||||||
self.assertRaises(exc.HTTPBadRequest, self.controller.action,
|
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 test_remove_host(self):
|
||||||
def stub_remove_host_from_aggregate(context, aggregate, host):
|
def stub_remove_host_from_aggregate(context, aggregate, host):
|
||||||
|
@ -288,7 +288,7 @@ class AggregateTestCase(test.TestCase):
|
||||||
self.req, "bogus_aggregate",
|
self.req, "bogus_aggregate",
|
||||||
body={"remove_host": {"host": "host1"}})
|
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):
|
def stub_remove_host_from_aggregate(context, aggregate, host):
|
||||||
raise exception.AggregateHostNotFound(aggregate_id=aggregate,
|
raise exception.AggregateHostNotFound(aggregate_id=aggregate,
|
||||||
host=host)
|
host=host)
|
||||||
|
@ -297,16 +297,27 @@ class AggregateTestCase(test.TestCase):
|
||||||
stub_remove_host_from_aggregate)
|
stub_remove_host_from_aggregate)
|
||||||
|
|
||||||
self.assertRaises(exc.HTTPNotFound, self.controller.action,
|
self.assertRaises(exc.HTTPNotFound, self.controller.action,
|
||||||
self.req, "bogus_aggregate",
|
self.req, "1",
|
||||||
body={"remove_host": {"host": "host1"}})
|
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):
|
def test_remove_host_with_missing_host(self):
|
||||||
self.assertRaises(exc.HTTPBadRequest, self.controller.action,
|
self.assertRaises(exc.HTTPBadRequest, self.controller.action,
|
||||||
self.req, "1", body={"asdf": "asdf"})
|
self.req, "1", body={"asdf": "asdf"})
|
||||||
|
|
||||||
def test_remove_host_with_extra_param(self):
|
def test_remove_host_with_extra_param(self):
|
||||||
self.assertRaises(exc.HTTPBadRequest, self.controller.action,
|
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):
|
def test_set_metadata(self):
|
||||||
body = {"set_metadata": {"metadata": {"foo": "bar"}}}
|
body = {"set_metadata": {"metadata": {"foo": "bar"}}}
|
||||||
|
@ -325,7 +336,7 @@ class AggregateTestCase(test.TestCase):
|
||||||
|
|
||||||
self.assertEqual(AGGREGATE, result["aggregate"])
|
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"}}}
|
body = {"set_metadata": {"metadata": {"foo": "bar"}}}
|
||||||
|
|
||||||
def stub_update_aggregate(context, aggregate, metadata):
|
def stub_update_aggregate(context, aggregate, metadata):
|
||||||
|
@ -340,12 +351,12 @@ class AggregateTestCase(test.TestCase):
|
||||||
def test_set_metadata_with_missing_metadata(self):
|
def test_set_metadata_with_missing_metadata(self):
|
||||||
body = {"asdf": {"foo": "bar"}}
|
body = {"asdf": {"foo": "bar"}}
|
||||||
self.assertRaises(exc.HTTPBadRequest, self.controller.action,
|
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):
|
def test_set_metadata_with_extra_params(self):
|
||||||
body = {"metadata": {"foo": "bar"}, "asdf": {"foo": "bar"}}
|
body = {"metadata": {"foo": "bar"}, "asdf": {"foo": "bar"}}
|
||||||
self.assertRaises(exc.HTTPBadRequest, self.controller.action,
|
self.assertRaises(exc.HTTPBadRequest, self.controller.action,
|
||||||
self.req, "bad_aggregate", body=body)
|
self.req, "1", body=body)
|
||||||
|
|
||||||
def test_delete_aggregate(self):
|
def test_delete_aggregate(self):
|
||||||
def stub_delete_aggregate(context, aggregate):
|
def stub_delete_aggregate(context, aggregate):
|
||||||
|
|
Loading…
Reference in New Issue