config

package
v0.15.1-0...-d7b79a7 Latest Latest
Warning

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

Go to latest
Published: Mar 16, 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

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

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