cluster

package
v0.0.0-...-c9014b7 Latest Latest
Warning

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

Go to latest
Published: May 15, 2017 License: Apache-2.0, CC-BY-SA-4.0 Imports: 34 Imported by: 0

Documentation

Index

Constants

View Source
const SwarmLabelNamespace = "com.docker.swarm"

SwarmLabelNamespace defines the key prefix in all custom labels

Variables

This section is empty.

Functions

func ConsolidateResourceFields

func ConsolidateResourceFields(c *OldContainerConfig)

ConsolidateResourceFields is a temporary fix to handle forward/backward compatibility between Docker <1.6 and >=1.7

func FullStateString

func FullStateString(state *types.ContainerState) string

FullStateString returns human-readable description of the state

func IsConnectionError

func IsConnectionError(err error) bool

IsConnectionError returns true when err is connection problem

func NewHTTPClientTimeout

func NewHTTPClientTimeout(daemonURL string, tlsConfig *tls.Config, timeout time.Duration, setUserTimeout tcpFunc) (*http.Client, *url.URL, error)

NewHTTPClientTimeout is used to create the HTTP Client and URL

func ParseRepositoryTag

func ParseRepositoryTag(repos string) (string, string)

ParseRepositoryTag gets a repos name and returns the right reposName + tag|digest The tag can be confusing because of a port in a repository name.

Ex: localhost.localdomain:5000/samalba/hipache:latest
Digest ex: localhost:5000/foo/bar@sha256:bc8813ea7b3603864987522f02a76101c17ad122e1c46d790efc0fca78ca7bfb

func StateString

func StateString(state *types.ContainerState) string

StateString returns a single string to describe state

Types

type Cluster

type Cluster interface {
	// Create a container
	CreateContainer(config *ContainerConfig, name string, authConfig *types.AuthConfig) (*Container, error)

	// Remove a container
	RemoveContainer(container *Container, force, volumes bool) error

	// Return all images
	Images() Images

	// Return one image matching `IDOrName`
	Image(IDOrName string) *Image

	// Remove images from the cluster
	RemoveImages(name string, force bool) ([]types.ImageDelete, error)

	// Return all containers
	Containers() Containers

	// Start a container
	StartContainer(container *Container, hostConfig *dockerclient.HostConfig) error

	// Return container the matching `IDOrName`
	// TODO: remove this method from the interface as we can use
	// cluster.Containers().Get(IDOrName)
	Container(IDOrName string) *Container

	// Return all networks
	Networks() Networks

	// Create a network
	CreateNetwork(name string, request *types.NetworkCreate) (*types.NetworkCreateResponse, error)

	// Remove a network from the cluster
	RemoveNetwork(network *Network) error

	// Create a volume
	CreateVolume(request *volume.VolumesCreateBody) (*types.Volume, error)

	// Return all volumes
	Volumes() Volumes

	// Remove volumes from the cluster
	RemoveVolumes(name string) (bool, error)

	// Pull images
	// `callback` can be called multiple time
	//  `where` is where it is being pulled
	//  `status` is the current status, like "", "in progress" or "downloaded"
	Pull(name string, authConfig *types.AuthConfig, callback func(where, status string, err error))

	// Import image
	// `callback` can be called multiple time
	// `where` is where it is being imported
	// `status` is the current status, like "", "in progress" or "imported"
	Import(source string, ref string, tag string, imageReader io.Reader, callback func(where, status string, err error))

	// Load images
	// `callback` can be called multiple time
	// `what` is what is being loaded
	// `status` is the current status, like "", "in progress" or "loaded"
	Load(imageReader io.Reader, callback func(what, status string, err error))

	// Return some info about the cluster, like nb of containers / images
	// It is pretty open, so the implementation decides what to return.
	Info() [][2]string

	// Return the total memory of the cluster
	TotalMemory() int64

	// Return the number of CPUs in the cluster
	TotalCpus() int64

	// Register an event handler for cluster-wide events.
	RegisterEventHandler(h EventHandler) error

	// Unregister an event handler.
	UnregisterEventHandler(h EventHandler)

	// FIXME: remove this method
	// Return a random engine
	RANDOMENGINE() (*Engine, error)

	// Rename a container
	RenameContainer(container *Container, newName string) error

	// Build an image
	BuildImage(io.Reader, *types.ImageBuildOptions, io.Writer) error

	// Tag an image
	TagImage(IDOrName string, ref string, force bool) error

	// Scale containers and return the scale up or down containers id
	Scale(scaleConfig common.ScaleAPI) []string
	// Refresh a single cluster engine
	RefreshEngine(hostname string) error

	// Refresh all engines in the cluster
	RefreshEngines() error
}

