forked from docker-archive/classicswarm
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcluster.go
110 lines (78 loc) · 3.36 KB
/
cluster.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
package cluster
import (
"io"
"github.com/docker/docker/api/types"
"github.com/docker/docker/api/types/volume"
)
// Cluster is exported
type Cluster interface {
// CreateContainer creates a container.
CreateContainer(config *ContainerConfig, name string, authConfig *types.AuthConfig) (*Container, error)
// RemoveContainer removes a container.
RemoveContainer(container *Container, force, volumes bool) error
// Images returns all images.
Images() Images
// Image returns one image matching `IDOrName`.
Image(IDOrName string) *Image
// RemoveImages removes images from the cluster.
RemoveImages(name string, force bool) ([]types.ImageDeleteResponseItem, error)
// Containers returns all containers.
Containers() Containers
// StartContainer starts a container.
StartContainer(container *Container) error
// Container returns the container matching `IDOrName`.
// TODO: remove this method from the interface as we can use
// cluster.Containers().Get(IDOrName).
Container(IDOrName string) *Container
// Networks returns all networks.
Networks() Networks
// CreateNetwork creates a network.
CreateNetwork(name string, request *types.NetworkCreate) (*types.NetworkCreateResponse, error)
// RemoveNetwork removes a network from the cluster.
RemoveNetwork(network *Network) error
// CreateVolume creates a volume.
CreateVolume(request *volume.VolumesCreateBody) (*types.Volume, error)
// Volumes returns all volumes.
Volumes() Volumes
// RemoveVolumes removes volumes from the cluster.
RemoveVolumes(name string) (bool, error)
// Pull images
// `callback` can be called multiple time
Pull(name string, authConfig *types.AuthConfig, callback func(msg JSONMessageWrapper))
// Import image
// `callback` can be called multiple time
Import(source string, ref string, tag string, imageReader io.Reader, callback func(msg JSONMessageWrapper))
// Load images
// `callback` can be called multiple time
Load(imageReader io.Reader, callback func(msg JSONMessageWrapper))
// Info returns some info about the cluster, like nb of containers / images.
// It is pretty open, so the implementation decides what to return.
Info() [][2]string
// TotalMemory returns the total memory of the cluster.
TotalMemory() int64
// TotalCpus returns the number of CPUs in the cluster.
TotalCpus() int64
// RegisterEventHandler registers an event handler for cluster-wide events.
RegisterEventHandler(h EventHandler) error
// UnregisterEventHandler unregisters an event handler.
UnregisterEventHandler(h EventHandler)
// NewAPIEventHandler creates a new API events handler
NewAPIEventHandler() *APIEventHandler
// CloseWatchQueues unregisters all API event handlers (the ones with
// watch queues) and closes the respective queues. This should be
// called when the manager shuts down
CloseWatchQueues()
// FIXME: remove this method
// RANDOMENGINE returns a random engine.
RANDOMENGINE() (*Engine, error)
// RenameContainer renames a container.
RenameContainer(container *Container, newName string) error
// BuildImage builds an image.
BuildImage(io.Reader, *types.ImageBuildOptions, func(msg JSONMessageWrapper)) error
// TagImage tags an image.
TagImage(IDOrName string, ref string, force bool) error
// RefreshEngine refreshes a single cluster engine.
RefreshEngine(hostname string) error
// RefreshEngines refreshes all engines in the cluster.
RefreshEngines() error
}