62 lines
1.6 KiB
Go
62 lines
1.6 KiB
Go
package run
|
|
|
|
import (
|
|
"github.com/docker/docker/api/types"
|
|
"github.com/docker/go-connections/nat"
|
|
)
|
|
|
|
// Globally used constants
|
|
const (
|
|
DefaultRegistry = "docker.io"
|
|
DefaultServerCount = 1
|
|
)
|
|
|
|
// defaultNodes describes the type of nodes on which a port should be exposed by default
|
|
const defaultNodes = "server"
|
|
|
|
// defaultLabelNodes describes the type of nodes on which a label should be applied by default
|
|
const defaultLabelNodes = "all"
|
|
|
|
// mapping a node role to groups that should be applied to it
|
|
var nodeRuleGroupsMap = map[string][]string{
|
|
"worker": {"all", "workers", "agents"},
|
|
"server": {"all", "server", "master"},
|
|
}
|
|
|
|
// Cluster describes an existing cluster
|
|
type Cluster struct {
|
|
name string
|
|
image string
|
|
status string
|
|
serverPorts []string
|
|
server types.Container
|
|
workers []types.Container
|
|
}
|
|
|
|
// ClusterSpec defines the specs for a cluster that's up for creation
|
|
type ClusterSpec struct {
|
|
AgentArgs []string
|
|
APIPort apiPort
|
|
AutoRestart bool
|
|
ClusterName string
|
|
Env []string
|
|
NodeToLabelSpecMap map[string][]string
|
|
Image string
|
|
NodeToPortSpecMap map[string][]string
|
|
PortAutoOffset int
|
|
RegistriesFile string
|
|
RegistryEnabled bool
|
|
RegistryCacheEnabled bool
|
|
RegistryName string
|
|
RegistryPort int
|
|
RegistryVolume string
|
|
ServerArgs []string
|
|
Volumes *Volumes
|
|
}
|
|
|
|
// PublishedPorts is a struct used for exposing container ports on the host system
|
|
type PublishedPorts struct {
|
|
ExposedPorts map[nat.Port]struct{}
|
|
PortBindings map[nat.Port][]nat.PortBinding
|
|
}
|