Fixes bug 942549

Ensure a more meaninful error is reported when an aggregate is created in a
non-exsistent availability zone.

Change-Id: I15ea6c884bb6f326df1d88019ee0ecf070196d1e
This commit is contained in:
John Garbutt 2012-02-28 18:14:25 +00:00
parent 85f844c26e
commit 9f7595aa0f
2 changed files with 13 additions and 1 deletions

View File

@ -72,7 +72,8 @@ class AggregateController(object):
try:
aggregate = self.api.create_aggregate(context, name, avail_zone)
except exception.AggregateNameExists:
except (exception.AggregateNameExists,
exception.InvalidAggregateAction):
LOG.exception(_("Cannot create aggregate with name %(name)s and "
"availability zone %(avail_zone)s") % locals())
raise exc.HTTPConflict

View File

@ -87,6 +87,17 @@ class AggregateTestCase(test.TestCase):
{"name": "test",
"availability_zone": "nova1"}})
def test_create_with_incorrect_availability_zone(self):
def stub_create_aggregate(context, name, availability_zone):
raise exception.InvalidAggregateAction
self.stubs.Set(self.controller.api, "create_aggregate",
stub_create_aggregate)
self.assertRaises(exc.HTTPConflict, self.controller.create,
self.req, {"aggregate":
{"name": "test",
"availability_zone": "nova_bad"}})
def test_create_with_no_aggregate(self):
self.assertRaises(exc.HTTPBadRequest, self.controller.create,
self.req, {"foo":