Help us shape the future of Go! Take the 2026 Go Developer Survey

serviceregistration

package
v1.4.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 21, 2020 License: MPL-2.0 Imports: 2 Imported by: 9

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Factory

type Factory func(config map[string]string, logger log.Logger, state State) (ServiceRegistration, error)

Factory is the factory function to create a ServiceRegistration. The config is the key/value pairs set _inside_ the service registration config stanza. The state is the initial state. The redirectAddr is Vault core's RedirectAddr.

type ServiceRegistration

type ServiceRegistration interface {
	// Run provides a shutdownCh, wait WaitGroup, and redirectAddr. The
	// shutdownCh is for monitoring when a shutdown occurs and initiating any
	// actions needed to leave service registration in a final state. When
	// finished, signalling that with wait means that Vault will wait until
	// complete. The redirectAddr is an optional parameter for implementations
	// that might need to communicate with Vault's listener via this address.
	//
	// Run is called just after Factory instantiation so can be relied upon
	// for controlling shutdown behavior.
	// Here is an example of its intended use:
	//	func Run(shutdownCh <-chan struct{}, wait sync.WaitGroup, redirectAddr string) error {
	//
	//		// Since we are going to want Vault to wait to shutdown
	//		// until after we do cleanup...
	//		wait.Add(1)
	//
	//		// Run shutdown code in a goroutine so Run doesn't block.
	//		go func(){
	//			// Ensure that when this ends, no matter how it ends,
	//			// we don't cause Vault to hang on shutdown.
	//			defer wait.Done()
	//
	//			// Now wait until we're actually receiving a shutdown.
	//			<-shutdownCh
	//
	//			// Now do whatever we need to clean up.
	//			if err := someService.SetFinalState(); err != nil {
	//				// Log it at error level.
	//			}
	//		}()
	//		return nil
	//	}
	Run(shutdownCh <-chan struct{}, wait *sync.WaitGroup, redirectAddr string) error

	// NotifyActiveStateChange is used by Core to notify that this Vault
	// instance has changed its status on whether it's active or is
	// a standby.
	// If errors are returned, Vault only logs a warning, so it is
	// the implementation's responsibility to retry updating state
	// in the face of errors.
	NotifyActiveStateChange(isActive bool) error

	// NotifySealedStateChange is used by Core to notify that Vault has changed
	// its Sealed status to sealed or unsealed.
	// If errors are returned, Vault only logs a warning, so it is
	// the implementation's responsibility to retry updating state
	// in the face of errors.
	NotifySealedStateChange(isSealed bool) error

	// NotifyPerformanceStandbyStateChange is used by Core to notify that this
	// Vault instance has changed its performance standby status.
	// If errors are returned, Vault only logs a warning, so it is
	// the implementation's responsibility to retry updating state
	// in the face of errors.
	NotifyPerformanceStandbyStateChange(isStandby bool) error

	// NotifyInitializedStateChange is used by Core to notify that the core is
	// initialized.
	// If errors are returned, Vault only logs a warning, so it is
	// the implementation's responsibility to retry updating state
	// in the face of errors.
	NotifyInitializedStateChange(isInitialized bool) error
}

ServiceRegistration is an interface that advertises the state of Vault to a service discovery network.

type State

type State struct {
	VaultVersion                                            string
	IsInitialized, IsSealed, IsActive, IsPerformanceStandby bool
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL