diff --git a/oauth2client/contrib/gce.py b/oauth2client/contrib/gce.py index a834a4313..609ce645f 100644 --- a/oauth2client/contrib/gce.py +++ b/oauth2client/contrib/gce.py @@ -33,8 +33,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): @@ -85,7 +85,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 == http_client.OK: try: diff --git a/tests/contrib/test_gce.py b/tests/contrib/test_gce.py index 3ecb37f42..add4231db 100644 --- a/tests/contrib/test_gce.py +++ b/tests/contrib/test_gce.py @@ -67,11 +67,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) @@ -159,8 +161,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