Documentation ¶
Overview ¶
agent contains jujud's machine agent.
Index ¶
- Variables
- func ConnectAsAgent(a agent.Agent) (io.Closer, error)
- func DefaultIntrospectionSocketName(entityTag names.Tag) string
- func GetJujuVersion(machineAgent string, dataDir string) (version.Number, error)
- func MachineAgentFactoryFn(agentConfWriter AgentConfigWriter, bufferedLogger *logsender.BufferedLogWriter, ...) func(string) (*MachineAgent, error)
- func NewCheckConnectionCommand(config AgentConf, connect ConnectFunc) cmd.Command
- func NewMachineAgentCmd(ctx *cmd.Context, machineAgentFactory func(string) (*MachineAgent, error), ...) cmd.Command
- type AgentConf
- type AgentConfigWriter
- type AgentInitializer
- type CaasOperatorAgent
- func (a *CaasOperatorAgent) ChangeConfig(mutate agent.ConfigMutator) error
- func (op *CaasOperatorAgent) Done(err error)
- func (op *CaasOperatorAgent) Info() *cmd.Info
- func (op *CaasOperatorAgent) Init(args []string) error
- func (op *CaasOperatorAgent) Run(ctx *cmd.Context) (err error)
- func (op *CaasOperatorAgent) SetFlags(f *gnuflag.FlagSet)
- func (op *CaasOperatorAgent) Stop() error
- func (op *CaasOperatorAgent) Tag() names.Tag
- func (op *CaasOperatorAgent) Wait() error
- func (op *CaasOperatorAgent) Workers() (worker.Worker, error)
- type ConnectFunc
- type MachineAgent
- func (a *MachineAgent) ChangeConfig(mutate agent.ConfigMutator) error
- func (a *MachineAgent) Done(err error)
- func (a *MachineAgent) Restart() error
- func (a *MachineAgent) Run(*cmd.Context) (err error)
- func (a *MachineAgent) Stop() error
- func (a *MachineAgent) Tag() names.Tag
- func (a *MachineAgent) Wait() error
- func (a *MachineAgent) WorkersStarted() <-chan struct{}
- type UnitAgent
- func (a *UnitAgent) APIWorkers() (worker.Worker, error)
- func (a *UnitAgent) ChangeConfig(mutate agent.ConfigMutator) error
- func (a *UnitAgent) Done(err error)
- func (a *UnitAgent) Info() *cmd.Info
- func (a *UnitAgent) Init(args []string) error
- func (a *UnitAgent) Run(ctx *cmd.Context) (err error)
- func (a *UnitAgent) SetFlags(f *gnuflag.FlagSet)
- func (a *UnitAgent) Stop() error
- func (a *UnitAgent) Tag() names.Tag
- func (a *UnitAgent) Wait() error
Constants ¶
This section is empty.
Variables ¶
var ( // Should be an explicit dependency, can't do it cleanly yet. // Exported for testing. CaasOperatorManifolds = caasoperator.Manifolds )
var ProductionMongoWriteConcern = true
Variable to override in tests, default is true
Functions ¶
func ConnectAsAgent ¶
ConnectAsAgent really connects to the API specified in the agent config. It's extracted so tests can pass something else in.
func DefaultIntrospectionSocketName ¶
DefaultIntrospectionSocketName returns the socket name to use for the abstract domain socket that the introspection worker serves requests over.
func GetJujuVersion ¶
GetJujuVersion gets the version of the agent from agent's config file
func MachineAgentFactoryFn ¶
func MachineAgentFactoryFn( agentConfWriter AgentConfigWriter, bufferedLogger *logsender.BufferedLogWriter, newIntrospectionSocketName func(names.Tag) string, preUpgradeSteps upgrades.PreUpgradeStepsFunc, rootDir string, ) func(string) (*MachineAgent, error)
MachineAgentFactoryFn returns a function which instantiates a MachineAgent given a machineId.
func NewCheckConnectionCommand ¶
func NewCheckConnectionCommand(config AgentConf, connect ConnectFunc) cmd.Command
NewCheckConnectionCommand returns a command that will test connecting to the API with details from the agent's config.
func NewMachineAgentCmd ¶
func NewMachineAgentCmd( ctx *cmd.Context, machineAgentFactory func(string) (*MachineAgent, error), agentInitializer AgentInitializer, configFetcher AgentConfigWriter, ) cmd.Command
NewMachineAgentCmd creates a Command which handles parsing command-line arguments and instantiating and running a MachineAgent.
Types ¶
type AgentConf ¶
type AgentConf interface { // AddFlags injects common agent flags into f. AddFlags(f *gnuflag.FlagSet) // CheckArgs reports whether the given args are valid for this agent. CheckArgs(args []string) error // DataDir returns the directory where this agent should store its data. DataDir() string // ReadConfig reads the agent's config from its config file. ReadConfig(tag string) error // CurrentConfig returns the agent config for this agent. CurrentConfig() agent.Config // ChangeConfig modifies this configuration using the given mutator. ChangeConfig(change agent.ConfigMutator) error }
AgentConf is a terribly confused interface.
Parts of it are a mixin for cmd.Command implementations; others are a mixin for agent.Agent implementations; others bridge the two. We should be aiming to separate the cmd responsibilities from the agent responsibilities.
func NewAgentConf ¶
NewAgentConf returns a new value that satisfies AgentConf
type AgentConfigWriter ¶
type AgentConfigWriter interface { // ReadConfig reads the config for the given tag from disk. ReadConfig(tag string) error // ChangeConfig executes the given agent.ConfigMutator in a // thread-safe context. ChangeConfig(agent.ConfigMutator) error // CurrentConfig returns a copy of the in-memory agent config. CurrentConfig() agent.Config }
AgentConfigWriter encapsulates disk I/O operations with the agent config.
type AgentInitializer ¶
AgentInitializer handles initializing a type for use as a Jujud agent.
type CaasOperatorAgent ¶
type CaasOperatorAgent struct { cmd.CommandBase AgentConf ApplicationName string // contains filtered or unexported fields }
CaasOperatorAgent is a cmd.Command responsible for running a CAAS operator agent.
func NewCaasOperatorAgent ¶
func NewCaasOperatorAgent(ctx *cmd.Context, bufferedLogger *logsender.BufferedLogWriter) (*CaasOperatorAgent, error)
NewCaasOperatorAgent creates a new CAASOperatorAgent instance properly initialized.
func (*CaasOperatorAgent) ChangeConfig ¶
func (a *CaasOperatorAgent) ChangeConfig(mutate agent.ConfigMutator) error
ChangeConfig implements Agent.
func (*CaasOperatorAgent) Done ¶
func (op *CaasOperatorAgent) Done(err error)
Done signals the machine agent is finished
func (*CaasOperatorAgent) Info ¶
func (op *CaasOperatorAgent) Info() *cmd.Info
Info implements Command.
func (*CaasOperatorAgent) Init ¶
func (op *CaasOperatorAgent) Init(args []string) error
Init initializes the command for running.
func (*CaasOperatorAgent) Run ¶
func (op *CaasOperatorAgent) Run(ctx *cmd.Context) (err error)
Run implements Command.
func (*CaasOperatorAgent) SetFlags ¶
func (op *CaasOperatorAgent) SetFlags(f *gnuflag.FlagSet)
SetFlags implements Command.
func (*CaasOperatorAgent) Wait ¶
func (op *CaasOperatorAgent) Wait() error
Wait waits for the CaasOperator agent to finish.
func (*CaasOperatorAgent) Workers ¶
func (op *CaasOperatorAgent) Workers() (worker.Worker, error)
Workers returns a dependency.Engine running the operator's responsibilities.
type ConnectFunc ¶
ConnectFunc connects to the API as the given agent.
type MachineAgent ¶
type MachineAgent struct { AgentConfigWriter // contains filtered or unexported fields }
MachineAgent is responsible for tying together all functionality needed to orchestrate a Jujud instance which controls a machine.
func NewMachineAgent ¶
func NewMachineAgent( machineId string, agentConfWriter AgentConfigWriter, bufferedLogger *logsender.BufferedLogWriter, runner *worker.Runner, loopDeviceManager looputil.LoopDeviceManager, newIntrospectionSocketName func(names.Tag) string, preUpgradeSteps upgrades.PreUpgradeStepsFunc, rootDir string, ) (*MachineAgent, error)
NewMachineAgent instantiates a new MachineAgent.
func (*MachineAgent) ChangeConfig ¶
func (a *MachineAgent) ChangeConfig(mutate agent.ConfigMutator) error
func (*MachineAgent) Done ¶
func (a *MachineAgent) Done(err error)
Done signals the machine agent is finished
func (*MachineAgent) Restart ¶
func (a *MachineAgent) Restart() error
Restart restarts the agent's service.
func (*MachineAgent) Run ¶
func (a *MachineAgent) Run(*cmd.Context) (err error)
Run runs a machine agent.
func (*MachineAgent) Tag ¶
func (a *MachineAgent) Tag() names.Tag
func (*MachineAgent) Wait ¶
func (a *MachineAgent) Wait() error
Wait waits for the machine agent to finish.
func (*MachineAgent) WorkersStarted ¶
func (a *MachineAgent) WorkersStarted() <-chan struct{}
WorkersStarted returns a channel that's closed once all top level workers have been started. This is provided for testing purposes.
type UnitAgent ¶
type UnitAgent struct { cmd.CommandBase AgentConf UnitName string // contains filtered or unexported fields }
UnitAgent is a cmd.Command responsible for running a unit agent.
func NewUnitAgent ¶
func NewUnitAgent(ctx *cmd.Context, bufferedLogger *logsender.BufferedLogWriter) (*UnitAgent, error)
NewUnitAgent creates a new UnitAgent value properly initialized.
func (*UnitAgent) APIWorkers ¶
APIWorkers returns a dependency.Engine running the unit agent's responsibilities.
func (*UnitAgent) ChangeConfig ¶
func (a *UnitAgent) ChangeConfig(mutate agent.ConfigMutator) error