Cluster is exported

type Container

type Container struct {
	types.Container

	Config *ContainerConfig
	Info   types.ContainerJSON
	Engine *Engine
}

Container is exported

func (*Container) Refresh

func (c *Container) Refresh() (*Container, error)

Refresh container

type ContainerConfig

type ContainerConfig struct {
	container.Config
	HostConfig       container.HostConfig
	NetworkingConfig network.NetworkingConfig
}

ContainerConfig is exported TODO store affinities and constraints in their own fields

func BuildContainerConfig

BuildContainerConfig creates a cluster.ContainerConfig from a Config, HostConfig, and NetworkingConfig

func (*ContainerConfig) AddAffinity

func (c *ContainerConfig) AddAffinity(affinity string) error

AddAffinity to config

func (*ContainerConfig) AddConstraint

func (c *ContainerConfig) AddConstraint(constraint string) error

AddConstraint to config

func (*ContainerConfig) AddWhitelist

func (c *ContainerConfig) AddWhitelist(whitelist string) error

AddWhitelist to config

func (*ContainerConfig) Affinities

func (c *ContainerConfig) Affinities() []string

Affinities returns all the affinities from the ContainerConfig

func (*ContainerConfig) Constraints

func (c *ContainerConfig) Constraints() []string

Constraints returns all the constraints from the ContainerConfig

func (*ContainerConfig) HasReschedulePolicy

func (c *ContainerConfig) HasReschedulePolicy(p string) bool

HasReschedulePolicy returns true if the specified policy is part of the config

func (*ContainerConfig) HaveNodeConstraint

func (c *ContainerConfig) HaveNodeConstraint() bool

HaveNodeConstraint in config

func (*ContainerConfig) RemoveAffinity

func (c *ContainerConfig) RemoveAffinity(affinity string) error

RemoveAffinity from config

func (*ContainerConfig) RemoveWhitelist

func (c *ContainerConfig) RemoveWhitelist(whitelist string) error

RemoveWhitelist from config

func (*ContainerConfig) SetSwarmID

func (c *ContainerConfig) SetSwarmID(id string)

SetSwarmID sets or overrides the Swarm ID in the Config.

func (*ContainerConfig) SwarmID

func (c *ContainerConfig) SwarmID() string

SwarmID extracts the Swarm ID from the Config. May return an empty string if not set.

func (*ContainerConfig) Validate

func (c *ContainerConfig) Validate() error

Validate returns an error if the config isn't valid

func (*ContainerConfig) Whitelists

func (c *ContainerConfig) Whitelists() []string

Whitelists returns all the whitelists from the ContainerConfig

type Containers

type Containers []*Container

Containers represents a list of containers

func (Containers) Get

func (containers Containers) Get(IDOrName string) *Container

Get returns a container using its ID or Name

type DriverOpts

type DriverOpts []string

DriverOpts are key=values options

func (DriverOpts) Bool

func (do DriverOpts) Bool(key, env string) (bool, bool)

Bool returns a boolean from the driver options

func (DriverOpts) Float

func (do DriverOpts) Float(key, env string) (float64, bool)

Float returns a float64 from the driver options

func (DriverOpts) IP

func (do DriverOpts) IP(key, env string) (net.IP, bool)

IP returns an IP address from the driver options

func (DriverOpts) Int

func (do DriverOpts) Int(key, env string) (int64, bool)

Int returns an int64 from the driver options

func (DriverOpts) String

func (do DriverOpts) String(key, env string) (string, bool)

String returns a string from the driver options

func (DriverOpts) Uint

