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

consul

package
v1.21.1 Latest Latest
Warning

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

Go to latest
Published: Jun 5, 2026 License: Apache-2.0 Imports: 22 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Client

type Client struct {
	// contains filtered or unexported fields
}

Client is a kv.Client for Consul.

func NewClient

func NewClient(cfg Config, codec codec.Codec, logger log.Logger, registerer prometheus.Registerer) (*Client, error)

NewClient returns a new Client.

func NewInMemoryClient

func NewInMemoryClient(codec codec.Codec, logger log.Logger, registerer prometheus.Registerer) (*Client, io.Closer)

NewInMemoryClient makes a new mock consul client.

func NewInMemoryClientWithConfig added in v0.4.0

func NewInMemoryClientWithConfig(codec codec.Codec, cfg Config, logger log.Logger, registerer prometheus.Registerer) (*Client, io.Closer)

NewInMemoryClientWithConfig makes a new mock consul client with supplied Config.

func (*Client) CAS

func (c *Client) CAS(ctx context.Context, key string, f func(in any) (out any, retry bool, err error)) error

CAS atomically modifies a value in a callback. If value doesn't exist you'll get nil as an argument to your callback.

func (*Client) Delete added in v1.1.0

func (c *Client) Delete(ctx context.Context, key string) error

Delete implements kv.Delete.

func (*Client) Get

func (c *Client) Get(ctx context.Context, key string) (any, error)

Get implements kv.Get.

func (*Client) LastUpdateTime added in v1.15.0

func (c *Client) LastUpdateTime(_ string) time.Time

func (*Client) List added in v1.1.0

func (c *Client) List(ctx context.Context, prefix string) ([]string, error)

List implements kv.List.

func (*Client) Put added in v1.0.1

func (c *Client) Put(ctx context.Context, key string, value any) error

Put is mostly here for testing.

func (*Client) WatchKey

func (c *Client) WatchKey(ctx context.Context, key string, f func(any) bool)

WatchKey will watch a given key in consul for changes. When the value under said key changes, the f callback is called with the deserialised value. To construct the deserialised value, a factory function should be supplied which generates an empty struct for WatchKey to deserialise into. This function blocks until the context is cancelled or f returns false.

func (*Client) WatchPrefix

func (c *Client) WatchPrefix(ctx context.Context, prefix string, f func(string, any) bool)

WatchPrefix will watch a given prefix in Consul for new keys and changes to existing keys under that prefix. When the value under said key changes, the f callback is called with the deserialised value. Values in Consul are assumed to be JSON. This function blocks until the context is cancelled.

type Config

type Config struct {
	Host              string                 `yaml:"host"`
	ACLToken          flagext.Secret         `yaml:"acl_token"`
	HTTPClientTimeout time.Duration          `yaml:"http_client_timeout"`
	ConsistentReads   bool                   `yaml:"consistent_reads"`
	WatchKeyRateLimit float64                `yaml:"watch_rate_limit"` // Zero disables rate limit
	WatchKeyBurstSize int                    `yaml:"watch_burst_size"` // Burst when doing rate-limit, defaults to 1
	EnableTLS         bool                   `yaml:"tls_enabled"`
	TLS               cortextls.ClientConfig `yaml:",inline"`

	// Used in tests only.
	MaxCasRetries int           `yaml:"-"`
	CasRetryDelay time.Duration `yaml:"-"`
}

Config to create a ConsulClient

func (*Config) GetTLS added in v1.19.0

func (cfg *Config) GetTLS() *consul.TLSConfig

func (*Config) RegisterFlags

func (cfg *Config) RegisterFlags(f *flag.FlagSet, prefix string)

RegisterFlags adds the flags required to config this to the given FlagSet If prefix is not an empty string it should end with a period.

Jump to

Keyboard shortcuts

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