Documentation

Index

Constants

View Source
const (
	// MinDynamicPort is the smallest dynamic port generated
	MinDynamicPort = 20000

	// MaxDynamicPort is the largest dynamic port generated
	MaxDynamicPort = 32000
)
View Source
const (
	// IgnoreUnknownTypeFlag is set along with a MessageType
	// to indicate that the message type can be safely ignored
	// if it is not recognized. This is for future proofing, so
	// that new commands can be added in a way that won't cause
	// old servers to crash when the FSM attempts to process them.
	IgnoreUnknownTypeFlag MessageType = 128

	// ApiMajorVersion is returned as part of the Status.Version request.
	// It should be incremented anytime the APIs are changed in a way
	// that would break clients for sane client versioning.
	ApiMajorVersion = 1

	// ApiMinorVersion is returned as part of the Status.Version request.
	// It should be incremented anytime the APIs are changed to allow
	// for sane client versioning. Minor changes should be compatible
	// within the major version.
	ApiMinorVersion = 1

	ProtocolVersion = "protocol"
	APIMajorVersion = "api.major"
	APIMinorVersion = "api.minor"

	GetterModeAny  = "any"
	GetterModeFile = "file"
	GetterModeDir  = "dir"

	// ACLClientToken and ACLManagementToken are the only types of tokens
	ACLClientToken     = "client"
	ACLManagementToken = "management"

	// DefaultNamespace is the default namespace.
	DefaultNamespace            = "default"
	DefaultNamespaceDescription = "Default shared namespace"
)
View Source
const (
	NodeStatusInit  = "initializing"
	NodeStatusReady = "ready"
	NodeStatusDown  = "down"
)
View Source
const (
	// JobTypeNomad is reserved for internal system tasks and is
	// always handled by the CoreScheduler.
	JobTypeCore    = "_core"
	JobTypeService = "service"
	JobTypeBatch   = "batch"
	JobTypeSystem  = "system"
)
View Source
const (
	JobStatusPending = "pending" // Pending means the job is waiting on scheduling
	JobStatusRunning = "running" // Running means the job has non-terminal allocations
	JobStatusDead    = "dead"    // Dead means all evaluation's and allocations are terminal
)
View Source
const (
	// JobMinPriority is the minimum allowed priority
	JobMinPriority = 1

	// JobDefaultPriority is the default priority if not
	// not specified.
	JobDefaultPriority = 50

	// JobMaxPriority is the maximum allowed priority
	JobMaxPriority = 100

	// Ensure CoreJobPriority is higher than any user
	// specified job so that it gets priority. This is important
	// for the system to remain healthy.
	CoreJobPriority = JobMaxPriority * 2

	// JobTrackedVersions is the number of historic job versions that are
	// kept.
	JobTrackedVersions = 6
)
View Source
const (
	// Checks uses any registered health check state in combination with task
	// states to determine if a allocation is healthy.
	UpdateStrategyHealthCheck_Checks = "checks"

	// TaskStates uses the task states of an allocation to determine if the
	// allocation is healthy.
	UpdateStrategyHealthCheck_TaskStates = "task_states"

	// Manual allows the operator to manually signal to Nomad when an
	// allocations is healthy. This allows more advanced health checking that is
	// outside of the scope of Nomad.
	UpdateStrategyHealthCheck_Manual = "manual"
)
View Source
const (
	// PeriodicSpecCron is used for a cron spec.
	PeriodicSpecCron = "cron"

	// PeriodicSpecTest is only used by unit tests. It is a sorted, comma
	// separated list of unix timestamps at which to launch.
	PeriodicSpecTest = "_internal_test"
)
View Source
const (
	DispatchPayloadForbidden = "forbidden"
	DispatchPayloadOptional  = "optional"
	DispatchPayloadRequired  = "required"

	// DispatchLaunchSuffix is the string appended to the parameterized job's ID
	// when dispatching instances of it.
	DispatchLaunchSuffix = "/dispatch-"
)
View Source
const (
	// RestartPolicyModeDelay causes an artificial delay till the next interval is
	// reached when the specified attempts have been reached in the interval.
	RestartPolicyModeDelay = "delay"

	// RestartPolicyModeFail causes a job to fail if the specified number of
	// attempts are reached within an interval.
	RestartPolicyModeFail = "fail"

	// RestartPolicyMinInterval is the minimum interval that is accepted for a
	// restart policy.
	RestartPolicyMinInterval = 5 * time.Second

	// ReasonWithinPolicy describes restart events that are within policy
	ReasonWithinPolicy = "Restart within policy"
)
View Source
const (
	ServiceCheckHTTP   = "http"
	ServiceCheckTCP    = "tcp"
	ServiceCheckScript = "script"
)
View Source
const (
	AddressModeAuto   = "auto"
	AddressModeHost   = "host"
	AddressModeDriver = "driver"
)
View Source
const (
	// TemplateChangeModeNoop marks that no action should be taken if the
	// template is re-rendered
	TemplateChangeModeNoop = "noop"

	// TemplateChangeModeSignal marks that the task should be signaled if the
	// template is re-rendered
	TemplateChangeModeSignal = "signal"

	// TemplateChangeModeRestart marks that the task should be restarted if the
	// template is re-rendered
	TemplateChangeModeRestart = "restart"
)
View Source
const (
	TaskStatePending = "pending" // The task is waiting to be run.
	TaskStateRunning = "running" // The task is currently running.
	TaskStateDead    = "dead"    // Terminal state of task.
)

Set of possible states for a task.

View Source
const (
	// TaskSetupFailure indicates that the task could not be started due to a
	// a setup failure.
	TaskSetupFailure = "Setup Failure"

	// TaskDriveFailure indicates that the task could not be started due to a
	// failure in the driver.
	TaskDriverFailure = "Driver Failure"

	// TaskReceived signals that the task has been pulled by the client at the
	// given timestamp.
	TaskReceived = "Received"

	// TaskFailedValidation indicates the task was invalid and as such was not
	// run.
	TaskFailedValidation = "Failed Validation"

	// TaskStarted signals that the task was started and its timestamp can be
	// used to determine the running length of the task.
	TaskStarted = "Started"

	// TaskTerminated indicates that the task was started and exited.
	TaskTerminated = "Terminated"

	// TaskKilling indicates a kill signal has been sent to the task.
	TaskKilling = "Killing"

	// TaskKilled indicates a user has killed the task.
	TaskKilled = "Killed"

	// TaskRestarting indicates that task terminated and is being restarted.
	TaskRestarting = "Restarting"

	// TaskNotRestarting indicates that the task has failed and is not being
	// restarted because it has exceeded its restart policy.
	TaskNotRestarting = "Not Restarting"

	// TaskRestartSignal indicates that the task has been signalled to be
	// restarted
	TaskRestartSignal = "Restart Signaled"

	// TaskSignaling indicates that the task is being signalled.
	TaskSignaling = "Signaling"

	// TaskDownloadingArtifacts means the task is downloading the artifacts
	// specified in the task.
	TaskDownloadingArtifacts = "Downloading Artifacts"

	// TaskArtifactDownloadFailed indicates that downloading the artifacts
	// failed.
	TaskArtifactDownloadFailed = "Failed Artifact Download"

	// TaskBuildingTaskDir indicates that the task directory/chroot is being
	// built.
	TaskBuildingTaskDir = "Building Task Directory"

	// TaskSetup indicates the task runner is setting up the task environment
	TaskSetup = "Task Setup"

	// TaskDiskExceeded indicates that one of the tasks in a taskgroup has
	// exceeded the requested disk resources.
	TaskDiskExceeded = "Disk Resources Exceeded"

	// TaskSiblingFailed indicates that a sibling task in the task group has
	// failed.
	TaskSiblingFailed = "Sibling Task Failed"

	// TaskDriverMessage is an informational event message emitted by
	// drivers such as when they're performing a long running action like
	// downloading an image.
	TaskDriverMessage = "Driver"

	// TaskLeaderDead indicates that the leader task within the has finished.
	TaskLeaderDead = "Leader Task Dead"
)
View Source
const (
	ConstraintDistinctProperty = "distinct_property"
	ConstraintDistinctHosts    = "distinct_hosts"
	ConstraintRegex            = "regexp"
	ConstraintVersion          = "version"
	ConstraintSetContains      = "set_contains"
)
View Source
const (
	// VaultChangeModeNoop takes no action when a new token is retrieved.
	VaultChangeModeNoop = "noop"

	// VaultChangeModeSignal signals the task when a new token is retrieved.
	VaultChangeModeSignal = "signal"

	// VaultChangeModeRestart restarts the task when a new token is retrieved.
	VaultChangeModeRestart = "restart"
)
View Source
const (
	// DeploymentStatuses are the various states a deployment can be be in
	DeploymentStatusRunning    = "running"
	DeploymentStatusPaused     = "paused"
	DeploymentStatusFailed     = "failed"
	DeploymentStatusSuccessful = "successful"
	DeploymentStatusCancelled  = "cancelled"

	// DeploymentStatusDescriptions are the various descriptions of the states a
	// deployment can be in.
	DeploymentStatusDescriptionRunning               = "Deployment is running"
	DeploymentStatusDescriptionRunningNeedsPromotion = "Deployment is running but requires promotion"
	DeploymentStatusDescriptionPaused                = "Deployment is paused"
	DeploymentStatusDescriptionSuccessful            = "Deployment completed successfully"
	DeploymentStatusDescriptionStoppedJob            = "Cancelled because job is stopped"
	DeploymentStatusDescriptionNewerJob              = "Cancelled due to newer version of job"
	DeploymentStatusDescriptionFailedAllocations     = "Failed due to unhealthy allocations"
	DeploymentStatusDescriptionFailedByUser          = "Deployment marked as failed"
)
View Source
const (
	AllocDesiredStatusRun   = "run"   // Allocation should run
	AllocDesiredStatusStop  = "stop"  // Allocation should stop
	AllocDesiredStatusEvict = "evict" // Allocation should stop, and was evicted
)
View Source
const (
	AllocClientStatusPending  = "pending"
	AllocClientStatusRunning  = "running"
	AllocClientStatusComplete = "complete"
	AllocClientStatusFailed   = "failed"
	AllocClientStatusLost     = "lost"
)
View Source
const (
	EvalStatusBlocked   = "blocked"
	EvalStatusPending   = "pending"
	EvalStatusComplete  = "complete"
	EvalStatusFailed    = "failed"
	EvalStatusCancelled = "canceled"
)
View Source
const (
	EvalTriggerJobRegister       = "job-register"
	EvalTriggerJobDeregister     = "job-deregister"
	EvalTriggerPeriodicJob       = "periodic-job"
	EvalTriggerNodeUpdate        = "node-update"
	EvalTriggerScheduled         = "scheduled"
	EvalTriggerRollingUpdate     = "rolling-update"
	EvalTriggerDeploymentWatcher = "deployment-watcher"
	EvalTriggerFailedFollowUp    = "failed-follow-up"
	EvalTriggerMaxPlans          = "max-plan-attempts"
)
View Source
const (
	// CoreJobEvalGC is used for the garbage collection of evaluations
	// and allocations. We periodically scan evaluations in a terminal state,
	// in which all the corresponding allocations are also terminal. We
	// delete these out of the system to bound the state.
	CoreJobEvalGC = "eval-gc"

	// CoreJobNodeGC is used for the garbage collection of failed nodes.
	// We periodically scan nodes in a terminal state, and if they have no
	// corresponding allocations we delete these out of the system.
	CoreJobNodeGC = "node-gc"

	// CoreJobJobGC is used for the garbage collection of eligible jobs. We
	// periodically scan garbage collectible jobs and check if both their
	// evaluations and allocations are terminal. If so, we delete these out of
	// the system.
	CoreJobJobGC = "job-gc"

	// CoreJobDeploymentGC is used for the garbage collection of eligible
	// deployments. We periodically scan garbage collectible deployments and
	// check if they are terminal. If so, we delete these out of the system.
	CoreJobDeploymentGC = "deployment-gc"

	// CoreJobForceGC is used to force garbage collection of all GCable objects.
	CoreJobForceGC = "force-gc"
)
View Source
const (
	BytesInMegabyte = 1024 * 1024
)
View Source
const (
	// DefaultKillTimeout is the default timeout between signaling a task it
	// will be killed and killing it.
	DefaultKillTimeout = 5 * time.Second
)
View Source
const (
	// NodeUniqueNamespace is a prefix that can be appended to node meta or
	// attribute keys to mark them for exclusion in computed node class.
	NodeUniqueNamespace = "unique."
)
View Source
const (
	// PeriodicLaunchSuffix is the string appended to the periodic jobs ID
	// when launching derived instances of it.
	PeriodicLaunchSuffix = "/periodic-"
)

Variables

View Source
var (
	ErrNoLeader         = fmt.Errorf("No cluster leader")
	ErrNoRegionPath     = fmt.Errorf("No path to region")
	ErrTokenNotFound    = errors.New("ACL token not found")
	ErrPermissionDenied = errors.New("Permission denied")
)
View Source
var (
	// JsonHandle and JsonHandlePretty are the codec handles to JSON encode
	// structs. The pretty handle will add indents for easier human consumption.
	JsonHandle = &codec.JsonHandle{
		HTMLCharsAsIs: true,
	}
	JsonHandlePretty = &codec.JsonHandle{
		HTMLCharsAsIs: true,
		Indent:        4,
	}
)
View Source
var (
	// AnonymousACLToken is used no SecretID is provided, and the
	// request is made anonymously.
	AnonymousACLToken = &ACLToken{
		AccessorID: "anonymous",
		Name:       "Anonymous Token",
		Type:       ACLClientToken,
		Policies:   []string{"anonymous"},
		Global:     false,
	}
)
View Source
var (
	// DefaultUpdateStrategy provides a baseline that can be used to upgrade
	// jobs with the old policy or for populating field defaults.
	DefaultUpdateStrategy = &UpdateStrategy{
		Stagger:         30 * time.Second,
		MaxParallel:     1,
		HealthCheck:     UpdateStrategyHealthCheck_Checks,
		MinHealthyTime:  10 * time.Second,
		HealthyDeadline: 5 * time.Minute,
		AutoRevert:      false,
		Canary:          0,
	}
)
View Source
var HashiMsgpackHandle = func() *hcodec.MsgpackHandle {
	h := &hcodec.MsgpackHandle{RawToString: true}

	h.MapType = reflect.TypeOf(map[string]interface{}(nil))
	return h
}()
View Source
var MsgpackHandle = func() *codec.MsgpackHandle {
	h := &codec.MsgpackHandle{RawToString: true}

	h.MapType = reflect.TypeOf(map[string]interface{}(nil))
	return h
}()

msgpackHandle is a shared handle for encoding/decoding of structs

View Source
var (
	// TemplateChangeModeInvalidError is the error for when an invalid change
	// mode is given
	TemplateChangeModeInvalidError = errors.New("Invalid change mode. Must be one of the following: noop, signal, restart")
)

Functions

func ACLPolicyListHash

func ACLPolicyListHash(policies []*ACLPolicy) string

ACLPolicyListHash returns a consistent hash for a set of policies.

func AllocName

func AllocName(job, group string, idx uint) string

AllocName returns the name of the allocation given the input.

func CompileACLObject

func CompileACLObject(cache *lru.TwoQueueCache, policies []*ACLPolicy) (*acl.ACL, error)

CompileACLObject compiles a set of ACL policies into an ACL object with a cache

func Decode

func Decode(buf []byte, out interface{}) error

Decode is used to decode a MsgPack encoded object

func DenormalizeAllocationJobs

func DenormalizeAllocationJobs(job *Job, allocs []*Allocation)

DenormalizeAllocationJobs is used to attach a job to all allocations that are non-terminal and do not have a job already. This is useful in cases where the job is normalized.

func DeploymentStatusDescriptionNoRollbackTarget

func DeploymentStatusDescriptionNoRollbackTarget(baseDescription string) string

DeploymentStatusDescriptionNoRollbackTarget is used to get the status description of a deployment when there is no target to rollback to but autorevet is desired.

func DeploymentStatusDescriptionRollback

func DeploymentStatusDescriptionRollback(baseDescription string, jobVersion uint64) string

DeploymentStatusDescriptionRollback is used to get the status description of a deployment when rolling back to an older job.

func DeploymentStatusDescriptionRollbackNoop

func DeploymentStatusDescriptionRollbackNoop(baseDescription string, jobVersion uint64) string

DeploymentStatusDescriptionRollbackNoop is used to get the status description of a deployment when rolling back is not possible because it has the same specification

func DispatchedID

func DispatchedID(templateID string, t time.Time) string

DispatchedID returns an ID appropriate for a job dispatched against a particular parameterized job

func Encode

func Encode(t MessageType, msg interface{}) ([]byte, error)

Encode is used to encode a MsgPack object with type prefix

func IsRecoverable

func IsRecoverable(e error) bool

IsRecoverable returns true if error is a RecoverableError with Recoverable=true. Otherwise false is returned.

func IsUniqueNamespace

func IsUniqueNamespace(key string) bool

IsUniqueNamespace returns whether the key is under the unique namespace.

func MergeMultierrorWarnings

func MergeMultierrorWarnings(warnings ...error) string

MergeMultierrorWarnings takes job warnings and canonicalize warnings and merges them into a returnable string. Both the errors may be nil.

func NewRecoverableError

func NewRecoverableError(e error, recoverable bool) error

NewRecoverableError is used to wrap an error and mark it as recoverable or not.

func PathEscapesAllocDir

func PathEscapesAllocDir(prefix, path string) (bool, error)

PathEscapesAllocDir returns if the given path escapes the allocation directory. The prefix allows adding a prefix if the path will be joined, for example a "task/local" prefix may be provided if the path will be joined against that prefix.

func ScoreFit

func ScoreFit(node *Node, util *Resources) float64

ScoreFit is used to score the fit based on the Google work published here: http://www.columbia.edu/~cs2035/courses/ieor4405.S13/datacenter_scheduling.ppt This is equivalent to their BestFit v3

func ShouldDrainNode

func ShouldDrainNode(status string) bool

ShouldDrainNode checks if a given node status should trigger an evaluation. Some states don't require any further action.

func UniqueNamespace

func UniqueNamespace(key string) string

UniqueNamespace takes a key and returns the key marked under the unique namespace.

func ValidNodeStatus

func ValidNodeStatus(status string) bool

ValidNodeStatus is used to check if a node status is valid

func VaultPoliciesSet

func VaultPoliciesSet(policies map[string]map[string]*Vault) []string

VaultPoliciesSet takes the structure returned by VaultPolicies and returns the set of required policies

func WrapRecoverable

func WrapRecoverable(msg string, err error) error

WrapRecoverable wraps an existing error in a new RecoverableError with a new message. If the error was recoverable before the returned error is as well; otherwise it is unrecoverable.

Types

type ACLPolicy

type ACLPolicy struct {
	Name        string // Unique name
	Description string // Human readable
	Rules       string // HCL or JSON format
	Hash        []byte
	CreateIndex uint64
	ModifyIndex uint64
}

ACLPolicy is used to represent an ACL policy

func (*ACLPolicy) CodecDecodeSelf

func (x *ACLPolicy) CodecDecodeSelf(d *codec1978.Decoder)

func (*ACLPolicy) CodecEncodeSelf

func (x *ACLPolicy) CodecEncodeSelf(e *codec1978.Encoder)

func (*ACLPolicy) SetHash

func (c *ACLPolicy) SetHash() []byte

SetHash is used to compute and set the hash of the ACL policy

func (*ACLPolicy) Stub

