swarm

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: 29 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var DefaultTaskRetry = 3

DefaultTaskRetry is

Functions

func IsResourceSeize

func IsResourceSeize(item *common.ScaleItem) bool

IsResourceSeize is, if has constaint and inaffinity and is scale up, we decide it is seize resource

func NewCluster

func NewCluster(scheduler *scheduler.Scheduler, TLSConfig *tls.Config, discovery discovery.Backend, options cluster.DriverOpts, engineOptions *cluster.EngineOpts) (cluster.Cluster, error)

NewCluster is exported

func StopContainer

func StopContainer(container *cluster.Container, timeout time.Duration) error

StopContainer is

Types

type Cluster

type Cluster struct {
	sync.RWMutex

	TLSConfig *tls.Config
	// contains filtered or unexported fields
}

Cluster is exported

func (*Cluster) BuildImage

func (c *Cluster) BuildImage(buildContext io.Reader, buildImage *types.ImageBuildOptions, out io.Writer) error

BuildImage builds an image

func (*Cluster) Container

func (c *Cluster) Container(IDOrName string) *cluster.Container

Container returns the container with IDOrName in the cluster

func (*Cluster) Containers

func (c *Cluster) Containers() cluster.Containers

Containers returns all the containers in the cluster.

func (*Cluster) CreateContainer

func (c *Cluster) CreateContainer(config *cluster.ContainerConfig, name string, authConfig *types.AuthConfig) (*cluster.Container, error)

CreateContainer aka schedule a brand new container into the cluster.

func (*Cluster) CreateNetwork

func (c *Cluster) CreateNetwork(name string, request *types.NetworkCreate) (response *types.NetworkCreateResponse, err error)

CreateNetwork creates a network in the cluster

func (*Cluster) CreateVolume

func (c *Cluster) CreateVolume(request *volume.VolumesCreateBody) (*types.Volume, error)

CreateVolume creates a volume in the cluster

func (*Cluster) Handle

func (c *Cluster) Handle(e *cluster.Event) error

Handle callbacks for the events

func (*Cluster) Image

func (c *Cluster) Image(IDOrName string) *cluster.Image

Image returns an image with IDOrName in the cluster

func (*Cluster) Images

func (c *Cluster) Images() cluster.Images

Images returns all the images in the cluster.

func (*Cluster) Import

func (c *Cluster) Import(source string, ref string, tag string, imageReader io.Reader, callback func(what, status string, err error))

Import image

func (*Cluster) Info

func (c *Cluster) Info() [][2]string

Info returns some info about the cluster, like nb or containers / images

func (*Cluster) Load

func (c *Cluster) Load(imageReader io.Reader, callback func(where, status string, err error))

Load image

func (*Cluster) Networks

func (c *Cluster) Networks() cluster.Networks

Networks returns all the networks in the cluster.

func (*Cluster) Pull

func (c *Cluster) Pull(name string, authConfig *types.AuthConfig, callback func(where, status string, err error))

Pull is exported

func (*Cluster) RANDOMENGINE

func (c *Cluster) RANDOMENGINE() (*cluster.Engine, error)

RANDOMENGINE returns a random engine.

func (*Cluster) RefreshEngine

func (c *Cluster) RefreshEngine(hostname string) error

RefreshEngine refreshes all containers in a specific engine

func (*Cluster) RefreshEngines

func (c *Cluster) RefreshEngines() error

RefreshEngines refreshes all containers in the cluster

func (*Cluster) RegisterEventHandler

func (c *Cluster) RegisterEventHandler(h cluster.EventHandler) error

RegisterEventHandler registers an event handler.

func (*Cluster) RemoveContainer

func (c *Cluster) RemoveContainer(container *cluster.Container, force, volumes bool) error

RemoveContainer aka Remove a container from the cluster.

func (*Cluster) RemoveImages

func (c *Cluster) RemoveImages(name string, force bool) ([]types.ImageDelete, error)

RemoveImages removes all the images that match `name` from the cluster

func (*Cluster) RemoveNetwork

