consul

package
v1.16.0 Latest Latest
Warning

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

Go to latest
Published: Nov 19, 2023 License: Apache-2.0 Imports: 21 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (

	// ErrNotFound is returned by ConsulClient.Get.
	ErrNotFound = fmt.Errorf("Not found")
)

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 interface{}) (out interface{}, 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) (interface{}, 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 interface{}) error

Put is mostly here for testing.

func (*Client) WatchKey

func (c *Client) WatchKey(ctx context.Context, key string, f func(interface{}) 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, interface{}) 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

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

Config to create a ConsulClient

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