summaryrefslogtreecommitdiffstats
path: root/nova/tests/test_metadata.py
diff options
context:
space:
mode:
authorSteve Baker <steve@stevebaker.org>2012-07-01 19:14:05 +1200
committerSteve Baker <steve@stevebaker.org>2012-07-02 09:19:43 +1200
commit29b1b4c79360e550cc89a9736dee56576aa5b972 (patch)
tree21125602d96fbfdefb50fef4b7863e1ac5bc6c97 /nova/tests/test_metadata.py
parent019d953ef5b4bed7c53401375bfd7aa890fc0c1d (diff)
downloadnova-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.py12
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."""