diff options
author | Scott Moser <smoser@ubuntu.com> | 2014-08-22 11:40:25 -0400 |
---|---|---|
committer | Scott Moser <smoser@ubuntu.com> | 2014-08-22 11:40:25 -0400 |
commit | d723c17b7abe5263d879d748dade763034cce476 (patch) | |
tree | 82a1c08cd27af2df550ff4760095f766ba4b9db6 /tests/unittests/test_datasource | |
parent | bbe4b997819f43089aea12141ea393c1a46fe84d (diff) | |
download | vyos-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/unittests/test_datasource')
-rw-r--r-- | tests/unittests/test_datasource/test_openstack.py | 4 |
1 files changed, 2 insertions, 2 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("/"): |