state

package
v0.6.0-rc1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 8, 2017 License: MPL-2.0 Imports: 8 Imported by: 213

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type IndexEntry

type IndexEntry struct {
	Key   string
	Value uint64
}

IndexEntry is used with the "index" table for managing the latest Raft index affecting a table.

type NotifyGroup

type NotifyGroup struct {
	// contains filtered or unexported fields
}

NotifyGroup is used to allow a simple notification mechanism. Channels can be marked as waiting, and when notify is invoked, all the waiting channels get a message and are cleared from the notify list.

func (*NotifyGroup) Clear

func (n *NotifyGroup) Clear(ch chan struct{})

Clear removes a channel from the notify group

func (*NotifyGroup) Empty

func (n *NotifyGroup) Empty() bool

Empty checks if there are no channels to notify

func (*NotifyGroup) Notify

func (n *NotifyGroup) Notify()

Notify will do a non-blocking send to all waiting channels, and clear the notify list

func (*NotifyGroup) Wait

func (n *NotifyGroup) Wait(ch chan struct{})

Wait adds a channel to the notify group

func (*NotifyGroup) WaitCh

func (n *NotifyGroup) WaitCh() chan struct{}

WaitCh allocates a channel that is subscribed to notifications

type StateRestore

type StateRestore struct {
	// contains filtered or unexported fields
}

StateRestore is used to optimize the performance when restoring state by only using a single large transaction instead of thousands of sub transactions

func (*StateRestore) Abort

func (s *StateRestore) Abort()

Abort is used to abort the restore operation

func (*StateRestore) AllocRestore

func (r *StateRestore) AllocRestore(alloc *structs.Allocation) error

AllocRestore is used to restore an allocation

func (*StateRestore) Commit

func (s *StateRestore) Commit()

Commit is used to commit the restore operation

func (*StateRestore) DeploymentRestore added in v0.6.0

func (r *StateRestore) DeploymentRestore(deployment *structs.Deployment) error

DeploymentRestore is used to restore a deployment

func (*StateRestore) EvalRestore

func (r *StateRestore) EvalRestore(eval *structs.Evaluation) error

EvalRestore is used to restore an evaluation

func (*StateRestore) IndexRestore

func (r *StateRestore) IndexRestore(idx *IndexEntry) error

IndexRestore is used to restore an index

func (*StateRestore) JobRestore

func (r *StateRestore) JobRestore(job *structs.Job) error

JobRestore is used to restore a job

func (*StateRestore) JobSummaryRestore added in v0.4.1

func (r *StateRestore) JobSummaryRestore(jobSummary *structs.JobSummary) error

JobSummaryRestore is used to restore a job summary

func (*StateRestore) JobVersionRestore added in v0.6.0

func (r *StateRestore) JobVersionRestore(version *structs.Job) error

JobVersionRestore is used to restore a job version

func (*StateRestore) NodeRestore

func (r *StateRestore) NodeRestore(node *structs.Node) error

NodeRestore is used to restore a node

func (*StateRestore) PeriodicLaunchRestore added in v0.3.0

func (r *StateRestore) PeriodicLaunchRestore(launch *structs.PeriodicLaunch) error

PeriodicLaunchRestore is used to restore a periodic launch.

func (*StateRestore) VaultAccessorRestore added in v0.5.0

func (r *StateRestore) VaultAccessorRestore(accessor *structs.VaultAccessor) error

VaultAccessorRestore is used to restore a vault accessor

type StateSnapshot

type StateSnapshot struct {
	StateStore
}

StateSnapshot is used to provide a point-in-time snapshot

type StateStore

type StateStore struct {
	// contains filtered or unexported fields
}

The StateStore is responsible for maintaining all the Nomad state. It is manipulated by the FSM which maintains consistency through the use of Raft. The goals of the StateStore are to provide high concurrency for read operations without blocking writes, and to provide write availability in the face of reads. EVERY object returned as a result of a read against the state store should be considered a constant and NEVER modified in place.