func (a *ACLPolicy) Stub() *ACLPolicyListStub

func (*ACLPolicy) Validate

func (a *ACLPolicy) Validate() error

type ACLPolicyDeleteRequest

type ACLPolicyDeleteRequest struct {
	Names []string
	WriteRequest
}

ACLPolicyDeleteRequest is used to delete a set of policies

func (*ACLPolicyDeleteRequest) CodecDecodeSelf

func (x *ACLPolicyDeleteRequest) CodecDecodeSelf(d *codec1978.Decoder)

func (*ACLPolicyDeleteRequest) CodecEncodeSelf

func (x *ACLPolicyDeleteRequest) CodecEncodeSelf(e *codec1978.Encoder)

type ACLPolicyListRequest

type ACLPolicyListRequest struct {
	QueryOptions
}

ACLPolicyListRequest is used to request a list of policies

func (*ACLPolicyListRequest) CodecDecodeSelf

func (x *ACLPolicyListRequest) CodecDecodeSelf(d *codec1978.Decoder)

func (*ACLPolicyListRequest) CodecEncodeSelf

func (x *ACLPolicyListRequest) CodecEncodeSelf(e *codec1978.Encoder)

type ACLPolicyListResponse

type ACLPolicyListResponse struct {
	Policies []*ACLPolicyListStub
	QueryMeta
}

ACLPolicyListResponse is used for a list request

func (*ACLPolicyListResponse) CodecDecodeSelf

func (x *ACLPolicyListResponse) CodecDecodeSelf(d *codec1978.Decoder)

func (*ACLPolicyListResponse) CodecEncodeSelf

func (x *ACLPolicyListResponse) CodecEncodeSelf(e *codec1978.Encoder)

type ACLPolicyListStub

type ACLPolicyListStub struct {
	Name        string
	Description string
	Hash        []byte
	CreateIndex uint64
	ModifyIndex uint64
}

ACLPolicyListStub is used to for listing ACL policies

func (*ACLPolicyListStub) CodecDecodeSelf

func (x *ACLPolicyListStub) CodecDecodeSelf(d *codec1978.Decoder)

func (*ACLPolicyListStub) CodecEncodeSelf

func (x *ACLPolicyListStub) CodecEncodeSelf(e *codec1978.Encoder)

type ACLPolicySetRequest

type ACLPolicySetRequest struct {
	Names []string
	QueryOptions
}

ACLPolicySetRequest is used to query a set of policies

func (*ACLPolicySetRequest) CodecDecodeSelf

func (x *ACLPolicySetRequest) CodecDecodeSelf(d *codec1978.Decoder)

func (*ACLPolicySetRequest) CodecEncodeSelf

func (x *ACLPolicySetRequest) CodecEncodeSelf(e *codec1978.Encoder)

type ACLPolicySetResponse

type ACLPolicySetResponse struct {
	Policies map[string]*ACLPolicy
	QueryMeta
}

ACLPolicySetResponse is used to return a set of policies

func (*ACLPolicySetResponse) CodecDecodeSelf

func (x *ACLPolicySetResponse) CodecDecodeSelf(d *codec1978.Decoder)

func (*ACLPolicySetResponse) CodecEncodeSelf

func (x *ACLPolicySetResponse) CodecEncodeSelf(e *codec1978.Encoder)

type ACLPolicySpecificRequest

type ACLPolicySpecificRequest struct {
	Name string
	QueryOptions
}

ACLPolicySpecificRequest is used to query a specific policy

func (*ACLPolicySpecificRequest) CodecDecodeSelf

func (x *ACLPolicySpecificRequest) CodecDecodeSelf(d *codec1978.Decoder)

func (*ACLPolicySpecificRequest) CodecEncodeSelf

func (x *ACLPolicySpecificRequest) CodecEncodeSelf(e *codec1978.Encoder)

type ACLPolicyUpsertRequest

type ACLPolicyUpsertRequest struct {
	Policies []*ACLPolicy
	WriteRequest
}

ACLPolicyUpsertRequest is used to upsert a set of policies

func (*ACLPolicyUpsertRequest) CodecDecodeSelf

func (x *ACLPolicyUpsertRequest) CodecDecodeSelf(d *codec1978.Decoder)

func (*ACLPolicyUpsertRequest) CodecEncodeSelf

func (x *ACLPolicyUpsertRequest) CodecEncodeSelf(e *codec1978.Encoder)

type ACLToken

type ACLToken struct {
	AccessorID  string   // Public Accessor ID (UUID)
	SecretID    string   // Secret ID, private (UUID)
	Name        string   // Human friendly name
	Type        string   // Client or Management
	Policies    []string // Policies this token ties to
	Global      bool     // Global or Region local
	Hash        []byte
	CreateTime  time.Time // Time of creation
	CreateIndex uint64
	ModifyIndex uint64
}

ACLToken represents a client token which is used to Authenticate

func (*ACLToken) CodecDecodeSelf

func (x *ACLToken) CodecDecodeSelf(d *codec1978.Decoder)

func (*ACLToken) CodecEncodeSelf

func (x *ACLToken) CodecEncodeSelf(e *codec1978.Encoder)

func (*ACLToken) PolicySubset

func (a *ACLToken) PolicySubset(policies []string) bool

PolicySubset checks if a given set of policies is a subset of the token

func (*ACLToken) SetHash

func (a *ACLToken) SetHash() []byte

SetHash is used to compute and set the hash of the ACL token

func (*ACLToken) Stub

func (a *ACLToken) Stub() *ACLTokenListStub

func (*ACLToken) Validate

func (a *ACLToken) Validate() error

Validate is used to sanity check a token

type ACLTokenBootstrapRequest

type ACLTokenBootstrapRequest struct {
	Token      *ACLToken // Not client specifiable
	ResetIndex uint64    // Reset index is used to clear the bootstrap token
	WriteRequest
}

ACLTokenBootstrapRequest is used to bootstrap ACLs

func (*ACLTokenBootstrapRequest) CodecDecodeSelf

func (x *ACLTokenBootstrapRequest) CodecDecodeSelf(d *codec1978.Decoder)

func (*ACLTokenBootstrapRequest) CodecEncodeSelf

func (x *ACLTokenBootstrapRequest) CodecEncodeSelf(e *codec1978.Encoder)

type ACLTokenDeleteRequest

type ACLTokenDeleteRequest struct {
	AccessorIDs []string
	WriteRequest
}

ACLTokenDeleteRequest is used to delete a set of tokens

func (*ACLTokenDeleteRequest) CodecDecodeSelf

func (x *ACLTokenDeleteRequest) CodecDecodeSelf(d *codec1978.Decoder)

func (*ACLTokenDeleteRequest) CodecEncodeSelf

func (x *ACLTokenDeleteRequest) CodecEncodeSelf(e *codec1978.Encoder)

type ACLTokenListRequest

type ACLTokenListRequest struct {
	GlobalOnly bool
	QueryOptions
}

ACLTokenListRequest is used to request a list of tokens

func (*ACLTokenListRequest) CodecDecodeSelf

func (x *ACLTokenListRequest) CodecDecodeSelf(d *codec1978.Decoder)

func (*ACLTokenListRequest) CodecEncodeSelf

func (x *ACLTokenListRequest) CodecEncodeSelf(e *codec1978.Encoder)

type ACLTokenListResponse

type ACLTokenListResponse struct {
	Tokens []*ACLTokenListStub
	QueryMeta
}

ACLTokenListResponse is used for a list request

func (*ACLTokenListResponse) CodecDecodeSelf

func (x *ACLTokenListResponse) CodecDecodeSelf(d *codec1978.Decoder)

func (*ACLTokenListResponse) CodecEncodeSelf

func (x *ACLTokenListResponse) CodecEncodeSelf(e *codec1978.Encoder)

type ACLTokenListStub

type ACLTokenListStub struct {
	AccessorID  string
	Name        string
	Type        string
	Policies    []string
	Global      bool
	Hash        []byte
	CreateTime  time.Time
	CreateIndex uint64
	ModifyIndex uint64
}

func (*ACLTokenListStub) CodecDecodeSelf

func (x *ACLTokenListStub) CodecDecodeSelf(d *codec1978.Decoder)

func (*ACLTokenListStub) CodecEncodeSelf

func (x *ACLTokenListStub) CodecEncodeSelf(e *codec1978.Encoder)

type ACLTokenSetRequest

type ACLTokenSetRequest struct {
	AccessorIDS []string
	QueryOptions
}

ACLTokenSetRequest is used to query a set of tokens

func (*ACLTokenSetRequest) CodecDecodeSelf

func (x *ACLTokenSetRequest) CodecDecodeSelf(d *codec1978.Decoder)

func (*ACLTokenSetRequest) CodecEncodeSelf

func (x *ACLTokenSetRequest) CodecEncodeSelf(e *codec1978.Encoder)

type ACLTokenSetResponse

type ACLTokenSetResponse struct {
	Tokens map[string]*ACLToken // Keyed by Accessor ID
	QueryMeta
}

ACLTokenSetResponse is used to return a set of token

func (*ACLTokenSetResponse) CodecDecodeSelf

func (x *ACLTokenSetResponse) CodecDecodeSelf(d *codec1978.Decoder)

func (*ACLTokenSetResponse) CodecEncodeSelf

func (x *ACLTokenSetResponse) CodecEncodeSelf(e *codec1978.Encoder)

type ACLTokenSpecificRequest

type ACLTokenSpecificRequest struct {
	AccessorID string
	QueryOptions
}

ACLTokenSpecificRequest is used to query a specific token

func (*ACLTokenSpecificRequest) CodecDecodeSelf

func (x *ACLTokenSpecificRequest) CodecDecodeSelf(d *codec1978.Decoder)

func (*ACLTokenSpecificRequest) CodecEncodeSelf

func (x *ACLTokenSpecificRequest) CodecEncodeSelf(e *codec1978.Encoder)

type ACLTokenUpsertRequest

type ACLTokenUpsertRequest struct {
	Tokens []*ACLToken
	WriteRequest
}

ACLTokenUpsertRequest is used to upsert a set of tokens

func (*ACLTokenUpsertRequest) CodecDecodeSelf

func (x *ACLTokenUpsertRequest) CodecDecodeSelf(d *codec1978.Decoder)

func (*ACLTokenUpsertRequest) CodecEncodeSelf

func (x *ACLTokenUpsertRequest) CodecEncodeSelf(e *codec1978.Encoder)

type ACLTokenUpsertResponse

type ACLTokenUpsertResponse struct {
	Tokens []*ACLToken
	WriteMeta
}

ACLTokenUpsertResponse is used to return from an ACLTokenUpsertRequest

func (*ACLTokenUpsertResponse) CodecDecodeSelf

func (x *ACLTokenUpsertResponse) CodecDecodeSelf(d *codec1978.Decoder)

func (*ACLTokenUpsertResponse) CodecEncodeSelf

func (x *ACLTokenUpsertResponse) CodecEncodeSelf(e *codec1978.Encoder)

type AllocDeploymentStatus

type AllocDeploymentStatus struct {
	// Healthy marks whether the allocation has been marked healthy or unhealthy
	// as part of a deployment. It can be unset if it has neither been marked
	// healthy or unhealthy.
	Healthy *bool

	// ModifyIndex is the raft index in which the deployment status was last
	// changed.
	ModifyIndex uint64
}

AllocDeploymentStatus captures the status of the allocation as part of the deployment. This can include things like if the allocation has been marked as heatlhy.

func (*AllocDeploymentStatus) CodecDecodeSelf

func (x *AllocDeploymentStatus) CodecDecodeSelf(d *codec1978.Decoder)

func (*AllocDeploymentStatus) CodecEncodeSelf

func (x *AllocDeploymentStatus) CodecEncodeSelf(e *codec1978.Encoder)

func (*AllocDeploymentStatus) Copy

func (*AllocDeploymentStatus) IsHealthy

func (a *AllocDeploymentStatus) IsHealthy() bool

IsHealthy returns if the allocation is marked as healthy as part of a deployment

func (*AllocDeploymentStatus) IsUnhealthy

func (a *AllocDeploymentStatus) IsUnhealthy() bool

IsUnhealthy returns if the allocation is marked as unhealthy as part of a deployment

type AllocListRequest

type AllocListRequest struct {
	QueryOptions
}

AllocListRequest is used to request a list of allocations

func (*AllocListRequest) CodecDecodeSelf

func (x *AllocListRequest) CodecDecodeSelf(d *codec1978.Decoder)

func (*AllocListRequest) CodecEncodeSelf

func (x *AllocListRequest) CodecEncodeSelf(e *codec1978.Encoder)

type AllocListResponse

type AllocListResponse struct {
	Allocations []*AllocListStub
	QueryMeta
}

AllocListResponse is used for a list request

func (*AllocListResponse) CodecDecodeSelf

func (x *AllocListResponse) CodecDecodeSelf(d *codec1978.Decoder)

func (*AllocListResponse) CodecEncodeSelf

func (x *AllocListResponse) CodecEncodeSelf(e *codec1978.Encoder)

type AllocListStub

type AllocListStub struct {
	ID                 string
	EvalID             string
	Name               string
	NodeID             string
	JobID              string
	JobVersion         uint64
	TaskGroup          string
	DesiredStatus      string
	DesiredDescription string
	ClientStatus       string
	ClientDescription  string
	TaskStates         map[string]*TaskState
	DeploymentStatus   *AllocDeploymentStatus
	CreateIndex        uint64
	ModifyIndex        uint64
	CreateTime         int64
	ModifyTime         int64
}

AllocListStub is used to return a subset of alloc information

func (*AllocListStub) CodecDecodeSelf

func (x *AllocListStub) CodecDecodeSelf(d *codec1978.Decoder)

func (*AllocListStub) CodecEncodeSelf

func (x *AllocListStub) CodecEncodeSelf(e *codec1978.Encoder)

func (*AllocListStub) SetEventDisplayMessages

func (a *AllocListStub) SetEventDisplayMessages()

SetEventDisplayMessage populates the display message if its not already set, a temporary fix to handle old allocations that don't have it. This method will be removed in a future release.

type AllocMetric

type AllocMetric struct {
	// NodesEvaluated is the number of nodes that were evaluated
	NodesEvaluated int

	// NodesFiltered is the number of nodes filtered due to a constraint
	NodesFiltered int

	// NodesAvailable is the number of nodes available for evaluation per DC.
	NodesAvailable map[string]int

	// ClassFiltered is the number of nodes filtered by class
	ClassFiltered map[string]int

	// ConstraintFiltered is the number of failures caused by constraint
	ConstraintFiltered map[string]int

	// NodesExhausted is the number of nodes skipped due to being
	// exhausted of at least one resource
	NodesExhausted int

	// ClassExhausted is the number of nodes exhausted by class
	ClassExhausted map[string]int

	// DimensionExhausted provides the count by dimension or reason
	DimensionExhausted map[string]int

	// QuotaExhausted provides the exhausted dimensions
	QuotaExhausted []string

	// Scores is the scores of the final few nodes remaining
	// for placement. The top score is typically selected.
	Scores map[string]float64

	// AllocationTime is a measure of how long the allocation
	// attempt took. This can affect performance and SLAs.
	AllocationTime time.Duration

	// CoalescedFailures indicates the number of other
	// allocations that were coalesced into this failed allocation.
	// This is to prevent creating many failed allocations for a
	// single task group.
	CoalescedFailures int
}

AllocMetric is used to track various metrics while attempting to make an allocation. These are used to debug a job, or to better understand the pressure within the system.

func (*AllocMetric) CodecDecodeSelf

func (x *AllocMetric) CodecDecodeSelf(d *codec1978.Decoder)

func (*AllocMetric) CodecEncodeSelf

func (x *AllocMetric) CodecEncodeSelf(e *codec1978.Encoder)

func (*AllocMetric) Copy

func (a *AllocMetric) Copy() *AllocMetric

func (*AllocMetric) EvaluateNode

func (a *AllocMetric) EvaluateNode()

func (*AllocMetric) ExhaustQuota

func (a *AllocMetric) ExhaustQuota(dimensions []string)

func (*AllocMetric) ExhaustedNode

func (a *AllocMetric) ExhaustedNode(node *Node, dimension string)

func (*AllocMetric) FilterNode

func (a *AllocMetric) FilterNode(node *Node, constraint string)

func (*AllocMetric) ScoreNode

func (a *AllocMetric) ScoreNode(node *Node, name string, score float64)

type AllocSpecificRequest

type AllocSpecificRequest struct {
	AllocID string
	QueryOptions
}

AllocSpecificRequest is used to query a specific allocation

func (*AllocSpecificRequest) CodecDecodeSelf

func (x *AllocSpecificRequest) CodecDecodeSelf(d *codec1978.Decoder)

func (*AllocSpecificRequest) CodecEncodeSelf

func (x *AllocSpecificRequest) CodecEncodeSelf(e *codec1978.Encoder)

type AllocUpdateRequest

type AllocUpdateRequest struct {
	// Alloc is the list of new allocations to assign
	Alloc []*Allocation

	// Job is the shared parent job of the allocations.
	// It is pulled out since it is common to reduce payload size.
	Job *Job

	WriteRequest
}

AllocUpdateRequest is used to submit changes to allocations, either to cause evictions or to assign new allocaitons. Both can be done within a single transaction

func (*AllocUpdateRequest) CodecDecodeSelf

func (x *AllocUpdateRequest) CodecDecodeSelf(d *codec1978.Decoder)

func (*AllocUpdateRequest) CodecEncodeSelf

func (x *AllocUpdateRequest) CodecEncodeSelf(e *codec1978.Encoder)

type Allocation

type Allocation struct {
	// ID of the allocation (UUID)
	ID string

	// Namespace is the namespace the allocation is created in
	Namespace string

	// ID of the evaluation that generated this allocation
	EvalID string

	// Name is a logical name of the allocation.
	Name string

	// NodeID is the node this is being placed on
	NodeID string

	// Job is the parent job of the task group being allocated.
	// This is copied at allocation time to avoid issues if the job
	// definition is updated.
	JobID string
	Job   *Job

	// TaskGroup is the name of the task group that should be run
	TaskGroup string

	// Resources is the total set of resources allocated as part
	// of this allocation of the task group.
	Resources *Resources

	// SharedResources are the resources that are shared by all the tasks in an
	// allocation
	SharedResources *Resources

	// TaskResources is the set of resources allocated to each
	// task. These should sum to the total Resources.
	TaskResources map[string]*Resources

	// Metrics associated with this allocation
	Metrics *AllocMetric

	// Desired Status of the allocation on the client
	DesiredStatus string

	// DesiredStatusDescription is meant to provide more human useful information
	DesiredDescription string

	// Status of the allocation on the client
	ClientStatus string

	// ClientStatusDescription is meant to provide more human useful information
	ClientDescription string

	// TaskStates stores the state of each task,
	TaskStates map[string]*TaskState

	// PreviousAllocation is the allocation that this allocation is replacing
	PreviousAllocation string

	// DeploymentID identifies an allocation as being created from a
	// particular deployment
	DeploymentID string

	// DeploymentStatus captures the status of the allocation as part of the
	// given deployment
	DeploymentStatus *AllocDeploymentStatus

	// Raft Indexes
	CreateIndex uint64
	ModifyIndex uint64

	// AllocModifyIndex is not updated when the client updates allocations. This
	// lets the client pull only the allocs updated by the server.
	AllocModifyIndex uint64

	// CreateTime is the time the allocation has finished scheduling and been
	// verified by the plan applier.
	CreateTime int64

	// ModifyTime is the time the allocation was last updated.
	ModifyTime int64
}