func (do DriverOpts) Uint(key, env string) (uint64, bool)

Uint returns an int64 from the driver options

type Engine

type Engine struct {
	sync.RWMutex

	ID      string
	IP      string
	Addr    string
	Name    string
	Cpus    int64
	Memory  int64
	Labels  map[string]string
	Version string

	DeltaDuration time.Duration // swarm's systime - engine's systime
	// contains filtered or unexported fields
}

Engine represents a docker engine

func NewEngine

func NewEngine(addr string, overcommitRatio float64, opts *EngineOpts) *Engine

NewEngine is exported

func (*Engine) AddContainer

func (e *Engine) AddContainer(container *Container) error

AddContainer injects a container into the internal state.

func (*Engine) AddNetwork

func (e *Engine) AddNetwork(network *Network)

AddNetwork adds a network to the internal engine state.

func (*Engine) BuildImage

func (e *Engine) BuildImage(buildContext io.Reader, buildImage *types.ImageBuildOptions) (io.ReadCloser, error)

BuildImage builds an image

func (*Engine) CheckConnectionErr

func (e *Engine) CheckConnectionErr(err error)

CheckConnectionErr checks error from client response and adjusts engine healthy indicators

func (*Engine) Connect

func (e *Engine) Connect(config *tls.Config) error

Connect will initialize a connection to the Docker daemon running on the host, gather machine specs (memory, cpu, ...) and monitor state changes.

func (*Engine) ConnectWithClient

func (e *Engine) ConnectWithClient(client dockerclient.Client, apiClient swarmclient.SwarmAPIClient) error

ConnectWithClient is exported

func (*Engine) Containers

func (e *Engine) Containers() Containers

Containers returns all the containers in the engine.

func (*Engine) CreateContainer

func (e *Engine) CreateContainer(config *ContainerConfig, name string, pullImage bool, authConfig *types.AuthConfig) (*Container, error)

CreateContainer creates a new container

func (*Engine) CreateNetwork

func (e *Engine) CreateNetwork(name string, request *types.NetworkCreate) (*types.NetworkCreateResponse, error)

CreateNetwork creates a network in the engine

func (*Engine) CreateVolume

func (e *Engine) CreateVolume(request *volume.VolumesCreateBody) (*types.Volume, error)

CreateVolume creates a volume in the engine

func (*Engine) DeleteNetwork

func (e *Engine) DeleteNetwork(network *Network)

DeleteNetwork deletes a network from the internal engine state.

func (*Engine) Disconnect

func (e *Engine) Disconnect()

Disconnect will stop all monitoring of the engine. The Engine object cannot be further used without reconnecting it first.

func (*Engine) ErrMsg

func (e *Engine) ErrMsg() string

ErrMsg returns error message for the engine

func (*Engine) HTTPClientAndScheme

func (e *Engine) HTTPClientAndScheme() (*http.Client, string, error)

HTTPClientAndScheme returns the underlying HTTPClient and the scheme used by the engine

func (*Engine) HandleIDConflict

func (e *Engine) HandleIDConflict(otherAddr string)

HandleIDConflict handles ID duplicate with existing engine

func (*Engine) HealthIndicator

func (e *Engine) HealthIndicator() int64

HealthIndicator returns degree of healthiness between 0 and 100. 0 means node is not healthy (unhealthy, pending), 100 means last connectivity was successful other values indicate recent failures but haven't moved engine out of healthy state

func (*Engine) Image

func (e *Engine) Image(IDOrName string) *Image

Image returns the image with IDOrName in the engine

func (*Engine) Images

func (e *Engine) Images() Images

Images returns all the images in the engine

func (*Engine) Import

func (e *Engine) Import(source string, ref string, tag string, imageReader io.Reader) error

Import image

func (*Engine) IsHealthy

func (e *Engine) IsHealthy() bool

IsHealthy returns true if the engine is healthy

func (*Engine) Load

func (e *Engine) Load(reader io.Reader) error

Load an image on the engine

func (*Engine) NetworkDisconnect

func (e *Engine) NetworkDisconnect(container *Container, network *Network, force bool) error

NetworkDisconnect disconnects a container from a network

func (*Engine) Networks

