123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202 |
- package swarm // import "github.com/docker/docker/api/types/swarm"
- import "time"
- // Service represents a service.
- type Service struct {
- ID string
- Meta
- Spec ServiceSpec `json:",omitempty"`
- PreviousSpec *ServiceSpec `json:",omitempty"`
- Endpoint Endpoint `json:",omitempty"`
- UpdateStatus *UpdateStatus `json:",omitempty"`
- // ServiceStatus is an optional, extra field indicating the number of
- // desired and running tasks. It is provided primarily as a shortcut to
- // calculating these values client-side, which otherwise would require
- // listing all tasks for a service, an operation that could be
- // computation and network expensive.
- ServiceStatus *ServiceStatus `json:",omitempty"`
- // JobStatus is the status of a Service which is in one of ReplicatedJob or
- // GlobalJob modes. It is absent on Replicated and Global services.
- JobStatus *JobStatus `json:",omitempty"`
- }
- // ServiceSpec represents the spec of a service.
- type ServiceSpec struct {
- Annotations
- // TaskTemplate defines how the service should construct new tasks when
- // orchestrating this service.
- TaskTemplate TaskSpec `json:",omitempty"`
- Mode ServiceMode `json:",omitempty"`
- UpdateConfig *UpdateConfig `json:",omitempty"`
- RollbackConfig *UpdateConfig `json:",omitempty"`
- // Networks field in ServiceSpec is deprecated. The
- // same field in TaskSpec should be used instead.
- // This field will be removed in a future release.
- Networks []NetworkAttachmentConfig `json:",omitempty"`
- EndpointSpec *EndpointSpec `json:",omitempty"`
- }
- // ServiceMode represents the mode of a service.
- type ServiceMode struct {
- Replicated *ReplicatedService `json:",omitempty"`
- Global *GlobalService `json:",omitempty"`
- ReplicatedJob *ReplicatedJob `json:",omitempty"`
- GlobalJob *GlobalJob `json:",omitempty"`
- }
- // UpdateState is the state of a service update.
- type UpdateState string
- const (
- // UpdateStateUpdating is the updating state.
- UpdateStateUpdating UpdateState = "updating"
- // UpdateStatePaused is the paused state.
- UpdateStatePaused UpdateState = "paused"
- // UpdateStateCompleted is the completed state.
- UpdateStateCompleted UpdateState = "completed"
- // UpdateStateRollbackStarted is the state with a rollback in progress.
- UpdateStateRollbackStarted UpdateState = "rollback_started"
- // UpdateStateRollbackPaused is the state with a rollback in progress.
- UpdateStateRollbackPaused UpdateState = "rollback_paused"
- // UpdateStateRollbackCompleted is the state with a rollback in progress.
- UpdateStateRollbackCompleted UpdateState = "rollback_completed"
- )
- // UpdateStatus reports the status of a service update.
- type UpdateStatus struct {
- State UpdateState `json:",omitempty"`
- StartedAt *time.Time `json:",omitempty"`
- CompletedAt *time.Time `json:",omitempty"`
- Message string `json:",omitempty"`
- }
- // ReplicatedService is a kind of ServiceMode.
- type ReplicatedService struct {
- Replicas *uint64 `json:",omitempty"`
- }
- // GlobalService is a kind of ServiceMode.
- type GlobalService struct{}
- // ReplicatedJob is the a type of Service which executes a defined Tasks
- // in parallel until the specified number of Tasks have succeeded.
- type ReplicatedJob struct {
- // MaxConcurrent indicates the maximum number of Tasks that should be
- // executing simultaneously for this job at any given time. There may be
- // fewer Tasks that MaxConcurrent executing simultaneously; for example, if
- // there are fewer than MaxConcurrent tasks needed to reach
- // TotalCompletions.
- //
- // If this field is empty, it will default to a max concurrency of 1.
- MaxConcurrent *uint64 `json:",omitempty"`
- // TotalCompletions is the total number of Tasks desired to run to
- // completion.
- //
- // If this field is empty, the value of MaxConcurrent will be used.
- TotalCompletions *uint64 `json:",omitempty"`
- }
- // GlobalJob is the type of a Service which executes a Task on every Node
- // matching the Service's placement constraints. These tasks run to completion
- // and then exit.
- //
- // This type is deliberately empty.
- type GlobalJob struct{}
- const (
- // UpdateFailureActionPause PAUSE
- UpdateFailureActionPause = "pause"
- // UpdateFailureActionContinue CONTINUE
- UpdateFailureActionContinue = "continue"
- // UpdateFailureActionRollback ROLLBACK
- UpdateFailureActionRollback = "rollback"
- // UpdateOrderStopFirst STOP_FIRST
- UpdateOrderStopFirst = "stop-first"
- // UpdateOrderStartFirst START_FIRST
- UpdateOrderStartFirst = "start-first"
- )
- // UpdateConfig represents the update configuration.
- type UpdateConfig struct {
- // Maximum number of tasks to be updated in one iteration.
- // 0 means unlimited parallelism.
- Parallelism uint64
- // Amount of time between updates.
- Delay time.Duration `json:",omitempty"`
- // FailureAction is the action to take when an update failures.
- FailureAction string `json:",omitempty"`
- // Monitor indicates how long to monitor a task for failure after it is
- // created. If the task fails by ending up in one of the states
- // REJECTED, COMPLETED, or FAILED, within Monitor from its creation,
- // this counts as a failure. If it fails after Monitor, it does not
- // count as a failure. If Monitor is unspecified, a default value will
- // be used.
- Monitor time.Duration `json:",omitempty"`
- // MaxFailureRatio is the fraction of tasks that may fail during
- // an update before the failure action is invoked. Any task created by
- // the current update which ends up in one of the states REJECTED,
- // COMPLETED or FAILED within Monitor from its creation counts as a
- // failure. The number of failures is divided by the number of tasks
- // being updated, and if this fraction is greater than
- // MaxFailureRatio, the failure action is invoked.
- //
- // If the failure action is CONTINUE, there is no effect.
- // If the failure action is PAUSE, no more tasks will be updated until
- // another update is started.
- MaxFailureRatio float32
- // Order indicates the order of operations when rolling out an updated
- // task. Either the old task is shut down before the new task is
- // started, or the new task is started before the old task is shut down.
- Order string
- }
- // ServiceStatus represents the number of running tasks in a service and the
- // number of tasks desired to be running.
- type ServiceStatus struct {
- // RunningTasks is the number of tasks for the service actually in the
- // Running state
- RunningTasks uint64
- // DesiredTasks is the number of tasks desired to be running by the
- // service. For replicated services, this is the replica count. For global
- // services, this is computed by taking the number of tasks with desired
- // state of not-Shutdown.
- DesiredTasks uint64
- // CompletedTasks is the number of tasks in the state Completed, if this
- // service is in ReplicatedJob or GlobalJob mode. This field must be
- // cross-referenced with the service type, because the default value of 0
- // may mean that a service is not in a job mode, or it may mean that the
- // job has yet to complete any tasks.
- CompletedTasks uint64
- }
- // JobStatus is the status of a job-type service.
- type JobStatus struct {
- // JobIteration is a value increased each time a Job is executed,
- // successfully or otherwise. "Executed", in this case, means the job as a
- // whole has been started, not that an individual Task has been launched. A
- // job is "Executed" when its ServiceSpec is updated. JobIteration can be
- // used to disambiguate Tasks belonging to different executions of a job.
- //
- // Though JobIteration will increase with each subsequent execution, it may
- // not necessarily increase by 1, and so JobIteration should not be used to
- // keep track of the number of times a job has been executed.
- JobIteration Version
- // LastExecution is the time that the job was last executed, as observed by
- // Swarm manager.
- LastExecution time.Time `json:",omitempty"`
- }
|