Allocation is used to allocate the placement of a task group to a node.

func FilterTerminalAllocs

func FilterTerminalAllocs(allocs []*Allocation) ([]*Allocation, map[string]*Allocation)

FilterTerminalAllocs filters out all allocations in a terminal state and returns the latest terminal allocations

func RemoveAllocs

func RemoveAllocs(alloc []*Allocation, remove []*Allocation) []*Allocation

RemoveAllocs is used to remove any allocs with the given IDs from the list of allocations

func (*Allocation) CodecDecodeSelf

func (x *Allocation) CodecDecodeSelf(d *codec1978.Decoder)

func (*Allocation) CodecEncodeSelf

func (x *Allocation) CodecEncodeSelf(e *codec1978.Encoder)

func (*Allocation) Copy

func (a *Allocation) Copy() *Allocation

func (*Allocation) CopySkipJob

func (a *Allocation) CopySkipJob() *Allocation

Copy provides a copy of the allocation but doesn't deep copy the job

func (*Allocation) Index

func (a *Allocation) Index() uint

Index returns the index of the allocation. If the allocation is from a task group with count greater than 1, there will be multiple allocations for it.

func (*Allocation) RanSuccessfully

func (a *Allocation) RanSuccessfully() bool

RanSuccessfully returns whether the client has ran the allocation and all tasks finished successfully

func (*Allocation) SetEventDisplayMessages

func (a *Allocation) SetEventDisplayMessages()

SetEventDisplayMessage populates the display message if its not already set, a temporary fix to handle old allocations that don't have it. This method will be removed in a future release.

func (*Allocation) ShouldMigrate

func (a *Allocation) ShouldMigrate() bool

ShouldMigrate returns if the allocation needs data migration

func (*Allocation) Stub

func (a *Allocation) Stub() *AllocListStub

Stub returns a list stub for the allocation

func (*Allocation) TerminalStatus

func (a *Allocation) TerminalStatus() bool

TerminalStatus returns if the desired or actual status is terminal and will no longer transition.

func (*Allocation) Terminated

func (a *Allocation) Terminated() bool

Terminated returns if the allocation is in a terminal state on a client.

type AllocsGetRequest

type AllocsGetRequest struct {
	AllocIDs []string
	QueryOptions
}

AllocsGetRequest is used to query a set of allocations

func (*AllocsGetRequest) CodecDecodeSelf

func (x *AllocsGetRequest) CodecDecodeSelf(d *codec1978.Decoder)

func (*AllocsGetRequest) CodecEncodeSelf

func (x *AllocsGetRequest) CodecEncodeSelf(e *codec1978.Encoder)

type AllocsGetResponse

type AllocsGetResponse struct {
	Allocs []*Allocation
	QueryMeta
}

AllocsGetResponse is used to return a set of allocations

func (*AllocsGetResponse) CodecDecodeSelf

func (x *AllocsGetResponse) CodecDecodeSelf(d *codec1978.Decoder)

func (*AllocsGetResponse) CodecEncodeSelf

func (x *AllocsGetResponse) CodecEncodeSelf(e *codec1978.Encoder)

type ApplyDeploymentAllocHealthRequest

type ApplyDeploymentAllocHealthRequest struct {
	DeploymentAllocHealthRequest

	// An optional field to update the status of a deployment
	DeploymentUpdate *DeploymentStatusUpdate

	// Job is used to optionally upsert a job. This is used when setting the
	// allocation health results in a deployment failure and the deployment
	// auto-reverts to the latest stable job.
	Job *Job

	// An optional evaluation to create after promoting the canaries
	Eval *Evaluation
}

ApplyDeploymentAllocHealthRequest is used to apply an alloc health request via Raft

func (*ApplyDeploymentAllocHealthRequest) CodecDecodeSelf

func (x *ApplyDeploymentAllocHealthRequest) CodecDecodeSelf(d *codec1978.Decoder)

func (*ApplyDeploymentAllocHealthRequest) CodecEncodeSelf

func (x *ApplyDeploymentAllocHealthRequest) CodecEncodeSelf(e *codec1978.Encoder)

type ApplyDeploymentPromoteRequest

type ApplyDeploymentPromoteRequest struct {
	DeploymentPromoteRequest

	// An optional evaluation to create after promoting the canaries
	Eval *Evaluation
}

ApplyDeploymentPromoteRequest is used to apply a promotion request via Raft

func (*ApplyDeploymentPromoteRequest) CodecDecodeSelf

func (x *ApplyDeploymentPromoteRequest) CodecDecodeSelf(d *codec1978.Decoder)

func (*ApplyDeploymentPromoteRequest) CodecEncodeSelf

func (x *ApplyDeploymentPromoteRequest) CodecEncodeSelf(e *codec1978.Encoder)

type ApplyPlanResultsRequest

type ApplyPlanResultsRequest struct {
	// AllocUpdateRequest holds the allocation updates to be made by the
	// scheduler.
	AllocUpdateRequest

	// Deployment is the deployment created or updated as a result of a
	// scheduling event.
	Deployment *Deployment

	// DeploymentUpdates is a set of status updates to apply to the given
	// deployments. This allows the scheduler to cancel any unneeded deployment
	// because the job is stopped or the update block is removed.
	DeploymentUpdates []*DeploymentStatusUpdate

	// EvalID is the eval ID of the plan being applied. The modify index of the
	// evaluation is updated as part of applying the plan to ensure that subsequent
	// scheduling events for the same job will wait for the index that last produced
	// state changes. This is necessary for blocked evaluations since they can be
	// processed many times, potentially making state updates, without the state of
	// the evaluation itself being updated.
	EvalID string
}

ApplyPlanResultsRequest is used by the planner to apply a Raft transaction committing the result of a plan.

func (*ApplyPlanResultsRequest) CodecDecodeSelf

func (x *ApplyPlanResultsRequest) CodecDecodeSelf(d *codec1978.Decoder)

func (*ApplyPlanResultsRequest) CodecEncodeSelf

func (x *ApplyPlanResultsRequest) CodecEncodeSelf(e *codec1978.Encoder)

type Bitmap

type Bitmap []byte

Bitmap is a simple uncompressed bitmap

func NewBitmap

func NewBitmap(size uint) (Bitmap, error)

NewBitmap returns a bitmap with up to size indexes

func (Bitmap) Check

func (b Bitmap) Check(idx uint) bool

Check is used to check the given index of the bitmap

func (Bitmap) Clear

func (b Bitmap) Clear()

Clear is used to efficiently clear the bitmap

func (Bitmap) Copy

func (b Bitmap) Copy() (Bitmap, error)

Copy returns a copy of the Bitmap

func (Bitmap) IndexesInRange

func (b Bitmap) IndexesInRange(set bool, from, to uint) []int

IndexesInRange returns the indexes in which the values are either set or unset based on the passed parameter in the passed range

func (Bitmap) Set

func (b Bitmap) Set(idx uint)

Set is used to set the given index of the bitmap

func (Bitmap) Size

func (b Bitmap) Size() uint

Size returns the size of the bitmap

func (Bitmap) Unset

func (b Bitmap) Unset(idx uint)

Unset is used to unset the given index of the bitmap

type CheckRestart

type CheckRestart struct {
	Limit          int           // Restart task after this many unhealthy intervals
	Grace          time.Duration // Grace time to give tasks after starting to get healthy
	IgnoreWarnings bool          // If true treat checks in `warning` as passing
}

CheckRestart describes if and when a task should be restarted based on failing health checks.

func (*CheckRestart) CodecDecodeSelf

func (x *CheckRestart) CodecDecodeSelf(d *codec1978.Decoder)

func (*CheckRestart) CodecEncodeSelf

func (x *CheckRestart) CodecEncodeSelf(e *codec1978.Encoder)

func (*CheckRestart) Copy

func (c *CheckRestart) Copy() *CheckRestart

func (*CheckRestart) Validate

func (c *CheckRestart) Validate() error

type Constraint

type Constraint struct {
	LTarget string // Left-hand target
	RTarget string // Right-hand target
	Operand string // Constraint operand (<=, <, =, !=, >, >=), contains, near
	// contains filtered or unexported fields

}

Constraints are used to restrict placement options.

func CopySliceConstraints

func CopySliceConstraints(s []*Constraint) []*Constraint

func EscapedConstraints

func EscapedConstraints(constraints []*Constraint) []*Constraint

EscapedConstraints takes a set of constraints and returns the set that escapes computed node classes.

func (*Constraint) CodecDecodeSelf

func (x *Constraint) CodecDecodeSelf(d *codec1978.Decoder)

func (*Constraint) CodecEncodeSelf

func (x *Constraint) CodecEncodeSelf(e *codec1978.Encoder)

func (*Constraint) Copy

func (c *Constraint) Copy() *Constraint

func (*Constraint) Equal

func (c *Constraint) Equal(o *Constraint) bool

Equal checks if two constraints are equal

func (*Constraint) String

func (c *Constraint) String() string

func (*Constraint) Validate

func (c *Constraint) Validate() error

type Context

type Context string

Context defines the scope in which a search for Nomad object operates, and is also used to query the matching index value for this context

const (
	Allocs      Context = "allocs"
	Deployments Context = "deployment"
	Evals       Context = "evals"
	Jobs        Context = "jobs"
	Nodes       Context = "nodes"
	Namespaces  Context = "namespaces"
	Quotas      Context = "quotas"
	All         Context = "all"
)

func (*Context) CodecDecodeSelf

func (x *Context) CodecDecodeSelf(d *codec1978.Decoder)

func (Context) CodecEncodeSelf

func (x Context) CodecEncodeSelf(e *codec1978.Encoder)

type Deployment

type Deployment struct {
	// ID is a generated UUID for the deployment
	ID string

	// Namespace is the namespace the deployment is created in
	Namespace string

	// JobID is the job the deployment is created for
	JobID string

	// JobVersion is the version of the job at which the deployment is tracking
	JobVersion uint64

	// JobModifyIndex is the modify index of the job at which the deployment is tracking
	JobModifyIndex uint64

	// JobCreateIndex is the create index of the job which the deployment is
	// tracking. It is needed so that if the job gets stopped and reran we can
	// present the correct list of deployments for the job and not old ones.
	JobCreateIndex uint64

	// TaskGroups is the set of task groups effected by the deployment and their
	// current deployment status.
	TaskGroups map[string]*DeploymentState

	// The status of the deployment
	Status string

	// StatusDescription allows a human readable description of the deployment
	// status.
	StatusDescription string

	CreateIndex uint64
	ModifyIndex uint64
}

Deployment is the object that represents a job deployment which is used to transition a job between versions.

func NewDeployment

func NewDeployment(job *Job) *Deployment

NewDeployment creates a new deployment given the job.

func (*Deployment) Active

func (d *Deployment) Active() bool

Active returns whether the deployment is active or terminal.

func (*Deployment) CodecDecodeSelf

func (x *Deployment) CodecDecodeSelf(d *codec1978.Decoder)

func (*Deployment) CodecEncodeSelf

func (x *Deployment) CodecEncodeSelf(e *codec1978.Encoder)

func (*Deployment) Copy

func (d *Deployment) Copy() *Deployment

func (*Deployment) GetID

func (d *Deployment) GetID() string

GetID is a helper for getting the ID when the object may be nil

func (*Deployment) GoString

func (d *Deployment) GoString() string

func (*Deployment) HasPlacedCanaries

func (d *Deployment) HasPlacedCanaries() bool

HasPlacedCanaries returns whether the deployment has placed canaries

func (*Deployment) RequiresPromotion

func (d *Deployment) RequiresPromotion() bool

RequiresPromotion returns whether the deployment requires promotion to continue

type DeploymentAllocHealthRequest

type DeploymentAllocHealthRequest struct {
	DeploymentID string

	// Marks these allocations as healthy, allow further allocations
	// to be rolled.
	HealthyAllocationIDs []string

	// Any unhealthy allocations fail the deployment
	UnhealthyAllocationIDs []string

	WriteRequest
}

DeploymentAllocHealthRequest is used to set the health of a set of allocations as part of a deployment.

func (*DeploymentAllocHealthRequest) CodecDecodeSelf

func (x *DeploymentAllocHealthRequest) CodecDecodeSelf(d *codec1978.Decoder)

func (*DeploymentAllocHealthRequest) CodecEncodeSelf

func (x *DeploymentAllocHealthRequest) CodecEncodeSelf(e *codec1978.Encoder)

type DeploymentDeleteRequest

type DeploymentDeleteRequest struct {
	Deployments []string
	WriteRequest
}

DeploymentDeleteRequest is used for deleting deployments.

func (*DeploymentDeleteRequest) CodecDecodeSelf

func (x *DeploymentDeleteRequest) CodecDecodeSelf(d *codec1978.Decoder)

func (*DeploymentDeleteRequest) CodecEncodeSelf

func (x *DeploymentDeleteRequest) CodecEncodeSelf(e *codec1978.Encoder)

type DeploymentFailRequest

type DeploymentFailRequest struct {
	DeploymentID string
	WriteRequest
}

DeploymentFailRequest is used to fail a particular deployment

func (*DeploymentFailRequest) CodecDecodeSelf

func (x *DeploymentFailRequest) CodecDecodeSelf(d *codec1978.Decoder)

func (*DeploymentFailRequest) CodecEncodeSelf

func (x *DeploymentFailRequest) CodecEncodeSelf(e *codec1978.Encoder)

type DeploymentListRequest

type DeploymentListRequest struct {
	QueryOptions
}

DeploymentListRequest is used to list the deployments

func (*DeploymentListRequest) CodecDecodeSelf

func (x *DeploymentListRequest) CodecDecodeSelf(d *codec1978.Decoder)

func (*DeploymentListRequest) CodecEncodeSelf

func (x *DeploymentListRequest) CodecEncodeSelf(e *codec1978.Encoder)

type DeploymentListResponse

type DeploymentListResponse struct {
	Deployments []*Deployment
	QueryMeta
}

DeploymentListResponse is used for a list request

func (*DeploymentListResponse) CodecDecodeSelf

func (x *DeploymentListResponse) CodecDecodeSelf(d *codec1978.Decoder)

func (*DeploymentListResponse) CodecEncodeSelf

func (x *DeploymentListResponse) CodecEncodeSelf(e *codec1978.Encoder)

type DeploymentPauseRequest

type DeploymentPauseRequest struct {
	DeploymentID string

	// Pause sets the pause status
	Pause bool

	WriteRequest
}

DeploymentPauseRequest is used to pause a deployment

func (*DeploymentPauseRequest) CodecDecodeSelf

func (x *DeploymentPauseRequest) CodecDecodeSelf(d *codec1978.Decoder)

func (*DeploymentPauseRequest) CodecEncodeSelf

func (x *DeploymentPauseRequest) CodecEncodeSelf(e *codec1978.Encoder)

type DeploymentPromoteRequest

type DeploymentPromoteRequest struct {
	DeploymentID string

	// All is to promote all task groups
	All bool

	// Groups is used to set the promotion status per task group
	Groups []string

	WriteRequest
}

DeploymentPromoteRequest is used to promote task groups in a deployment

func (*DeploymentPromoteRequest) CodecDecodeSelf

func (x *DeploymentPromoteRequest) CodecDecodeSelf(d *codec1978.Decoder)

func (*DeploymentPromoteRequest) CodecEncodeSelf

func (x *DeploymentPromoteRequest) CodecEncodeSelf(e *codec1978.Encoder)

type DeploymentSpecificRequest

type DeploymentSpecificRequest struct {
	DeploymentID string
	QueryOptions
}

DeploymentSpecificRequest is used to make a request specific to a particular deployment

func (*DeploymentSpecificRequest) CodecDecodeSelf

func (x *DeploymentSpecificRequest) CodecDecodeSelf(d *codec1978.Decoder)

func (*DeploymentSpecificRequest) CodecEncodeSelf

func (x *DeploymentSpecificRequest) CodecEncodeSelf(e *codec1978.Encoder)

type DeploymentState

type DeploymentState struct {
	// AutoRevert marks whether the task group has indicated the job should be
	// reverted on failure
	AutoRevert bool

	// Promoted marks whether the canaries have been promoted
	Promoted bool

	// PlacedCanaries is the set of placed canary allocations
	PlacedCanaries []string

	// DesiredCanaries is the number of canaries that should be created.
	DesiredCanaries int

	// DesiredTotal is the total number of allocations that should be created as
	// part of the deployment.
	DesiredTotal int

	// PlacedAllocs is the number of allocations that have been placed
	PlacedAllocs int

	// HealthyAllocs is the number of allocations that have been marked healthy.
	HealthyAllocs int

	// UnhealthyAllocs are allocations that have been marked as unhealthy.
	UnhealthyAllocs int
}

DeploymentState tracks the state of a deployment for a given task group.

func (*DeploymentState) CodecDecodeSelf

func (x *DeploymentState) CodecDecodeSelf(d *codec1978.Decoder)

func (*DeploymentState) CodecEncodeSelf

func (x *DeploymentState) CodecEncodeSelf(e *codec1978.Encoder)

func (*DeploymentState) Copy

func (d *DeploymentState) Copy() *DeploymentState

func (*DeploymentState) GoString

func (d *DeploymentState) GoString() string

type DeploymentStatusUpdate

type DeploymentStatusUpdate struct {
	// DeploymentID is the ID of the deployment to update
	DeploymentID string

	// Status is the new status of the deployment.
	Status string

	// StatusDescription is the new status description of the deployment.
	StatusDescription string
}

DeploymentStatusUpdate is used to update the status of a given deployment

func (*DeploymentStatusUpdate) CodecDecodeSelf

func (x *DeploymentStatusUpdate) CodecDecodeSelf(d *codec1978.Decoder)

func (*DeploymentStatusUpdate) CodecEncodeSelf

func (x *DeploymentStatusUpdate) CodecEncodeSelf(e *codec1978.Encoder)

type DeploymentStatusUpdateRequest

type DeploymentStatusUpdateRequest struct {
	// Eval, if set, is used to create an evaluation at the same time as
	// updating the status of a deployment.
	Eval *Evaluation

	// DeploymentUpdate is a status update to apply to the given
	// deployment.
	DeploymentUpdate *DeploymentStatusUpdate

	// Job is used to optionally upsert a job. This is used when setting the
	// allocation health results in a deployment failure and the deployment
	// auto-reverts to the latest stable job.
	Job *Job
}

DeploymentStatusUpdateRequest is used to update the status of a deployment as well as optionally creating an evaluation atomically.

func (*DeploymentStatusUpdateRequest) CodecDecodeSelf

func (x *DeploymentStatusUpdateRequest) CodecDecodeSelf(d *codec1978.Decoder)

func (*DeploymentStatusUpdateRequest) CodecEncodeSelf

func (x *DeploymentStatusUpdateRequest) CodecEncodeSelf(e *codec1978.Encoder)

type DeploymentUpdateResponse

type DeploymentUpdateResponse struct {
	EvalID                string
	EvalCreateIndex       uint64
	DeploymentModifyIndex uint64

	// RevertedJobVersion is the version the job was reverted to. If unset, the
	// job wasn't reverted
	RevertedJobVersion *uint64

	WriteMeta
}

DeploymentUpdateResponse is used to respond to a deployment change. The response will include the modify index of the deployment as well as details of any triggered evaluation.

func (*DeploymentUpdateResponse) CodecDecodeSelf

func (x *DeploymentUpdateResponse) CodecDecodeSelf(d *codec1978.Decoder)

func (*DeploymentUpdateResponse) CodecEncodeSelf

