diff options
| author | Scott Moser <smoser@ubuntu.com> | 2012-10-18 20:21:12 -0400 |
|---|---|---|
| committer | Scott Moser <smoser@ubuntu.com> | 2012-12-20 09:29:33 -0500 |
| commit | 690202166f43281bd4439750eaec5262692454bb (patch) | |
| tree | c5415ba6323f1dd0c60389d1b27d33b2bf17ce50 | |
| parent | 3c35fdab55a4cd9d5854c691a29275cdba0cfcd5 (diff) | |
add 'random_seed' entry to instance metadata
This adds a 'random_seed' entry to the openstack metadata for an instance, both
in config-drive and in metadata service. It is a 512 byte blob of base64
encoded random data.
In the metadata service, every call will result in new data.
The intent of this field is to add some entropy to an instances entropy pool.
Change-Id: I7d8c1f9bf70a9c5a54f6349f3277588553471555
| -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.""" |
