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 // UpgradeDBLock is passed to the upgrade database gate to // coordinate workers that shouldn't do anything until the // upgrade-database worker is done. UpgradeDBLock gate.Lock // 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 // OpenStatePool is function used by the state manifold to create a // *state.StatePool. OpenStatePool func(stdcontext.Context, coreagent.Config) (*state.StatePool, error) // OpenStateForUpgrade is a function the upgradesteps worker can // use to establish a connection to state. OpenStateForUpgrade func() (*state.StatePool, error) // 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 // CentralHub is the primary hub that exists in the apiserver. CentralHub *pubsub.StructuredHub // 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 // PubSubReporter is the introspection reporter for the pubsub forwarding // worker. PubSubReporter psworker.Reporter // PresenceRecorder PresenceRecorder presence.Recorder // UpdateLoggerConfig is a function that will save the specified // config value as the logging config in the agent.conf file. UpdateLoggerConfig func(string) error // UpdateControllerAPIPort is a function that will save the updated // controller api port in the agent.conf file. UpdateControllerAPIPort func(int) 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)) // NewModelWorker returns a new worker for managing the model with // the specified UUID and type. NewModelWorker modelworkermanager.NewModelWorkerFunc // 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.