func (x *DeploymentUpdateResponse) CodecEncodeSelf(e *codec1978.Encoder)

type DeriveVaultTokenRequest

type DeriveVaultTokenRequest struct {
	NodeID   string
	SecretID string
	AllocID  string
	Tasks    []string
	QueryOptions
}

DeriveVaultTokenRequest is used to request wrapped Vault tokens for the following tasks in the given allocation

func (*DeriveVaultTokenRequest) CodecDecodeSelf

func (x *DeriveVaultTokenRequest) CodecDecodeSelf(d *codec1978.Decoder)

func (*DeriveVaultTokenRequest) CodecEncodeSelf

func (x *DeriveVaultTokenRequest) CodecEncodeSelf(e *codec1978.Encoder)

type DeriveVaultTokenResponse

type DeriveVaultTokenResponse struct {
	// Tasks is a mapping between the task name and the wrapped token
	Tasks map[string]string

	// Error stores any error that occurred. Errors are stored here so we can
	// communicate whether it is retriable
	Error *RecoverableError

	QueryMeta
}

DeriveVaultTokenResponse returns the wrapped tokens for each requested task

func (*DeriveVaultTokenResponse) CodecDecodeSelf

func (x *DeriveVaultTokenResponse) CodecDecodeSelf(d *codec1978.Decoder)

func (*DeriveVaultTokenResponse) CodecEncodeSelf

func (x *DeriveVaultTokenResponse) CodecEncodeSelf(e *codec1978.Encoder)

type DesiredUpdates

type DesiredUpdates struct {
	Ignore            uint64
	Place             uint64
	Migrate           uint64
	Stop              uint64
	InPlaceUpdate     uint64
	DestructiveUpdate uint64
	Canary            uint64
}

DesiredUpdates is the set of changes the scheduler would like to make given sufficient resources and cluster capacity.

func (*DesiredUpdates) CodecDecodeSelf

func (x *DesiredUpdates) CodecDecodeSelf(d *codec1978.Decoder)

func (*DesiredUpdates) CodecEncodeSelf

func (x *DesiredUpdates) CodecEncodeSelf(e *codec1978.Encoder)

func (*DesiredUpdates) GoString

func (d *DesiredUpdates) GoString() string

type DiffType

type DiffType string

DiffType denotes the type of a diff object.

var (
	DiffTypeNone    DiffType = "None"
	DiffTypeAdded   DiffType = "Added"
	DiffTypeDeleted DiffType = "Deleted"
	DiffTypeEdited  DiffType = "Edited"
)

func (DiffType) Less

func (d DiffType) Less(other DiffType) bool

type DispatchPayloadConfig

type DispatchPayloadConfig struct {
	// File specifies a relative path to where the input data should be written
	File string
}

DispatchPayloadConfig configures how a task gets its input from a job dispatch

func (*DispatchPayloadConfig) CodecDecodeSelf

func (x *DispatchPayloadConfig) CodecDecodeSelf(d *codec1978.Decoder)

func (*DispatchPayloadConfig) CodecEncodeSelf

func (x *DispatchPayloadConfig) CodecEncodeSelf(e *codec1978.Encoder)

func (*DispatchPayloadConfig) Copy

func (*DispatchPayloadConfig) Validate

func (d *DispatchPayloadConfig) Validate() error

type EphemeralDisk

type EphemeralDisk struct {
	// Sticky indicates whether the allocation is sticky to a node
	Sticky bool

	// SizeMB is the size of the local disk
	SizeMB int

	// Migrate determines if Nomad client should migrate the allocation dir for
	// sticky allocations
	Migrate bool
}

EphemeralDisk is an ephemeral disk object

func DefaultEphemeralDisk

func DefaultEphemeralDisk() *EphemeralDisk

DefaultEphemeralDisk returns a EphemeralDisk with default configurations

func (*EphemeralDisk) CodecDecodeSelf

func (x *EphemeralDisk) CodecDecodeSelf(d *codec1978.Decoder)

func (*EphemeralDisk) CodecEncodeSelf

func (x *EphemeralDisk) CodecEncodeSelf(e *codec1978.Encoder)

func (*EphemeralDisk) Copy

func (d *EphemeralDisk) Copy() *EphemeralDisk

Copy copies the EphemeralDisk struct and returns a new one

func (*EphemeralDisk) Validate

func (d *EphemeralDisk) Validate() error

Validate validates EphemeralDisk

type EvalAckRequest

type EvalAckRequest struct {
	EvalID string
	Token  string
	WriteRequest
}

EvalAckRequest is used to Ack/Nack a specific evaluation

func (*EvalAckRequest) CodecDecodeSelf

func (x *EvalAckRequest) CodecDecodeSelf(d *codec1978.Decoder)

func (*EvalAckRequest) CodecEncodeSelf

func (x *EvalAckRequest) CodecEncodeSelf(e *codec1978.Encoder)

type EvalAllocationsResponse

type EvalAllocationsResponse struct {
	Allocations []*AllocListStub
	QueryMeta
}

EvalAllocationsResponse is used to return the allocations for an evaluation

func (*EvalAllocationsResponse) CodecDecodeSelf

func (x *EvalAllocationsResponse) CodecDecodeSelf(d *codec1978.Decoder)

func (*EvalAllocationsResponse) CodecEncodeSelf

func (x *EvalAllocationsResponse) CodecEncodeSelf(e *codec1978.Encoder)

type EvalDeleteRequest

type EvalDeleteRequest struct {
	Evals  []string
	Allocs []string
	WriteRequest
}

EvalDeleteRequest is used for deleting an evaluation.

func (*EvalDeleteRequest) CodecDecodeSelf

func (x *EvalDeleteRequest) CodecDecodeSelf(d *codec1978.Decoder)

func (*EvalDeleteRequest) CodecEncodeSelf

func (x *EvalDeleteRequest) CodecEncodeSelf(e *codec1978.Encoder)

type EvalDequeueRequest

type EvalDequeueRequest struct {
	Schedulers       []string
	Timeout          time.Duration
	SchedulerVersion uint16
	WriteRequest
}

EvalDequeueRequest is used when we want to dequeue an evaluation

func (*EvalDequeueRequest) CodecDecodeSelf

func (x *EvalDequeueRequest) CodecDecodeSelf(d *codec1978.Decoder)

func (*EvalDequeueRequest) CodecEncodeSelf

func (x *EvalDequeueRequest) CodecEncodeSelf(e *codec1978.Encoder)

type EvalDequeueResponse

type EvalDequeueResponse struct {
	Eval  *Evaluation
	Token string

	// WaitIndex is the Raft index the worker should wait until invoking the
	// scheduler.
	WaitIndex uint64

	QueryMeta
}

EvalDequeueResponse is used to return from a dequeue

func (*EvalDequeueResponse) CodecDecodeSelf

func (x *EvalDequeueResponse) CodecDecodeSelf(d *codec1978.Decoder)

func (*EvalDequeueResponse) CodecEncodeSelf

func (x *EvalDequeueResponse) CodecEncodeSelf(e *codec1978.Encoder)

func (*EvalDequeueResponse) GetWaitIndex

func (e *EvalDequeueResponse) GetWaitIndex() uint64

GetWaitIndex is used to retrieve the Raft index in which state should be at or beyond before invoking the scheduler.

type EvalListRequest

type EvalListRequest struct {
	QueryOptions
}

EvalListRequest is used to list the evaluations

func (*EvalListRequest) CodecDecodeSelf

func (x *EvalListRequest) CodecDecodeSelf(d *codec1978.Decoder)

func (*EvalListRequest) CodecEncodeSelf

func (x *EvalListRequest) CodecEncodeSelf(e *codec1978.Encoder)

type EvalListResponse

type EvalListResponse struct {
	Evaluations []*Evaluation
	QueryMeta
}

EvalListResponse is used for a list request

func (*EvalListResponse) CodecDecodeSelf

func (x *EvalListResponse) CodecDecodeSelf(d *codec1978.Decoder)

func (*EvalListResponse) CodecEncodeSelf

func (x *EvalListResponse) CodecEncodeSelf(e *codec1978.Encoder)

type EvalSpecificRequest

type EvalSpecificRequest struct {
	EvalID string
	QueryOptions
}

EvalSpecificRequest is used when we just need to specify a target evaluation

func (*EvalSpecificRequest) CodecDecodeSelf

func (x *EvalSpecificRequest) CodecDecodeSelf(d *codec1978.Decoder)

func (*EvalSpecificRequest) CodecEncodeSelf

func (x *EvalSpecificRequest) CodecEncodeSelf(e *codec1978.Encoder)

type EvalUpdateRequest

type EvalUpdateRequest struct {
	Evals     []*Evaluation
	EvalToken string
	WriteRequest
}

EvalUpdateRequest is used for upserting evaluations.

func (*EvalUpdateRequest) CodecDecodeSelf

func (x *EvalUpdateRequest) CodecDecodeSelf(d *codec1978.Decoder)

func (*EvalUpdateRequest) CodecEncodeSelf

func (x *EvalUpdateRequest) CodecEncodeSelf(e *codec1978.Encoder)

type Evaluation

type Evaluation struct {
	// ID is a randonly generated UUID used for this evaluation. This
	// is assigned upon the creation of the evaluation.
	ID string

	// Namespace is the namespace the evaluation is created in
	Namespace string

	// Priority is used to control scheduling importance and if this job
	// can preempt other jobs.
	Priority int

	// Type is used to control which schedulers are available to handle
	// this evaluation.
	Type string

	// TriggeredBy is used to give some insight into why this Eval
	// was created. (Job change, node failure, alloc failure, etc).
	TriggeredBy string

	// JobID is the job this evaluation is scoped to. Evaluations cannot
	// be run in parallel for a given JobID, so we serialize on this.
	JobID string

	// JobModifyIndex is the modify index of the job at the time
	// the evaluation was created
	JobModifyIndex uint64

	// NodeID is the node that was affected triggering the evaluation.
	NodeID string

	// NodeModifyIndex is the modify index of the node at the time
	// the evaluation was created
	NodeModifyIndex uint64

	// DeploymentID is the ID of the deployment that triggered the evaluation.
	DeploymentID string

	// Status of the evaluation
	Status string

	// StatusDescription is meant to provide more human useful information
	StatusDescription string

	// Wait is a minimum wait time for running the eval. This is used to
	// support a rolling upgrade.
	Wait time.Duration

	// NextEval is the evaluation ID for the eval created to do a followup.
	// This is used to support rolling upgrades, where we need a chain of evaluations.
	NextEval string

	// PreviousEval is the evaluation ID for the eval creating this one to do a followup.
	// This is used to support rolling upgrades, where we need a chain of evaluations.
	PreviousEval string

	// BlockedEval is the evaluation ID for a created blocked eval. A
	// blocked eval will be created if all allocations could not be placed due
	// to constraints or lacking resources.
	BlockedEval string

	// FailedTGAllocs are task groups which have allocations that could not be
	// made, but the metrics are persisted so that the user can use the feedback
	// to determine the cause.
	FailedTGAllocs map[string]*AllocMetric

	// ClassEligibility tracks computed node classes that have been explicitly
	// marked as eligible or ineligible.
	ClassEligibility map[string]bool

	// QuotaLimitReached marks whether a quota limit was reached for the
	// evaluation.
	QuotaLimitReached string

	// EscapedComputedClass marks whether the job has constraints that are not
	// captured by computed node classes.
	EscapedComputedClass bool

	// AnnotatePlan triggers the scheduler to provide additional annotations
	// during the evaluation. This should not be set during normal operations.
	AnnotatePlan bool

	// QueuedAllocations is the number of unplaced allocations at the time the
	// evaluation was processed. The map is keyed by Task Group names.
	QueuedAllocations map[string]int

	// LeaderACL provides the ACL token to when issuing RPCs back to the
	// leader. This will be a valid management token as long as the leader is
	// active. This should not ever be exposed via the API.
	LeaderACL string

	// SnapshotIndex is the Raft index of the snapshot used to process the
	// evaluation. As such it will only be set once it has gone through the
	// scheduler.
	SnapshotIndex uint64

	// Raft Indexes
	CreateIndex uint64
	ModifyIndex uint64
}

Evaluation is used anytime we need to apply business logic as a result of a change to our desired state (job specification) or the emergent state (registered nodes). When the inputs change, we need to "evaluate" them, potentially taking action (allocation of work) or doing nothing if the state of the world does not require it.

func (*Evaluation) CodecDecodeSelf

func (x *Evaluation) CodecDecodeSelf(d *codec1978.Decoder)

func (*Evaluation) CodecEncodeSelf

func (x *Evaluation) CodecEncodeSelf(e *codec1978.Encoder)

func (*Evaluation) Copy

func (e *Evaluation) Copy() *Evaluation

func (*Evaluation) CreateBlockedEval

func (e *Evaluation) CreateBlockedEval(classEligibility map[string]bool,
	escaped bool, quotaReached string) *Evaluation

CreateBlockedEval creates a blocked evaluation to followup this eval to place any failed allocations. It takes the classes marked explicitly eligible or ineligible, whether the job has escaped computed node classes and whether the quota limit was reached.

func (*Evaluation) CreateFailedFollowUpEval

func (e *Evaluation) CreateFailedFollowUpEval(wait time.Duration) *Evaluation

CreateFailedFollowUpEval creates a follow up evaluation when the current one has been marked as failed because it has hit the delivery limit and will not be retried by the eval_broker.

func (*Evaluation) GoString

func (e *Evaluation) GoString() string

func (*Evaluation) MakePlan

func (e *Evaluation) MakePlan(j *Job) *Plan

MakePlan is used to make a plan from the given evaluation for a given Job

func (*Evaluation) NextRollingEval

func (e *Evaluation) NextRollingEval(wait time.Duration) *Evaluation

NextRollingEval creates an evaluation to followup this eval for rolling updates

func (*Evaluation) ShouldBlock

func (e *Evaluation) ShouldBlock() bool

ShouldBlock checks if a given evaluation should be entered into the blocked eval tracker.

func (*Evaluation) ShouldEnqueue

func (e *Evaluation) ShouldEnqueue() bool

ShouldEnqueue checks if a given evaluation should be enqueued into the eval_broker

func (*Evaluation) TerminalStatus

func (e *Evaluation) TerminalStatus() bool

TerminalStatus returns if the current status is terminal and will no longer transition.

type FieldDiff

type FieldDiff struct {
	Type        DiffType
	Name        string
	Old, New    string
	Annotations []string
}

func (*FieldDiff) GoString

func (f *FieldDiff) GoString() string

func (*FieldDiff) Less

func (f *FieldDiff) Less(other *FieldDiff) bool

type FieldDiffs

type FieldDiffs []*FieldDiff

For sorting FieldDiffs

func (FieldDiffs) Len

func (f FieldDiffs) Len() int

func (FieldDiffs) Less

func (f FieldDiffs) Less(i, j int) bool

func (FieldDiffs) Swap

func (f FieldDiffs) Swap(i, j int)

type GenericRequest

type GenericRequest struct {
	QueryOptions
}

GenericRequest is used to request where no specific information is needed.

func (*GenericRequest) CodecDecodeSelf

func (x *GenericRequest) CodecDecodeSelf(d *codec1978.Decoder)

func (*GenericRequest) CodecEncodeSelf

func (x *GenericRequest) CodecEncodeSelf(e *codec1978.Encoder)

type GenericResponse

type GenericResponse struct {
	WriteMeta
}

GenericResponse is used to respond to a request where no specific response information is needed.

func (*GenericResponse) CodecDecodeSelf

func (x *GenericResponse) CodecDecodeSelf(d *codec1978.Decoder)

func (*GenericResponse) CodecEncodeSelf

func (x *GenericResponse) CodecEncodeSelf(e *codec1978.Encoder)

type Job

type Job struct {
	// Stop marks whether the user has stopped the job. A stopped job will
	// have all created allocations stopped and acts as a way to stop a job
	// without purging it from the system. This allows existing allocs to be
	// queried and the job to be inspected as it is being killed.
	Stop bool

	// Region is the Nomad region that handles scheduling this job
	Region string

	// Namespace is the namespace the job is submitted into.
	Namespace string

	// ID is a unique identifier for the job per region. It can be
	// specified hierarchically like LineOfBiz/OrgName/Team/Project
	ID string

	// ParentID is the unique identifier of the job that spawned this job.
	ParentID string

	// Name is the logical name of the job used to refer to it. This is unique
	// per region, but not unique globally.
	Name string

	// Type is used to control various behaviors about the job. Most jobs
	// are service jobs, meaning they are expected to be long lived.
	// Some jobs are batch oriented meaning they run and then terminate.
	// This can be extended in the future to support custom schedulers.
	Type string

	// Priority is used to control scheduling importance and if this job
	// can preempt other jobs.
	Priority int

	// AllAtOnce is used to control if incremental scheduling of task groups
	// is allowed or if we must do a gang scheduling of the entire job. This
	// can slow down larger jobs if resources are not available.
	AllAtOnce bool

	// Datacenters contains all the datacenters this job is allowed to span
	Datacenters []string

	// Constraints can be specified at a job level and apply to
	// all the task groups and tasks.
	Constraints []*Constraint

	// TaskGroups are the collections of task groups that this job needs
	// to run. Each task group is an atomic unit of scheduling and placement.
	TaskGroups []*TaskGroup

	// COMPAT: Remove in 0.7.0. Stagger is deprecated in 0.6.0.
	Update UpdateStrategy

	// Periodic is used to define the interval the job is run at.
	Periodic *PeriodicConfig

	// ParameterizedJob is used to specify the job as a parameterized job
	// for dispatching.
	ParameterizedJob *ParameterizedJobConfig

	// Payload is the payload supplied when the job was dispatched.
	Payload []byte

	// Meta is used to associate arbitrary metadata with this
	// job. This is opaque to Nomad.
	Meta map[string]string

	// VaultToken is the Vault token that proves the submitter of the job has
	// access to the specified Vault policies. This field is only used to
	// transfer the token and is not stored after Job submission.
	VaultToken string

	// Job status
	Status string

	// StatusDescription is meant to provide more human useful information
	StatusDescription string

	// Stable marks a job as stable. Stability is only defined on "service" and
	// "system" jobs. The stability of a job will be set automatically as part
	// of a deployment and can be manually set via APIs.
	Stable bool

	// Version is a monitonically increasing version number that is incremened
	// on each job register.
	Version uint64

	// SubmitTime is the time at which the job was submitted as a UnixNano in
	// UTC
	SubmitTime int64

	// Raft Indexes
	CreateIndex    uint64
	ModifyIndex    uint64
	JobModifyIndex uint64
}

Job is the scope of a scheduling request to Nomad. It is the largest scoped object, and is a named collection of task groups. Each task group is further composed of tasks. A task group (TG) is the unit of scheduling however.

func (*Job) Canonicalize

func (j *Job) Canonicalize() (warnings error)

Canonicalize is used to canonicalize fields in the Job. This should be called when registering a Job. A set of warnings are returned if the job was changed in anyway that the user should be made aware of.

func (*Job) CodecDecodeSelf

func (x *Job) CodecDecodeSelf(d *codec1978.Decoder)

func (*Job) CodecEncodeSelf

func (x *Job) CodecEncodeSelf(e *codec1978.Encoder)

func (*Job) CombinedTaskMeta

func (j *Job) CombinedTaskMeta(groupName, taskName string) map[string]string

CombinedTaskMeta takes a TaskGroup and Task name and returns the combined meta data for the task. When joining Job, Group and Task Meta, the precedence is by deepest scope (Task > Group > Job).

