agent

package
v0.0.0-...-10febd9 Latest Latest
Warning

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

Go to latest
Published: Jan 28, 2017 License: Apache-2.0, Apache-2.0 Imports: 14 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// TTL to use with all state pushed to Registry
	DefaultTTL = "30s"
)

Variables

This section is empty.

Functions

This section is empty.

Types

type Agent

type Agent struct {
	Machine machine.Machine
	// contains filtered or unexported fields
}

func (*Agent) Heartbeat

func (a *Agent) Heartbeat(stop <-chan struct{})

Heartbeat updates the Registry periodically with an acknowledgement of the Jobs this Agent is expected to be running.

func (*Agent) MarshalJSON

func (a *Agent) MarshalJSON() ([]byte, error)

type AgentReconciler

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

func NewReconciler

func NewReconciler(reg registry.Registry, rStream pkg.EventStream) *AgentReconciler

func (*AgentReconciler) Purge

func (ar *AgentReconciler) Purge(a *Agent)

Purge attempts to unload all Units that have been loaded locally

func (*AgentReconciler) Reconcile

func (ar *AgentReconciler) Reconcile(a *Agent)

Reconcile drives the local Agent's state towards the desired state stored in the Registry.

func (*AgentReconciler) Run

func (ar *AgentReconciler) Run(a *Agent, stop <-chan struct{})

Run periodically attempts to reconcile the provided Agent until the stop channel is closed. Run will also reconcile in reaction to events on the AgentReconciler's rStream.

type AgentState

type AgentState struct {
	MState *machine.MachineState
	Units  map[string]*job.Unit
}

func NewAgentState

func NewAgentState(ms *machine.MachineState) *AgentState

func (*AgentState) AbleToRun

func (as *AgentState) AbleToRun(j *job.Job) (bool, string)

AbleToRun determines if an Agent can run the provided Job based on the Agent's current state. A boolean indicating whether this is the case or not is returned. The following criteria is used:

  • Agent must meet the Job's machine target requirement (if any)
  • Agent must have all of the Job's required metadata (if any)
  • Agent must have all required Peers of the Job scheduled locally (if any)
  • Job must not conflict with any other Units scheduled to the agent
  • Job must specially handle replaced units to be rescheduled

type UnitStatePublisher

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

func NewUnitStatePublisher

func NewUnitStatePublisher(reg registry.Registry, mach machine.Machine, ttl time.Duration) *UnitStatePublisher

func (*UnitStatePublisher) MarshalJSON

func (p *UnitStatePublisher) MarshalJSON() ([]byte, error)

func (*UnitStatePublisher) Purge

func (p *UnitStatePublisher) Purge()

Purge ensures that the UnitStates for all Units known in the UnitStatePublisher's cache are removed from the registry.

func (*UnitStatePublisher) Run

func (p *UnitStatePublisher) Run(beatchan <-chan *unit.UnitStateHeartbeat, stop <-chan struct{})

Run caches all of the heartbeat objects from the provided channel, publishing them to the Registry every 5s. Heartbeat objects are also published as they are received on the channel.

Jump to

Keyboard shortcuts

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