mirror of
https://github.com/genuinetools/reg.git
synced 2024-09-19 00:31:02 -04:00
3834c605e5
Signed-off-by: Jess Frazelle <acidburn@microsoft.com>
184 lines
6.3 KiB
Go
184 lines
6.3 KiB
Go
package swarm
|
|
|
|
import (
|
|
"time"
|
|
|
|
"github.com/docker/docker/api/types/swarm/runtime"
|
|
)
|
|
|
|
// TaskState represents the state of a task.
|
|
type TaskState string
|
|
|
|
const (
|
|
// TaskStateNew NEW
|
|
TaskStateNew TaskState = "new"
|
|
// TaskStateAllocated ALLOCATED
|
|
TaskStateAllocated TaskState = "allocated"
|
|
// TaskStatePending PENDING
|
|
TaskStatePending TaskState = "pending"
|
|
// TaskStateAssigned ASSIGNED
|
|
TaskStateAssigned TaskState = "assigned"
|
|
// TaskStateAccepted ACCEPTED
|
|
TaskStateAccepted TaskState = "accepted"
|
|
// TaskStatePreparing PREPARING
|
|
TaskStatePreparing TaskState = "preparing"
|
|
// TaskStateReady READY
|
|
TaskStateReady TaskState = "ready"
|
|
// TaskStateStarting STARTING
|
|
TaskStateStarting TaskState = "starting"
|
|
// TaskStateRunning RUNNING
|
|
TaskStateRunning TaskState = "running"
|
|
// TaskStateComplete COMPLETE
|
|
TaskStateComplete TaskState = "complete"
|
|
// TaskStateShutdown SHUTDOWN
|
|
TaskStateShutdown TaskState = "shutdown"
|
|
// TaskStateFailed FAILED
|
|
TaskStateFailed TaskState = "failed"
|
|
// TaskStateRejected REJECTED
|
|
TaskStateRejected TaskState = "rejected"
|
|
)
|
|
|
|
// Task represents a task.
|
|
type Task struct {
|
|
ID string
|
|
Meta
|
|
Annotations
|
|
|
|
Spec TaskSpec `json:",omitempty"`
|
|
ServiceID string `json:",omitempty"`
|
|
Slot int `json:",omitempty"`
|
|
NodeID string `json:",omitempty"`
|
|
Status TaskStatus `json:",omitempty"`
|
|
DesiredState TaskState `json:",omitempty"`
|
|
NetworksAttachments []NetworkAttachment `json:",omitempty"`
|
|
GenericResources []GenericResource `json:",omitempty"`
|
|
}
|
|
|
|
// TaskSpec represents the spec of a task.
|
|
type TaskSpec struct {
|
|
// ContainerSpec and PluginSpec are mutually exclusive.
|
|
// PluginSpec will only be used when the `Runtime` field is set to `plugin`
|
|
ContainerSpec *ContainerSpec `json:",omitempty"`
|
|
PluginSpec *runtime.PluginSpec `json:",omitempty"`
|
|
|
|
Resources *ResourceRequirements `json:",omitempty"`
|
|
RestartPolicy *RestartPolicy `json:",omitempty"`
|
|
Placement *Placement `json:",omitempty"`
|
|
Networks []NetworkAttachmentConfig `json:",omitempty"`
|
|
|
|
// LogDriver specifies the LogDriver to use for tasks created from this
|
|
// spec. If not present, the one on cluster default on swarm.Spec will be
|
|
// used, finally falling back to the engine default if not specified.
|
|
LogDriver *Driver `json:",omitempty"`
|
|
|
|
// ForceUpdate is a counter that triggers an update even if no relevant
|
|
// parameters have been changed.
|
|
ForceUpdate uint64
|
|
|
|
Runtime RuntimeType `json:",omitempty"`
|
|
}
|
|
|
|
// Resources represents resources (CPU/Memory).
|
|
type Resources struct {
|
|
NanoCPUs int64 `json:",omitempty"`
|
|
MemoryBytes int64 `json:",omitempty"`
|
|
GenericResources []GenericResource `json:",omitempty"`
|
|
}
|
|
|
|
// GenericResource represents a "user defined" resource which can
|
|
// be either an integer (e.g: SSD=3) or a string (e.g: SSD=sda1)
|
|
type GenericResource struct {
|
|
NamedResourceSpec *NamedGenericResource `json:",omitempty"`
|
|
DiscreteResourceSpec *DiscreteGenericResource `json:",omitempty"`
|
|
}
|
|
|
|
// NamedGenericResource represents a "user defined" resource which is defined
|
|
// as a string.
|
|
// "Kind" is used to describe the Kind of a resource (e.g: "GPU", "FPGA", "SSD", ...)
|
|
// Value is used to identify the resource (GPU="UUID-1", FPGA="/dev/sdb5", ...)
|
|
type NamedGenericResource struct {
|
|
Kind string `json:",omitempty"`
|
|
Value string `json:",omitempty"`
|
|
}
|
|
|
|
// DiscreteGenericResource represents a "user defined" resource which is defined
|
|
// as an integer
|
|
// "Kind" is used to describe the Kind of a resource (e.g: "GPU", "FPGA", "SSD", ...)
|
|
// Value is used to count the resource (SSD=5, HDD=3, ...)
|
|
type DiscreteGenericResource struct {
|
|
Kind string `json:",omitempty"`
|
|
Value int64 `json:",omitempty"`
|
|
}
|
|
|
|
// ResourceRequirements represents resources requirements.
|
|
type ResourceRequirements struct {
|
|
Limits *Resources `json:",omitempty"`
|
|
Reservations *Resources `json:",omitempty"`
|
|
}
|
|
|
|
// Placement represents orchestration parameters.
|
|
type Placement struct {
|
|
Constraints []string `json:",omitempty"`
|
|
Preferences []PlacementPreference `json:",omitempty"`
|
|
|
|
// Platforms stores all the platforms that the image can run on.
|
|
// This field is used in the platform filter for scheduling. If empty,
|
|
// then the platform filter is off, meaning there are no scheduling restrictions.
|
|
Platforms []Platform `json:",omitempty"`
|
|
}
|
|
|
|
// PlacementPreference provides a way to make the scheduler aware of factors
|
|
// such as topology.
|
|
type PlacementPreference struct {
|
|
Spread *SpreadOver
|
|
}
|
|
|
|
// SpreadOver is a scheduling preference that instructs the scheduler to spread
|
|
// tasks evenly over groups of nodes identified by labels.
|
|
type SpreadOver struct {
|
|
// label descriptor, such as engine.labels.az
|
|
SpreadDescriptor string
|
|
}
|
|
|
|
// RestartPolicy represents the restart policy.
|
|
type RestartPolicy struct {
|
|
Condition RestartPolicyCondition `json:",omitempty"`
|
|
Delay *time.Duration `json:",omitempty"`
|
|
MaxAttempts *uint64 `json:",omitempty"`
|
|
Window *time.Duration `json:",omitempty"`
|
|
}
|
|
|
|
// RestartPolicyCondition represents when to restart.
|
|
type RestartPolicyCondition string
|
|
|
|
const (
|
|
// RestartPolicyConditionNone NONE
|
|
RestartPolicyConditionNone RestartPolicyCondition = "none"
|
|
// RestartPolicyConditionOnFailure ON_FAILURE
|
|
RestartPolicyConditionOnFailure RestartPolicyCondition = "on-failure"
|
|
// RestartPolicyConditionAny ANY
|
|
RestartPolicyConditionAny RestartPolicyCondition = "any"
|
|
)
|
|
|
|
// TaskStatus represents the status of a task.
|
|
type TaskStatus struct {
|
|
Timestamp time.Time `json:",omitempty"`
|
|
State TaskState `json:",omitempty"`
|
|
Message string `json:",omitempty"`
|
|
Err string `json:",omitempty"`
|
|
ContainerStatus ContainerStatus `json:",omitempty"`
|
|
PortStatus PortStatus `json:",omitempty"`
|
|
}
|
|
|
|
// ContainerStatus represents the status of a container.
|
|
type ContainerStatus struct {
|
|
ContainerID string `json:",omitempty"`
|
|
PID int `json:",omitempty"`
|
|
ExitCode int `json:",omitempty"`
|
|
}
|
|
|
|
// PortStatus represents the port status of a task's host ports whose
|
|
// service has published host ports
|
|
type PortStatus struct {
|
|
Ports []PortConfig `json:",omitempty"`
|
|
}
|