Skip to content

Commit d6e0c45

Browse files
authored
Merge branch 'main' into support_adc_set_empty
2 parents 8669723 + 383c982 commit d6e0c45

File tree

3 files changed

+27
-0
lines changed

3 files changed

+27
-0
lines changed

google/auth/compute_engine/_metadata.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,10 @@ def _get_metadata_ip_root(use_mtls: bool):
101101
except ValueError: # pragma: NO COVER
102102
_METADATA_DEFAULT_TIMEOUT = 3
103103

104+
# This is used to disable checking for the GCE metadata server and directly
105+
# assuming it's not available.
106+
_NO_GCE_CHECK = os.getenv(environment_vars.NO_GCE_CHECK) == "true"
107+
104108
# Detect GCE Residency
105109
_GOOGLE = "Google"
106110
_GCE_PRODUCT_NAME_FILE = "/sys/class/dmi/id/product_name"
@@ -116,6 +120,9 @@ def is_on_gce(request):
116120
Returns:
117121
bool: True if the code runs on Google Compute Engine, False otherwise.
118122
"""
123+
if _NO_GCE_CHECK:
124+
return False
125+
119126
if ping(request):
120127
return True
121128

google/auth/environment_vars.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,12 @@
6060
"""Environment variable providing an alternate ip:port to be used for ip-only
6161
GCE metadata requests."""
6262

63+
NO_GCE_CHECK = "NO_GCE_CHECK"
64+
"""Environment variable controlling whether to check if running on GCE or not.
65+
66+
The default value is false. Users have to explicitly set this value to true
67+
in order to disable the GCE check."""
68+
6369
GCE_METADATA_MTLS_MODE = "GCE_METADATA_MTLS_MODE"
6470
"""Environment variable controlling the mTLS behavior for GCE metadata requests.
6571

tests/compute_engine/test__metadata.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,20 @@ def test_is_on_gce_ping_success():
108108
assert _metadata.is_on_gce(request)
109109

110110

111+
def test_is_on_gce_no_gce_check():
112+
request = make_request("", headers=_metadata._METADATA_HEADERS)
113+
114+
os.environ[environment_vars.NO_GCE_CHECK] = "true"
115+
importlib.reload(_metadata)
116+
117+
try:
118+
assert not _metadata.is_on_gce(request)
119+
assert request.call_count == 0
120+
finally:
121+
del os.environ[environment_vars.NO_GCE_CHECK]
122+
importlib.reload(_metadata)
123+
124+
111125
@mock.patch("os.name", new="nt")
112126
def test_is_on_gce_windows_success():
113127
request = make_request("", headers={_metadata._METADATA_FLAVOR_HEADER: "meep"})

0 commit comments

Comments
 (0)