diff options
| author | John Garbutt <john.garbutt@citrix.com> | 2012-02-28 18:14:25 +0000 |
|---|---|---|
| committer | John Garbutt <john.garbutt@citrix.com> | 2012-02-28 18:14:25 +0000 |
| commit | 9f7595aa0f464dc7344e0639951ea731dcfbeca5 (patch) | |
| tree | d811a7117d64fcdf77545a07a430fd9978c6e472 | |
| parent | 85f844c26e1a51665891ede3e5696d13433a7c59 (diff) | |
| download | nova-9f7595aa0f464dc7344e0639951ea731dcfbeca5.tar.gz nova-9f7595aa0f464dc7344e0639951ea731dcfbeca5.tar.xz nova-9f7595aa0f464dc7344e0639951ea731dcfbeca5.zip | |
Fixes bug 942549
Ensure a more meaninful error is reported when an aggregate is created in a
non-exsistent availability zone.
Change-Id: I15ea6c884bb6f326df1d88019ee0ecf070196d1e
| -rw-r--r-- | nova/api/openstack/compute/contrib/aggregates.py | 3 | ||||
| -rw-r--r-- | nova/tests/api/openstack/compute/contrib/test_aggregates.py | 11 |
2 files changed, 13 insertions, 1 deletions
diff --git a/nova/api/openstack/compute/contrib/aggregates.py b/nova/api/openstack/compute/contrib/aggregates.py index ea90a57d7..583fe1b51 100644 --- a/nova/api/openstack/compute/contrib/aggregates.py +++ b/nova/api/openstack/compute/contrib/aggregates.py @@ -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 diff --git a/nova/tests/api/openstack/compute/contrib/test_aggregates.py b/nova/tests/api/openstack/compute/contrib/test_aggregates.py index 6c8bc5a2f..080cf8428 100644 --- a/nova/tests/api/openstack/compute/contrib/test_aggregates.py +++ b/nova/tests/api/openstack/compute/contrib/test_aggregates.py @@ -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": |