func NewStateStore

func NewStateStore(logOutput io.Writer) (*StateStore, error)

NewStateStore is used to create a new state store

func (*StateStore) Abandon added in v0.5.5

func (s *StateStore) Abandon()

Abandon is used to signal that the given state store has been abandoned. Calling this more than one time will panic.

func (*StateStore) AbandonCh added in v0.5.5

func (s *StateStore) AbandonCh() <-chan struct{}

AbandonCh returns a channel you can wait on to know if the state store was abandoned.

func (*StateStore) AllocByID

func (s *StateStore) AllocByID(ws memdb.WatchSet, id string) (*structs.Allocation, error)

AllocByID is used to lookup an allocation by its ID

func (*StateStore) Allocs

func (s *StateStore) Allocs(ws memdb.WatchSet) (memdb.ResultIterator, error)

Allocs returns an iterator over all the evaluations

func (*StateStore) AllocsByDeployment added in v0.6.0

func (s *StateStore) AllocsByDeployment(ws memdb.WatchSet, deploymentID string) ([]*structs.Allocation, error)

AllocsByDeployment returns all the allocations by deployment id

func (*StateStore) AllocsByEval

func (s *StateStore) AllocsByEval(ws memdb.WatchSet, evalID string) ([]*structs.Allocation, error)

AllocsByEval returns all the allocations by eval id

func (*StateStore) AllocsByIDPrefix added in v0.3.0

func (s *StateStore) AllocsByIDPrefix(ws memdb.WatchSet, id string) (memdb.ResultIterator, error)

AllocsByIDPrefix is used to lookup allocs by prefix

func (*StateStore) AllocsByJob

func (s *StateStore) AllocsByJob(ws memdb.WatchSet, jobID string, all bool) ([]*structs.Allocation, error)

AllocsByJob returns all the allocations by job id

func (*StateStore) AllocsByNode

func (s *StateStore) AllocsByNode(ws memdb.WatchSet, node string) ([]*structs.Allocation, error)

AllocsByNode returns all the allocations by node

func (*StateStore) AllocsByNodeTerminal added in v0.3.0

func (s *StateStore) AllocsByNodeTerminal(ws memdb.WatchSet, node string, terminal bool) ([]*structs.Allocation, error)

AllocsByNode returns all the allocations by node and terminal status

func (*StateStore) DeleteDeployment added in v0.6.0

func (s *StateStore) DeleteDeployment(index uint64, deploymentIDs []string) error

DeleteDeployment is used to delete a set of deployments by ID

func (*StateStore) DeleteEval

func (s *StateStore) DeleteEval(index uint64, evals []string, allocs []string) error

DeleteEval is used to delete an evaluation

func (*StateStore) DeleteJob

func (s *StateStore) DeleteJob(index uint64, jobID string) error

DeleteJob is used to deregister a job

func (*StateStore) DeleteJobSummary added in v0.4.1

func (s *StateStore) DeleteJobSummary(index uint64, id string) error

DeleteJobSummary deletes the job summary with the given ID. This is for testing purposes only.

func (*StateStore) DeleteNode

func (s *StateStore) DeleteNode(index uint64, nodeID string) error

DeleteNode is used to deregister a node

func (*StateStore) DeletePeriodicLaunch added in v0.3.0

func (s *StateStore) DeletePeriodicLaunch(index uint64, jobID string) error

DeletePeriodicLaunch is used to delete the periodic launch

func (*StateStore) DeleteVaultAccessors added in v0.5.0

func (s *StateStore) DeleteVaultAccessors(index uint64, accessors []*structs.VaultAccessor) error

DeleteVaultAccessors is used to delete a set of Vault Accessors

func (*StateStore) DeploymentByID added in v0.6.0

func (s *StateStore) DeploymentByID(ws memdb.WatchSet, deploymentID string) (*structs.Deployment, error)

func (*StateStore) Deployments added in v0.6.0

func (s *StateStore) Deployments(ws memdb.WatchSet) (memdb.ResultIterator, error)