func (*Job) Copy

func (j *Job) Copy() *Job

Copy returns a deep copy of the Job. It is expected that callers use recover. This job can panic if the deep copy failed as it uses reflection.

func (*Job) Diff

func (j *Job) Diff(other *Job, contextual bool) (*JobDiff, error)

Diff returns a diff of two jobs and a potential error if the Jobs are not diffable. If contextual diff is enabled, objects within the job will contain field information even if unchanged.

func (*Job) HasUpdateStrategy

func (j *Job) HasUpdateStrategy() bool

HasUpdateStrategy returns if any task group in the job has an update strategy

func (*Job) IsParameterized

func (j *Job) IsParameterized() bool

IsParameterized returns whether a job is parameterized job.

func (*Job) IsPeriodic

func (j *Job) IsPeriodic() bool

IsPeriodic returns whether a job is periodic.

func (*Job) IsPeriodicActive

func (j *Job) IsPeriodicActive() bool

IsPeriodicActive returns whether the job is an active periodic job that will create child jobs

func (*Job) LookupTaskGroup

func (j *Job) LookupTaskGroup(name string) *TaskGroup

LookupTaskGroup finds a task group by name

func (*Job) RequiredSignals

func (j *Job) RequiredSignals() map[string]map[string][]string

RequiredSignals returns a mapping of task groups to tasks to their required set of signals

func (*Job) SetSubmitTime

func (j *Job) SetSubmitTime()

func (*Job) SpecChanged

func (j *Job) SpecChanged(new *Job) bool

SpecChanged determines if the functional specification has changed between two job versions.

func (*Job) Stopped

func (j *Job) Stopped() bool

Stopped returns if a job is stopped.

func (*Job) Stub

func (j *Job) Stub(summary *JobSummary) *JobListStub

Stub is used to return a summary of the job

func (*Job) Validate

func (j *Job) Validate() error

Validate is used to sanity check a job input

func (*Job) VaultPolicies

func (j *Job) VaultPolicies() map[string]map[string]*Vault

VaultPolicies returns the set of Vault policies per task group, per task

func (*Job) Warnings

func (j *Job) Warnings() error

Warnings returns a list of warnings that may be from dubious settings or deprecation warnings.

type JobAllocationsResponse

type JobAllocationsResponse struct {
	Allocations []*AllocListStub
	QueryMeta
}

JobAllocationsResponse is used to return the allocations for a job

func (*JobAllocationsResponse) CodecDecodeSelf

func (x *JobAllocationsResponse) CodecDecodeSelf(d *codec1978.Decoder)

func (*JobAllocationsResponse) CodecEncodeSelf

func (x *JobAllocationsResponse) CodecEncodeSelf(e *codec1978.Encoder)

type JobChildrenSummary

type JobChildrenSummary struct {
	Pending int64
	Running int64
	Dead    int64
}

JobChildrenSummary contains the summary of children job statuses

func (*JobChildrenSummary) CodecDecodeSelf

func (x *JobChildrenSummary) CodecDecodeSelf(d *codec1978.Decoder)

func (*JobChildrenSummary) CodecEncodeSelf

func (x *JobChildrenSummary) CodecEncodeSelf(e *codec1978.Encoder)

func (*JobChildrenSummary) Copy

Copy returns a new copy of a JobChildrenSummary

type JobDeregisterRequest

type JobDeregisterRequest struct {
	JobID string

	// Purge controls whether the deregister purges the job from the system or
	// whether the job is just marked as stopped and will be removed by the
	// garbage collector
	Purge bool

	WriteRequest
}

JobDeregisterRequest is used for Job.Deregister endpoint to deregister a job as being a schedulable entity.

func (*JobDeregisterRequest) CodecDecodeSelf

func (x *JobDeregisterRequest) CodecDecodeSelf(d *codec1978.Decoder)

func (*JobDeregisterRequest) CodecEncodeSelf

func (x *JobDeregisterRequest) CodecEncodeSelf(e *codec1978.Encoder)

type JobDeregisterResponse

type JobDeregisterResponse struct {
	EvalID          string
	EvalCreateIndex uint64
	JobModifyIndex  uint64
	QueryMeta
}

JobDeregisterResponse is used to respond to a job deregistration

func (*JobDeregisterResponse) CodecDecodeSelf

func (x *JobDeregisterResponse) CodecDecodeSelf(d *codec1978.Decoder)

func (*JobDeregisterResponse) CodecEncodeSelf

func (x *JobDeregisterResponse) CodecEncodeSelf(e *codec1978.Encoder)

type JobDiff

type JobDiff struct {
	Type       DiffType
	ID         string
	Fields     []*FieldDiff
	Objects    []*ObjectDiff
	TaskGroups []*TaskGroupDiff
}

JobDiff contains the diff of two jobs.

func (*JobDiff) GoString

func (j *JobDiff) GoString() string

type JobDispatchRequest

type JobDispatchRequest struct {
	JobID   string
	Payload []byte
	Meta    map[string]string
	WriteRequest
}

JobDispatchRequest is used to dispatch a job based on a parameterized job

func (*JobDispatchRequest) CodecDecodeSelf

func (x *JobDispatchRequest) CodecDecodeSelf(d *codec1978.Decoder)

func (*JobDispatchRequest) CodecEncodeSelf

func (x *JobDispatchRequest) CodecEncodeSelf(e *codec1978.Encoder)

type JobDispatchResponse

type JobDispatchResponse struct {
	DispatchedJobID string
	EvalID          string
	EvalCreateIndex uint64
	JobCreateIndex  uint64
	WriteMeta
}

func (*JobDispatchResponse) CodecDecodeSelf

func (x *JobDispatchResponse) CodecDecodeSelf(d *codec1978.Decoder)

func (*JobDispatchResponse) CodecEncodeSelf

func (x *JobDispatchResponse) CodecEncodeSelf(e *codec1978.Encoder)

type JobEvaluateRequest

type JobEvaluateRequest struct {
	JobID string
	WriteRequest
}

JobEvaluateRequest is used when we just need to re-evaluate a target job

func (*JobEvaluateRequest) CodecDecodeSelf

func (x *JobEvaluateRequest) CodecDecodeSelf(d *codec1978.Decoder)

func (*JobEvaluateRequest) CodecEncodeSelf

func (x *JobEvaluateRequest) CodecEncodeSelf(e *codec1978.Encoder)

type JobEvaluationsResponse

type JobEvaluationsResponse struct {
	Evaluations []*Evaluation
	QueryMeta
}

JobEvaluationsResponse is used to return the evaluations for a job

func (*JobEvaluationsResponse) CodecDecodeSelf

func (x *JobEvaluationsResponse) CodecDecodeSelf(d *codec1978.Decoder)

func (*JobEvaluationsResponse) CodecEncodeSelf

func (x *JobEvaluationsResponse) CodecEncodeSelf(e *codec1978.Encoder)

type JobListRequest

type JobListRequest struct {
	QueryOptions
}

JobListRequest is used to parameterize a list request

func (*JobListRequest) CodecDecodeSelf

func (x *JobListRequest) CodecDecodeSelf(d *codec1978.Decoder)

func (*JobListRequest) CodecEncodeSelf

func (x *JobListRequest) CodecEncodeSelf(e *codec1978.Encoder)

type JobListResponse

type JobListResponse struct {
	Jobs []*JobListStub
	QueryMeta
}

JobListResponse is used for a list request

func (*JobListResponse) CodecDecodeSelf

func (x *JobListResponse) CodecDecodeSelf(d *codec1978.Decoder)

func (*JobListResponse) CodecEncodeSelf

func (x *JobListResponse) CodecEncodeSelf(e *codec1978.Encoder)

type JobListStub

type JobListStub struct {
	ID                string
	ParentID          string
	Name              string
	Type              string
	Priority          int
	Periodic          bool
	ParameterizedJob  bool
	Stop              bool
	Status            string
	StatusDescription string
	JobSummary        *JobSummary
	CreateIndex       uint64
	ModifyIndex       uint64
	JobModifyIndex    uint64
	SubmitTime        int64
}

JobListStub is used to return a subset of job information for the job list

func (*JobListStub) CodecDecodeSelf

func (x *JobListStub) CodecDecodeSelf(d *codec1978.Decoder)

func (*JobListStub) CodecEncodeSelf

func (x *JobListStub) CodecEncodeSelf(e *codec1978.Encoder)

type JobPlanRequest

type JobPlanRequest struct {
	Job  *Job
	Diff bool // Toggles an annotated diff
	// PolicyOverride is set when the user is attempting to override any policies
	PolicyOverride bool
	WriteRequest
}

JobPlanRequest is used for the Job.Plan endpoint to trigger a dry-run evaluation of the Job.

func (*JobPlanRequest) CodecDecodeSelf

func (x *JobPlanRequest) CodecDecodeSelf(d *codec1978.Decoder)

func (*JobPlanRequest) CodecEncodeSelf

func (x *JobPlanRequest) CodecEncodeSelf(e *codec1978.Encoder)

type JobPlanResponse

type JobPlanResponse struct {
	// Annotations stores annotations explaining decisions the scheduler made.
	Annotations *PlanAnnotations

	// FailedTGAllocs is the placement failures per task group.
	FailedTGAllocs map[string]*AllocMetric

	// JobModifyIndex is the modification index of the job. The value can be
	// used when running `nomad run` to ensure that the Job wasn’t modified
	// since the last plan. If the job is being created, the value is zero.
	JobModifyIndex uint64

	// CreatedEvals is the set of evaluations created by the scheduler. The
	// reasons for this can be rolling-updates or blocked evals.
	CreatedEvals []*Evaluation

	// Diff contains the diff of the job and annotations on whether the change
	// causes an in-place update or create/destroy
	Diff *JobDiff

	// NextPeriodicLaunch is the time duration till the job would be launched if
	// submitted.
	NextPeriodicLaunch time.Time

	// Warnings contains any warnings about the given job. These may include
	// deprecation warnings.
	Warnings string

	WriteMeta
}

JobPlanResponse is used to respond to a job plan request

func (*JobPlanResponse) CodecDecodeSelf

func (x *JobPlanResponse) CodecDecodeSelf(d *codec1978.Decoder)

func (*JobPlanResponse) CodecEncodeSelf

func (x *JobPlanResponse) CodecEncodeSelf(e *codec1978.Encoder)

type JobRegisterRequest

type JobRegisterRequest struct {
	Job *Job

	// If EnforceIndex is set then the job will only be registered if the passed
	// JobModifyIndex matches the current Jobs index. If the index is zero, the
	// register only occurs if the job is new.
	EnforceIndex   bool
	JobModifyIndex uint64

	// PolicyOverride is set when the user is attempting to override any policies
	PolicyOverride bool

	WriteRequest
}

JobRegisterRequest is used for Job.Register endpoint to register a job as being a schedulable entity.

func (*JobRegisterRequest) CodecDecodeSelf

func (x *JobRegisterRequest) CodecDecodeSelf(d *codec1978.Decoder)

func (*JobRegisterRequest) CodecEncodeSelf

func (x *JobRegisterRequest) CodecEncodeSelf(e *codec1978.Encoder)

type JobRegisterResponse

type JobRegisterResponse struct {
	EvalID          string
	EvalCreateIndex uint64
	JobModifyIndex  uint64

	// Warnings contains any warnings about the given job. These may include
	// deprecation warnings.
	Warnings string

	QueryMeta
}

JobRegisterResponse is used to respond to a job registration

func (*JobRegisterResponse) CodecDecodeSelf

func (x *JobRegisterResponse) CodecDecodeSelf(d *codec1978.Decoder)

func (*JobRegisterResponse) CodecEncodeSelf

func (x *JobRegisterResponse) CodecEncodeSelf(e *codec1978.Encoder)

type JobRevertRequest

type JobRevertRequest struct {
	// JobID is the ID of the job  being reverted
	JobID string

	// JobVersion the version to revert to.
	JobVersion uint64

	// EnforcePriorVersion if set will enforce that the job is at the given
	// version before reverting.
	EnforcePriorVersion *uint64

	WriteRequest
}

JobRevertRequest is used to revert a job to a prior version.

func (*JobRevertRequest) CodecDecodeSelf

func (x *JobRevertRequest) CodecDecodeSelf(d *codec1978.Decoder)

func (*JobRevertRequest) CodecEncodeSelf

func (x *JobRevertRequest) CodecEncodeSelf(e *codec1978.Encoder)

type JobSpecificRequest

type JobSpecificRequest struct {
	JobID     string
	AllAllocs bool
	QueryOptions
}

JobSpecificRequest is used when we just need to specify a target job

func (*JobSpecificRequest) CodecDecodeSelf

func (x *JobSpecificRequest) CodecDecodeSelf(d *codec1978.Decoder)

func (*JobSpecificRequest) CodecEncodeSelf

func (x *JobSpecificRequest) CodecEncodeSelf(e *codec1978.Encoder)

type JobStabilityRequest

type JobStabilityRequest struct {
	// Job to set the stability on
	JobID      string
	JobVersion uint64

	// Set the stability
	Stable bool
	WriteRequest
}

JobStabilityRequest is used to marked a job as stable.

func (*JobStabilityRequest) CodecDecodeSelf

func (x *JobStabilityRequest) CodecDecodeSelf(d *codec1978.Decoder)

func (*JobStabilityRequest) CodecEncodeSelf

func (x *JobStabilityRequest) CodecEncodeSelf(e *codec1978.Encoder)

type JobStabilityResponse

type JobStabilityResponse struct {
	WriteMeta
}

JobStabilityResponse is the response when marking a job as stable.

func (*JobStabilityResponse) CodecDecodeSelf

func (x *JobStabilityResponse) CodecDecodeSelf(d *codec1978.Decoder)

func (*JobStabilityResponse) CodecEncodeSelf

func (x *JobStabilityResponse) CodecEncodeSelf(e *codec1978.Encoder)

type JobSummary

type JobSummary struct {
	// JobID is the ID of the job the summary is for
	JobID string

	// Namespace is the namespace of the job and its summary
	Namespace string

	// Summmary contains the summary per task group for the Job
	Summary map[string]TaskGroupSummary

	// Children contains a summary for the children of this job.
	Children *JobChildrenSummary

	// Raft Indexes
	CreateIndex uint64
	ModifyIndex uint64
}

JobSummary summarizes the state of the allocations of a job

func (*JobSummary) CodecDecodeSelf

func (x *JobSummary) CodecDecodeSelf(d *codec1978.Decoder)

func (*JobSummary) CodecEncodeSelf

func (x *JobSummary) CodecEncodeSelf(e *codec1978.Encoder)

func (*JobSummary) Copy

func (js *JobSummary) Copy() *JobSummary

Copy returns a new copy of JobSummary

type JobSummaryRequest

type JobSummaryRequest struct {
	JobID string
	QueryOptions
}

JobSummaryRequest is used when we just need to get a specific job summary

func (*JobSummaryRequest) CodecDecodeSelf

func (x *JobSummaryRequest) CodecDecodeSelf(d *codec1978.Decoder)

func (*JobSummaryRequest) CodecEncodeSelf

func (x *JobSummaryRequest) CodecEncodeSelf(e *codec1978.Encoder)

type JobSummaryResponse

type JobSummaryResponse struct {
	JobSummary *JobSummary
	QueryMeta
}

JobSummaryResponse is used to return a single job summary

func (*JobSummaryResponse) CodecDecodeSelf

func (x *JobSummaryResponse) CodecDecodeSelf(d *codec1978.Decoder)

func (*JobSummaryResponse) CodecEncodeSelf

func (x *JobSummaryResponse) CodecEncodeSelf(e *codec1978.Encoder)

type JobValidateRequest

type JobValidateRequest struct {
	Job *Job
	WriteRequest
}

JobValidateRequest is used to validate a job

func (*JobValidateRequest) CodecDecodeSelf

func (x *JobValidateRequest) CodecDecodeSelf(d *codec1978.Decoder)

func (*JobValidateRequest) CodecEncodeSelf

func (x *JobValidateRequest) CodecEncodeSelf(e *codec1978.Encoder)

type JobValidateResponse

type JobValidateResponse struct {
	// DriverConfigValidated indicates whether the agent validated the driver
	// config
	DriverConfigValidated bool

	// ValidationErrors is a list of validation errors
	ValidationErrors []string

	// Error is a string version of any error that may have occurred
	Error string

	// Warnings contains any warnings about the given job. These may include
	// deprecation warnings.
	Warnings string
}

JobValidateResponse is the response from validate request

func (*JobValidateResponse) CodecDecodeSelf

func (x *JobValidateResponse) CodecDecodeSelf(d *codec1978.Decoder)

func (*JobValidateResponse) CodecEncodeSelf

func (x *JobValidateResponse) CodecEncodeSelf(e *codec1978.Encoder)

type JobVersionsRequest

type JobVersionsRequest struct {
	JobID string
	Diffs bool
	QueryOptions
}

JobVersionsRequest is used to get a jobs versions

func (*JobVersionsRequest) CodecDecodeSelf

func (x *JobVersionsRequest) CodecDecodeSelf(d *codec1978.Decoder)

func (*JobVersionsRequest) CodecEncodeSelf

func (x *JobVersionsRequest) CodecEncodeSelf(e *codec1978.Encoder)

type JobVersionsResponse

type JobVersionsResponse struct {
	Versions []*Job
	Diffs    []*JobDiff
	QueryMeta
}

JobVersionsResponse is used for a job get versions request

func (*JobVersionsResponse) CodecDecodeSelf

func (x *JobVersionsResponse) CodecDecodeSelf(d *codec1978.Decoder)

func (*JobVersionsResponse) CodecEncodeSelf

func (x *JobVersionsResponse) CodecEncodeSelf(e *codec1978.Encoder)

type KeyringRequest

type KeyringRequest struct {
	Key string
}

KeyringRequest is request objects for serf key operations.

func (*KeyringRequest) CodecDecodeSelf

func (x *KeyringRequest) CodecDecodeSelf(d *codec1978.Decoder)

func (*KeyringRequest) CodecEncodeSelf

func (x *KeyringRequest) CodecEncodeSelf(e *codec1978.Encoder)

type KeyringResponse

type KeyringResponse struct {
	Messages map[string]string
	Keys     map[string]int
	NumNodes int
}

KeyringResponse is a unified key response and can be used for install, remove, use, as well as listing key queries.

func (*KeyringResponse) CodecDecodeSelf

func (x *KeyringResponse) CodecDecodeSelf(d *codec1978.Decoder)

func (*KeyringResponse) CodecEncodeSelf

func (x *KeyringResponse) CodecEncodeSelf(e *codec1978.Encoder)

type LogConfig

type LogConfig struct {
	MaxFiles      int
	MaxFileSizeMB int
}

LogConfig provides configuration for log rotation

func DefaultLogConfig

func DefaultLogConfig() *LogConfig

DefaultLogConfig returns the default LogConfig values.

func (*LogConfig) CodecDecodeSelf

func (x *LogConfig) CodecDecodeSelf(d *codec1978.Decoder)

func (*LogConfig) CodecEncodeSelf

func (x *LogConfig) CodecEncodeSelf(e *codec1978.Encoder)

func (*LogConfig) Validate

func (l *LogConfig) Validate() error

Validate returns an error if the log config specified are less than the minimum allowed.

type MessageType

