Merge "Don't assume contents of values after aggregate_update"

This commit is contained in:
Jenkins
2015-02-19 15:26:40 +00:00
committed by Gerrit Code Review
2 changed files with 8 additions and 6 deletions

View File

@@ -5342,7 +5342,6 @@ def aggregate_update(context, aggregate_id, values):
aggregate.update(values) aggregate.update(values)
aggregate.save(session=session) aggregate.save(session=session)
values['metadata'] = metadata
return aggregate_get(context, aggregate.id) return aggregate_get(context, aggregate.id)
else: else:
raise exception.AggregateNotFound(aggregate_id=aggregate_id) raise exception.AggregateNotFound(aggregate_id=aggregate_id)

View File

@@ -680,11 +680,13 @@ class AggregateDBApiTestCase(test.TestCase):
values = _get_fake_aggr_values() values = _get_fake_aggr_values()
values['metadata'] = _get_fake_aggr_metadata() values['metadata'] = _get_fake_aggr_metadata()
values['availability_zone'] = 'different_avail_zone' values['availability_zone'] = 'different_avail_zone'
expected_metadata = copy.deepcopy(values['metadata'])
expected_metadata['availability_zone'] = values['availability_zone']
db.aggregate_update(ctxt, result['id'], values) db.aggregate_update(ctxt, result['id'], values)
expected = db.aggregate_metadata_get(ctxt, result['id']) metadata = db.aggregate_metadata_get(ctxt, result['id'])
updated = db.aggregate_get(ctxt, result['id']) updated = db.aggregate_get(ctxt, result['id'])
self.assertThat(values['metadata'], self.assertThat(metadata,
matchers.DictMatches(expected)) matchers.DictMatches(expected_metadata))
self.assertNotEqual(result['availability_zone'], self.assertNotEqual(result['availability_zone'],
updated['availability_zone']) updated['availability_zone'])
@@ -694,9 +696,10 @@ class AggregateDBApiTestCase(test.TestCase):
values = _get_fake_aggr_values() values = _get_fake_aggr_values()
values['metadata'] = _get_fake_aggr_metadata() values['metadata'] = _get_fake_aggr_metadata()
values['metadata']['fake_key1'] = 'foo' values['metadata']['fake_key1'] = 'foo'
expected_metadata = copy.deepcopy(values['metadata'])
db.aggregate_update(ctxt, result['id'], values) db.aggregate_update(ctxt, result['id'], values)
expected = db.aggregate_metadata_get(ctxt, result['id']) metadata = db.aggregate_metadata_get(ctxt, result['id'])
self.assertThat(values['metadata'], matchers.DictMatches(expected)) self.assertThat(metadata, matchers.DictMatches(expected_metadata))
def test_aggregate_update_zone_with_existing_metadata(self): def test_aggregate_update_zone_with_existing_metadata(self):
ctxt = context.get_admin_context() ctxt = context.get_admin_context()