fix: fail-fast on missing ECP config file to avoid 30s hang#17377
Open
nbayati wants to merge 2 commits into
Open
fix: fail-fast on missing ECP config file to avoid 30s hang#17377nbayati wants to merge 2 commits into
nbayati wants to merge 2 commits into
Conversation
Contributor
There was a problem hiding this comment.
Code Review
This pull request introduces a fail-fast mechanism in _agent_identity_utils.py that immediately returns None if the ECP config path is specified but does not exist on a workstation. The tests have been updated to mock os.path.exists to simulate workload environments, and a new test has been added to verify the workstation fail-fast behavior. The reviewer suggested simplifying the nested helper functions exists_side_effect in the tests to concise lambda expressions to improve readability and reduce boilerplate.
Comment on lines
+178
to
+182
| def exists_side_effect(path): | ||
| if path == "/var/run/secrets/workload-spiffe-credentials": | ||
| return True | ||
| return False | ||
| mock_exists.side_effect = exists_side_effect |
Contributor
Comment on lines
+201
to
+205
| def exists_side_effect(path): | ||
| if path == "/var/run/secrets/workload-spiffe-credentials": | ||
| return True | ||
| return False | ||
| mock_exists.side_effect = exists_side_effect |
Contributor
If GOOGLE_API_CERTIFICATE_CONFIG is set but the file is missing, and we are not in a workload environment (e.g. on a workstation), exit early and return None. This avoids a 30-second hang trying to poll the well-known SPIFFE path.
f3b2666 to
e63c5ad
Compare
The test test_default_client_encrypted_cert_source mocked open in the test module itself instead of the target module, causing it to write dummy cert_path and key_path files to disk during test runs.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR resolves two issues in the
google-authpackage:First, it adds a fast-fail check for ECP configuration. When the
GOOGLE_API_CERTIFICATE_CONFIGenvironment variable is set but the configuration file is missing (common on corporate workstations or clean sandbox test runners), the SDK was falling through to the well-known SPIFFE path and waiting on a 30-second retry loop. We now check if the config path is set but missing, and if we are not in a workload environment (the well-known credentials directory is absent), we immediately returnNoneto fallback to unbound tokens. (Fixes b/512912028)Second, it fixes an incorrect mock in
test_mtls.py.test_default_client_encrypted_cert_sourcewas mockingopenin the test namespace instead of the target module namespace. This caused the test to write actualcert_pathandkey_pathfiles to the local disk during test runs. This is fixed by patchinggoogle.auth.transport.mtls.open.Unit tests have been added to verify the fast-fail behavior, and existing retry tests have been updated to mock the workload directory. All tests now pass without writing files to disk.