func (c *Cluster) RemoveNetwork(network *cluster.Network) error

RemoveNetwork removes a network from the cluster

func (*Cluster) RemoveVolumes

func (c *Cluster) RemoveVolumes(name string) (bool, error)

RemoveVolumes removes all the volumes that match `name` from the cluster

func (*Cluster) RenameContainer

func (c *Cluster) RenameContainer(container *cluster.Container, newName string) error

RenameContainer renames a container

func (*Cluster) Scale

func (c *Cluster) Scale(scaleConfig common.ScaleAPI) []string

Scale containers

func (*Cluster) StartContainer

func (c *Cluster) StartContainer(container *cluster.Container, hostConfig *dockerclient.HostConfig) error

StartContainer starts a container

func (*Cluster) TagImage

func (c *Cluster) TagImage(IDOrName string, ref string, force bool) error

TagImage tags an image

func (*Cluster) TotalCpus

func (c *Cluster) TotalCpus() int64

TotalCpus returns the total CPUs of the cluster

func (*Cluster) TotalMemory

func (c *Cluster) TotalMemory() int64

TotalMemory returns the total memory of the cluster

func (*Cluster) UnregisterEventHandler

func (c *Cluster) UnregisterEventHandler(h cluster.EventHandler)

UnregisterEventHandler unregisters a previously registered event handler.

func (*Cluster) Volumes

func (c *Cluster) Volumes() cluster.Volumes

Volumes returns all the volumes in the cluster.

type ContainerFilter

type ContainerFilter interface {
	// now filter type has container filter and service filter
	Filter() cluster.Containers
	AddTasks(*Tasks)
}

ContainerFilter is

func NewFilter

func NewFilter(c *Cluster, item *common.ScaleItem) (filter ContainerFilter)

NewFilter is

func NewSeizeResourceFilter

func NewSeizeResourceFilter(c *Cluster, item *common.ScaleItem) ContainerFilter

NewSeizeResourceFilter is

type ContainerFilterBase

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

ContainerFilterBase is

func (*ContainerFilterBase) AddTasks

func (f *ContainerFilterBase) AddTasks(tasks *Tasks)

AddTasks is

func (*ContainerFilterBase) Filter

Filter is

func (*ContainerFilterBase) GetContainers

func (f *ContainerFilterBase) GetContainers() cluster.Containers

GetContainers is

func (*ContainerFilterBase) GetItem

func (f *ContainerFilterBase) GetItem() *common.ScaleItem

GetItem is

func (*ContainerFilterBase) GetTaskType

func (f *ContainerFilterBase) GetTaskType() int

GetTaskType is

func (*ContainerFilterBase) SetContainers

func (f *ContainerFilterBase) SetContainers(containers cluster.Containers)

SetContainers is

func (*ContainerFilterBase) SetItem

func (f *ContainerFilterBase) SetItem(item *common.ScaleItem)

SetItem is

type CreateContainerFilter

type CreateContainerFilter struct {
	*ContainerFilterBase
}

CreateContainerFilter is

func (*CreateContainerFilter) AddTasks

func (f *CreateContainerFilter) AddTasks(tasks *Tasks)

AddTasks is

func (*CreateContainerFilter) Filter

Filter is

type CreateTaskFilter

type CreateTaskFilter struct {
}

CreateTaskFilter is

func (*CreateTaskFilter) DoContainers

func (cf *CreateTaskFilter) DoContainers(node *SeizeNode, f *SeizeResourceFilter)

DoContainers is

func (*CreateTaskFilter) FilterContainer

func (cf *CreateTaskFilter) FilterContainer(filters []common.Filter, container *cluster.Container) bool

FilterContainer is

type DestroyContainerFilter

type DestroyContainerFilter struct {
	*ContainerFilterBase
}

DestroyContainerFilter is

type DestroyTaskFilter

type DestroyTaskFilter struct {
}

DestroyTaskFilter is

func (*DestroyTaskFilter) DoContainers

