vault: fix namespace reset for clients with unset namespace #23491
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.
The Vault "logical" API doesn't allow configuring the namespace on a per-request basis. Instead, it's set on the client. Our
vaultclient
wrapper locks access to the API client and sets the namespace (and token, if applicable) for each request, and then resets the namespace and unlocks the API client.The logic for resetting the namespace incorrectly assumed that if the Nomad agent's Vault configuration didn't set the namespace that it was canonicalized to the non-empty string
"default"
. This results in the API client's namespace getting "stuck" whenever a job uses a non-default namespace if the configuration value is empty. Update the logic to always go back to the Nomad agent's configuration, rather than accepting the "previous" namespace from the caller.This changeset also removes some long-dead code in the Vault client wrapper.
Fixes: #22230
Ref: https://hashicorp.atlassian.net/browse/NET-10207