Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func CAASManifolds ¶
func CAASManifolds(config ManifoldsConfig) dependency.Manifolds
CAASManifolds returns a set of co-configured manifolds covering the various responsibilities of a CAAS machine agent.
func IAASManifolds ¶
func IAASManifolds(config ManifoldsConfig) dependency.Manifolds
IAASManifolds returns a set of co-configured manifolds covering the various responsibilities of a IAAS machine agent.
func MachineStartupManifold ¶
func MachineStartupManifold(config MachineStartupConfig) dependency.Manifold
MachineStartupManifold starts a worker that rely on an API connection to complete machine setup.
Types ¶
type Logger ¶
type Logger interface { Debugf(string, ...interface{}) Warningf(string, ...interface{}) Criticalf(string, ...interface{}) Tracef(string, ...interface{}) }
Logger represents the logging methods used by this manifold.
type MachineStartupConfig ¶
type MachineStartupConfig struct { APICallerName string MachineStartup func(api.Connection, Logger) error Logger Logger }
MachineStartupConfig provides the dependencies for the machinestartup manifold.
func (MachineStartupConfig) Validate ¶
func (c MachineStartupConfig) Validate() error
type ManifoldsConfig ¶
type ManifoldsConfig struct { // AgentName is the name of the machine agent, like "machine-12". // This will never change during the execution of an agent, and // is used to provide this as config into a worker rather than // making the worker get it from the agent worker itself. AgentName string // Agent contains the agent that will be wrapped and made available to // its dependencies via a dependency.Engine. Agent coreagent.Agent // AgentConfigChanged is set whenever the machine agent's config // is updated. AgentConfigChanged *voyeur.Value // RootDir is the root directory that any worker that needs to // access local filesystems should use as a base. In actual use it // will be "" but it may be overridden in tests. RootDir string // PreviousAgentVersion passes through the version the machine // agent was running before the current restart. PreviousAgentVersion version.Number // UpgradeStepsLock is passed to the upgrade steps gate to // coordinate workers that shouldn't do anything until the // upgrade-steps worker is done. UpgradeStepsLock gate.Lock // UpgradeCheckLock is passed to the upgrade check gate to // coordinate workers that shouldn't do anything until the // upgrader worker completes it's first check. UpgradeCheckLock gate.Lock // MachineStartup is passed to the machine manifold. It does // machine setup work which relies on an API connection. MachineStartup func(api.Connection, Logger) error // PreUpgradeSteps is a function that is used by the upgradesteps // worker to ensure that conditions are OK for an upgrade to // proceed. PreUpgradeSteps upgrades.PreUpgradeStepsFunc // LogSource defines the channel type used to send log message // structs within the machine agent. LogSource logsender.LogRecordCh // NewDeployContext gives the tests the opportunity to create a // deployer.Context that can be used for testing. NewDeployContext func(deployer.ContextConfig) (deployer.Context, error) // Clock supplies timekeeping services to various workers. Clock clock.Clock // ValidateMigration is called by the migrationminion during the // migration process to check that the agent will be ok when // connected to the new target controller. ValidateMigration func(base.APICaller) error // PrometheusRegisterer is a prometheus.Registerer that may be used // by workers to register Prometheus metric collectors. PrometheusRegisterer prometheus.Registerer // LocalHub is a simple pubsub that is used for internal agent // messaging only. This is used for interactions between workers // and the introspection worker. LocalHub *pubsub.SimpleHub // UpdateLoggerConfig is a function that will save the specified // config value as the logging config in the agent.conf file. UpdateLoggerConfig func(string) error // NewAgentStatusSetter provides upgradesteps.StatusSetter. NewAgentStatusSetter func(apiConn api.Connection) (upgradesteps.StatusSetter, error) // ControllerLeaseDuration defines for how long this agent will ask // for controller administration rights. ControllerLeaseDuration time.Duration // TransactionPruneInterval defines how frequently mgo/txn transactions // are pruned from the database. TransactionPruneInterval time.Duration // SetStatePool is used by the state worker for informing the agent of // the StatePool that it creates, so we can pass it to the introspection // worker running outside of the dependency engine. SetStatePool func(*state.StatePool) // RegisterIntrospectionHTTPHandlers is a function that calls the // supplied function to register introspection HTTP handlers. The // function will be passed a path and a handler; the function may // alter the path as it sees fit, e.g. by adding a prefix. RegisterIntrospectionHTTPHandlers func(func(path string, _ http.Handler)) // MachineLock is a central source for acquiring the machine lock. // This is used by a number of workers to ensure serialisation of actions // across the machine. MachineLock machinelock.Lock // MuxShutdownWait is the maximum time the http-server worker will wait // for all mux clients to gracefully terminate before the http-worker // exits regardless. MuxShutdownWait time.Duration // NewContainerBrokerFunc is a function opens a CAAS provider. NewContainerBrokerFunc caas.NewContainerBrokerFunc // NewBrokerFunc is a function opens a instance broker (LXD/KVM) NewBrokerFunc containerbroker.NewBrokerFunc // IsCaasConfig is true if this config is for a caas agent. IsCaasConfig bool // UnitEngineConfig is used by the deployer to initialize the unit's // dependency engine when running in the nested context. UnitEngineConfig func() dependency.EngineConfig // SetupLogging is used by the deployer to initialize the logging // context for the unit. SetupLogging func(*loggo.Context, coreagent.Config) // DependencyEngineMetrics creates a set of metrics for a model, so it's // possible to know the lifecycle of the workers in the dependency engine. DependencyEngineMetrics modelworkermanager.ModelMetrics // CharmhubHTTPClient is the HTTP client used for Charmhub API requests. CharmhubHTTPClient HTTPClient }
ManifoldsConfig allows specialisation of the result of Manifolds.
Click to show internal directories.
Click to hide internal directories.