Documentation ¶
Index ¶
- Constants
- func NewTokenFuture() *tokenFuture
- type AllocGarbageCollector
- func (a *AllocGarbageCollector) Collect(allocID string) error
- func (a *AllocGarbageCollector) CollectAll() error
- func (a *AllocGarbageCollector) MakeRoomFor(allocations []*structs.Allocation) error
- func (a *AllocGarbageCollector) MarkForCollection(ar *AllocRunner) error
- func (a *AllocGarbageCollector) Remove(ar *AllocRunner)
- func (a *AllocGarbageCollector) Stop()
- type AllocRunner
- func (r *AllocRunner) Alloc() *structs.Allocation
- func (r *AllocRunner) Destroy()
- func (r *AllocRunner) DestroyContext() error
- func (r *AllocRunner) DestroyState() error
- func (r *AllocRunner) GetAllocDir() *allocdir.AllocDir
- func (r *AllocRunner) LatestAllocStats(taskFilter string) (*cstructs.AllocResourceUsage, error)
- func (r *AllocRunner) RestoreState() error
- func (r *AllocRunner) Run()
- func (r *AllocRunner) SaveState() error
- func (r *AllocRunner) SetPreviousAllocDir(allocDir *allocdir.AllocDir)
- func (r *AllocRunner) StatsReporter() AllocStatsReporter
- func (r *AllocRunner) Update(update *structs.Allocation)
- func (r *AllocRunner) WaitCh() <-chan struct{}
- type AllocStateUpdater
- type AllocStatsReporter
- type Client
- func (c *Client) CollectAllAllocs() error
- func (c *Client) CollectAllocation(allocID string) error
- func (c *Client) Datacenter() string
- func (c *Client) GetAllocFS(allocID string) (allocdir.AllocDirFS, error)
- func (c *Client) GetAllocStats(allocID string) (AllocStatsReporter, error)
- func (c *Client) GetClientAlloc(allocID string) (*structs.Allocation, error)
- func (c *Client) GetServers() []string
- func (c *Client) LatestHostStats() *stats.HostStats
- func (c *Client) Leave() error
- func (c *Client) Node() *structs.Node
- func (c *Client) RPC(method string, args interface{}, reply interface{}) error
- func (c *Client) RPCMajorVersion() int
- func (c *Client) RPCMinorVersion() int
- func (c *Client) Region() string
- func (c *Client) SetServers(servers []string) error
- func (c *Client) Shutdown() error
- func (c *Client) Stats() map[string]map[string]string
- func (c *Client) StatsReporter() ClientStatsReporter
- type ClientStatsReporter
- type GCAlloc
- type GCAllocPQImpl
- type GCConfig
- type IndexedGCAllocPQ
- type RestartTracker
- func (r *RestartTracker) GetReason() string
- func (r *RestartTracker) GetState() (string, time.Duration)
- func (r *RestartTracker) SetPolicy(policy *structs.RestartPolicy)
- func (r *RestartTracker) SetRestartTriggered() *RestartTracker
- func (r *RestartTracker) SetStartError(err error) *RestartTracker
- func (r *RestartTracker) SetWaitResult(res *dstructs.WaitResult) *RestartTracker
- type SignalEvent
- type TaskHooks
- type TaskRunner
- func (r *TaskRunner) Destroy(event *structs.TaskEvent)
- func (r *TaskRunner) DestroyState() error
- func (r *TaskRunner) Kill(source, reason string, fail bool)
- func (r *TaskRunner) LatestResourceUsage() *cstructs.TaskResourceUsage
- func (r *TaskRunner) MarkReceived()
- func (r *TaskRunner) Restart(source, reason string)
- func (r *TaskRunner) RestoreState() error
- func (r *TaskRunner) Run()
- func (r *TaskRunner) SaveState() error
- func (r *TaskRunner) Signal(source, reason string, s os.Signal) error
- func (r *TaskRunner) UnblockStart(source string)
- func (r *TaskRunner) Update(update *structs.Allocation)
- func (r *TaskRunner) WaitCh() <-chan struct{}
- type TaskStateUpdater
- type TaskTemplateManager
Constants ¶
const ( ReasonNoRestartsAllowed = "Policy allows no restarts" ReasonUnrecoverableErrror = "Error was unrecoverable" ReasonWithinPolicy = "Restart within policy" ReasonDelay = "Exceeded allowed attempts, applying a delay" )
const (
// MB is a constant which converts values in bytes to MB
MB = 1024 * 1024
)
Variables ¶
This section is empty.
Functions ¶
func NewTokenFuture ¶ added in v0.5.0
func NewTokenFuture() *tokenFuture
NewTokenFuture returns a new token future without any token set
Types ¶
type AllocGarbageCollector ¶ added in v0.5.2
type AllocGarbageCollector struct {
// contains filtered or unexported fields
}
AllocGarbageCollector garbage collects terminated allocations on a node
func NewAllocGarbageCollector ¶ added in v0.5.2
func NewAllocGarbageCollector(logger *log.Logger, statsCollector stats.NodeStatsCollector, config *GCConfig) *AllocGarbageCollector
NewAllocGarbageCollector returns a garbage collector for terminated allocations on a node.
func (*AllocGarbageCollector) Collect ¶ added in v0.5.2
func (a *AllocGarbageCollector) Collect(allocID string) error
Collect garbage collects a single allocation on a node
func (*AllocGarbageCollector) CollectAll ¶ added in v0.5.2
func (a *AllocGarbageCollector) CollectAll() error
CollectAll garbage collects all termianated allocations on a node
func (*AllocGarbageCollector) MakeRoomFor ¶ added in v0.5.2
func (a *AllocGarbageCollector) MakeRoomFor(allocations []*structs.Allocation) error
MakeRoomFor garbage collects enough number of allocations in the terminal state to make room for new allocations
func (*AllocGarbageCollector) MarkForCollection ¶ added in v0.5.2
func (a *AllocGarbageCollector) MarkForCollection(ar *AllocRunner) error
MarkForCollection starts tracking an allocation for Garbage Collection
func (*AllocGarbageCollector) Remove ¶ added in v0.5.2
func (a *AllocGarbageCollector) Remove(ar *AllocRunner)
Remove removes an alloc runner without garbage collecting it
func (*AllocGarbageCollector) Stop ¶ added in v0.5.2
func (a *AllocGarbageCollector) Stop()
type AllocRunner ¶
type AllocRunner struct {
// contains filtered or unexported fields
}
AllocRunner is used to wrap an allocation and provide the execution context.
func NewAllocRunner ¶
func NewAllocRunner(logger *log.Logger, config *config.Config, updater AllocStateUpdater, alloc *structs.Allocation, vaultClient vaultclient.VaultClient) *AllocRunner
NewAllocRunner is used to create a new allocation context
func (*AllocRunner) Alloc ¶
func (r *AllocRunner) Alloc() *structs.Allocation
Alloc returns the associated allocation
func (*AllocRunner) Destroy ¶
func (r *AllocRunner) Destroy()
Destroy is used to indicate that the allocation context should be destroyed
func (*AllocRunner) DestroyContext ¶
func (r *AllocRunner) DestroyContext() error
DestroyContext is used to destroy the context
func (*AllocRunner) DestroyState ¶
func (r *AllocRunner) DestroyState() error
DestroyState is used to cleanup after ourselves
func (*AllocRunner) GetAllocDir ¶ added in v0.5.0
func (r *AllocRunner) GetAllocDir() *allocdir.AllocDir
GetAllocDir returns the alloc dir for the alloc runner
func (*AllocRunner) LatestAllocStats ¶ added in v0.4.0
func (r *AllocRunner) LatestAllocStats(taskFilter string) (*cstructs.AllocResourceUsage, error)
LatestAllocStats returns the latest allocation stats. If the optional taskFilter is set the allocation stats will only include the given task.
func (*AllocRunner) RestoreState ¶
func (r *AllocRunner) RestoreState() error
RestoreState is used to restore the state of the alloc runner
func (*AllocRunner) Run ¶
func (r *AllocRunner) Run()
Run is a long running goroutine used to manage an allocation
func (*AllocRunner) SaveState ¶
func (r *AllocRunner) SaveState() error
SaveState is used to snapshot the state of the alloc runner if the fullSync is marked as false only the state of the Alloc Runner is snapshotted. If fullSync is marked as true, we snapshot all the Task Runners associated with the Alloc
func (*AllocRunner) SetPreviousAllocDir ¶ added in v0.5.0
func (r *AllocRunner) SetPreviousAllocDir(allocDir *allocdir.AllocDir)
SetPreviousAllocDir sets the previous allocation directory of the current allocation
func (*AllocRunner) StatsReporter ¶ added in v0.4.0
func (r *AllocRunner) StatsReporter() AllocStatsReporter
StatsReporter returns an interface to query resource usage statistics of an allocation
func (*AllocRunner) Update ¶
func (r *AllocRunner) Update(update *structs.Allocation)
Update is used to update the allocation of the context
func (*AllocRunner) WaitCh ¶ added in v0.1.2
func (r *AllocRunner) WaitCh() <-chan struct{}
WaitCh returns a channel to wait for termination
type AllocStateUpdater ¶
type AllocStateUpdater func(alloc *structs.Allocation)
AllocStateUpdater is used to update the status of an allocation
type AllocStatsReporter ¶ added in v0.4.0
type AllocStatsReporter interface {
LatestAllocStats(taskFilter string) (*cstructs.AllocResourceUsage, error)
}
type Client ¶
type Client struct {
// contains filtered or unexported fields
}
Client is used to implement the client interaction with Nomad. Clients are expected to register as a schedulable node to the servers, and to run allocations as determined by the servers.
func NewClient ¶
func NewClient(cfg *config.Config, consulSyncer *consul.Syncer, logger *log.Logger) (*Client, error)
NewClient is used to create a new client from the given configuration
func (*Client) CollectAllAllocs ¶ added in v0.5.2
CollectAllAllocs garbage collects all allocations on a node in the terminal state
func (*Client) CollectAllocation ¶ added in v0.5.2
CollectAllocation garbage collects a single allocation
func (*Client) Datacenter ¶ added in v0.4.0
Datacenter returns the datacenter for the given client
func (*Client) GetAllocFS ¶ added in v0.3.0
func (c *Client) GetAllocFS(allocID string) (allocdir.AllocDirFS, error)
GetAllocFS returns the AllocFS interface for the alloc dir of an allocation
func (*Client) GetAllocStats ¶ added in v0.4.0
func (c *Client) GetAllocStats(allocID string) (AllocStatsReporter, error)
func (*Client) GetClientAlloc ¶ added in v0.5.6
func (c *Client) GetClientAlloc(allocID string) (*structs.Allocation, error)
GetClientAlloc returns the allocation from the client
func (*Client) GetServers ¶ added in v0.5.0
GetServers returns the list of nomad servers this client is aware of.
func (*Client) LatestHostStats ¶ added in v0.4.0
HostStats returns all the stats related to a Nomad client
func (*Client) RPCMajorVersion ¶ added in v0.4.0
RPCMajorVersion returns the structs.ApiMajorVersion supported by the client.
func (*Client) RPCMinorVersion ¶ added in v0.4.0
RPCMinorVersion returns the structs.ApiMinorVersion supported by the client.
func (*Client) SetServers ¶
SetServers sets a new list of nomad servers to connect to. As long as one server is resolvable no error is returned.
func (*Client) Stats ¶
Stats is used to return statistics for debugging and insight for various sub-systems
func (*Client) StatsReporter ¶ added in v0.4.0
func (c *Client) StatsReporter() ClientStatsReporter
StatsReporter exposes the various APIs related resource usage of a Nomad client
type ClientStatsReporter ¶ added in v0.4.0
type ClientStatsReporter interface { // GetAllocStats returns the AllocStatsReporter for the passed allocation. // If it does not exist an error is reported. GetAllocStats(allocID string) (AllocStatsReporter, error) // LatestHostStats returns the latest resource usage stats for the host LatestHostStats() *stats.HostStats }
ClientStatsReporter exposes all the APIs related to resource usage of a Nomad Client
type GCAlloc ¶ added in v0.5.2
type GCAlloc struct {
// contains filtered or unexported fields
}
GCAlloc wraps an allocation runner and an index enabling it to be used within a PQ
type GCAllocPQImpl ¶ added in v0.5.2
type GCAllocPQImpl []*GCAlloc
func (GCAllocPQImpl) Len ¶ added in v0.5.2
func (pq GCAllocPQImpl) Len() int
func (GCAllocPQImpl) Less ¶ added in v0.5.2
func (pq GCAllocPQImpl) Less(i, j int) bool
func (*GCAllocPQImpl) Pop ¶ added in v0.5.2
func (pq *GCAllocPQImpl) Pop() interface{}
func (*GCAllocPQImpl) Push ¶ added in v0.5.2
func (pq *GCAllocPQImpl) Push(x interface{})
func (GCAllocPQImpl) Swap ¶ added in v0.5.2
func (pq GCAllocPQImpl) Swap(i, j int)
type GCConfig ¶ added in v0.5.4
type GCConfig struct { DiskUsageThreshold float64 InodeUsageThreshold float64 Interval time.Duration ReservedDiskMB int ParallelDestroys int }
GCConfig allows changing the behaviour of the garbage collector
type IndexedGCAllocPQ ¶ added in v0.5.2
type IndexedGCAllocPQ struct {
// contains filtered or unexported fields
}
IndexedGCAllocPQ is an indexed PQ which maintains a list of allocation runner based on their termination time.
func NewIndexedGCAllocPQ ¶ added in v0.5.2
func NewIndexedGCAllocPQ() *IndexedGCAllocPQ
func (*IndexedGCAllocPQ) Length ¶ added in v0.5.2
func (i *IndexedGCAllocPQ) Length() int
func (*IndexedGCAllocPQ) Pop ¶ added in v0.5.2
func (i *IndexedGCAllocPQ) Pop() *GCAlloc
func (*IndexedGCAllocPQ) Push ¶ added in v0.5.2
func (i *IndexedGCAllocPQ) Push(ar *AllocRunner) error
type RestartTracker ¶ added in v0.3.0
type RestartTracker struct {
// contains filtered or unexported fields
}
func (*RestartTracker) GetReason ¶ added in v0.3.2
func (r *RestartTracker) GetReason() string
GetReason returns a human-readable description for the last state returned by GetState.
func (*RestartTracker) GetState ¶ added in v0.3.1
func (r *RestartTracker) GetState() (string, time.Duration)
GetState returns the tasks next state given the set exit code and start error. One of the following states are returned:
- TaskRestarting - Task should be restarted
- TaskNotRestarting - Task should not be restarted and has exceeded its restart policy.
- TaskTerminated - Task has terminated successfully and does not need a restart.
If TaskRestarting is returned, the duration is how long to wait until starting the task again.
func (*RestartTracker) SetPolicy ¶ added in v0.3.0
func (r *RestartTracker) SetPolicy(policy *structs.RestartPolicy)
SetPolicy updates the policy used to determine restarts.
func (*RestartTracker) SetRestartTriggered ¶ added in v0.5.0
func (r *RestartTracker) SetRestartTriggered() *RestartTracker
SetRestartTriggered is used to mark that the task has been signalled to be restarted
func (*RestartTracker) SetStartError ¶ added in v0.3.1
func (r *RestartTracker) SetStartError(err error) *RestartTracker
SetStartError is used to mark the most recent start error. If starting was successful the error should be nil.
func (*RestartTracker) SetWaitResult ¶ added in v0.3.1
func (r *RestartTracker) SetWaitResult(res *dstructs.WaitResult) *RestartTracker
SetWaitResult is used to mark the most recent wait result.
type SignalEvent ¶ added in v0.5.0
type SignalEvent struct {
// contains filtered or unexported fields
}
SignalEvent is a tuple of the signal and the event generating it
type TaskHooks ¶ added in v0.5.0
type TaskHooks interface { // Restart is used to restart the task Restart(source, reason string) // Signal is used to signal the task Signal(source, reason string, s os.Signal) error // UnblockStart is used to unblock the starting of the task. This should be // called after prestart work is completed UnblockStart(source string) // Kill is used to kill the task because of the passed error. If fail is set // to true, the task is marked as failed Kill(source, reason string, fail bool) }
TaskHooks is an interface which provides hooks into the tasks life-cycle
type TaskRunner ¶
type TaskRunner struct {
// contains filtered or unexported fields
}
TaskRunner is used to wrap a task within an allocation and provide the execution context.
func NewTaskRunner ¶
func NewTaskRunner(logger *log.Logger, config *config.Config, updater TaskStateUpdater, taskDir *allocdir.TaskDir, alloc *structs.Allocation, task *structs.Task, vaultClient vaultclient.VaultClient) *TaskRunner
NewTaskRunner is used to create a new task context
func (*TaskRunner) Destroy ¶
func (r *TaskRunner) Destroy(event *structs.TaskEvent)
Destroy is used to indicate that the task context should be destroyed. The event parameter provides a context for the destroy.
func (*TaskRunner) DestroyState ¶
func (r *TaskRunner) DestroyState() error
DestroyState is used to cleanup after ourselves
func (*TaskRunner) Kill ¶ added in v0.5.0
func (r *TaskRunner) Kill(source, reason string, fail bool)
Kill will kill a task and store the error, no longer restarting the task. If fail is set, the task is marked as having failed.
func (*TaskRunner) LatestResourceUsage ¶ added in v0.4.0
func (r *TaskRunner) LatestResourceUsage() *cstructs.TaskResourceUsage
LatestResourceUsage returns the last resource utilization datapoint collected
func (*TaskRunner) MarkReceived ¶ added in v0.3.2
func (r *TaskRunner) MarkReceived()
MarkReceived marks the task as received.
func (*TaskRunner) Restart ¶ added in v0.5.0
func (r *TaskRunner) Restart(source, reason string)
Restart will restart the task
func (*TaskRunner) RestoreState ¶
func (r *TaskRunner) RestoreState() error
RestoreState is used to restore our state
func (*TaskRunner) Run ¶
func (r *TaskRunner) Run()
Run is a long running routine used to manage the task
func (*TaskRunner) SaveState ¶
func (r *TaskRunner) SaveState() error
SaveState is used to snapshot our state
func (*TaskRunner) Signal ¶ added in v0.5.0
func (r *TaskRunner) Signal(source, reason string, s os.Signal) error
Signal will send a signal to the task
func (*TaskRunner) UnblockStart ¶ added in v0.5.0
func (r *TaskRunner) UnblockStart(source string)
UnblockStart unblocks the starting of the task. It currently assumes only consul-template will unblock
func (*TaskRunner) Update ¶
func (r *TaskRunner) Update(update *structs.Allocation)
Update is used to update the task of the context
func (*TaskRunner) WaitCh ¶
func (r *TaskRunner) WaitCh() <-chan struct{}
WaitCh returns a channel to wait for termination
type TaskStateUpdater ¶
TaskStateUpdater is used to signal that tasks state has changed.
type TaskTemplateManager ¶ added in v0.5.0
type TaskTemplateManager struct {
// contains filtered or unexported fields
}
TaskTemplateManager is used to run a set of templates for a given task
func NewTaskTemplateManager ¶ added in v0.5.0
func NewTaskTemplateManager(hook TaskHooks, tmpls []*structs.Template, config *config.Config, vaultToken, taskDir string, taskEnv *env.TaskEnvironment) (*TaskTemplateManager, error)
func (*TaskTemplateManager) Stop ¶ added in v0.5.0
func (tm *TaskTemplateManager) Stop()
Stop is used to stop the consul-template runner