func (*StateStore) DeploymentsByIDPrefix added in v0.6.0

func (s *StateStore) DeploymentsByIDPrefix(ws memdb.WatchSet, deploymentID string) (memdb.ResultIterator, error)

func (*StateStore) DeploymentsByJobID added in v0.6.0

func (s *StateStore) DeploymentsByJobID(ws memdb.WatchSet, jobID string) ([]*structs.Deployment, error)

func (*StateStore) EvalByID

func (s *StateStore) EvalByID(ws memdb.WatchSet, id string) (*structs.Evaluation, error)

EvalByID is used to lookup an eval by its ID

func (*StateStore) Evals

func (s *StateStore) Evals(ws memdb.WatchSet) (memdb.ResultIterator, error)

Evals returns an iterator over all the evaluations

func (*StateStore) EvalsByIDPrefix added in v0.3.0

func (s *StateStore) EvalsByIDPrefix(ws memdb.WatchSet, id string) (memdb.ResultIterator, error)

EvalsByIDPrefix is used to lookup evaluations by prefix

func (*StateStore) EvalsByJob

func (s *StateStore) EvalsByJob(ws memdb.WatchSet, jobID string) ([]*structs.Evaluation, error)

EvalsByJob returns all the evaluations by job id

func (*StateStore) Index

func (s *StateStore) Index(name string) (uint64, error)

Index finds the matching index value

func (*StateStore) Indexes

func (s *StateStore) Indexes() (memdb.ResultIterator, error)

Indexes returns an iterator over all the indexes

func (*StateStore) JobByID

func (s *StateStore) JobByID(ws memdb.WatchSet, id string) (*structs.Job, error)

JobByID is used to lookup a job by its ID. JobByID returns the current/latest job version.

func (*StateStore) JobByIDAndVersion added in v0.6.0

func (s *StateStore) JobByIDAndVersion(ws memdb.WatchSet, id string, version uint64) (*structs.Job, error)

JobByIDAndVersion returns the job identified by its ID and Version. The passed watchset may be nil.

func (*StateStore) JobSummaries added in v0.4.1

func (s *StateStore) JobSummaries(ws memdb.WatchSet) (memdb.ResultIterator, error)

JobSummaries walks the entire job summary table and returns all the job summary objects

func (*StateStore) JobSummaryByID added in v0.4.1

func (s *StateStore) JobSummaryByID(ws memdb.WatchSet, jobID string) (*structs.JobSummary, error)

JobSummary returns a job summary object which matches a specific id.

func (*StateStore) JobSummaryByPrefix added in v0.4.1

func (s *StateStore) JobSummaryByPrefix(ws memdb.WatchSet, id string) (memdb.ResultIterator, error)

JobSummaryByPrefix is used to look up Job Summary by id prefix

func (*StateStore) JobVersions added in v0.6.0

func (s *StateStore) JobVersions(ws memdb.WatchSet) (memdb.ResultIterator, error)

func (*StateStore) JobVersionsByID added in v0.6.0

func (s *StateStore) JobVersionsByID(ws memdb.WatchSet, id string) ([]*structs.Job, error)

JobVersionsByID returns all the tracked versions of a job.

func (*StateStore) Jobs

func (s *StateStore) Jobs(ws memdb.WatchSet) (memdb.ResultIterator, error)

Jobs returns an iterator over all the jobs

func (*StateStore) JobsByGC added in v0.3.0

func (s *StateStore) JobsByGC(ws memdb.WatchSet, gc bool) (memdb.ResultIterator, error)

JobsByGC returns an iterator over all jobs eligible or uneligible for garbage collection.

func (*StateStore) JobsByIDPrefix added in v0.3.0

func (s *StateStore) JobsByIDPrefix(ws memdb.WatchSet, id string) (memdb.ResultIterator, error)

JobsByIDPrefix is used to lookup a job by prefix

func (*StateStore) JobsByPeriodic added in v0.3.0

