summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--nova/compute/api.py5
-rw-r--r--nova/tests/compute/test_compute.py10
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',