cluster

package
v0.0.0-...-d559397 Latest Latest
Warning

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

Go to latest
Published: May 24, 2020 License: Apache-2.0 Imports: 42 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var ErrNoSwarm = fmt.Errorf("This node is not part of a swarm")

ErrNoSwarm is returned on leaving a cluster that was never initialized

View Source
var ErrPendingSwarmExists = fmt.Errorf("This node is processing an existing join request that has not succeeded yet. Use \"docker swarm leave\" to cancel the current request.")

ErrPendingSwarmExists is returned on initialize or join request for a cluster that is already processing a similar request but has not succeeded yet.

View Source
var ErrSwarmCertificatesExpired = errors.New("Swarm certificates have expired. To replace them, leave the swarm and join again.")

ErrSwarmCertificatesExpired is returned if docker was not started for the whole validity period and they had no chance to renew automatically.

View Source
var ErrSwarmExists = fmt.Errorf("This node is already part of a swarm. Use \"docker swarm leave\" to leave this swarm and join another one.")

ErrSwarmExists is returned on initialize or join request for a cluster that has already been activated

View Source
var ErrSwarmJoinTimeoutReached = fmt.Errorf("Timeout was reached before node was joined. The attempt to join the swarm will continue in the background. Use the \"docker info\" command to see the current swarm status of your node.")

ErrSwarmJoinTimeoutReached is returned when cluster join could not complete before timeout was reached.

View Source
var ErrSwarmLocked = fmt.Errorf("Swarm is encrypted and needs to be unlocked before it can be used. Please use \"docker swarm unlock\" to unlock it.")

ErrSwarmLocked is returned if the swarm is encrypted and needs a key to unlock it.

Functions

This section is empty.

Types

type Cluster

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

Cluster provides capabilities to participate in a cluster as a worker or a manager.

func New

func New(config Config) (*Cluster, error)

New creates a new Cluster instance using provided config.

func (*Cluster) AttachNetwork

func (c *Cluster) AttachNetwork(target string, containerID string, addresses []string) (*network.NetworkingConfig, error)

AttachNetwork generates an attachment request towards the manager.

func (*Cluster) Cleanup

func (c *Cluster) Cleanup()

Cleanup stops active swarm node. This is run before daemon shutdown.

func (*Cluster) CreateNetwork

func (c *Cluster) CreateNetwork(s apitypes.NetworkCreateRequest) (string, error)

CreateNetwork creates a new cluster managed network.

func (*Cluster) CreateSecret

func (c *Cluster) CreateSecret(s types.SecretSpec) (string, error)

CreateSecret creates a new secret in a managed swarm cluster.

func (*Cluster) CreateService

func (c *Cluster) CreateService(s types.ServiceSpec, encodedAuth string) (*apitypes.ServiceCreateResponse, error)

CreateService creates a new service in a managed swarm cluster.

func (*Cluster) DetachNetwork

func (c *Cluster) DetachNetwork(target string, containerID string) error

DetachNetwork unblocks the waiters waiting on WaitForDetachment so that a request to detach can be generated towards the manager.

func (*Cluster) GetAdvertiseAddress

func (c *Cluster) GetAdvertiseAddress() string

GetAdvertiseAddress returns the remotely reachable address of this node.

func (*Cluster) GetListenAddress

func (c *Cluster) GetListenAddress() string

GetListenAddress returns the listen address.

func (*Cluster) GetLocalAddress

func (c *Cluster) GetLocalAddress() string

GetLocalAddress returns the local address.

func (*Cluster) GetNetwork

func (c *Cluster) GetNetwork(input string) (apitypes.NetworkResource, error)

GetNetwork returns a cluster network by an ID.

func (*Cluster) GetNetworks

func (c *Cluster) GetNetworks() ([]apitypes.NetworkResource, error)

GetNetworks returns all current cluster managed networks.

func (*Cluster) GetNetworksByName

func (c *Cluster) GetNetworksByName(name string) ([]apitypes.NetworkResource, error)

GetNetworksByName returns cluster managed networks by name. It is ok to have multiple networks here. #18864

func (*Cluster) GetNode

func (c *Cluster) GetNode(input string) (types.Node, error)

GetNode returns a node based on an ID.

func (*Cluster) GetNodes

func (c *Cluster) GetNodes(options apitypes.NodeListOptions) ([]types.Node, error)

GetNodes returns a list of all nodes known to a cluster.

func (*Cluster) GetRemoteAddress

func (c *Cluster) GetRemoteAddress() string

GetRemoteAddress returns a known advertise address of a remote manager if available. todo: change to array/connect with info

func (*Cluster) GetSecret

func (c *Cluster) GetSecret(id string) (types.Secret, error)

GetSecret returns a secret from a managed swarm cluster

func (*Cluster) GetSecrets

func (c *Cluster) GetSecrets(options apitypes.SecretListOptions) ([]types.Secret, error)

GetSecrets returns all secrets of a managed swarm cluster.

func (*Cluster) GetService

