diff options
| author | Dan Prince <dan.prince@rackspace.com> | 2011-05-28 23:12:07 -0400 |
|---|---|---|
| committer | Dan Prince <dan.prince@rackspace.com> | 2011-05-28 23:12:07 -0400 |
| commit | ccf522daaca0d4136c072c1905dd9fbaa1dfb2e9 (patch) | |
| tree | 7218ac1f7502c6c46445595f81676b73ae36e372 /nova/db | |
| parent | a9278909cbb6d5ea9283231dbd6efc67b812abff (diff) | |
| download | nova-ccf522daaca0d4136c072c1905dd9fbaa1dfb2e9.tar.gz nova-ccf522daaca0d4136c072c1905dd9fbaa1dfb2e9.tar.xz nova-ccf522daaca0d4136c072c1905dd9fbaa1dfb2e9.zip | |
Fixes to the SQLAlchmeny API such that metadata is saved on an instance_update.
Added integration test to test that instance metadata is updated on a rebuild.
Diffstat (limited to 'nova/db')
| -rw-r--r-- | nova/db/sqlalchemy/api.py | 22 |
1 files changed, 13 insertions, 9 deletions
diff --git a/nova/db/sqlalchemy/api.py b/nova/db/sqlalchemy/api.py index e4dda5c12..1a7cae6e9 100644 --- a/nova/db/sqlalchemy/api.py +++ b/nova/db/sqlalchemy/api.py @@ -771,6 +771,15 @@ def fixed_ip_update(context, address, values): ################### +def _metadata_refs(metadata_dict): + metadata_refs = [] + if metadata_dict: + for k, v in metadata_dict.iteritems(): + metadata_ref = models.InstanceMetadata() + metadata_ref['key'] = k + metadata_ref['value'] = v + metadata_refs.append(metadata_ref) + return metadata_refs @require_context @@ -780,15 +789,7 @@ def instance_create(context, values): context - request context object values - dict containing column values. """ - metadata = values.get('metadata') - metadata_refs = [] - if metadata: - for k, v in metadata.iteritems(): - metadata_ref = models.InstanceMetadata() - metadata_ref['key'] = k - metadata_ref['value'] = v - metadata_refs.append(metadata_ref) - values['metadata'] = metadata_refs + values['metadata'] = _metadata_refs(values.get('metadata')) instance_ref = models.Instance() instance_ref.update(values) @@ -1010,6 +1011,9 @@ def instance_set_state(context, instance_id, state, description=None): @require_context def instance_update(context, instance_id, values): session = get_session() + metadata = values.get('metadata') + if metadata: + values['metadata'] = _metadata_refs(values.get('metadata')) with session.begin(): instance_ref = instance_get(context, instance_id, session=session) instance_ref.update(values) |
