diff options
-rw-r--r-- | nova/compute/api.py | 5 | ||||
-rw-r--r-- | nova/tests/compute/test_compute.py | 10 |
2 files changed, 14 insertions, 1 deletions
diff --git a/nova/compute/api.py b/nova/compute/api.py index a5d8ab6e8..658673e50 100644 --- a/nova/compute/api.py +++ b/nova/compute/api.py @@ -2513,8 +2513,11 @@ class AggregateAPI(base.Base): """Creates the model for the aggregate.""" values = {"name": aggregate_name} + metadata = None + if availability_zone: + metadata = {'availability_zone': availability_zone} aggregate = self.db.aggregate_create(context, values, - metadata={'availability_zone': availability_zone}) + metadata=metadata) aggregate = self._get_aggregate_info(context, aggregate) # To maintain the same API result as before. del aggregate['hosts'] diff --git a/nova/tests/compute/test_compute.py b/nova/tests/compute/test_compute.py index 12bd3cf19..5afaa8e3c 100644 --- a/nova/tests/compute/test_compute.py +++ b/nova/tests/compute/test_compute.py @@ -6190,6 +6190,16 @@ class ComputeAPIAggrTestCase(BaseTestCase): self.stubs.Set(rpc, 'call', fake_rpc_method) self.stubs.Set(rpc, 'cast', fake_rpc_method) + def test_aggregate_no_zone(self): + # Ensure we can create an aggregate without an availability zone + aggr = self.api.create_aggregate(self.context, 'fake_aggregate', + None) + self.api.delete_aggregate(self.context, aggr['id']) + db.aggregate_get(self.context.elevated(read_deleted='yes'), + aggr['id']) + self.assertRaises(exception.AggregateNotFound, + self.api.delete_aggregate, self.context, aggr['id']) + def test_update_aggregate_metadata(self): # Ensure metadata can be updated. aggr = self.api.create_aggregate(self.context, 'fake_aggregate', |