func (c *Cluster) GetService(input string) (types.Service, error)

GetService returns a service based on an ID or name.

func (*Cluster) GetServices

func (c *Cluster) GetServices(options apitypes.ServiceListOptions) ([]types.Service, error)

GetServices returns all services of a managed swarm cluster.

func (*Cluster) GetTask

func (c *Cluster) GetTask(input string) (types.Task, error)

GetTask returns a task by an ID.

func (*Cluster) GetTasks

func (c *Cluster) GetTasks(options apitypes.TaskListOptions) ([]types.Task, error)

GetTasks returns a list of tasks matching the filter options.

func (*Cluster) GetUnlockKey

func (c *Cluster) GetUnlockKey() (string, error)

GetUnlockKey returns the unlock key for the swarm.

func (*Cluster) Info

func (c *Cluster) Info() types.Info

Info returns information about the current cluster state.

func (*Cluster) Init

func (c *Cluster) Init(req types.InitRequest) (string, error)

Init initializes new cluster from user provided request.

func (*Cluster) Inspect

func (c *Cluster) Inspect() (types.Swarm, error)

Inspect retrieves the configuration properties of a managed swarm cluster.

func (*Cluster) IsAgent

func (c *Cluster) IsAgent() bool

IsAgent returns true if Cluster is participating as a worker/agent.

func (*Cluster) IsManager

func (c *Cluster) IsManager() bool

IsManager returns true if Cluster is participating as a manager.

func (*Cluster) Join

func (c *Cluster) Join(req types.JoinRequest) error

Join makes current Cluster part of an existing swarm cluster.

func (*Cluster) Leave

func (c *Cluster) Leave(force bool) error

Leave shuts down Cluster and removes current state.

func (*Cluster) ListenClusterEvents

func (c *Cluster) ListenClusterEvents() <-chan struct{}

ListenClusterEvents returns a channel that receives messages on cluster participation changes. todo: make cancelable and accessible to multiple callers

func (*Cluster) RemoveNetwork

func (c *Cluster) RemoveNetwork(input string) error

RemoveNetwork removes a cluster network.

func (*Cluster) RemoveNode

func (c *Cluster) RemoveNode(input string, force bool) error

RemoveNode removes a node from a cluster

func (*Cluster) RemoveSecret

func (c *Cluster) RemoveSecret(id string) error

RemoveSecret removes a secret from a managed swarm cluster.

func (*Cluster) RemoveService

func (c *Cluster) RemoveService(input string) error

RemoveService removes a service from a managed swarm cluster.

func (*Cluster) ServiceLogs

func (c *Cluster) ServiceLogs(ctx context.Context, input string, config *backend.ContainerLogsConfig, started chan struct{}) error

ServiceLogs collects service logs and writes them back to `config.OutStream`

func (*Cluster) UnlockSwarm

func (c *Cluster) UnlockSwarm(req types.UnlockRequest) error

UnlockSwarm provides a key to decrypt data that is encrypted at rest.

func (*Cluster) Update

func (c *Cluster) Update(version uint64, spec types.Spec, flags types.UpdateFlags) error

Update updates configuration of a managed swarm cluster.

func (*Cluster) UpdateAttachment

func (c *Cluster) UpdateAttachment(target, containerID string, config *network.NetworkingConfig) error

UpdateAttachment signals the attachment config to the attachment waiter who is trying to start or attach the container to the network.

func (*Cluster) UpdateNode

func (c *Cluster) UpdateNode(input string, version uint64, spec types.NodeSpec) error

UpdateNode updates existing nodes properties.

func (*Cluster) UpdateSecret

func (c *Cluster) UpdateSecret(id string, version uint64, spec types.SecretSpec) error

UpdateSecret updates a secret in a managed swarm cluster. Note: this is not exposed to the CLI but is available from the API only

func (*Cluster) UpdateService

func (c *Cluster) UpdateService(serviceIDOrName string, version uint64, spec types.ServiceSpec, encodedAuth string, registryAuthFrom string) (*apitypes.ServiceUpdateResponse, error)

UpdateService updates existing service to match new properties.

func (*Cluster) WaitForDetachment

func (c *Cluster) WaitForDetachment(ctx context.Context, networkName, networkID, taskID, containerID string) error

WaitForDetachment waits for the container to stop or detach from the network.

type Config

type Config struct {
	Root                   string
	Name                   string
	Backend                executorpkg.Backend
	NetworkSubnetsProvider NetworkSubnetsProvider

	// DefaultAdvertiseAddr is the default host/IP or network interface to use
	// if no AdvertiseAddr value is specified.
	DefaultAdvertiseAddr string

	// path to store runtime state, such as the swarm control socket
	RuntimeRoot string
}

Config provides values for Cluster.

type NetworkSubnetsProvider

type NetworkSubnetsProvider interface {
	V4Subnets() []net.IPNet
	V6Subnets() []net.IPNet
}

NetworkSubnetsProvider exposes functions for retrieving the subnets of networks managed by Docker, so they can be filtered.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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