Documentation ¶
Index ¶
- Constants
- Variables
- func BaseDir(dataDir string) string
- func CanUninstall(a Agent) bool
- func ConfigPath(dataDir string, tag names.Tag) string
- func Dir(dataDir string, tag names.Tag) string
- func LogFilename(c Config) string
- func SetCanUninstall(a Agent) error
- func WriteSystemIdentityFile(c Config) error
- type APIHostPortsSetter
- type Agent
- type AgentConfigParams
- type Config
- type ConfigMutator
- type ConfigSetter
- type ConfigSetterWriter
- type ConfigWriter
- type Paths
- type StateServingInfoSetter
Constants ¶
const ( // BootstrapNonce is used as a nonce for the initial controller machine. BootstrapNonce = "user-admin:bootstrap" // BootstrapMachineId is the ID of the initial controller machine. BootstrapMachineId = "0" // MachineLockName is the name of the mutex that the agent creates to // ensure serialization of tasks such as uniter hook executions, juju-run, // and others. MachineLockName = "machine-lock" )
const ( LxcBridge = "LXC_BRIDGE" LxdBridge = "LXD_BRIDGE" ProviderType = "PROVIDER_TYPE" ContainerType = "CONTAINER_TYPE" Namespace = "NAMESPACE" AgentServiceName = "AGENT_SERVICE_NAME" MongoOplogSize = "MONGO_OPLOG_SIZE" NUMACtlPreference = "NUMA_CTL_PREFERENCE" )
const SystemIdentity = "system-identity"
SystemIdentity is the name of the file where the environment SSH key is kept.
const ( // UninstallFile is the name of the file inside the data dir that, // if it exists, will cause the machine agent to uninstall itself // when it receives the termination signal or ErrTerminateAgent. UninstallFile = "uninstall-agent" )
Variables ¶
var ( // DefaultPaths defines the default paths for an agent. DefaultPaths = Paths{ DataDir: dataDir, LogDir: path.Join(logDir, "juju"), MetricsSpoolDir: metricsSpoolDir, ConfDir: confDir, } )
var ErrNoStateServingInfo = errors.New("StateServingInfo missing")
Functions ¶
func CanUninstall ¶
CanUninstall returns true if the uninstall file exists in the agent's data dir. If it encounters an error, it fails safe and returns false.
func ConfigPath ¶
ConfigPath returns the full path to the agent config file. NOTE: Delete this once all agents accept --config instead of --data-dir - it won't be needed anymore.
func LogFilename ¶
LogFileName returns the filename for the Agent's log file.
func SetCanUninstall ¶
SetCanUninstall creates the uninstall file in the data dir. It does nothing if the supplied agent doesn't have a machine tag.
func WriteSystemIdentityFile ¶
Types ¶
type APIHostPortsSetter ¶
type APIHostPortsSetter struct {
Agent
}
APIHostPortsSetter trivially wraps an Agent to implement worker/apiaddressupdater/APIAddressSetter.
func (APIHostPortsSetter) SetAPIHostPorts ¶
func (s APIHostPortsSetter) SetAPIHostPorts(servers [][]network.HostPort) error
SetAPIHostPorts is the APIAddressSetter interface.
type Agent ¶
type Agent interface { // CurrentConfig returns a copy of the agent's configuration. No // guarantees regarding ongoing correctness are made. CurrentConfig() Config // ChangeConfig allows clients to change the agent's configuration // by supplying a callback that applies the changes. ChangeConfig(ConfigMutator) error }
Agent exposes the agent's configuration to other components. This interface should probably be segregated (agent.ConfigGetter and agent.ConfigChanger?) but YAGNI *currently* advises against same.
type AgentConfigParams ¶
type AgentConfigParams struct { Paths Paths Jobs []multiwatcher.MachineJob UpgradedToVersion version.Number Tag names.Tag Password string Nonce string Controller names.ControllerTag Model names.ModelTag StateAddresses []string APIAddresses []string CACert string Values map[string]string MongoVersion mongo.Version }
AgentConfigParams holds the parameters required to create a new AgentConfig.
type Config ¶
type Config interface { // DataDir returns the data directory. Each agent has a subdirectory // containing the configuration files. DataDir() string // LogDir returns the log directory. All logs from all agents on // the machine are written to this directory. LogDir() string // SystemIdentityPath returns the path of the file where the environment // SSH key is kept. SystemIdentityPath() string // Jobs returns a list of MachineJobs that need to run. Jobs() []multiwatcher.MachineJob // Tag returns the tag of the entity on whose behalf the state connection // will be made. Tag() names.Tag // Dir returns the agent's directory. Dir() string // Nonce returns the nonce saved when the machine was provisioned // TODO: make this one of the key/value pairs. Nonce() string // CACert returns the CA certificate that is used to validate the state or // API server's certificate. CACert() string // APIAddresses returns the addresses needed to connect to the api server APIAddresses() ([]string, error) // WriteCommands returns shell commands to write the agent configuration. // It returns an error if the configuration does not have all the right // elements. WriteCommands(renderer shell.Renderer) ([]string, error) // StateServingInfo returns the details needed to run // a controller and reports whether those details // are available StateServingInfo() (params.StateServingInfo, bool) // APIInfo returns details for connecting to the API server and // reports whether the details are available. APIInfo() (*api.Info, bool) // MongoInfo returns details for connecting to the controller's mongo // database and reports whether those details are available MongoInfo() (*mongo.MongoInfo, bool) // OldPassword returns the fallback password when connecting to the // API server. OldPassword() string // UpgradedToVersion returns the version for which all upgrade steps have been // successfully run, which is also the same as the initially deployed version. UpgradedToVersion() version.Number // Value returns the value associated with the key, or an empty string if // the key is not found. Value(key string) string // Model returns the tag for the model that the agent belongs to. Model() names.ModelTag // Controller returns the tag for the controller that the agent belongs to. Controller() names.ControllerTag // MetricsSpoolDir returns the spool directory where workloads store // collected metrics. MetricsSpoolDir() string // MongoVersion returns the version of mongo that the state server // is using. MongoVersion() mongo.Version }
The Config interface is the sole way that the agent gets access to the configuration information for the machine and unit agents. There should only be one instance of a config object for any given agent, and this interface is passed between multiple go routines. The mutable methods are protected by a mutex, and it is expected that the caller doesn't modify any slice that may be returned.
NOTE: should new mutating methods be added to this interface, consideration is needed around the synchronisation as a single instance is used in multiple go routines.
type ConfigMutator ¶
type ConfigMutator func(ConfigSetter) error
type ConfigSetter ¶
type ConfigSetter interface { Config // contains filtered or unexported methods }
type ConfigSetterWriter ¶
type ConfigSetterWriter interface { Config ConfigWriter // contains filtered or unexported methods }
func NewAgentConfig ¶
func NewAgentConfig(configParams AgentConfigParams) (ConfigSetterWriter, error)
NewAgentConfig returns a new config object suitable for use for a machine or unit agent.
func NewStateMachineConfig ¶
func NewStateMachineConfig(configParams AgentConfigParams, serverInfo params.StateServingInfo) (ConfigSetterWriter, error)
NewStateMachineConfig returns a configuration suitable for a machine running the controller.
func ReadConfig ¶
func ReadConfig(configFilePath string) (ConfigSetterWriter, error)
ReadConfig reads configuration data from the given location.
type ConfigWriter ¶
type ConfigWriter interface { // Write writes the agent configuration. Write() error }
type Paths ¶
type Paths struct { // DataDir is the data directory where each agent has a subdirectory // containing the configuration files. DataDir string // LogDir is the log directory where all logs from all agents on // the machine are written. LogDir string // MetricsSpoolDir is the spool directory where workloads store // collected metrics. MetricsSpoolDir string // ConfDir is the directory where all config file for // Juju agents are stored. ConfDir string }
Paths holds the directory paths used by the agent.
func NewPathsWithDefaults ¶
NewPathsWithDefaults returns a Paths struct initialized with default locations if not otherwise specified.
type StateServingInfoSetter ¶
type StateServingInfoSetter struct {
Agent
}
StateServingInfoSetter trivially wraps an Agent to implement worker/certupdater/SetStateServingInfo.
func (StateServingInfoSetter) SetStateServingInfo ¶
func (s StateServingInfoSetter) SetStateServingInfo(info params.StateServingInfo) error
SetStateServingInfo is the SetStateServingInfo interface.