summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorScott Moser <smoser@ubuntu.com>2014-08-22 11:40:25 -0400
committerScott Moser <smoser@ubuntu.com>2014-08-22 11:40:25 -0400
commitd723c17b7abe5263d879d748dade763034cce476 (patch)
tree82a1c08cd27af2df550ff4760095f766ba4b9db6 /tests
parentbbe4b997819f43089aea12141ea393c1a46fe84d (diff)
downloadvyos-cloud-init-d723c17b7abe5263d879d748dade763034cce476.tar.gz
vyos-cloud-init-d723c17b7abe5263d879d748dade763034cce476.zip
ec2_utils.py: get_instance_metadata explicitly add trailing /
This change works around a bug in CloudStack's EC2 api implementation. That is filed upstream at [1]. The fix is safe for openstack and EC2 use cases as well. EC2 and OpenStacks' EC2 metadata service both return a list with access to either of: <url_base>/latest/meta-data <url_base>/latest/meta-data/ Additionally, the responses explicitly contain a trailing '/' for items that have a child. The ec2_utils code then just re-uses the trailng / there. Thus, only the top level request for 'meta-data/' needs the explicit fix. This also changes test cases. Those test cases failed without fixing them. If ever this regressed, those would fail again. -- [1] https://issues.apache.org/jira/browse/CLOUDSTACK-7405 LP: #1356855
Diffstat (limited to 'tests')
-rw-r--r--tests/unittests/test_datasource/test_openstack.py4
-rw-r--r--tests/unittests/test_ec2_util.py8
2 files changed, 6 insertions, 6 deletions
diff --git a/tests/unittests/test_datasource/test_openstack.py b/tests/unittests/test_datasource/test_openstack.py
index c088bb55..f43cbec8 100644
--- a/tests/unittests/test_datasource/test_openstack.py
+++ b/tests/unittests/test_datasource/test_openstack.py
@@ -88,7 +88,7 @@ def _register_uris(version, ec2_files, ec2_meta, os_files):
path = uri.path.lstrip("/")
if path in ec2_files:
return (200, headers, ec2_files.get(path))
- if path == 'latest/meta-data':
+ if path == 'latest/meta-data/':
buf = StringIO()
for (k, v) in ec2_meta.items():
if isinstance(v, (list, tuple)):
@@ -97,7 +97,7 @@ def _register_uris(version, ec2_files, ec2_meta, os_files):
buf.write("%s" % (k))
buf.write("\n")
return (200, headers, buf.getvalue())
- if path.startswith('latest/meta-data'):
+ if path.startswith('latest/meta-data/'):
value = None
pieces = path.split("/")
if path.endswith("/"):
diff --git a/tests/unittests/test_ec2_util.py b/tests/unittests/test_ec2_util.py
index 700254a3..84aa002e 100644
--- a/tests/unittests/test_ec2_util.py
+++ b/tests/unittests/test_ec2_util.py
@@ -44,7 +44,7 @@ class TestEc2Util(helpers.HttprettyTestCase):
@hp.activate
def test_metadata_fetch_no_keys(self):
- base_url = 'http://169.254.169.254/%s/meta-data' % (self.VERSION)
+ base_url = 'http://169.254.169.254/%s/meta-data/' % (self.VERSION)
hp.register_uri(hp.GET, base_url, status=200,
body="\n".join(['hostname',
'instance-id',
@@ -62,7 +62,7 @@ class TestEc2Util(helpers.HttprettyTestCase):
@hp.activate
def test_metadata_fetch_key(self):
- base_url = 'http://169.254.169.254/%s/meta-data' % (self.VERSION)
+ base_url = 'http://169.254.169.254/%s/meta-data/' % (self.VERSION)
hp.register_uri(hp.GET, base_url, status=200,
body="\n".join(['hostname',
'instance-id',
@@ -83,7 +83,7 @@ class TestEc2Util(helpers.HttprettyTestCase):
@hp.activate
def test_metadata_fetch_with_2_keys(self):
- base_url = 'http://169.254.169.254/%s/meta-data' % (self.VERSION)
+ base_url = 'http://169.254.169.254/%s/meta-data/' % (self.VERSION)
hp.register_uri(hp.GET, base_url, status=200,
body="\n".join(['hostname',
'instance-id',
@@ -108,7 +108,7 @@ class TestEc2Util(helpers.HttprettyTestCase):
@hp.activate
def test_metadata_fetch_bdm(self):
- base_url = 'http://169.254.169.254/%s/meta-data' % (self.VERSION)
+ base_url = 'http://169.254.169.254/%s/meta-data/' % (self.VERSION)
hp.register_uri(hp.GET, base_url, status=200,
body="\n".join(['hostname',
'instance-id',