type MessageType uint8
const (
	NodeRegisterRequestType MessageType = iota
	NodeDeregisterRequestType
	NodeUpdateStatusRequestType
	NodeUpdateDrainRequestType
	JobRegisterRequestType
	JobDeregisterRequestType
	EvalUpdateRequestType
	EvalDeleteRequestType
	AllocUpdateRequestType
	AllocClientUpdateRequestType
	ReconcileJobSummariesRequestType
	VaultAccessorRegisterRequestType
	VaultAccessorDegisterRequestType
	ApplyPlanResultsRequestType
	DeploymentStatusUpdateRequestType
	DeploymentPromoteRequestType
	DeploymentAllocHealthRequestType
	DeploymentDeleteRequestType
	JobStabilityRequestType
	ACLPolicyUpsertRequestType
	ACLPolicyDeleteRequestType
	ACLTokenUpsertRequestType
	ACLTokenDeleteRequestType
	ACLTokenBootstrapRequestType
)

func (*MessageType) CodecDecodeSelf

func (x *MessageType) CodecDecodeSelf(d *codec1978.Decoder)

func (MessageType) CodecEncodeSelf

func (x MessageType) CodecEncodeSelf(e *codec1978.Encoder)

type NamespacedID

type NamespacedID struct {
	ID        string
	Namespace string
}

NamespacedID is a tuple of an ID and a namespace

func (*NamespacedID) CodecDecodeSelf

func (x *NamespacedID) CodecDecodeSelf(d *codec1978.Decoder)

func (*NamespacedID) CodecEncodeSelf

func (x *NamespacedID) CodecEncodeSelf(e *codec1978.Encoder)

type NetworkIndex

type NetworkIndex struct {
	AvailNetworks  []*NetworkResource // List of available networks
	AvailBandwidth map[string]int     // Bandwidth by device
	UsedPorts      map[string]Bitmap  // Ports by IP
	UsedBandwidth  map[string]int     // Bandwidth by device
}

NetworkIndex is used to index the available network resources and the used network resources on a machine given allocations

func NewNetworkIndex

func NewNetworkIndex() *NetworkIndex

NewNetworkIndex is used to construct a new network index

func (*NetworkIndex) AddAllocs

func (idx *NetworkIndex) AddAllocs(allocs []*Allocation) (collide bool)

AddAllocs is used to add the used network resources. Returns true if there is a collision

func (*NetworkIndex) AddReserved

func (idx *NetworkIndex) AddReserved(n *NetworkResource) (collide bool)

AddReserved is used to add a reserved network usage, returns true if there is a port collision

func (*NetworkIndex) AssignNetwork

func (idx *NetworkIndex) AssignNetwork(ask *NetworkResource) (out *NetworkResource, err error)

AssignNetwork is used to assign network resources given an ask. If the ask cannot be satisfied, returns nil

func (*NetworkIndex) Overcommitted

func (idx *NetworkIndex) Overcommitted() bool

Overcommitted checks if the network is overcommitted

func (*NetworkIndex) Release

func (idx *NetworkIndex) Release()

Release is called when the network index is no longer needed to attempt to re-use some of the memory it has allocated

func (*NetworkIndex) SetNode

func (idx *NetworkIndex) SetNode(node *Node) (collide bool)

SetNode is used to setup the available network resources. Returns true if there is a collision

type NetworkResource

type NetworkResource struct {
	Device        string // Name of the device
	CIDR          string // CIDR block of addresses
	IP            string // Host IP address
	MBits         int    // Throughput
	ReservedPorts []Port // Host Reserved ports
	DynamicPorts  []Port // Host Dynamically assigned ports
}

NetworkResource is used to represent available network resources

func (*NetworkResource) Add

func (n *NetworkResource) Add(delta *NetworkResource)

Add adds the resources of the delta to this, potentially returning an error if not possible.

func (*NetworkResource) Canonicalize

func (n *NetworkResource) Canonicalize()

func (*NetworkResource) CodecDecodeSelf

func (x *NetworkResource) CodecDecodeSelf(d *codec1978.Decoder)

func (*NetworkResource) CodecEncodeSelf

func (x *NetworkResource) CodecEncodeSelf(e *codec1978.Encoder)

func (*NetworkResource) Copy

func (n *NetworkResource) Copy() *NetworkResource

Copy returns a deep copy of the network resource

func (*NetworkResource) Diff

func (r *NetworkResource) Diff(other *NetworkResource, contextual bool) *ObjectDiff

Diff returns a diff of two network resources. If contextual diff is enabled, non-changed fields will still be returned.

func (*NetworkResource) GoString

func (n *NetworkResource) GoString() string

func (*NetworkResource) MeetsMinResources

func (n *NetworkResource) MeetsMinResources() error

MeetsMinResources returns an error if the resources specified are less than the minimum allowed.

func (*NetworkResource) PortLabels

func (n *NetworkResource) PortLabels() map[string]int

PortLabels returns a map of port labels to their assigned host ports.

type Networks

type Networks []*NetworkResource

Networks defined for a task on the Resources struct.

func (*Networks) CodecDecodeSelf

func (x *Networks) CodecDecodeSelf(d *codec1978.Decoder)

func (Networks) CodecEncodeSelf

func (x Networks) CodecEncodeSelf(e *codec1978.Encoder)

func (Networks) Port

func (ns Networks) Port(label string) (string, int)

Port assignment and IP for the given label or empty values.

type Node

type Node struct {
	// ID is a unique identifier for the node. It can be constructed
	// by doing a concatenation of the Name and Datacenter as a simple
	// approach. Alternatively a UUID may be used.
	ID string

	// SecretID is an ID that is only known by the Node and the set of Servers.
	// It is not accessible via the API and is used to authenticate nodes
	// conducting priviledged activities.
	SecretID string

	// Datacenter for this node
	Datacenter string

	// Node name
	Name string

	// HTTPAddr is the address on which the Nomad client is listening for http
	// requests
	HTTPAddr string

	// TLSEnabled indicates if the Agent has TLS enabled for the HTTP API
	TLSEnabled bool

	// Attributes is an arbitrary set of key/value
	// data that can be used for constraints. Examples
	// include "kernel.name=linux", "arch=386", "driver.docker=1",
	// "docker.runtime=1.8.3"
	Attributes map[string]string

	// Resources is the available resources on the client.
	// For example 'cpu=2' 'memory=2048'
	Resources *Resources

	// Reserved is the set of resources that are reserved,
	// and should be subtracted from the total resources for
	// the purposes of scheduling. This may be provide certain
	// high-watermark tolerances or because of external schedulers
	// consuming resources.
	Reserved *Resources

	// Links are used to 'link' this client to external
	// systems. For example 'consul=foo.dc1' 'aws=i-83212'
	// 'ami=ami-123'
	Links map[string]string

	// Meta is used to associate arbitrary metadata with this
	// client. This is opaque to Nomad.
	Meta map[string]string

	// NodeClass is an opaque identifier used to group nodes
	// together for the purpose of determining scheduling pressure.
	NodeClass string

	// ComputedClass is a unique id that identifies nodes with a common set of
	// attributes and capabilities.
	ComputedClass string

	// Drain is controlled by the servers, and not the client.
	// If true, no jobs will be scheduled to this node, and existing
	// allocations will be drained.
	Drain bool

	// Status of this node
	Status string

	// StatusDescription is meant to provide more human useful information
	StatusDescription string

	// StatusUpdatedAt is the time stamp at which the state of the node was
	// updated
	StatusUpdatedAt int64

	// Raft Indexes
	CreateIndex uint64
	ModifyIndex uint64
}

Node is a representation of a schedulable client node

func (*Node) CodecDecodeSelf

func (x *Node) CodecDecodeSelf(d *codec1978.Decoder)

func (*Node) CodecEncodeSelf

func (x *Node) CodecEncodeSelf(e *codec1978.Encoder)

func (*Node) ComputeClass

func (n *Node) ComputeClass() error

ComputeClass computes a derived class for the node based on its attributes. ComputedClass is a unique id that identifies nodes with a common set of attributes and capabilities. Thus, when calculating a node's computed class we avoid including any uniquely identifing fields.

func (*Node) Copy

func (n *Node) Copy() *Node

func (Node) HashInclude

func (n Node) HashInclude(field string, v interface{}) (bool, error)

HashInclude is used to blacklist uniquely identifying node fields from being included in the computed node class.

func (Node) HashIncludeMap

func (n Node) HashIncludeMap(field string, k, v interface{}) (bool, error)

HashIncludeMap is used to blacklist uniquely identifying node map keys from being included in the computed node class.

func (*Node) Ready

func (n *Node) Ready() bool

Ready returns if the node is ready for running allocations

func (*Node) Stub

func (n *Node) Stub() *NodeListStub

Stub returns a summarized version of the node

func (*Node) TerminalStatus

func (n *Node) TerminalStatus() bool

TerminalStatus returns if the current status is terminal and will no longer transition.

type NodeAllocsResponse

type NodeAllocsResponse struct {
	Allocs []*Allocation
	QueryMeta
}

NodeAllocsResponse is used to return allocs for a single node

func (*NodeAllocsResponse) CodecDecodeSelf

func (x *NodeAllocsResponse) CodecDecodeSelf(d *codec1978.Decoder)

func (*NodeAllocsResponse) CodecEncodeSelf

func (x *NodeAllocsResponse) CodecEncodeSelf(e *codec1978.Encoder)

type NodeClientAllocsResponse

type NodeClientAllocsResponse struct {
	Allocs map[string]uint64

	// MigrateTokens are used when ACLs are enabled to allow cross node,
	// authenticated access to sticky volumes
	MigrateTokens map[string]string

	QueryMeta
}

NodeClientAllocsResponse is used to return allocs meta data for a single node

func (*NodeClientAllocsResponse) CodecDecodeSelf

func (x *NodeClientAllocsResponse) CodecDecodeSelf(d *codec1978.Decoder)

func (*NodeClientAllocsResponse) CodecEncodeSelf

func (x *NodeClientAllocsResponse) CodecEncodeSelf(e *codec1978.Encoder)

type NodeDeregisterRequest

type NodeDeregisterRequest struct {
	NodeID string
	WriteRequest
}

NodeDeregisterRequest is used for Node.Deregister endpoint to deregister a node as being a schedulable entity.

func (*NodeDeregisterRequest) CodecDecodeSelf

func (x *NodeDeregisterRequest) CodecDecodeSelf(d *codec1978.Decoder)

func (*NodeDeregisterRequest) CodecEncodeSelf

func (x *NodeDeregisterRequest) CodecEncodeSelf(e *codec1978.Encoder)

type NodeDrainUpdateResponse

type NodeDrainUpdateResponse struct {
	EvalIDs         []string
	EvalCreateIndex uint64
	NodeModifyIndex uint64
	QueryMeta
}

NodeDrainUpdateResponse is used to respond to a node drain update

func (*NodeDrainUpdateResponse) CodecDecodeSelf

func (x *NodeDrainUpdateResponse) CodecDecodeSelf(d *codec1978.Decoder)

func (*NodeDrainUpdateResponse) CodecEncodeSelf

func (x *NodeDrainUpdateResponse) CodecEncodeSelf(e *codec1978.Encoder)

type NodeEvaluateRequest

type NodeEvaluateRequest struct {
	NodeID string
	WriteRequest
}

NodeEvaluateRequest is used to re-evaluate the ndoe

func (*NodeEvaluateRequest) CodecDecodeSelf

func (x *NodeEvaluateRequest) CodecDecodeSelf(d *codec1978.Decoder)

func (*NodeEvaluateRequest) CodecEncodeSelf

func (x *NodeEvaluateRequest) CodecEncodeSelf(e *codec1978.Encoder)

type NodeListRequest

type NodeListRequest struct {
	QueryOptions
}

NodeListRequest is used to parameterize a list request

func (*NodeListRequest) CodecDecodeSelf

func (x *NodeListRequest) CodecDecodeSelf(d *codec1978.Decoder)

func (*NodeListRequest) CodecEncodeSelf

func (x *NodeListRequest) CodecEncodeSelf(e *codec1978.Encoder)

type NodeListResponse

type NodeListResponse struct {
	Nodes []*NodeListStub
	QueryMeta
}

NodeListResponse is used for a list request

func (*NodeListResponse) CodecDecodeSelf

func (x *NodeListResponse) CodecDecodeSelf(d *codec1978.Decoder)

func (*NodeListResponse) CodecEncodeSelf

func (x *NodeListResponse) CodecEncodeSelf(e *codec1978.Encoder)

type NodeListStub

type NodeListStub struct {
	ID                string
	Datacenter        string
	Name              string
	NodeClass         string
	Version           string
	Drain             bool
	Status            string
	StatusDescription string
	CreateIndex       uint64
	ModifyIndex       uint64
}

NodeListStub is used to return a subset of job information for the job list

func (*NodeListStub) CodecDecodeSelf

func (x *NodeListStub) CodecDecodeSelf(d *codec1978.Decoder)

func (*NodeListStub) CodecEncodeSelf

func (x *NodeListStub) CodecEncodeSelf(e *codec1978.Encoder)

type NodeRegisterRequest

type NodeRegisterRequest struct {
	Node *Node
	WriteRequest
}

NodeRegisterRequest is used for Node.Register endpoint to register a node as being a schedulable entity.

func (*NodeRegisterRequest) CodecDecodeSelf

func (x *NodeRegisterRequest) CodecDecodeSelf(d *codec1978.Decoder)

func (*NodeRegisterRequest) CodecEncodeSelf

func (x *NodeRegisterRequest) CodecEncodeSelf(e *codec1978.Encoder)

type NodeServerInfo

type NodeServerInfo struct {
	// RPCAdvertiseAddr is the IP endpoint that a Nomad Server wishes to
	// be contacted at for RPCs.
	RPCAdvertiseAddr string

	// RpcMajorVersion is the major version number the Nomad Server
	// supports
	RPCMajorVersion int32

	// RpcMinorVersion is the minor version number the Nomad Server
	// supports
	RPCMinorVersion int32

	// Datacenter is the datacenter that a Nomad server belongs to
	Datacenter string
}

NodeServerInfo is used to in NodeUpdateResponse to return Nomad server information used in RPC server lists.

func (*NodeServerInfo) CodecDecodeSelf

func (x *NodeServerInfo) CodecDecodeSelf(d *codec1978.Decoder)

func (*NodeServerInfo) CodecEncodeSelf

func (x *NodeServerInfo) CodecEncodeSelf(e *codec1978.Encoder)

type NodeSpecificRequest

type NodeSpecificRequest struct {
	NodeID   string
	SecretID string
	QueryOptions
}

NodeSpecificRequest is used when we just need to specify a target node

func (*NodeSpecificRequest) CodecDecodeSelf

func (x *NodeSpecificRequest) CodecDecodeSelf(d *codec1978.Decoder)

func (*NodeSpecificRequest) CodecEncodeSelf

func (x *NodeSpecificRequest) CodecEncodeSelf(e *codec1978.Encoder)

type NodeUpdateDrainRequest

type NodeUpdateDrainRequest struct {
	NodeID string
	Drain  bool
	WriteRequest
}

NodeUpdateDrainRequest is used for updatin the drain status

func (*NodeUpdateDrainRequest) CodecDecodeSelf

func (x *NodeUpdateDrainRequest) CodecDecodeSelf(d *codec1978.Decoder)

func (*NodeUpdateDrainRequest) CodecEncodeSelf

func (x *NodeUpdateDrainRequest) CodecEncodeSelf(e *codec1978.Encoder)

type NodeUpdateResponse

type NodeUpdateResponse struct {
	HeartbeatTTL    time.Duration
	EvalIDs         []string
	EvalCreateIndex uint64
	NodeModifyIndex uint64

	// LeaderRPCAddr is the RPC address of the current Raft Leader.  If
	// empty, the current Nomad Server is in the minority of a partition.
	LeaderRPCAddr string

	// NumNodes is the number of Nomad nodes attached to this quorum of
	// Nomad Servers at the time of the response.  This value can
	// fluctuate based on the health of the cluster between heartbeats.
	NumNodes int32

	// Servers is the full list of known Nomad servers in the local
	// region.
	Servers []*NodeServerInfo

	QueryMeta
}

NodeUpdateResponse is used to respond to a node update

func (*NodeUpdateResponse) CodecDecodeSelf

func (x *NodeUpdateResponse) CodecDecodeSelf(d *codec1978.Decoder)

func (*NodeUpdateResponse) CodecEncodeSelf

func (x *NodeUpdateResponse) CodecEncodeSelf(e *codec1978.Encoder)

type NodeUpdateStatusRequest

type NodeUpdateStatusRequest struct {
	NodeID string
	Status string
	WriteRequest
}

NodeUpdateStatusRequest is used for Node.UpdateStatus endpoint to update the status of a node.

func (*NodeUpdateStatusRequest) CodecDecodeSelf

func (x *NodeUpdateStatusRequest) CodecDecodeSelf(d *codec1978.Decoder)

func (*NodeUpdateStatusRequest) CodecEncodeSelf

func (x *NodeUpdateStatusRequest) CodecEncodeSelf(e *codec1978.Encoder)

type ObjectDiff

type ObjectDiff struct {
	Type    DiffType
	Name    string
	Fields  []*FieldDiff
	Objects []*ObjectDiff
}

ObjectDiff contains the diff of two generic objects.

func (*ObjectDiff) GoString

func (o *ObjectDiff) GoString() string

func (*ObjectDiff) Less

func (o *ObjectDiff) Less(other *ObjectDiff) bool

type ObjectDiffs

type ObjectDiffs []*ObjectDiff

For sorting ObjectDiffs

func (ObjectDiffs) Len

func (o ObjectDiffs) Len() int

func (ObjectDiffs) Less

func (o ObjectDiffs) Less(i, j int) bool

func (ObjectDiffs) Swap

func (o ObjectDiffs) Swap(i, j int)

type ParameterizedJobConfig

type ParameterizedJobConfig struct {
	// Payload configure the payload requirements
	Payload string

	// MetaRequired is metadata keys that must be specified by the dispatcher
	MetaRequired []string

	// MetaOptional is metadata keys that may be specified by the dispatcher
	MetaOptional []string
}

ParameterizedJobConfig is used to configure the parameterized job

func (*ParameterizedJobConfig) Canonicalize

func (d *ParameterizedJobConfig) Canonicalize()

func (*ParameterizedJobConfig) CodecDecodeSelf

func (x *ParameterizedJobConfig) CodecDecodeSelf(d *codec1978.Decoder)

func (*ParameterizedJobConfig) CodecEncodeSelf

func (x *ParameterizedJobConfig) CodecEncodeSelf(e *codec1978.Encoder)

func (*ParameterizedJobConfig) Copy

func (*ParameterizedJobConfig) Validate

func (d *ParameterizedJobConfig) Validate() error

type PeriodicConfig

type PeriodicConfig struct {
	// Enabled determines if the job should be run periodically.
	Enabled bool

	// Spec specifies the interval the job should be run as. It is parsed based
	// on the SpecType.
	Spec string

	// SpecType defines the format of the spec.
	SpecType string

	// ProhibitOverlap enforces that spawned jobs do not run in parallel.
	ProhibitOverlap bool

	// TimeZone is the user specified string that determines the time zone to
	// launch against. The time zones must be specified from IANA Time Zone
	// database, such as "America/New_York".
	// Reference: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
	// Reference: https://www.iana.org/time-zones
	TimeZone string

	// contains filtered or unexported fields

}

Periodic defines the interval a job should be run at.

func (*PeriodicConfig) Canonicalize

func (p *PeriodicConfig) Canonicalize()

func (*PeriodicConfig) CodecDecodeSelf

func (x *PeriodicConfig) CodecDecodeSelf(d *codec1978.Decoder)

func (*PeriodicConfig) CodecEncodeSelf

