diff options
author | Steve Baker <steve@stevebaker.org> | 2012-07-01 19:14:05 +1200 |
---|---|---|
committer | Steve Baker <steve@stevebaker.org> | 2012-07-02 09:19:43 +1200 |
commit | 29b1b4c79360e550cc89a9736dee56576aa5b972 (patch) | |
tree | 21125602d96fbfdefb50fef4b7863e1ac5bc6c97 /nova/tests/test_metadata.py | |
parent | 019d953ef5b4bed7c53401375bfd7aa890fc0c1d (diff) | |
download | nova-29b1b4c79360e550cc89a9736dee56576aa5b972.tar.gz nova-29b1b4c79360e550cc89a9736dee56576aa5b972.tar.xz nova-29b1b4c79360e550cc89a9736dee56576aa5b972.zip |
Make metadata content match the requested version of the metadata API.
Currently the same metadata is returned no matter what metadata
version is requested. Metadata is currently implemented to version
2009-04-04 (apart from existing TODOs) as defined here:
http://docs.amazonwebservices.com/AWSEC2/latest/UserGuide/instancedata-data-categories.html
This change adds version checking conditionals throughout
get_ec2_metadata and only includes the metadata if the requested version
should contain it.
When there is a difference between Amazon API implementation and documentation
I've gone with replicating the implementation. So far differences include:
- undocumented hostname introduced in 1.0, deprecated in favour of
local-hostname
- kernel-id and ramdisk-id seem have to been implemented in 2007-12-15,
not 2008-02-01 as documented
get_ec2_metadata has also been reordered so that data is added oldest to
newest by API version. In a future change I may attempt to add
unimplemented API versions (2011-01-01, 2012-06-01).
Change-Id: Ibf6e6e3b9807f29dccd31006515df550bf9bf57b
Diffstat (limited to 'nova/tests/test_metadata.py')
-rw-r--r-- | nova/tests/test_metadata.py | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/nova/tests/test_metadata.py b/nova/tests/test_metadata.py index cf48512f0..62822f721 100644 --- a/nova/tests/test_metadata.py +++ b/nova/tests/test_metadata.py @@ -211,6 +211,18 @@ class MetadataTestCase(test.TestCase): self.assertTrue(re.match('aki-[0-9a-f]{8}', data['meta-data']['kernel-id'])) + def test_check_version(self): + inst = copy(self.instance) + md = fake_InstanceMetadata(self.stubs, inst) + + self.assertTrue(md._check_version('1.0', '2009-04-04')) + self.assertFalse(md._check_version('2009-04-04', '1.0')) + + self.assertFalse(md._check_version('2009-04-04', '2008-09-01')) + self.assertTrue(md._check_version('2008-09-01', '2009-04-04')) + + self.assertTrue(md._check_version('2009-04-04', '2009-04-04')) + class MetadataHandlerTestCase(test.TestCase): """Test that metadata is returning proper values.""" |