func (s *StateStore) JobsByPeriodic(ws memdb.WatchSet, periodic bool) (memdb.ResultIterator, error)

JobsByPeriodic returns an iterator over all the periodic or non-periodic jobs.

func (*StateStore) JobsByScheduler added in v0.2.0

func (s *StateStore) JobsByScheduler(ws memdb.WatchSet, schedulerType string) (memdb.ResultIterator, error)

JobsByScheduler returns an iterator over all the jobs with the specific scheduler type.

func (*StateStore) LatestDeploymentByJobID added in v0.6.0

func (s *StateStore) LatestDeploymentByJobID(ws memdb.WatchSet, jobID string) (*structs.Deployment, error)

LatestDeploymentByJobID returns the latest deployment for the given job. The latest is determined strictly by CreateIndex.

func (*StateStore) LatestIndex added in v0.4.0

func (s *StateStore) LatestIndex() (uint64, error)

LastIndex returns the greatest index value for all indexes

func (*StateStore) NodeByID

func (s *StateStore) NodeByID(ws memdb.WatchSet, nodeID string) (*structs.Node, error)

NodeByID is used to lookup a node by ID

func (*StateStore) Nodes

func (s *StateStore) Nodes(ws memdb.WatchSet) (memdb.ResultIterator, error)

Nodes returns an iterator over all the nodes

func (*StateStore) NodesByIDPrefix added in v0.3.0

func (s *StateStore) NodesByIDPrefix(ws memdb.WatchSet, nodeID string) (memdb.ResultIterator, error)

NodesByIDPrefix is used to lookup nodes by prefix

func (*StateStore) PeriodicLaunchByID added in v0.3.0

func (s *StateStore) PeriodicLaunchByID(ws memdb.WatchSet, id string) (*structs.PeriodicLaunch, error)

PeriodicLaunchByID is used to lookup a periodic launch by the periodic job ID.

func (*StateStore) PeriodicLaunches added in v0.3.0

func (s *StateStore) PeriodicLaunches(ws memdb.WatchSet) (memdb.ResultIterator, error)

PeriodicLaunches returns an iterator over all the periodic launches

func (*StateStore) ReconcileJobSummaries added in v0.4.1

func (s *StateStore) ReconcileJobSummaries(index uint64) error

ReconcileJobSummaries re-creates summaries for all jobs present in the state store

func (*StateStore) RemoveIndex added in v0.4.1

func (s *StateStore) RemoveIndex(name string) error

RemoveIndex is a helper method to remove an index for testing purposes

func (*StateStore) Restore

func (s *StateStore) Restore() (*StateRestore, error)

Restore is used to optimize the efficiency of rebuilding state by minimizing the number of transactions and checking overhead.

func (*StateStore) Snapshot

func (s *StateStore) Snapshot() (*StateSnapshot, error)

Snapshot is used to create a point in time snapshot. Because we use MemDB, we just need to snapshot the state of the underlying database.

func (*StateStore) UpdateAllocsFromClient added in v0.3.0

func (s *StateStore) UpdateAllocsFromClient(index uint64, allocs []*structs.Allocation) error

UpdateAllocsFromClient is used to update an allocation based on input from a client. While the schedulers are the authority on the allocation for most things, some updates are authoritative from the client. Specifically, the desired state comes from the schedulers, while the actual state comes from clients.

func (*StateStore) UpdateDeploymentAllocHealth added in v0.6.0

func (s *StateStore) UpdateDeploymentAllocHealth(index uint64, req *structs.ApplyDeploymentAllocHealthRequest) error

UpdateDeploymentAllocHealth is used to update the health of allocations as part of the deployment and potentially make a evaluation

func (*StateStore) UpdateDeploymentPromotion added in v0.6.0

func (s *StateStore) UpdateDeploymentPromotion(index uint64, req *structs.ApplyDeploymentPromoteRequest) error

UpdateDeploymentPromotion is used to promote canaries in a deployment and potentially make a evaluation