func (x *PeriodicConfig) CodecEncodeSelf(e *codec1978.Encoder)

func (*PeriodicConfig) Copy

func (p *PeriodicConfig) Copy() *PeriodicConfig

func (*PeriodicConfig) GetLocation

func (p *PeriodicConfig) GetLocation() *time.Location

GetLocation returns the location to use for determining the time zone to run the periodic job against.

func (*PeriodicConfig) Next

func (p *PeriodicConfig) Next(fromTime time.Time) time.Time

Next returns the closest time instant matching the spec that is after the passed time. If no matching instance exists, the zero value of time.Time is returned. The `time.Location` of the returned value matches that of the passed time.

func (*PeriodicConfig) Validate

func (p *PeriodicConfig) Validate() error

type PeriodicForceRequest

type PeriodicForceRequest struct {
	JobID string
	WriteRequest
}

PeriodicForceReqeuest is used to force a specific periodic job.

func (*PeriodicForceRequest) CodecDecodeSelf

func (x *PeriodicForceRequest) CodecDecodeSelf(d *codec1978.Decoder)

func (*PeriodicForceRequest) CodecEncodeSelf

func (x *PeriodicForceRequest) CodecEncodeSelf(e *codec1978.Encoder)

type PeriodicForceResponse

type PeriodicForceResponse struct {
	EvalID          string
	EvalCreateIndex uint64
	WriteMeta
}

PeriodicForceResponse is used to respond to a periodic job force launch

func (*PeriodicForceResponse) CodecDecodeSelf

func (x *PeriodicForceResponse) CodecDecodeSelf(d *codec1978.Decoder)

func (*PeriodicForceResponse) CodecEncodeSelf

func (x *PeriodicForceResponse) CodecEncodeSelf(e *codec1978.Encoder)

type PeriodicLaunch

type PeriodicLaunch struct {
	ID        string    // ID of the periodic job.
	Namespace string    // Namespace of the periodic job
	Launch    time.Time // The last launch time.

	// Raft Indexes
	CreateIndex uint64
	ModifyIndex uint64
}

PeriodicLaunch tracks the last launch time of a periodic job.

func (*PeriodicLaunch) CodecDecodeSelf

func (x *PeriodicLaunch) CodecDecodeSelf(d *codec1978.Decoder)

func (*PeriodicLaunch) CodecEncodeSelf

func (x *PeriodicLaunch) CodecEncodeSelf(e *codec1978.Encoder)

type Plan

type Plan struct {
	// EvalID is the evaluation ID this plan is associated with
	EvalID string

	// EvalToken is used to prevent a split-brain processing of
	// an evaluation. There should only be a single scheduler running
	// an Eval at a time, but this could be violated after a leadership
	// transition. This unique token is used to reject plans that are
	// being submitted from a different leader.
	EvalToken string

	// Priority is the priority of the upstream job
	Priority int

	// AllAtOnce is used to control if incremental scheduling of task groups
	// is allowed or if we must do a gang scheduling of the entire job.
	// If this is false, a plan may be partially applied. Otherwise, the
	// entire plan must be able to make progress.
	AllAtOnce bool

	// Job is the parent job of all the allocations in the Plan.
	// Since a Plan only involves a single Job, we can reduce the size
	// of the plan by only including it once.
	Job *Job

	// NodeUpdate contains all the allocations for each node. For each node,
	// this is a list of the allocations to update to either stop or evict.
	NodeUpdate map[string][]*Allocation

	// NodeAllocation contains all the allocations for each node.
	// The evicts must be considered prior to the allocations.
	NodeAllocation map[string][]*Allocation

	// Annotations contains annotations by the scheduler to be used by operators
	// to understand the decisions made by the scheduler.
	Annotations *PlanAnnotations

	// Deployment is the deployment created or updated by the scheduler that
	// should be applied by the planner.
	Deployment *Deployment

	// DeploymentUpdates is a set of status updates to apply to the given
	// deployments. This allows the scheduler to cancel any unneeded deployment
	// because the job is stopped or the update block is removed.
	DeploymentUpdates []*DeploymentStatusUpdate
}

Plan is used to submit a commit plan for task allocations. These are submitted to the leader which verifies that resources have not been overcommitted before admiting the plan.

func (*Plan) AppendAlloc

func (p *Plan) AppendAlloc(alloc *Allocation)

func (*Plan) AppendUpdate

func (p *Plan) AppendUpdate(alloc *Allocation, desiredStatus, desiredDesc, clientStatus string)

AppendUpdate marks the allocation for eviction. The clientStatus of the allocation may be optionally set by passing in a non-empty value.

func (*Plan) CodecDecodeSelf

func (x *Plan) CodecDecodeSelf(d *codec1978.Decoder)

func (*Plan) CodecEncodeSelf

func (x *Plan) CodecEncodeSelf(e *codec1978.Encoder)

func (*Plan) IsNoOp

func (p *Plan) IsNoOp() bool

IsNoOp checks if this plan would do nothing

func (*Plan) PopUpdate

func (p *Plan) PopUpdate(alloc *Allocation)

type PlanAnnotations

type PlanAnnotations struct {
	// DesiredTGUpdates is the set of desired updates per task group.
	DesiredTGUpdates map[string]*DesiredUpdates
}

PlanAnnotations holds annotations made by the scheduler to give further debug information to operators.

func (*PlanAnnotations) CodecDecodeSelf

func (x *PlanAnnotations) CodecDecodeSelf(d *codec1978.Decoder)

func (*PlanAnnotations) CodecEncodeSelf

func (x *PlanAnnotations) CodecEncodeSelf(e *codec1978.Encoder)

type PlanRequest

type PlanRequest struct {
	Plan *Plan
	WriteRequest
}

PlanRequest is used to submit an allocation plan to the leader

func (*PlanRequest) CodecDecodeSelf

func (x *PlanRequest) CodecDecodeSelf(d *codec1978.Decoder)

func (*PlanRequest) CodecEncodeSelf

func (x *PlanRequest) CodecEncodeSelf(e *codec1978.Encoder)

type PlanResponse

type PlanResponse struct {
	Result *PlanResult
	WriteMeta
}

PlanResponse is used to return from a PlanRequest

func (*PlanResponse) CodecDecodeSelf

func (x *PlanResponse) CodecDecodeSelf(d *codec1978.Decoder)

func (*PlanResponse) CodecEncodeSelf

func (x *PlanResponse) CodecEncodeSelf(e *codec1978.Encoder)

type PlanResult

type PlanResult struct {
	// NodeUpdate contains all the updates that were committed.
	NodeUpdate map[string][]*Allocation

	// NodeAllocation contains all the allocations that were committed.
	NodeAllocation map[string][]*Allocation

	// Deployment is the deployment that was committed.
	Deployment *Deployment

	// DeploymentUpdates is the set of deployment updates that were committed.
	DeploymentUpdates []*DeploymentStatusUpdate

	// RefreshIndex is the index the worker should refresh state up to.
	// This allows all evictions and allocations to be materialized.
	// If any allocations were rejected due to stale data (node state,
	// over committed) this can be used to force a worker refresh.
	RefreshIndex uint64

	// AllocIndex is the Raft index in which the evictions and
	// allocations took place. This is used for the write index.
	AllocIndex uint64
}

PlanResult is the result of a plan submitted to the leader.

func (*PlanResult) CodecDecodeSelf

func (x *PlanResult) CodecDecodeSelf(d *codec1978.Decoder)

func (*PlanResult) CodecEncodeSelf

func (x *PlanResult) CodecEncodeSelf(e *codec1978.Encoder)

func (*PlanResult) FullCommit

func (p *PlanResult) FullCommit(plan *Plan) (bool, int, int)

FullCommit is used to check if all the allocations in a plan were committed as part of the result. Returns if there was a match, and the number of expected and actual allocations.

func (*PlanResult) IsNoOp

func (p *PlanResult) IsNoOp() bool

IsNoOp checks if this plan result would do nothing

type Port

type Port struct {
	Label string
	Value int
}

func (*Port) CodecDecodeSelf

func (x *Port) CodecDecodeSelf(d *codec1978.Decoder)

func (*Port) CodecEncodeSelf

func (x *Port) CodecEncodeSelf(e *codec1978.Encoder)

type QueryMeta

type QueryMeta struct {
	// This is the index associated with the read
	Index uint64

	// If AllowStale is used, this is time elapsed since
	// last contact between the follower and leader. This
	// can be used to gauge staleness.
	LastContact time.Duration

	// Used to indicate if there is a known leader node
	KnownLeader bool
}

QueryMeta allows a query response to include potentially useful metadata about a query

func (*QueryMeta) CodecDecodeSelf

func (x *QueryMeta) CodecDecodeSelf(d *codec1978.Decoder)

func (*QueryMeta) CodecEncodeSelf

func (x *QueryMeta) CodecEncodeSelf(e *codec1978.Encoder)

type QueryOptions

type QueryOptions struct {
	// The target region for this query
	Region string

	// Namespace is the target namespace for the query.
	Namespace string

	// If set, wait until query exceeds given index. Must be provided
	// with MaxQueryTime.
	MinQueryIndex uint64

	// Provided with MinQueryIndex to wait for change.
	MaxQueryTime time.Duration

	// If set, any follower can service the request. Results
	// may be arbitrarily stale.
	AllowStale bool

	// If set, used as prefix for resource list searches
	Prefix string

	// AuthToken is secret portion of the ACL token used for the request
	AuthToken string
}

QueryOptions is used to specify various flags for read queries

func (QueryOptions) AllowStaleRead

func (q QueryOptions) AllowStaleRead() bool

func (*QueryOptions) CodecDecodeSelf

func (x *QueryOptions) CodecDecodeSelf(d *codec1978.Decoder)

func (*QueryOptions) CodecEncodeSelf

func (x *QueryOptions) CodecEncodeSelf(e *codec1978.Encoder)

func (QueryOptions) IsRead

func (q QueryOptions) IsRead() bool

QueryOption only applies to reads, so always true

func (QueryOptions) RequestNamespace

func (q QueryOptions) RequestNamespace() string

func (QueryOptions) RequestRegion

func (q QueryOptions) RequestRegion() string

type RPCInfo

type RPCInfo interface {
	RequestRegion() string
	IsRead() bool
	AllowStaleRead() bool
}

RPCInfo is used to describe common information about query

type RaftConfigurationResponse

type RaftConfigurationResponse struct {
	// Servers has the list of servers in the Raft configuration.
	Servers []*RaftServer

	// Index has the Raft index of this configuration.
	Index uint64
}

RaftConfigrationResponse is returned when querying for the current Raft configuration.

type RaftPeerByAddressRequest

type RaftPeerByAddressRequest struct {
	// Address is the peer to remove, in the form "IP:port".
	Address raft.ServerAddress

	// WriteRequest holds the Region for this request.
	WriteRequest
}

RaftPeerByAddressRequest is used by the Operator endpoint to apply a Raft operation on a specific Raft peer by address in the form of "IP:port".

type RaftServer

type RaftServer struct {
	// ID is the unique ID for the server. These are currently the same
	// as the address, but they will be changed to a real GUID in a future
	// release of Nomad.
	ID raft.ServerID

	// Node is the node name of the server, as known by Nomad, or this
	// will be set to "(unknown)" otherwise.
	Node string

	// Address is the IP:port of the server, used for Raft communications.
	Address raft.ServerAddress

	// Leader is true if this server is the current cluster leader.
	Leader bool

	// Voter is true if this server has a vote in the cluster. This might
	// be false if the server is staging and still coming online, or if
	// it's a non-voting server, which will be added in a future release of
	// Nomad.
	Voter bool
}

RaftServer has information about a server in the Raft configuration.

type Recoverable

type Recoverable interface {
	error
	IsRecoverable() bool
}

Recoverable is an interface for errors to implement to indicate whether or not they are fatal or recoverable.

type RecoverableError

type RecoverableError struct {
	Err         string
	Recoverable bool
}

RecoverableError wraps an error and marks whether it is recoverable and could be retried or it is fatal.

func (*RecoverableError) CodecDecodeSelf

func (x *RecoverableError) CodecDecodeSelf(d *codec1978.Decoder)

func (*RecoverableError) CodecEncodeSelf

func (x *RecoverableError) CodecEncodeSelf(e *codec1978.Encoder)

func (*RecoverableError) Error

func (r *RecoverableError) Error() string

func (*RecoverableError) IsRecoverable

func (r *RecoverableError) IsRecoverable() bool

type ResolveACLTokenRequest

type ResolveACLTokenRequest struct {
	SecretID string
	QueryOptions
}

ResolveACLTokenRequest is used to resolve a specific token

func (*ResolveACLTokenRequest) CodecDecodeSelf

func (x *ResolveACLTokenRequest) CodecDecodeSelf(d *codec1978.Decoder)

func (*ResolveACLTokenRequest) CodecEncodeSelf

func (x *ResolveACLTokenRequest) CodecEncodeSelf(e *codec1978.Encoder)

type ResolveACLTokenResponse

type ResolveACLTokenResponse struct {
	Token *ACLToken
	QueryMeta
}

ResolveACLTokenResponse is used to resolve a single token

func (*ResolveACLTokenResponse) CodecDecodeSelf

func (x *ResolveACLTokenResponse) CodecDecodeSelf(d *codec1978.Decoder)

func (*ResolveACLTokenResponse) CodecEncodeSelf

func (x *ResolveACLTokenResponse) CodecEncodeSelf(e *codec1978.Encoder)

type Resources

type Resources struct {
	CPU      int
	MemoryMB int
	DiskMB   int
	IOPS     int
	Networks Networks
}

Resources is used to define the resources available on a client

func AllocsFit

func AllocsFit(node *Node, allocs []*Allocation, netIdx *NetworkIndex) (bool, string, *Resources, error)

AllocsFit checks if a given set of allocations will fit on a node. The netIdx can optionally be provided if its already been computed. If the netIdx is provided, it is assumed that the client has already ensured there are no collisions.

func DefaultResources

func DefaultResources() *Resources

DefaultResources is a small resources object that contains the default resources requests that we will provide to an object. --- THIS FUNCTION IS REPLICATED IN api/resources.go and should be kept in sync.

func MinResources

func MinResources() *Resources

MinResources is a small resources object that contains the absolute minimum resources that we will provide to an object. This should not be confused with the defaults which are provided in Canonicalize() --- THIS FUNCTION IS REPLICATED IN api/resources.go and should be kept in sync.

func (*Resources) Add

func (r *Resources) Add(delta *Resources) error

Add adds the resources of the delta to this, potentially returning an error if not possible.

func (*Resources) Canonicalize

func (r *Resources) Canonicalize()

func (*Resources) CodecDecodeSelf

func (x *Resources) CodecDecodeSelf(d *codec1978.Decoder)

func (*Resources) CodecEncodeSelf

func (x *Resources) CodecEncodeSelf(e *codec1978.Encoder)

func (*Resources) Copy

func (r *Resources) Copy() *Resources

Copy returns a deep copy of the resources

func (*Resources) Diff

func (r *Resources) Diff(other *Resources, contextual bool) *ObjectDiff

Diff returns a diff of two resource objects. If contextual diff is enabled, non-changed fields will still be returned.

func (*Resources) DiskInBytes

func (r *Resources) DiskInBytes() int64

DiskInBytes returns the amount of disk resources in bytes.

func (*Resources) GoString

func (r *Resources) GoString() string

func (*Resources) MeetsMinResources

func (r *Resources) MeetsMinResources() error

MeetsMinResources returns an error if the resources specified are less than the minimum allowed. This is based on the minimums defined in the Resources type

func (*Resources) Merge

func (r *Resources) Merge(other *Resources)

Merge merges this resource with another resource.

func (*Resources) NetIndex

func (r *Resources) NetIndex(n *NetworkResource) int

NetIndex finds the matching net index using device name

func (*Resources) Superset

func (r *Resources) Superset(other *Resources) (bool, string)

Superset checks if one set of resources is a superset of another. This ignores network resources, and the NetworkIndex should be used for that.

type RestartPolicy

type RestartPolicy struct {
	// Attempts is the number of restart that will occur in an interval.
	Attempts int

	// Interval is a duration in which we can limit the number of restarts
	// within.
	Interval time.Duration

	// Delay is the time between a failure and a restart.
	Delay time.Duration

	// Mode controls what happens when the task restarts more than attempt times
	// in an interval.
	Mode string
}

RestartPolicy configures how Tasks are restarted when they crash or fail.

func NewRestartPolicy

func NewRestartPolicy(jobType string) *RestartPolicy

func (*RestartPolicy) CodecDecodeSelf

func (x *RestartPolicy) CodecDecodeSelf(d *codec1978.Decoder)

func (*RestartPolicy) CodecEncodeSelf

func (x *RestartPolicy) CodecEncodeSelf(e *codec1978.Encoder)

func (*RestartPolicy) Copy

func (r *RestartPolicy) Copy() *RestartPolicy

func (*RestartPolicy) Validate

func (r *RestartPolicy) Validate() error

type SearchRequest

type SearchRequest struct {
	// Prefix is what ids are matched to. I.e, if the given prefix were
	// "a", potential matches might be "abcd" or "aabb"
	Prefix string

	// Context is the type that can be matched against. A context can be a job,
	// node, evaluation, allocation, or empty (indicated every context should be
	// matched)
	Context Context

	QueryOptions
}

SearchRequest is used to parameterize a request, and returns a list of matches made up of jobs, allocations, evaluations, and/or nodes, along with whether or not the information returned is truncated.

func (*SearchRequest) CodecDecodeSelf

func (x *SearchRequest) CodecDecodeSelf(d *codec1978.Decoder)

func (*SearchRequest) CodecEncodeSelf

func (x *SearchRequest) CodecEncodeSelf(e *codec1978.Encoder)

type SearchResponse

type SearchResponse struct {
	// Map of context types to ids which match a specified prefix
	Matches map[Context][]string

	// Truncations indicates whether the matches for a particular context have
	// been truncated
	Truncations map[Context]bool

	QueryMeta
}

SearchResponse is used to return matches and information about whether the match list is truncated specific to each type of context.

func (*SearchResponse) CodecDecodeSelf

func (x *SearchResponse) CodecDecodeSelf(d *codec1978.Decoder)

func (*SearchResponse) CodecEncodeSelf

func (x *SearchResponse) CodecEncodeSelf(e *codec1978.Encoder)

type ServerMember

type ServerMember struct {
	Name        string
	Addr        net.IP
	Port        uint16
	Tags        map[string]string
	Status      string
	ProtocolMin uint8
	ProtocolMax uint8
	ProtocolCur uint8
	DelegateMin uint8
	DelegateMax uint8
	DelegateCur uint8
}

ServerMember holds information about a Nomad server agent in a cluster

func (*ServerMember) CodecDecodeSelf

func (x *ServerMember) CodecDecodeSelf(d *codec1978.Decoder)

func (*ServerMember) CodecEncodeSelf

func (x *ServerMember) CodecEncodeSelf(e *codec1978.Encoder)

type ServerMembersResponse

type ServerMembersResponse struct {
	ServerName   string
	ServerRegion string
	ServerDC     string
	Members      []*ServerMember
}

ServerMembersResponse has the list of servers in a cluster

func (*ServerMembersResponse) CodecDecodeSelf

func (x *ServerMembersResponse) CodecDecodeSelf(d *codec1978.Decoder)

func (*ServerMembersResponse) CodecEncodeSelf

func (x *ServerMembersResponse) CodecEncodeSelf(e *codec1978.Encoder)

type Service