func (e *Engine) Networks() Networks

Networks returns all the networks in the engine

func (*Engine) Pull

func (e *Engine) Pull(image string, authConfig *types.AuthConfig) error

Pull an image on the engine

func (*Engine) RefreshContainers

func (e *Engine) RefreshContainers(full bool) error

RefreshContainers will refresh the list and status of containers running on the engine. If `full` is true, each container will be inspected. FIXME: unexport this method after mesos scheduler stops using it directly

func (*Engine) RefreshEngine

func (e *Engine) RefreshEngine(hostname string) error

func (*Engine) RefreshImages

func (e *Engine) RefreshImages() error

RefreshImages refreshes the list of images on the engine.

func (*Engine) RefreshNetworks

func (e *Engine) RefreshNetworks() error

RefreshNetworks refreshes the list of networks on the engine.

func (*Engine) RefreshVolumes

func (e *Engine) RefreshVolumes() error

RefreshVolumes refreshes the list of volumes on the engine.

func (*Engine) RegisterEventHandler

func (e *Engine) RegisterEventHandler(h EventHandler) error

RegisterEventHandler registers an event handler.

func (*Engine) RemoveContainer

func (e *Engine) RemoveContainer(container *Container, force, volumes bool) error

RemoveContainer removes a container from the engine.

func (*Engine) RemoveImage

func (e *Engine) RemoveImage(name string, force bool) ([]types.ImageDelete, error)

RemoveImage deletes an image from the engine.

func (*Engine) RemoveNetwork

func (e *Engine) RemoveNetwork(network *Network) error

RemoveNetwork removes a network from the engine.

func (*Engine) RemoveVolume

func (e *Engine) RemoveVolume(name string) error

RemoveVolume deletes a volume from the engine.

func (*Engine) RenameContainer

func (e *Engine) RenameContainer(container *Container, newName string) error

RenameContainer renames a container

func (*Engine) StartContainer

func (e *Engine) StartContainer(id string, hostConfig *dockerclient.HostConfig) error

StartContainer starts a container

func (*Engine) StartMonitorEvents

func (e *Engine) StartMonitorEvents()

StartMonitorEvents monitors events from the engine

func (*Engine) Status

func (e *Engine) Status() string

Status returns the health status of the Engine: Healthy or Unhealthy

func (*Engine) String

func (e *Engine) String() string

func (*Engine) TagImage

func (e *Engine) TagImage(IDOrName string, ref string, force bool) error

TagImage tags an image

func (*Engine) TimeToValidate

func (e *Engine) TimeToValidate() bool

TimeToValidate returns true if a pending node is up for validation

func (*Engine) TotalCpus

func (e *Engine) TotalCpus() int64

TotalCpus returns the total cpus + overcommit

func (*Engine) TotalMemory

func (e *Engine) TotalMemory() int64

TotalMemory returns the total memory + overcommit

func (*Engine) UpdatedAt

func (e *Engine) UpdatedAt() time.Time

UpdatedAt returns the previous updatedAt time

func (*Engine) UsedCpus

func (e *Engine) UsedCpus() int64

UsedCpus returns the sum of CPUs reserved by containers.

func (*Engine) UsedMemory

func (e *Engine) UsedMemory() int64

UsedMemory returns the sum of memory reserved by containers.

func (*Engine) ValidationComplete

func (e *Engine) ValidationComplete()

ValidationComplete transitions engine state from statePending to stateHealthy

func (*Engine) Volumes

func (e *Engine) Volumes() Volumes

Volumes returns all the volumes in the engine

type EngineOpts

type EngineOpts struct {
	RefreshMinInterval time.Duration
	RefreshMaxInterval time.Duration
	FailureRetry       int
}

EngineOpts represents the options for an engine

type EngineSorter

type EngineSorter []*Engine

EngineSorter implements the Sort interface to sort Cluster.Engine. It is not guaranteed to be a stable sort.

func (EngineSorter) Len

func (s EngineSorter) Len() int

Len returns the number of engines to be sorted.

func (EngineSorter) Less

func (s EngineSorter) Less(i, j int) bool

