summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2012-03-12 23:27:41 +0000
committerGerrit Code Review <review@openstack.org>2012-03-12 23:27:41 +0000
commitfd80f1b2e1dc03b77fa51cfa27dedce1c593201d (patch)
tree235ba162d667e0c142d29a5d730f1e90880e9a31
parent5c20aee542fd9af473ca845020ecac9fe9df2d41 (diff)
parent6857fd2d952e5602a227a5f24173c75ba3e70f7b (diff)
downloadnova-fd80f1b2e1dc03b77fa51cfa27dedce1c593201d.tar.gz
nova-fd80f1b2e1dc03b77fa51cfa27dedce1c593201d.tar.xz
nova-fd80f1b2e1dc03b77fa51cfa27dedce1c593201d.zip
Merge "Fixes bug 943188"
-rw-r--r--nova/compute/api.py2
-rw-r--r--nova/db/sqlalchemy/api.py9
-rw-r--r--nova/tests/test_db_api.py3
3 files changed, 8 insertions, 6 deletions
diff --git a/nova/compute/api.py b/nova/compute/api.py
index e1bebfc90..71d7627d5 100644
--- a/nova/compute/api.py
+++ b/nova/compute/api.py
@@ -1760,8 +1760,6 @@ class AggregateAPI(base.Base):
raise exception.InvalidAggregateAction(action='delete',
aggregate_id=aggregate_id,
reason='not empty')
- values = {'operational_state': aggregate_states.DISMISSED}
- self.db.aggregate_update(context, aggregate_id, values)
self.db.aggregate_delete(context, aggregate_id)
def add_host_to_aggregate(self, context, aggregate_id, host):
diff --git a/nova/db/sqlalchemy/api.py b/nova/db/sqlalchemy/api.py
index 759a07827..7af4323a9 100644
--- a/nova/db/sqlalchemy/api.py
+++ b/nova/db/sqlalchemy/api.py
@@ -4153,15 +4153,15 @@ def aggregate_create(context, values, metadata=None):
values['name'],
session=session,
read_deleted='yes').first()
+ values.setdefault('operational_state', aggregate_states.CREATED)
if not aggregate:
aggregate = models.Aggregate()
- values.setdefault('operational_state', aggregate_states.CREATED)
aggregate.update(values)
aggregate.save(session=session)
elif aggregate.deleted:
- aggregate.update({'deleted': False,
- 'deleted_at': None,
- 'availability_zone': values['availability_zone']})
+ values['deleted'] = False
+ values['deleted_at'] = None
+ aggregate.update(values)
aggregate.save(session=session)
else:
raise exception.AggregateNameExists(aggregate_name=values['name'])
@@ -4230,6 +4230,7 @@ def aggregate_delete(context, aggregate_id):
if query.first():
query.update({'deleted': True,
'deleted_at': utils.utcnow(),
+ 'operational_state': aggregate_states.DISMISSED,
'updated_at': literal_column('updated_at')})
else:
raise exception.AggregateNotFound(aggregate_id=aggregate_id)
diff --git a/nova/tests/test_db_api.py b/nova/tests/test_db_api.py
index 9b6f2b0d0..099e2b8a8 100644
--- a/nova/tests/test_db_api.py
+++ b/nova/tests/test_db_api.py
@@ -333,6 +333,7 @@ class AggregateDBApiTestCase(test.TestCase):
r2 = _create_aggregate(values=values)
self.assertEqual(r2.name, values['name'])
self.assertEqual(r2.availability_zone, values['availability_zone'])
+ self.assertEqual(r2.operational_state, "created")
def test_aggregate_create_raise_exist_exc(self):
"""Ensure aggregate names are distinct."""
@@ -409,6 +410,8 @@ class AggregateDBApiTestCase(test.TestCase):
db.aggregate_delete(ctxt, result['id'])
expected = db.aggregate_get_all(ctxt, read_deleted='no')
self.assertEqual(0, len(expected))
+ aggregate = db.aggregate_get(ctxt, result['id'], read_deleted='yes')
+ self.assertEqual(aggregate["operational_state"], "dismissed")
def test_aggregate_update(self):
"""Ensure an aggregate can be updated."""