config

package
v1.6.13 Latest Latest
Warning

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

Go to latest
Published: Nov 17, 2017 License: Apache-2.0 Imports: 13 Imported by: 0

Documentation

Overview

Package config provides decoupling between various configuration sources (etcd, files,...) and the pieces that actually care about them (loadbalancer, proxy). Config takes 1 or more configuration sources and allows for incremental (add/remove) and full replace (set) changes from each of the sources, then creates a union of the configuration and provides a unified view for both service handlers as well as endpoint handlers. There is no attempt to resolve conflicts of any sort. Basic idea is that each configuration source gets a channel from the Config service and pushes updates to it via that channel. Config then keeps track of incremental & replace changes and distributes them to listeners as appropriate.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func NewEndpointsController added in v1.6.0

func NewEndpointsController(lw cache.ListerWatcher, period time.Duration, ch chan<- EndpointsUpdate) cache.Controller

NewEndpointsController creates a controller that is watching endpoints and sending updates into EndpointsUpdate channel.

func NewServiceController added in v1.6.0

func NewServiceController(lw cache.ListerWatcher, period time.Duration, ch chan<- ServiceUpdate) cache.Controller

NewServiceController creates a controller that is watching services and sending updates into ServiceUpdate channel.

func NewSourceAPI

func NewSourceAPI(c cache.Getter, period time.Duration, servicesChan chan<- ServiceUpdate, endpointsChan chan<- EndpointsUpdate)

NewSourceAPI creates config source that watches for changes to the services and endpoints.

Types

type EndpointsConfig

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

EndpointsConfig tracks a set of endpoints configurations. It accepts "set", "add" and "remove" operations of endpoints via channels, and invokes registered handlers on change.

func NewEndpointsConfig

func NewEndpointsConfig() *EndpointsConfig

NewEndpointsConfig creates a new EndpointsConfig. It immediately runs the created EndpointsConfig.

func (*EndpointsConfig) Channel

func (c *EndpointsConfig) Channel(source string) chan EndpointsUpdate

Channel returns a channel to which endpoints updates should be delivered.

func (*EndpointsConfig) Config

func (c *EndpointsConfig) Config() []api.Endpoints

Config returns list of all endpoints from underlying store.

func (*EndpointsConfig) RegisterHandler

func (c *EndpointsConfig) RegisterHandler(handler EndpointsConfigHandler)

RegisterHandler registers a handler which is called on every endpoints change.

type EndpointsConfigHandler

type EndpointsConfigHandler interface {
	// OnEndpointsUpdate gets called when endpoints configuration is changed for a given
	// service on any of the configuration sources. An example is when a new
	// service comes up, or when containers come up or down for an existing service.
	OnEndpointsUpdate(endpoints []api.Endpoints)
}

EndpointsConfigHandler is an abstract interface of objects which receive update notifications for the set of endpoints.

type EndpointsUpdate

type EndpointsUpdate struct {
	Endpoints *api.Endpoints
	Op        Operation
}

EndpointsUpdate describes an operation of endpoints, sent on the channel. You can add, update or remove single endpoints by setting Op == ADD|UPDATE|REMOVE.

type Operation

type Operation int

Operation is a type of operation of services or endpoints.

const (
	ADD Operation = iota
	UPDATE
	REMOVE
	SYNCED
)

These are the available operation types.

type ServiceConfig

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

ServiceConfig tracks a set of service configurations. It accepts "set", "add" and "remove" operations of services via channels, and invokes registered handlers on change.

func NewServiceConfig

func NewServiceConfig() *ServiceConfig

NewServiceConfig creates a new ServiceConfig. It immediately runs the created ServiceConfig.

func (*ServiceConfig) Channel

func (c *ServiceConfig) Channel(source string) chan ServiceUpdate

Channel returns a channel to which services updates should be delivered.

func (*ServiceConfig) Config

func (c *ServiceConfig) Config() []api.Service

Config returns list of all services from underlying store.

func (*ServiceConfig) RegisterHandler

func (c *ServiceConfig) RegisterHandler(handler ServiceConfigHandler)

RegisterHandler registers a handler which is called on every services change.

type ServiceConfigHandler

type ServiceConfigHandler interface {
	// OnServiceUpdate gets called when a configuration has been changed by one of the sources.
	// This is the union of all the configuration sources.
	OnServiceUpdate(services []api.Service)
}

ServiceConfigHandler is an abstract interface of objects which receive update notifications for the set of services.

type ServiceUpdate

type ServiceUpdate struct {
	Service *api.Service
	Op      Operation
}

ServiceUpdate describes an operation of services, sent on the channel. You can add, update or remove single service by setting Op == ADD|UPDATE|REMOVE.

Jump to

Keyboard shortcuts

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