Documentation ¶
Index ¶
- Constants
- type DeploymentRaftEndpoints
- type DeploymentStateWatchers
- type EvalBatcher
- type EvalFuture
- type Watcher
- func (w *Watcher) FailDeployment(req *structs.DeploymentFailRequest, resp *structs.DeploymentUpdateResponse) error
- func (w *Watcher) PauseDeployment(req *structs.DeploymentPauseRequest, resp *structs.DeploymentUpdateResponse) error
- func (w *Watcher) PromoteDeployment(req *structs.DeploymentPromoteRequest, resp *structs.DeploymentUpdateResponse) error
- func (w *Watcher) SetAllocHealth(req *structs.DeploymentAllocHealthRequest, ...) error
- func (w *Watcher) SetEnabled(enabled bool) error
Constants ¶
const ( // LimitStateQueriesPerSecond is the number of state queries allowed per // second LimitStateQueriesPerSecond = 100.0 // CrossDeploymentEvalBatchDuration is the duration in which evaluations are // batched across all deployment watchers before committing to Raft. CrossDeploymentEvalBatchDuration = 250 * time.Millisecond )
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type DeploymentRaftEndpoints ¶
type DeploymentRaftEndpoints interface { // UpsertEvals is used to upsert a set of evaluations UpsertEvals([]*structs.Evaluation) (uint64, error) // UpsertJob is used to upsert a job UpsertJob(job *structs.Job) (uint64, error) // UpdateDeploymentStatus is used to make a deployment status update // and potentially create an evaluation. UpdateDeploymentStatus(u *structs.DeploymentStatusUpdateRequest) (uint64, error) // UpdateDeploymentPromotion is used to promote canaries in a deployment UpdateDeploymentPromotion(req *structs.ApplyDeploymentPromoteRequest) (uint64, error) // UpdateDeploymentAllocHealth is used to set the health of allocations in a // deployment UpdateDeploymentAllocHealth(req *structs.ApplyDeploymentAllocHealthRequest) (uint64, error) }
DeploymentRaftEndpoints exposes the deployment watcher to a set of functions to apply data transforms via Raft.
type DeploymentStateWatchers ¶
type DeploymentStateWatchers interface { // Evaluations returns the set of evaluations for the given job Evaluations(args *structs.JobSpecificRequest, reply *structs.JobEvaluationsResponse) error // Allocations returns the set of allocations that are part of the // deployment. Allocations(args *structs.DeploymentSpecificRequest, reply *structs.AllocListResponse) error // List is used to list all the deployments in the system List(args *structs.DeploymentListRequest, reply *structs.DeploymentListResponse) error // GetDeployment is used to lookup a particular deployment. GetDeployment(args *structs.DeploymentSpecificRequest, reply *structs.SingleDeploymentResponse) error // GetJobVersions is used to lookup the versions of a job. This is used when // rolling back to find the latest stable job GetJobVersions(args *structs.JobVersionsRequest, reply *structs.JobVersionsResponse) error // GetJob is used to lookup a particular job. GetJob(args *structs.JobSpecificRequest, reply *structs.SingleJobResponse) error }
DeploymentStateWatchers are the set of functions required to watch objects on behalf of a deployment
type EvalBatcher ¶
type EvalBatcher struct {
// contains filtered or unexported fields
}
EvalBatcher is used to batch the creation of evaluations
func NewEvalBatcher ¶
func NewEvalBatcher(batchDuration time.Duration, raft DeploymentRaftEndpoints, ctx context.Context) *EvalBatcher
NewEvalBatcher returns an EvalBatcher that uses the passed raft endpoints to create the evaluations and exits the batcher when the passed exit channel is closed.
func (*EvalBatcher) CreateEval ¶
func (b *EvalBatcher) CreateEval(e *structs.Evaluation) *EvalFuture
CreateEval batches the creation of the evaluation and returns a future that tracks the evaluations creation.
type EvalFuture ¶
type EvalFuture struct {
// contains filtered or unexported fields
}
EvalFuture is a future that can be used to retrieve the index the eval was created at or any error in the creation process
func (*EvalFuture) Results ¶
func (f *EvalFuture) Results() (uint64, error)
Results returns the creation index and any error.
func (*EvalFuture) Set ¶
func (f *EvalFuture) Set(index uint64, err error)
Set sets the results of the future, unblocking any client.
type Watcher ¶
type Watcher struct {
// contains filtered or unexported fields
}
Watcher is used to watch deployments and their allocations created by the scheduler and trigger the scheduler when allocation health transistions.
func NewDeploymentsWatcher ¶
func NewDeploymentsWatcher(logger *log.Logger, watchers DeploymentStateWatchers, raft DeploymentRaftEndpoints, stateQueriesPerSecond float64, evalBatchDuration time.Duration) *Watcher
NewDeploymentsWatcher returns a deployments watcher that is used to watch deployments and trigger the scheduler as needed.
func (*Watcher) FailDeployment ¶
func (w *Watcher) FailDeployment(req *structs.DeploymentFailRequest, resp *structs.DeploymentUpdateResponse) error
FailDeployment is used to fail the deployment.
func (*Watcher) PauseDeployment ¶
func (w *Watcher) PauseDeployment(req *structs.DeploymentPauseRequest, resp *structs.DeploymentUpdateResponse) error
PauseDeployment is used to toggle the pause state on a deployment. If the deployment is being unpaused, an evaluation is created.
func (*Watcher) PromoteDeployment ¶
func (w *Watcher) PromoteDeployment(req *structs.DeploymentPromoteRequest, resp *structs.DeploymentUpdateResponse) error
PromoteDeployment is used to promote a deployment. If promote is false, deployment is marked as failed. Otherwise the deployment is updated and an evaluation is created.
func (*Watcher) SetAllocHealth ¶
func (w *Watcher) SetAllocHealth(req *structs.DeploymentAllocHealthRequest, resp *structs.DeploymentUpdateResponse) error
SetAllocHealth is used to set the health of allocations for a deployment. If there are any unhealthy allocations, the deployment is updated to be failed. Otherwise the allocations are updated and an evaluation is created.
func (*Watcher) SetEnabled ¶
SetEnabled is used to control if the watcher is enabled. The watcher should only be enabled on the active leader.