mirror of
https://github.com/optim-enterprises-bv/vault.git
synced 2025-11-01 19:17:58 +00:00
Fix Agent and Proxy env var handling (#24790)
* Fix Agent and Proxy env var handling * Changelog * Review suggestions
This commit is contained in:
6
changelog/24790.txt
Normal file
6
changelog/24790.txt
Normal file
@@ -0,0 +1,6 @@
|
||||
```release-note:bug
|
||||
agent: Fixed incorrect parsing of boolean environment variables for configuration.
|
||||
```
|
||||
```release-note:bug
|
||||
proxy: Fixed incorrect parsing of boolean environment variables for configuration.
|
||||
```
|
||||
@@ -1027,7 +1027,12 @@ func (c *AgentCommand) setBoolFlag(f *FlagSets, configVal bool, fVar *BoolVar) {
|
||||
// Don't do anything as the flag is already set from the command line
|
||||
case flagEnvSet:
|
||||
// Use value from env var
|
||||
*fVar.Target = flagEnvValue != ""
|
||||
val, err := parseutil.ParseBool(flagEnvValue)
|
||||
if err != nil {
|
||||
c.logger.Error("error parsing bool from environment variable, using default instead", "environment variable", fVar.EnvVar, "provided value", flagEnvValue, "default", fVar.Default, "err", err)
|
||||
val = fVar.Default
|
||||
}
|
||||
*fVar.Target = val
|
||||
case configVal:
|
||||
// Use value from config
|
||||
*fVar.Target = configVal
|
||||
|
||||
@@ -2820,6 +2820,36 @@ func TestAgent_LogFile_Config(t *testing.T) {
|
||||
assert.Equal(t, 1048576, cfg.LogRotateBytes)
|
||||
}
|
||||
|
||||
// TestAgent_EnvVar_Overrides tests that environment variables are properly
|
||||
// parsed and override defaults.
|
||||
func TestAgent_EnvVar_Overrides(t *testing.T) {
|
||||
configFile := populateTempFile(t, "agent-config.hcl", BasicHclConfig)
|
||||
|
||||
cfg, err := agentConfig.LoadConfigFile(configFile.Name())
|
||||
if err != nil {
|
||||
t.Fatal("Cannot load config to test update/merge", err)
|
||||
}
|
||||
|
||||
assert.Equal(t, false, cfg.Vault.TLSSkipVerify)
|
||||
|
||||
t.Setenv("VAULT_SKIP_VERIFY", "true")
|
||||
// Parse the cli flags (but we pass in an empty slice)
|
||||
cmd := &AgentCommand{BaseCommand: &BaseCommand{}}
|
||||
f := cmd.Flags()
|
||||
err = f.Parse([]string{})
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
cmd.applyConfigOverrides(f, cfg)
|
||||
assert.Equal(t, true, cfg.Vault.TLSSkipVerify)
|
||||
|
||||
t.Setenv("VAULT_SKIP_VERIFY", "false")
|
||||
|
||||
cmd.applyConfigOverrides(f, cfg)
|
||||
assert.Equal(t, false, cfg.Vault.TLSSkipVerify)
|
||||
}
|
||||
|
||||
func TestAgent_Config_NewLogger_Default(t *testing.T) {
|
||||
cmd := &AgentCommand{BaseCommand: &BaseCommand{}}
|
||||
cmd.config = agentConfig.NewConfig()
|
||||
|
||||
@@ -939,7 +939,12 @@ func (c *ProxyCommand) setBoolFlag(f *FlagSets, configVal bool, fVar *BoolVar) {
|
||||
// Don't do anything as the flag is already set from the command line
|
||||
case flagEnvSet:
|
||||
// Use value from env var
|
||||
*fVar.Target = flagEnvValue != ""
|
||||
val, err := parseutil.ParseBool(flagEnvValue)
|
||||
if err != nil {
|
||||
c.logger.Error("error parsing bool from environment variable, using default instead", "environment variable", fVar.EnvVar, "provided value", flagEnvValue, "default", fVar.Default, "err", err)
|
||||
val = fVar.Default
|
||||
}
|
||||
*fVar.Target = val
|
||||
case configVal:
|
||||
// Use value from config
|
||||
*fVar.Target = configVal
|
||||
|
||||
@@ -2184,6 +2184,36 @@ func TestProxy_LogFile_Config(t *testing.T) {
|
||||
assert.Equal(t, 1048576, cfg.LogRotateBytes)
|
||||
}
|
||||
|
||||
// TestProxy_EnvVar_Overrides tests that environment variables are properly
|
||||
// parsed and override defaults.
|
||||
func TestProxy_EnvVar_Overrides(t *testing.T) {
|
||||
configFile := populateTempFile(t, "proxy-config.hcl", BasicHclConfig)
|
||||
|
||||
cfg, err := proxyConfig.LoadConfigFile(configFile.Name())
|
||||
if err != nil {
|
||||
t.Fatal("Cannot load config to test update/merge", err)
|
||||
}
|
||||
|
||||
assert.Equal(t, false, cfg.Vault.TLSSkipVerify)
|
||||
|
||||
t.Setenv("VAULT_SKIP_VERIFY", "true")
|
||||
// Parse the cli flags (but we pass in an empty slice)
|
||||
cmd := &ProxyCommand{BaseCommand: &BaseCommand{}}
|
||||
f := cmd.Flags()
|
||||
err = f.Parse([]string{})
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
cmd.applyConfigOverrides(f, cfg)
|
||||
assert.Equal(t, true, cfg.Vault.TLSSkipVerify)
|
||||
|
||||
t.Setenv("VAULT_SKIP_VERIFY", "false")
|
||||
|
||||
cmd.applyConfigOverrides(f, cfg)
|
||||
assert.Equal(t, false, cfg.Vault.TLSSkipVerify)
|
||||
}
|
||||
|
||||
// TestProxy_Config_NewLogger_Default Tests defaults for log level and
|
||||
// specifically cmd.newLogger()
|
||||
func TestProxy_Config_NewLogger_Default(t *testing.T) {
|
||||
|
||||
Reference in New Issue
Block a user