e42bc0ffc0
* move ServiceDiscovery into methods * add ServiceDiscoveryFactory * add serviceDiscovery field to vault.Core * refactor ConsulServiceDiscovery into separate struct * cleanup * revert accidental change to go.mod * cleanup * get rid of un-needed struct tags in vault.CoreConfig * add service_discovery parser * add ServiceDiscovery to config * cleanup * cleanup * add test for ConfigServiceDiscovery to Core * unit testing for config service_discovery stanza * cleanup * get rid of un-needed redirect_addr stuff in service_discovery stanza * improve test suite * cleanup * clean up test a bit * create docs for service_discovery * check if service_discovery is configured, but storage does not support HA * tinker with test * tinker with test * tweak docs * move ServiceDiscovery into its own package * tweak a variable name * fix comment * rename service_discovery to service_registration * tweak service_registration config * Revert "tweak service_registration config" This reverts commit 5509920a8ab4c5a216468f262fc07c98121dce35. * simplify naming * refactor into ./serviceregistration/consul
41 lines
1.4 KiB
Go
41 lines
1.4 KiB
Go
package serviceregistration
|
|
|
|
import (
|
|
"sync"
|
|
|
|
log "github.com/hashicorp/go-hclog"
|
|
)
|
|
|
|
// Factory is the factory function to create a ServiceRegistration.
|
|
type Factory func(config map[string]string, logger log.Logger) (ServiceRegistration, error)
|
|
|
|
// ServiceRegistration is an interface that advertises the state of Vault to a
|
|
// service discovery network.
|
|
type ServiceRegistration interface {
|
|
// NotifyActiveStateChange is used by Core to notify that this Vault
|
|
// instance has changed its status to active or standby.
|
|
NotifyActiveStateChange() error
|
|
|
|
// NotifySealedStateChange is used by Core to notify that Vault has changed
|
|
// its Sealed status to sealed or unsealed.
|
|
NotifySealedStateChange() error
|
|
|
|
// NotifyPerformanceStandbyStateChange is used by Core to notify that this
|
|
// Vault instance has changed it status to performance standby or standby.
|
|
NotifyPerformanceStandbyStateChange() error
|
|
|
|
// Run executes any background service discovery tasks until the
|
|
// shutdown channel is closed.
|
|
RunServiceRegistration(
|
|
waitGroup *sync.WaitGroup, shutdownCh ShutdownChannel, redirectAddr string,
|
|
activeFunc ActiveFunction, sealedFunc SealedFunction, perfStandbyFunc PerformanceStandbyFunction) error
|
|
}
|
|
|
|
// Callback signatures for RunServiceRegistration
|
|
type ActiveFunction func() bool
|
|
type SealedFunction func() bool
|
|
type PerformanceStandbyFunction func() bool
|
|
|
|
// ShutdownChannel is the shutdown signal for RunServiceRegistration
|
|
type ShutdownChannel chan struct{}
|