summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDan Prince <dprince@redhat.com>2012-08-07 12:31:48 -0400
committerDan Prince <dprince@redhat.com>2012-08-09 13:16:43 -0400
commitc35b853f0fa9d41c50dd21c858bf9ffca1318953 (patch)
treeb4749cea3359a4653a51cff6efbd0e9af205f546
parenteb1538763450d7d0f95d4c29ff54f4bf7defaa09 (diff)
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
-rw-r--r--nova/tests/test_virt.py11
-rw-r--r--nova/virt/disk/api.py2
2 files changed, 12 insertions, 1 deletions
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))