From c35b853f0fa9d41c50dd21c858bf9ffca1318953 Mon Sep 17 00:00:00 2001 From: Dan Prince Date: Tue, 7 Aug 2012 12:31:48 -0400 Subject: Fix the inject_metadata_into_fs in the disk API. Updates the _inject_metadata_into_fs in the disk/api.py so that it uses dict-style access. This resolves an issue introduced in a recent no-db-messaging change. Includes new test case. Fixes LP Bug #1034040. Change-Id: I1bc90a8331419709ab71e5da8c48cd1d54c40f9e --- nova/tests/test_virt.py | 11 +++++++++++ nova/virt/disk/api.py | 2 +- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/nova/tests/test_virt.py b/nova/tests/test_virt.py index 1a1e4cd40..8646b86b1 100644 --- a/nova/tests/test_virt.py +++ b/nova/tests/test_virt.py @@ -24,6 +24,8 @@ from nova import utils from nova.virt.disk import api as disk_api from nova.virt import driver +from nova.openstack.common import jsonutils + FLAGS = flags.FLAGS @@ -178,3 +180,12 @@ class TestVirtDiskPaths(test.TestCase): disk_api._inject_file_into_fs, '/tmp', '/etc/../../../../etc/passwd', 'hax') + + def test_inject_metadata(self): + with utils.tempdir() as tmpdir: + meta_objs = [{"key": "foo", "value": "bar"}] + metadata = {"foo": "bar"} + disk_api._inject_metadata_into_fs(meta_objs, tmpdir) + json_file = os.path.join(tmpdir, 'meta.js') + json_data = jsonutils.loads(open(json_file).read()) + self.assertEqual(metadata, json_data) diff --git a/nova/virt/disk/api.py b/nova/virt/disk/api.py index 5d3c9c6c9..f1c1c409c 100644 --- a/nova/virt/disk/api.py +++ b/nova/virt/disk/api.py @@ -388,7 +388,7 @@ def _inject_file_into_fs(fs, path, contents, append=False): def _inject_metadata_into_fs(metadata, fs): - metadata = dict([(m.key, m.value) for m in metadata]) + metadata = dict([(m['key'], m['value']) for m in metadata]) _inject_file_into_fs(fs, 'meta.js', jsonutils.dumps(metadata)) -- cgit