mirror of
https://github.com/kemko/nomad.git
synced 2026-01-06 10:25:42 +03:00
move logic for testing equality for vault config
This commit is contained in:
@@ -740,28 +740,16 @@ func (c *Command) handleReload() {
|
||||
}
|
||||
}
|
||||
|
||||
var shouldReloadVault bool
|
||||
switch {
|
||||
case c.agent.config.Vault == nil && newConf.Vault != nil:
|
||||
fallthrough
|
||||
case c.agent.config.Vault != nil && newConf.Vault == nil:
|
||||
fallthrough
|
||||
case c.agent.config.Vault != nil && !c.agent.config.Vault.IsEqual(newConf.Vault):
|
||||
shouldReloadVault = true
|
||||
}
|
||||
|
||||
if shouldReloadRPC || shouldReloadVault {
|
||||
if s := c.agent.Server(); s != nil {
|
||||
sconf, err := convertServerConfig(newConf, c.logOutput)
|
||||
c.agent.logger.Printf("[DEBUG] agent: starting reload of server config")
|
||||
if err != nil {
|
||||
c.agent.logger.Printf("[ERR] agent: failed to convert server config: %v", err)
|
||||
if s := c.agent.Server(); s != nil {
|
||||
sconf, err := convertServerConfig(newConf, c.logOutput)
|
||||
c.agent.logger.Printf("[DEBUG] agent: starting reload of server config")
|
||||
if err != nil {
|
||||
c.agent.logger.Printf("[ERR] agent: failed to convert server config: %v", err)
|
||||
return
|
||||
} else {
|
||||
if err := s.Reload(sconf); err != nil {
|
||||
c.agent.logger.Printf("[ERR] agent: reloading server config failed: %v", err)
|
||||
return
|
||||
} else {
|
||||
if err := s.Reload(sconf); err != nil {
|
||||
c.agent.logger.Printf("[ERR] agent: reloading server config failed: %v", err)
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -316,6 +316,11 @@ func (v *vaultClient) SetConfig(config *config.VaultConfig) error {
|
||||
v.l.Lock()
|
||||
defer v.l.Unlock()
|
||||
|
||||
// If reloading the same config, no-op
|
||||
if v.config.IsEqual(config) {
|
||||
return nil
|
||||
}
|
||||
|
||||
// Kill any background routines
|
||||
if v.running {
|
||||
// Stop accepting any new request
|
||||
|
||||
@@ -437,6 +437,31 @@ func TestVaultClient_SetConfig(t *testing.T) {
|
||||
if client.tokenData == nil || len(client.tokenData.Policies) != 3 {
|
||||
t.Fatalf("unexpected token: %v", client.tokenData)
|
||||
}
|
||||
|
||||
// test that when SetConfig is called with the same configuration, it is a
|
||||
// no-op
|
||||
failCh := make(chan struct{}, 1)
|
||||
go func() {
|
||||
tomb := client.tomb
|
||||
select {
|
||||
case <-tomb.Dying():
|
||||
close(failCh)
|
||||
case <-time.After(1 * time.Second):
|
||||
return
|
||||
}
|
||||
}()
|
||||
|
||||
// Update the config
|
||||
if err := client.SetConfig(v2.Config); err != nil {
|
||||
t.Fatalf("SetConfig failed: %v", err)
|
||||
}
|
||||
|
||||
select {
|
||||
case <-failCh:
|
||||
t.Fatalf("Tomb shouldn't have exited")
|
||||
case <-time.After(1 * time.Second):
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
// Test that we can disable vault
|
||||
|
||||
Reference in New Issue
Block a user