func (df *DestroyTaskFilter) DoContainers(node *SeizeNode, f *SeizeResourceFilter)

DoContainers is

func (*DestroyTaskFilter) FilterContainer

func (df *DestroyTaskFilter) FilterContainer(filters []common.Filter, container *cluster.Container) bool

FilterContainer is

type LocalProcessor

type LocalProcessor struct {
	Cluster *Cluster
}

LocalProcessor is a synchronization task processor

func (*LocalProcessor) Do

func (t *LocalProcessor) Do(task *Task) (c string, err error)

Do task

type SeizeContainer

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

SeizeContainer is

type SeizeNode

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

SeizeNode is

type SeizeResourceFilter

type SeizeResourceFilter struct {
	ScaleUpTaskType   int
	ScaleDownTaskType int

	Constraints  []common.Filter
	Inaffinities []common.Filter
	Filters      []common.Filter

	AppLots int

	NodesPool     []SeizeNode
	FreeNodesPool []SeizeNode
	// contains filtered or unexported fields
}

SeizeResourceFilter is

func (*SeizeResourceFilter) AddTasks

func (f *SeizeResourceFilter) AddTasks(tasks *Tasks)

AddTasks is

func (*SeizeResourceFilter) Filter

Filter is

type StartContainerFilter

type StartContainerFilter struct {
	*ContainerFilterBase
}

StartContainerFilter is

func (*StartContainerFilter) AddTasks

func (f *StartContainerFilter) AddTasks(tasks *Tasks)

AddTasks is

func (*StartContainerFilter) Filter

Filter is

type StartTaskFilter

type StartTaskFilter struct {
}

StartTaskFilter is

func (*StartTaskFilter) DoContainers

func (sf *StartTaskFilter) DoContainers(node *SeizeNode, f *SeizeResourceFilter)

DoContainers is

func (*StartTaskFilter) FilterContainer

func (sf *StartTaskFilter) FilterContainer(filters []common.Filter, container *cluster.Container) bool

FilterContainer is

type StopContainerFilter

type StopContainerFilter struct {
	*ContainerFilterBase
}

StopContainerFilter is

func (*StopContainerFilter) Filter

Filter is

type StopTaskFilter

type StopTaskFilter struct {
}

StopTaskFilter is

func (*StopTaskFilter) DoContainers

func (sf *StopTaskFilter) DoContainers(node *SeizeNode, f *SeizeResourceFilter)

DoContainers is

func (*StopTaskFilter) FilterContainer

func (sf *StopTaskFilter) FilterContainer(filters []common.Filter, container *cluster.Container) bool

FilterContainer is

type Task

type Task struct {
	TaskID    int
	TaskType  int
	Retry     int //Default retry is 3
	Container *cluster.Container
}

Task contains task info

type TaskFilter

type TaskFilter interface {
	FilterContainer(filters []common.Filter, container *cluster.Container) bool
	DoContainers(*SeizeNode, *SeizeResourceFilter)
}

TaskFilter is

type TaskProssesor

type TaskProssesor interface {
	//Product(config common.ScaleConfig) error
	//Consume() error
	Do(*Task) (string, error)
}

TaskProssesor is a scale task interface, local implement or distribute queue implement

type Tasks

type Tasks struct {
	Head      *ring.Ring
	Current   *ring.Ring
	Processor TaskProssesor
}

Tasks is a set of task

func NewTasks

func NewTasks(p TaskProssesor) *Tasks

NewTasks is

func (*Tasks) AddTask

func (t *Tasks) AddTask(container *cluster.Container, TaskType int)

AddTask is

func (*Tasks) AddTasks

func (t *Tasks) AddTasks(containers cluster.Containers, TaskType int)

AddTasks is

    head(nil) --> current(container1) --> ...
	   ^                                    |
	   |____________________________________|

func (*Tasks) DoTasks

func (t *Tasks) DoTasks() ([]string, error)

DoTasks is TODO may using multiple thread do tasks, when support the STOP_HOOK and WAIT_TIME

Jump to

Keyboard shortcuts

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