summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--nova/api/metadata/base.py3
-rw-r--r--nova/tests/test_metadata.py15
2 files changed, 18 insertions, 0 deletions
diff --git a/nova/api/metadata/base.py b/nova/api/metadata/base.py
index 1c316bf9c..2377da7b7 100644
--- a/nova/api/metadata/base.py
+++ b/nova/api/metadata/base.py
@@ -317,6 +317,9 @@ class InstanceMetadata():
metadata['launch_index'] = self.instance['launch_index']
metadata['availability_zone'] = self.availability_zone
+ if self._check_os_version(GRIZZLY, version):
+ metadata['random_seed'] = base64.b64encode(os.urandom(512))
+
data = {
MD_JSON_NAME: json.dumps(metadata),
}
diff --git a/nova/tests/test_metadata.py b/nova/tests/test_metadata.py
index 39c84c1d8..1f2ea4bc5 100644
--- a/nova/tests/test_metadata.py
+++ b/nova/tests/test_metadata.py
@@ -347,6 +347,21 @@ class OpenStackMetadataTestCase(test.TestCase):
self.assertRaises(base.InvalidMetadataPath,
mdinst.lookup, "/openstack/2012-08-10/user_data")
+ def test_random_seed(self):
+ inst = copy(self.instance)
+ mdinst = fake_InstanceMetadata(self.stubs, inst)
+
+ # verify that 2013-04-04 has the 'random' field
+ mdjson = mdinst.lookup("/openstack/2013-04-04/meta_data.json")
+ mddict = json.loads(mdjson)
+
+ self.assertTrue("random_seed" in mddict)
+ self.assertEqual(len(base64.b64decode(mddict["random_seed"])), 512)
+
+ # verify that older version do not have it
+ mdjson = mdinst.lookup("/openstack/2012-08-10/meta_data.json")
+ self.assertFalse("random_seed" in json.loads(mdjson))
+
class MetadataHandlerTestCase(test.TestCase):
"""Test that metadata is returning proper values."""