Less reports whether the engine with index i should sort before the engine with index j. Engines are sorted chronologically by name.

func (EngineSorter) Swap

func (s EngineSorter) Swap(i, j int)

Swap exchanges the engine elements with indices i and j.

type Event

type Event struct {
	events.Message
	Engine *Engine `json:"-"`
}

Event is exported

type EventHandler

type EventHandler interface {
	Handle(*Event) error
}

EventHandler is exported

type EventHandlers

type EventHandlers struct {
	sync.RWMutex
	// contains filtered or unexported fields
}

EventHandlers is a map of EventHandler

func NewEventHandlers

func NewEventHandlers() *EventHandlers

NewEventHandlers returns an EventHandlers

func (*EventHandlers) Handle

func (eh *EventHandlers) Handle(e *Event)

Handle callbacks for the events

func (*EventHandlers) RegisterEventHandler

func (eh *EventHandlers) RegisterEventHandler(h EventHandler) error

RegisterEventHandler registers an event handler.

func (*EventHandlers) UnregisterEventHandler

func (eh *EventHandlers) UnregisterEventHandler(h EventHandler)

UnregisterEventHandler unregisters a previously registered event handler.

type EventsMonitor

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

EventsMonitor monitors events

func NewEventsMonitor

func NewEventsMonitor(cli swarmclient.SwarmAPIClient, handler func(msg events.Message) error) *EventsMonitor

NewEventsMonitor returns an EventsMonitor

func (*EventsMonitor) Start

func (em *EventsMonitor) Start(ec chan error)

Start starts the EventsMonitor

func (*EventsMonitor) Stop

func (em *EventsMonitor) Stop()

Stop stops the EventsMonitor

type Image

type Image struct {
	types.ImageSummary

	Engine *Engine
}

Image is exported

func (*Image) Match

func (image *Image) Match(IDOrName string, matchTag bool) bool

Match is exported

type ImageFilterOptions

type ImageFilterOptions struct {
	types.ImageListOptions
}

ImageFilterOptions is the set of filtering options supported by Images.Filter()

type Images

type Images []*Image

Images is a collection of Image objects that can be filtered

func (Images) Filter

func (images Images) Filter(opts ImageFilterOptions) Images

Filter returns a new sequence of Images filtered to only the images that matched the filtering parameters

type Network

type Network struct {
	types.NetworkResource

	Engine *Engine
}

Network is exported

func (*Network) RemoveDuplicateEndpoints

func (network *Network) RemoveDuplicateEndpoints() *Network

RemoveDuplicateEndpoints returns a copy of input network where duplicate container endpoints in the network are removed. See https://github.com/docker/swarm/issues/1969 This function should be disabled when the bug is fixed in Docker network

type Networks

type Networks []*Network

Networks represents an array of networks

func (Networks) Filter

func (networks Networks) Filter(filter filters.Args) Networks

Filter returns networks filtered by names, IDs, labels, etc.

func (Networks) Get

func (networks Networks) Get(IDOrName string) *Network

Get returns a network using its ID or Name

func (Networks) Uniq

func (networks Networks) Uniq() Networks

Uniq returns all uniq networks

type OldContainerConfig

type OldContainerConfig struct {
	ContainerConfig
	Memory     int64
	MemorySwap int64
	CPUShares  int64  `json:"CpuShares"`
	CPUSet     string `json:"Cpuset"`
}

OldContainerConfig contains additional fields for backward compatibility This should be removed after we stop supporting API versions <= 1.8

type Volume

type Volume struct {
	types.Volume

	Engine *Engine
}

Volume is exported

type Volumes

type Volumes []*Volume

Volumes represents an array of volumes

func (Volumes) Get

func (volumes Volumes) Get(name string) *Volume

Get returns a volume using its ID or Name

type Watchdog

type Watchdog struct {
	sync.Mutex
	// contains filtered or unexported fields
}

Watchdog listens to cluster events and handles container rescheduling

func NewWatchdog

func NewWatchdog(cluster Cluster) *Watchdog

NewWatchdog creates a new watchdog

func (*Watchdog) Handle

func (w *Watchdog) Handle(e *Event) error

Handle handles cluster callbacks

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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