File tree Expand file tree Collapse file tree 3 files changed +27
-0
lines changed
Expand file tree Collapse file tree 3 files changed +27
-0
lines changed Original file line number Diff line number Diff line change @@ -101,6 +101,10 @@ def _get_metadata_ip_root(use_mtls: bool):
101101except 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
Original file line number Diff line number Diff line change 6060"""Environment variable providing an alternate ip:port to be used for ip-only
6161GCE 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+
6369GCE_METADATA_MTLS_MODE = "GCE_METADATA_MTLS_MODE"
6470"""Environment variable controlling the mTLS behavior for GCE metadata requests.
6571
Original file line number Diff line number Diff 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" )
112126def test_is_on_gce_windows_success ():
113127 request = make_request ("" , headers = {_metadata ._METADATA_FLAVOR_HEADER : "meep" })
You can’t perform that action at this time.
0 commit comments