diff options
-rw-r--r-- | nova/api/metadata/base.py | 3 | ||||
-rw-r--r-- | nova/tests/test_metadata.py | 15 |
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.""" |