mirror of
https://github.com/optim-enterprises-bv/vault.git
synced 2025-11-03 03:58:01 +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
|
// Don't do anything as the flag is already set from the command line
|
||||||
case flagEnvSet:
|
case flagEnvSet:
|
||||||
// Use value from env var
|
// 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:
|
case configVal:
|
||||||
// Use value from config
|
// Use value from config
|
||||||
*fVar.Target = configVal
|
*fVar.Target = configVal
|
||||||
|
|||||||
@@ -2820,6 +2820,36 @@ func TestAgent_LogFile_Config(t *testing.T) {
|
|||||||
assert.Equal(t, 1048576, cfg.LogRotateBytes)
|
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) {
|
func TestAgent_Config_NewLogger_Default(t *testing.T) {
|
||||||
cmd := &AgentCommand{BaseCommand: &BaseCommand{}}
|
cmd := &AgentCommand{BaseCommand: &BaseCommand{}}
|
||||||
cmd.config = agentConfig.NewConfig()
|
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
|
// Don't do anything as the flag is already set from the command line
|
||||||
case flagEnvSet:
|
case flagEnvSet:
|
||||||
// Use value from env var
|
// 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:
|
case configVal:
|
||||||
// Use value from config
|
// Use value from config
|
||||||
*fVar.Target = configVal
|
*fVar.Target = configVal
|
||||||
|
|||||||
@@ -2184,6 +2184,36 @@ func TestProxy_LogFile_Config(t *testing.T) {
|
|||||||
assert.Equal(t, 1048576, cfg.LogRotateBytes)
|
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
|
// TestProxy_Config_NewLogger_Default Tests defaults for log level and
|
||||||
// specifically cmd.newLogger()
|
// specifically cmd.newLogger()
|
||||||
func TestProxy_Config_NewLogger_Default(t *testing.T) {
|
func TestProxy_Config_NewLogger_Default(t *testing.T) {
|
||||||
|
|||||||
Reference in New Issue
Block a user