From c9809c87f1352f951cc526b83e4b66ced8e8c3ae Mon Sep 17 00:00:00 2001 From: Kevin Regan Date: Mon, 25 Jan 2016 15:55:07 -0800 Subject: [PATCH] Look at the v1 endpoint for the GCE metadata server We are updating all uses of the legacy GCE metadata server endpoints (0.1 and v1beta) to use the current endpoint. --- oauth2client/contrib/gce.py | 7 ++++--- tests/contrib/test_gce.py | 13 ++++++++----- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/oauth2client/contrib/gce.py b/oauth2client/contrib/gce.py index 77b08f1ee..a464798e5 100644 --- a/oauth2client/contrib/gce.py +++ b/oauth2client/contrib/gce.py @@ -32,8 +32,8 @@ logger = logging.getLogger(__name__) # URI Template for the endpoint that returns access_tokens. -META = ('http://metadata.google.internal/0.1/meta-data/service-accounts/' - 'default/acquire{?scope}') +META = ('http://metadata.google.internal/computeMetadata/v1/instance/' + 'service-accounts/default/acquire{?scope}') class AppAssertionCredentials(AssertionCredentials): @@ -84,7 +84,8 @@ def _refresh(self, http_request): """ query = '?scope=%s' % urllib.parse.quote(self.scope, '') uri = META.replace('{?scope}', query) - response, content = http_request(uri) + response, content = http_request( + uri, headers={'Metadata-Flavor': 'Google'}) content = _from_bytes(content) if response.status == 200: try: diff --git a/tests/contrib/test_gce.py b/tests/contrib/test_gce.py index 4367e7f79..340752355 100644 --- a/tests/contrib/test_gce.py +++ b/tests/contrib/test_gce.py @@ -66,11 +66,13 @@ def _refresh_success_helper(self, bytes_response=False): credentials.refresh(http) self.assertEquals(access_token, credentials.access_token) - base_metadata_uri = ('http://metadata.google.internal/0.1/meta-data/' - 'service-accounts/default/acquire') + base_metadata_uri = ( + 'http://metadata.google.internal/computeMetadata/v1/instance/' + 'service-accounts/default/acquire') escaped_scopes = urllib.parse.quote(' '.join(scopes), safe='') request_uri = base_metadata_uri + '?scope=' + escaped_scopes - http.request.assert_called_once_with(request_uri) + http.request.assert_called_once_with( + request_uri, headers={'Metadata-Flavor': 'Google'}) def test_refresh_success(self): self._refresh_success_helper(bytes_response=False) @@ -158,8 +160,9 @@ def test_get_access_token(self): self.assertEqual(None, token.expires_in) http.request.assert_called_once_with( - 'http://metadata.google.internal/0.1/meta-data/service-accounts/' - 'default/acquire?scope=dummy_scope') + 'http://metadata.google.internal/computeMetadata/v1/instance/' + 'service-accounts/default/acquire?scope=dummy_scope', + headers={'Metadata-Flavor': 'Google'}) def test_save_to_well_known_file(self): import os