func (*StateStore) UpdateDeploymentStatus added in v0.6.0

func (s *StateStore) UpdateDeploymentStatus(index uint64, req *structs.DeploymentStatusUpdateRequest) error

UpdateDeploymentStatus is used to make deployment status updates and potentially make a evaluation

func (*StateStore) UpdateJobStability added in v0.6.0

func (s *StateStore) UpdateJobStability(index uint64, jobID string, jobVersion uint64, stable bool) error

UpdateJobStability updates the stability of the given job and version to the desired status.

func (*StateStore) UpdateNodeDrain

func (s *StateStore) UpdateNodeDrain(index uint64, nodeID string, drain bool) error

UpdateNodeDrain is used to update the drain of a node

func (*StateStore) UpdateNodeStatus

func (s *StateStore) UpdateNodeStatus(index uint64, nodeID, status string) error

UpdateNodeStatus is used to update the status of a node

func (*StateStore) UpsertAllocs

func (s *StateStore) UpsertAllocs(index uint64, allocs []*structs.Allocation) error

UpsertAllocs is used to evict a set of allocations and allocate new ones at the same time.

func (*StateStore) UpsertDeployment added in v0.6.0

func (s *StateStore) UpsertDeployment(index uint64, deployment *structs.Deployment) error

UpsertDeployment is used to insert a new deployment. If cancelPrior is set to true, all prior deployments for the same job will be cancelled.

func (*StateStore) UpsertEvals

func (s *StateStore) UpsertEvals(index uint64, evals []*structs.Evaluation) error

UpsertEvals is used to upsert a set of evaluations

func (*StateStore) UpsertJob

func (s *StateStore) UpsertJob(index uint64, job *structs.Job) error

UpsertJob is used to register a job or update a job definition

func (*StateStore) UpsertJobSummary added in v0.4.1

func (s *StateStore) UpsertJobSummary(index uint64, jobSummary *structs.JobSummary) error

UpsertJobSummary upserts a job summary into the state store.

func (*StateStore) UpsertNode

func (s *StateStore) UpsertNode(index uint64, node *structs.Node) error

UpsertNode is used to register a node or update a node definition This is assumed to be triggered by the client, so we retain the value of drain which is set by the scheduler.

func (*StateStore) UpsertPeriodicLaunch added in v0.3.0

func (s *StateStore) UpsertPeriodicLaunch(index uint64, launch *structs.PeriodicLaunch) error

UpsertPeriodicLaunch is used to register a launch or update it.

func (*StateStore) UpsertPlanResults added in v0.6.0

func (s *StateStore) UpsertPlanResults(index uint64, results *structs.ApplyPlanResultsRequest) error

UpsertPlanResults is used to upsert the results of a plan.

func (*StateStore) UpsertVaultAccessor added in v0.5.0

func (s *StateStore) UpsertVaultAccessor(index uint64, accessors []*structs.VaultAccessor) error

UpsertVaultAccessors is used to register a set of Vault Accessors

func (*StateStore) VaultAccessor added in v0.5.0

func (s *StateStore) VaultAccessor(ws memdb.WatchSet, accessor string) (*structs.VaultAccessor, error)

VaultAccessor returns the given Vault accessor

func (*StateStore) VaultAccessors added in v0.5.0

func (s *StateStore) VaultAccessors(ws memdb.WatchSet) (memdb.ResultIterator, error)

VaultAccessors returns an iterator of Vault accessors.

func (*StateStore) VaultAccessorsByAlloc added in v0.5.0

func (s *StateStore) VaultAccessorsByAlloc(ws memdb.WatchSet, allocID string) ([]*structs.VaultAccessor, error)

VaultAccessorsByAlloc returns all the Vault accessors by alloc id

func (*StateStore) VaultAccessorsByNode added in v0.5.0

func (s *StateStore) VaultAccessorsByNode(ws memdb.WatchSet, nodeID string) ([]*structs.VaultAccessor, error)

VaultAccessorsByNode returns all the Vault accessors by node id

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL