diff options
| -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": |