type Service struct {
	// Name of the service registered with Consul. Consul defaults the
	// Name to ServiceID if not specified.  The Name if specified is used
	// as one of the seed values when generating a Consul ServiceID.
	Name string

	// PortLabel is either the numeric port number or the `host:port`.
	// To specify the port number using the host's Consul Advertise
	// address, specify an empty host in the PortLabel (e.g. `:port`).
	PortLabel string

	// AddressMode specifies whether or not to use the host ip:port for
	// this service.
	AddressMode string

	Tags   []string        // List of tags for the service
	Checks []*ServiceCheck // List of checks associated with the service
}

Service represents a Consul service definition in Nomad

func (*Service) Canonicalize

func (s *Service) Canonicalize(job string, taskGroup string, task string)

Canonicalize interpolates values of Job, Task Group and Task in the Service Name. This also generates check names, service id and check ids.

func (*Service) CodecDecodeSelf

func (x *Service) CodecDecodeSelf(d *codec1978.Decoder)

func (*Service) CodecEncodeSelf

func (x *Service) CodecEncodeSelf(e *codec1978.Encoder)

func (*Service) Copy

func (s *Service) Copy() *Service

func (*Service) Hash

func (s *Service) Hash(allocID, taskName string) string

Hash returns a base32 encoded hash of a Service's contents excluding checks as they're hashed independently.

func (*Service) Validate

func (s *Service) Validate() error

Validate checks if the Check definition is valid

func (*Service) ValidateName

func (s *Service) ValidateName(name string) error

ValidateName checks if the services Name is valid and should be called after the name has been interpolated

type ServiceCheck

type ServiceCheck struct {
	Name          string              // Name of the check, defaults to id
	Type          string              // Type of the check - tcp, http, docker and script
	Command       string              // Command is the command to run for script checks
	Args          []string            // Args is a list of argumes for script checks
	Path          string              // path of the health check url for http type check
	Protocol      string              // Protocol to use if check is http, defaults to http
	PortLabel     string              // The port to use for tcp/http checks
	AddressMode   string              // 'host' to use host ip:port or 'driver' to use driver's
	Interval      time.Duration       // Interval of the check
	Timeout       time.Duration       // Timeout of the response from the check before consul fails the check
	InitialStatus string              // Initial status of the check
	TLSSkipVerify bool                // Skip TLS verification when Protocol=https
	Method        string              // HTTP Method to use (GET by default)
	Header        map[string][]string // HTTP Headers for Consul to set when making HTTP checks
	CheckRestart  *CheckRestart       // If and when a task should be restarted based on checks
}

The ServiceCheck data model represents the consul health check that Nomad registers for a Task

func (*ServiceCheck) Canonicalize

func (sc *ServiceCheck) Canonicalize(serviceName string)

func (*ServiceCheck) CodecDecodeSelf

func (x *ServiceCheck) CodecDecodeSelf(d *codec1978.Decoder)

func (*ServiceCheck) CodecEncodeSelf

func (x *ServiceCheck) CodecEncodeSelf(e *codec1978.Encoder)

func (*ServiceCheck) Copy

func (sc *ServiceCheck) Copy() *ServiceCheck

func (*ServiceCheck) Hash

func (sc *ServiceCheck) Hash(serviceID string) string

Hash all ServiceCheck fields and the check's corresponding service ID to create an identifier. The identifier is not guaranteed to be unique as if the PortLabel is blank, the Service's PortLabel will be used after Hash is called.

func (*ServiceCheck) RequiresPort

func (sc *ServiceCheck) RequiresPort() bool

RequiresPort returns whether the service check requires the task has a port.

func (*ServiceCheck) TriggersRestarts

func (sc *ServiceCheck) TriggersRestarts() bool

TriggersRestarts returns true if this check should be watched and trigger a restart on failure.

type SingleACLPolicyResponse

type SingleACLPolicyResponse struct {
	Policy *ACLPolicy
	QueryMeta
}

SingleACLPolicyResponse is used to return a single policy

func (*SingleACLPolicyResponse) CodecDecodeSelf

func (x *SingleACLPolicyResponse) CodecDecodeSelf(d *codec1978.Decoder)

func (*SingleACLPolicyResponse) CodecEncodeSelf

func (x *SingleACLPolicyResponse) CodecEncodeSelf(e *codec1978.Encoder)

type SingleACLTokenResponse

type SingleACLTokenResponse struct {
	Token *ACLToken
	QueryMeta
}

SingleACLTokenResponse is used to return a single token

func (*SingleACLTokenResponse) CodecDecodeSelf

func (x *SingleACLTokenResponse) CodecDecodeSelf(d *codec1978.Decoder)

func (*SingleACLTokenResponse) CodecEncodeSelf

func (x *SingleACLTokenResponse) CodecEncodeSelf(e *codec1978.Encoder)

type SingleAllocResponse

type SingleAllocResponse struct {
	Alloc *Allocation
	QueryMeta
}

SingleAllocResponse is used to return a single allocation

func (*SingleAllocResponse) CodecDecodeSelf

func (x *SingleAllocResponse) CodecDecodeSelf(d *codec1978.Decoder)

func (*SingleAllocResponse) CodecEncodeSelf

func (x *SingleAllocResponse) CodecEncodeSelf(e *codec1978.Encoder)

type SingleDeploymentResponse

type SingleDeploymentResponse struct {
	Deployment *Deployment
	QueryMeta
}

SingleDeploymentResponse is used to respond with a single deployment

func (*SingleDeploymentResponse) CodecDecodeSelf

func (x *SingleDeploymentResponse) CodecDecodeSelf(d *codec1978.Decoder)

func (*SingleDeploymentResponse) CodecEncodeSelf

func (x *SingleDeploymentResponse) CodecEncodeSelf(e *codec1978.Encoder)

type SingleEvalResponse

type SingleEvalResponse struct {
	Eval *Evaluation
	QueryMeta
}

SingleEvalResponse is used to return a single evaluation

func (*SingleEvalResponse) CodecDecodeSelf

func (x *SingleEvalResponse) CodecDecodeSelf(d *codec1978.Decoder)

func (*SingleEvalResponse) CodecEncodeSelf

func (x *SingleEvalResponse) CodecEncodeSelf(e *codec1978.Encoder)

type SingleJobResponse

type SingleJobResponse struct {
	Job *Job
	QueryMeta
}

SingleJobResponse is used to return a single job

func (*SingleJobResponse) CodecDecodeSelf

func (x *SingleJobResponse) CodecDecodeSelf(d *codec1978.Decoder)

func (*SingleJobResponse) CodecEncodeSelf

func (x *SingleJobResponse) CodecEncodeSelf(e *codec1978.Encoder)

type SingleNodeResponse

type SingleNodeResponse struct {
	Node *Node
	QueryMeta
}

SingleNodeResponse is used to return a single node

func (*SingleNodeResponse) CodecDecodeSelf

func (x *SingleNodeResponse) CodecDecodeSelf(d *codec1978.Decoder)

func (*SingleNodeResponse) CodecEncodeSelf

func (x *SingleNodeResponse) CodecEncodeSelf(e *codec1978.Encoder)

type Task

type Task struct {
	// Name of the task
	Name string

	// Driver is used to control which driver is used
	Driver string

	// User is used to determine which user will run the task. It defaults to
	// the same user the Nomad client is being run as.
	User string

	// Config is provided to the driver to initialize
	Config map[string]interface{}

	// Map of environment variables to be used by the driver
	Env map[string]string

	// List of service definitions exposed by the Task
	Services []*Service

	// Vault is used to define the set of Vault policies that this task should
	// have access to.
	Vault *Vault

	// Templates are the set of templates to be rendered for the task.
	Templates []*Template

	// Constraints can be specified at a task level and apply only to
	// the particular task.
	Constraints []*Constraint

	// Resources is the resources needed by this task
	Resources *Resources

	// DispatchPayload configures how the task retrieves its input from a dispatch
	DispatchPayload *DispatchPayloadConfig

	// Meta is used to associate arbitrary metadata with this
	// task. This is opaque to Nomad.
	Meta map[string]string

	// KillTimeout is the time between signaling a task that it will be
	// killed and killing it.
	KillTimeout time.Duration

	// LogConfig provides configuration for log rotation
	LogConfig *LogConfig

	// Artifacts is a list of artifacts to download and extract before running
	// the task.
	Artifacts []*TaskArtifact

	// Leader marks the task as the leader within the group. When the leader
	// task exits, other tasks will be gracefully terminated.
	Leader bool

	// ShutdownDelay is the duration of the delay between deregistering a
	// task from Consul and sending it a signal to shutdown. See #2441
	ShutdownDelay time.Duration

	// KillSignal is the kill signal to use for the task. This is an optional
	// specification and defaults to SIGINT
	KillSignal string
}

Task is a single process typically that is executed as part of a task group.

func (*Task) Canonicalize

func (t *Task) Canonicalize(job *Job, tg *TaskGroup)

Canonicalize canonicalizes fields in the task.

func (*Task) CodecDecodeSelf

func (x *Task) CodecDecodeSelf(d *codec1978.Decoder)

func (*Task) CodecEncodeSelf

func (x *Task) CodecEncodeSelf(e *codec1978.Encoder)

func (*Task) Copy

func (t *Task) Copy() *Task

func (*Task) Diff

func (t *Task) Diff(other *Task, contextual bool) (*TaskDiff, error)

Diff returns a diff of two tasks. If contextual diff is enabled, objects within the task will contain field information even if unchanged.

func (*Task) GoString

func (t *Task) GoString() string

func (*Task) Validate

func (t *Task) Validate(ephemeralDisk *EphemeralDisk) error

Validate is used to sanity check a task

type TaskArtifact

type TaskArtifact struct {
	// GetterSource is the source to download an artifact using go-getter
	GetterSource string

	// GetterOptions are options to use when downloading the artifact using
	// go-getter.
	GetterOptions map[string]string

	// GetterMode is the go-getter.ClientMode for fetching resources.
	// Defaults to "any" but can be set to "file" or "dir".
	GetterMode string

	// RelativeDest is the download destination given relative to the task's
	// directory.
	RelativeDest string
}

TaskArtifact is an artifact to download before running the task.

func (*TaskArtifact) CodecDecodeSelf

func (x *TaskArtifact) CodecDecodeSelf(d *codec1978.Decoder)

func (*TaskArtifact) CodecEncodeSelf

func (x *TaskArtifact) CodecEncodeSelf(e *codec1978.Encoder)

func (*TaskArtifact) Copy

func (ta *TaskArtifact) Copy() *TaskArtifact

func (*TaskArtifact) GoString

func (ta *TaskArtifact) GoString() string

func (*TaskArtifact) Validate

func (ta *TaskArtifact) Validate() error

type TaskDiff

type TaskDiff struct {
	Type        DiffType
	Name        string
	Fields      []*FieldDiff
	Objects     []*ObjectDiff
	Annotations []string
}

TaskDiff contains the diff of two Tasks

func (*TaskDiff) GoString

func (t *TaskDiff) GoString() string

type TaskDiffs

type TaskDiffs []*TaskDiff

For sorting TaskDiffs

func (TaskDiffs) Len

func (t TaskDiffs) Len() int

func (TaskDiffs) Less

func (t TaskDiffs) Less(i, j int) bool

func (TaskDiffs) Swap

func (t TaskDiffs) Swap(i, j int)

type TaskEvent

type TaskEvent struct {
	Type string
	Time int64 // Unix Nanosecond timestamp

	Message string // A possible message explaining the termination of the task.

	// DisplayMessage is a human friendly message about the event
	DisplayMessage string

	// Details is a map with annotated info about the event
	Details map[string]string

	// FailsTask marks whether this event fails the task.
	// Deprecated, use Details["fails_task"] to access this.
	FailsTask bool

	// Restart fields.
	// Deprecated, use Details["restart_reason"] to access this.
	RestartReason string

	// Setup Failure fields.
	// Deprecated, use Details["setup_error"] to access this.
	SetupError string

	// Driver Failure fields.
	// Deprecated, use Details["driver_error"] to access this.
	DriverError string // A driver error occurred while starting the task.

	// Deprecated, use Details["exit_code"] to access this.
	ExitCode int // The exit code of the task.

	// Deprecated, use Details["signal"] to access this.
	Signal int // The signal that terminated the task.

	// Killing fields
	// Deprecated, use Details["kill_timeout"] to access this.
	KillTimeout time.Duration

	// Task Killed Fields.
	// Deprecated, use Details["kill_error"] to access this.
	KillError string // Error killing the task.

	// KillReason is the reason the task was killed
	// Deprecated, use Details["kill_reason"] to access this.
	KillReason string

	// TaskRestarting fields.
	// Deprecated, use Details["start_delay"] to access this.
	StartDelay int64 // The sleep period before restarting the task in unix nanoseconds.

	// Artifact Download fields
	// Deprecated, use Details["download_error"] to access this.
	DownloadError string // Error downloading artifacts

	// Validation fields
	// Deprecated, use Details["validation_error"] to access this.
	ValidationError string // Validation error

	// The maximum allowed task disk size.
	// Deprecated, use Details["disk_limit"] to access this.
	DiskLimit int64

	// Name of the sibling task that caused termination of the task that
	// the TaskEvent refers to.
	// Deprecated, use Details["failed_sibling"] to access this.
	FailedSibling string

	// VaultError is the error from token renewal
	// Deprecated, use Details["vault_renewal_error"] to access this.
	VaultError string

	// TaskSignalReason indicates the reason the task is being signalled.
	// Deprecated, use Details["task_signal_reason"] to access this.
	TaskSignalReason string

	// TaskSignal is the signal that was sent to the task
	// Deprecated, use Details["task_signal"] to access this.
	TaskSignal string

	// DriverMessage indicates a driver action being taken.
	// Deprecated, use Details["driver_message"] to access this.
	DriverMessage string

	// GenericSource is the source of a message.
	// Deprecated, is redundant with event type.
	GenericSource string
}

TaskEvent is an event that effects the state of a task and contains meta-data appropriate to the events type.

func NewTaskEvent

func NewTaskEvent(event string) *TaskEvent

func (*TaskEvent) CodecDecodeSelf

func (x *TaskEvent) CodecDecodeSelf(d *codec1978.Decoder)

func (*TaskEvent) CodecEncodeSelf

func (x *TaskEvent) CodecEncodeSelf(e *codec1978.Encoder)

func (*TaskEvent) Copy

func (te *TaskEvent) Copy() *TaskEvent

func (*TaskEvent) GoString

func (te *TaskEvent) GoString() string

func (*TaskEvent) PopulateEventDisplayMessage

func (event *TaskEvent) PopulateEventDisplayMessage()

func (*TaskEvent) SetDiskLimit

func (e *TaskEvent) SetDiskLimit(limit int64) *TaskEvent

func (*TaskEvent) SetDownloadError

func (e *TaskEvent) SetDownloadError(err error) *TaskEvent

func (*TaskEvent) SetDriverError

func (e *TaskEvent) SetDriverError(err error) *TaskEvent

func (*TaskEvent) SetDriverMessage

func (e *TaskEvent) SetDriverMessage(m string) *TaskEvent

func (*TaskEvent) SetExitCode

func (e *TaskEvent) SetExitCode(c int) *TaskEvent

func (*TaskEvent) SetExitMessage

func (e *TaskEvent) SetExitMessage(err error) *TaskEvent

func (*TaskEvent) SetFailedSibling

func (e *TaskEvent) SetFailedSibling(sibling string) *TaskEvent

func (*TaskEvent) SetFailsTask

func (e *TaskEvent) SetFailsTask() *TaskEvent

func (*TaskEvent) SetKillError

func (e *TaskEvent) SetKillError(err error) *TaskEvent

func (*TaskEvent) SetKillReason

func (e *TaskEvent) SetKillReason(r string) *TaskEvent

func (*TaskEvent) SetKillTimeout

func (e *TaskEvent) SetKillTimeout(timeout time.Duration) *TaskEvent

func (*TaskEvent) SetMessage

func (te *TaskEvent) SetMessage(msg string) *TaskEvent

SetMessage sets the message of TaskEvent

func (*TaskEvent) SetRestartDelay

func (e *TaskEvent) SetRestartDelay(delay time.Duration) *TaskEvent

func (*TaskEvent) SetRestartReason

func (e *TaskEvent) SetRestartReason(reason string) *TaskEvent

func (*TaskEvent) SetSetupError

func (e *TaskEvent) SetSetupError(err error) *TaskEvent

SetSetupError is used to store an error that occurred while setting up the task

func (*TaskEvent) SetSignal

func (e *TaskEvent) SetSignal(s int) *TaskEvent

func (*TaskEvent) SetTaskSignal

func (e *TaskEvent) SetTaskSignal(s os.Signal) *TaskEvent

func (*TaskEvent) SetTaskSignalReason

func (e *TaskEvent) SetTaskSignalReason(r string) *TaskEvent

func (*TaskEvent) SetValidationError

func (e *TaskEvent) SetValidationError(err error) *TaskEvent

func (*TaskEvent) SetVaultRenewalError

func (e *TaskEvent) SetVaultRenewalError(err error) *TaskEvent

type TaskGroup

type TaskGroup struct {
	// Name of the task group
	Name string

	// Count is the number of replicas of this task group that should
	// be scheduled.
	Count int

	// Update is used to control the update strategy for this task group
	Update *UpdateStrategy

	// Constraints can be specified at a task group level and apply to
	// all the tasks contained.
	Constraints []*Constraint

	//RestartPolicy of a TaskGroup
	RestartPolicy *RestartPolicy

	// Tasks are the collection of tasks that this task group needs to run
	Tasks []*Task

	// EphemeralDisk is the disk resources that the task group requests
	EphemeralDisk *EphemeralDisk

	// Meta is used to associate arbitrary metadata with this
	// task group. This is opaque to Nomad.
	Meta map[string]string
}

TaskGroup is an atomic unit of placement. Each task group belongs to a job and may contain any number of tasks. A task group support running in many replicas using the same configuration..

func (*TaskGroup) Canonicalize

func (tg *TaskGroup) Canonicalize(job *Job)

Canonicalize is used to canonicalize fields in the TaskGroup.

func (*TaskGroup) CodecDecodeSelf

func (x *TaskGroup) CodecDecodeSelf(d *codec1978.Decoder)

func (*TaskGroup) CodecEncodeSelf

func (x *TaskGroup) CodecEncodeSelf(e *codec1978.Encoder)

func (*TaskGroup) CombinedResources

func (tg *TaskGroup) CombinedResources() *Resources

CombinedResources returns the combined resources for the task group

func (*TaskGroup) Copy

func (tg *TaskGroup) Copy() *TaskGroup

func (*TaskGroup) Diff

func (tg *TaskGroup) Diff(other *TaskGroup, contextual bool) (*TaskGroupDiff, error)

Diff returns a diff of two task groups. If contextual diff is enabled, objects' fields will be stored even if no diff occurred as long as one field changed.

func (*TaskGroup) GoString

func (tg *TaskGroup) GoString() string

func (*TaskGroup) LookupTask

func (tg *TaskGroup) LookupTask(name string) *Task

LookupTask finds a task by name

func (*TaskGroup) Validate

func (tg *TaskGroup) Validate(j *Job) error

Validate is used to sanity check a task group

func (*TaskGroup) Warnings

func (tg *TaskGroup) Warnings(j *Job) error

Warnings returns a list of warnings that may be from dubious settings or deprecation warnings.

type TaskGroupDiff

type TaskGroupDiff struct {
	Type    DiffType
	Name    string
	Fields  []*FieldDiff
	Objects []*ObjectDiff