diff --git a/oauth2client/contrib/gce.py b/oauth2client/contrib/gce.py index 77b08f1..a464798 100644 --- a/oauth2client/contrib/gce.py +++ b/oauth2client/contrib/gce.py @@ -32,8 +32,8 @@ __author__ = 'jcgregorio@google.com (Joe Gregorio)' 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 @@ class AppAssertionCredentials(AssertionCredentials): """ 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 4367e7f..3407523 100644 --- a/tests/contrib/test_gce.py +++ b/tests/contrib/test_gce.py @@ -66,11 +66,13 @@ class AppAssertionCredentialsTests(unittest.TestCase): 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 @@ class AppAssertionCredentialsTests(unittest.TestCase): 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