Merge "Fixes bug 943188"

This commit is contained in:
Jenkins 2012-03-12 23:27:41 +00:00 committed by Gerrit Code Review
commit fd80f1b2e1
3 changed files with 8 additions and 6 deletions
nova
compute
db/sqlalchemy
tests

@ -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):

@ -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)

@ -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."""