Documentation ¶
Index ¶
- Constants
- Variables
- func ApiAffinitiesToStructs(in []*api.Affinity) []*structs.Affinity
- func ApiAffinityToStructs(a1 *api.Affinity) *structs.Affinity
- func ApiConstraintToStructs(in *api.Constraint) *structs.Constraint
- func ApiConstraintsToStructs(in []*api.Constraint) []*structs.Constraint
- func ApiConsulConnectToStructs(in *api.ConsulConnect) *structs.ConsulConnect
- func ApiJobToStructJob(job *api.Job) *structs.Job
- func ApiNetworkResourceToStructs(in []*api.NetworkResource) []*structs.NetworkResource
- func ApiResourcesToStructs(in *api.Resources) *structs.Resources
- func ApiServicesToStructs(in []*api.Service) []*structs.Service
- func ApiSpreadToStructs(a1 *api.Spread) *structs.Spread
- func ApiTaskToStructsTask(apiTask *api.Task, structsTask *structs.Task)
- func ApiTgToStructsTG(taskGroup *api.TaskGroup, tg *structs.TaskGroup)
- func LevelFilter() *logutils.LevelFilter
- func ValidateLevelFilter(minLevel logutils.LogLevel, filter *logutils.LevelFilter) bool
- type ACLConfig
- type Addresses
- type AdvertiseAddrs
- type Agent
- func (a *Agent) Client() *client.Client
- func (a *Agent) GetConfig() *Config
- func (a *Agent) Leave() error
- func (a *Agent) RPC(method string, args interface{}, reply interface{}) error
- func (a *Agent) Reload(newConfig *Config) error
- func (a *Agent) Server() *nomad.Server
- func (a *Agent) ShouldReload(newConfig *Config) (agent, http bool)
- func (a *Agent) Shutdown() error
- func (a *Agent) Stats() map[string]map[string]string
- type ClientConfig
- type ClientTemplateConfig
- type Command
- type Config
- type DiscoverInterface
- type HTTPCodedError
- type HTTPServer
- func (s *HTTPServer) ACLPoliciesRequest(resp http.ResponseWriter, req *http.Request) (interface{}, error)
- func (s *HTTPServer) ACLPolicySpecificRequest(resp http.ResponseWriter, req *http.Request) (interface{}, error)
- func (s *HTTPServer) ACLTokenBootstrap(resp http.ResponseWriter, req *http.Request) (interface{}, error)
- func (s *HTTPServer) ACLTokenSpecificRequest(resp http.ResponseWriter, req *http.Request) (interface{}, error)
- func (s *HTTPServer) ACLTokensRequest(resp http.ResponseWriter, req *http.Request) (interface{}, error)
- func (s *HTTPServer) AgentForceLeaveRequest(resp http.ResponseWriter, req *http.Request) (interface{}, error)
- func (s *HTTPServer) AgentJoinRequest(resp http.ResponseWriter, req *http.Request) (interface{}, error)
- func (s *HTTPServer) AgentMembersRequest(resp http.ResponseWriter, req *http.Request) (interface{}, error)
- func (s *HTTPServer) AgentMonitor(resp http.ResponseWriter, req *http.Request) (interface{}, error)
- func (s *HTTPServer) AgentSelfRequest(resp http.ResponseWriter, req *http.Request) (interface{}, error)
- func (s *HTTPServer) AgentServersRequest(resp http.ResponseWriter, req *http.Request) (interface{}, error)
- func (s *HTTPServer) AllocSpecificRequest(resp http.ResponseWriter, req *http.Request) (interface{}, error)
- func (s *HTTPServer) AllocsRequest(resp http.ResponseWriter, req *http.Request) (interface{}, error)
- func (s *HTTPServer) ClientAllocRequest(resp http.ResponseWriter, req *http.Request) (interface{}, error)
- func (s *HTTPServer) ClientGCRequest(resp http.ResponseWriter, req *http.Request) (interface{}, error)
- func (s *HTTPServer) ClientStatsRequest(resp http.ResponseWriter, req *http.Request) (interface{}, error)
- func (s *HTTPServer) DeploymentSpecificRequest(resp http.ResponseWriter, req *http.Request) (interface{}, error)
- func (s *HTTPServer) DeploymentsRequest(resp http.ResponseWriter, req *http.Request) (interface{}, error)
- func (s *HTTPServer) DirectoryListRequest(resp http.ResponseWriter, req *http.Request) (interface{}, error)
- func (s *HTTPServer) EvalSpecificRequest(resp http.ResponseWriter, req *http.Request) (interface{}, error)
- func (s *HTTPServer) EvalsRequest(resp http.ResponseWriter, req *http.Request) (interface{}, error)
- func (s *HTTPServer) FileCatRequest(resp http.ResponseWriter, req *http.Request) (interface{}, error)
- func (s *HTTPServer) FileReadAtRequest(resp http.ResponseWriter, req *http.Request) (interface{}, error)
- func (s *HTTPServer) FileStatRequest(resp http.ResponseWriter, req *http.Request) (interface{}, error)
- func (s *HTTPServer) FsRequest(resp http.ResponseWriter, req *http.Request) (interface{}, error)
- func (s *HTTPServer) GarbageCollectRequest(resp http.ResponseWriter, req *http.Request) (interface{}, error)
- func (s *HTTPServer) HealthRequest(resp http.ResponseWriter, req *http.Request) (interface{}, error)
- func (s *HTTPServer) JobSpecificRequest(resp http.ResponseWriter, req *http.Request) (interface{}, error)
- func (s *HTTPServer) JobsParseRequest(resp http.ResponseWriter, req *http.Request) (interface{}, error)
- func (s *HTTPServer) JobsRequest(resp http.ResponseWriter, req *http.Request) (interface{}, error)
- func (s *HTTPServer) KeyringOperationRequest(resp http.ResponseWriter, req *http.Request) (interface{}, error)
- func (s *HTTPServer) Logs(resp http.ResponseWriter, req *http.Request) (interface{}, error)
- func (s *HTTPServer) MetricsRequest(resp http.ResponseWriter, req *http.Request) (interface{}, error)
- func (s *HTTPServer) NodeSpecificRequest(resp http.ResponseWriter, req *http.Request) (interface{}, error)
- func (s *HTTPServer) NodesRequest(resp http.ResponseWriter, req *http.Request) (interface{}, error)
- func (s *HTTPServer) OperatorAutopilotConfiguration(resp http.ResponseWriter, req *http.Request) (interface{}, error)
- func (s *HTTPServer) OperatorRaftConfiguration(resp http.ResponseWriter, req *http.Request) (interface{}, error)
- func (s *HTTPServer) OperatorRaftPeer(resp http.ResponseWriter, req *http.Request) (interface{}, error)
- func (s *HTTPServer) OperatorRequest(resp http.ResponseWriter, req *http.Request) (interface{}, error)
- func (s *HTTPServer) OperatorSchedulerConfiguration(resp http.ResponseWriter, req *http.Request) (interface{}, error)
- func (s *HTTPServer) OperatorServerHealth(resp http.ResponseWriter, req *http.Request) (interface{}, error)
- func (s *HTTPServer) ReconcileJobSummaries(resp http.ResponseWriter, req *http.Request) (interface{}, error)
- func (s *HTTPServer) RegionListRequest(resp http.ResponseWriter, req *http.Request) (interface{}, error)
- func (s *HTTPServer) SearchRequest(resp http.ResponseWriter, req *http.Request) (interface{}, error)
- func (s *HTTPServer) Shutdown()
- func (s *HTTPServer) StatusLeaderRequest(resp http.ResponseWriter, req *http.Request) (interface{}, error)
- func (s *HTTPServer) StatusPeersRequest(resp http.ResponseWriter, req *http.Request) (interface{}, error)
- func (s *HTTPServer) Stream(resp http.ResponseWriter, req *http.Request) (interface{}, error)
- func (s *HTTPServer) ValidateJobRequest(resp http.ResponseWriter, req *http.Request) (interface{}, error)
- type Member
- type Ports
- type Resources
- type ServerConfig
- type ServerJoin
- type SyslogWrapper
- type Telemetry
- type TestAgent
- type UIAssetWrapper
Constants ¶
const ( // ErrInvalidMethod is used if the HTTP method is not supported ErrInvalidMethod = "Invalid method" // ErrEntOnly is the error returned if accessing an enterprise only // endpoint ErrEntOnly = "Nomad Enterprise only endpoint" )
Variables ¶
var TempDir = os.TempDir()
TempDir defines the base dir for temporary directories.
Functions ¶
func ApiAffinitiesToStructs ¶ added in v0.9.0
func ApiAffinityToStructs ¶ added in v0.9.0
func ApiConstraintToStructs ¶ added in v0.5.5
func ApiConstraintToStructs(in *api.Constraint) *structs.Constraint
func ApiConstraintsToStructs ¶ added in v0.9.0
func ApiConstraintsToStructs(in []*api.Constraint) []*structs.Constraint
func ApiConsulConnectToStructs ¶ added in v0.10.0
func ApiConsulConnectToStructs(in *api.ConsulConnect) *structs.ConsulConnect
func ApiNetworkResourceToStructs ¶ added in v0.10.0
func ApiNetworkResourceToStructs(in []*api.NetworkResource) []*structs.NetworkResource
func ApiResourcesToStructs ¶ added in v0.9.0
func ApiServicesToStructs ¶ added in v0.10.0
TODO(schmichael) refactor and reuse in service parsing above
func ApiTaskToStructsTask ¶ added in v0.5.5
ApiTaskToStructsTask is a copy and type conversion between the API representation of a task from a struct representation of a task.
func ApiTgToStructsTG ¶ added in v0.5.5
func LevelFilter ¶
func LevelFilter() *logutils.LevelFilter
LevelFilter returns a LevelFilter that is configured with the log levels that we use.
func ValidateLevelFilter ¶
func ValidateLevelFilter(minLevel logutils.LogLevel, filter *logutils.LevelFilter) bool
ValidateLevelFilter verifies that the log levels within the filter are valid.
Types ¶
type ACLConfig ¶ added in v0.7.0
type ACLConfig struct { // Enabled controls if we are enforce and manage ACLs Enabled bool `hcl:"enabled"` // TokenTTL controls how long we cache ACL tokens. This controls // how stale they can be when we are enforcing policies. Defaults // to "30s". Reducing this impacts performance by forcing more // frequent resolution. TokenTTL time.Duration TokenTTLHCL string `hcl:"token_ttl" json:"-"` // PolicyTTL controls how long we cache ACL policies. This controls // how stale they can be when we are enforcing policies. Defaults // to "30s". Reducing this impacts performance by forcing more // frequent resolution. PolicyTTL time.Duration PolicyTTLHCL string `hcl:"policy_ttl" json:"-"` // ReplicationToken is used by servers to replicate tokens and policies // from the authoritative region. This must be a valid management token // within the authoritative region. ReplicationToken string `hcl:"replication_token"` // ExtraKeysHCL is used by hcl to surface unexpected keys ExtraKeysHCL []string `hcl:",unusedKeys" json:"-"` }
ACLConfig is configuration specific to the ACL system
type Addresses ¶
type Addresses struct { HTTP string `hcl:"http"` RPC string `hcl:"rpc"` Serf string `hcl:"serf"` // ExtraKeysHCL is used by hcl to surface unexpected keys ExtraKeysHCL []string `hcl:",unusedKeys" json:"-"` }
Addresses encapsulates all of the addresses we bind to for various network services. Everything is optional and defaults to BindAddr.
type AdvertiseAddrs ¶
type AdvertiseAddrs struct { HTTP string `hcl:"http"` RPC string `hcl:"rpc"` Serf string `hcl:"serf"` // ExtraKeysHCL is used by hcl to surface unexpected keys ExtraKeysHCL []string `hcl:",unusedKeys" json:"-"` }
AdvertiseAddrs is used to control the addresses we advertise out for different network services. All are optional and default to BindAddr and their default Port.
func (*AdvertiseAddrs) Merge ¶
func (a *AdvertiseAddrs) Merge(b *AdvertiseAddrs) *AdvertiseAddrs
Merge merges two advertise addrs configs together.
type Agent ¶
Agent is a long running daemon that is used to run both clients and servers. Servers are responsible for managing state and making scheduling decisions. Clients can be scheduled to, and are responsible for interfacing with servers to run allocations.
func NewAgent ¶
func NewAgent(config *Config, logger log.InterceptLogger, logOutput io.Writer, inmem *metrics.InmemSink) (*Agent, error)
NewAgent is used to create a new agent with the given configuration
func (*Agent) GetConfig ¶ added in v0.7.1
GetConfig creates a locked reference to the agent's config
func (*Agent) Leave ¶
Leave is used gracefully exit. Clients will inform servers of their departure so that allocations can be rescheduled.
func (*Agent) Reload ¶ added in v0.7.1
Reload handles configuration changes for the agent. Provides a method that is easier to unit test, as this action is invoked via SIGHUP.
func (*Agent) ShouldReload ¶ added in v0.8.0
ShouldReload determines if we should reload the configuration and agent connections. If the TLS Configuration has not changed, we shouldn't reload.
type ClientConfig ¶
type ClientConfig struct { // Enabled controls if we are a client Enabled bool `hcl:"enabled"` // StateDir is the state directory StateDir string `hcl:"state_dir"` // AllocDir is the directory for storing allocation data AllocDir string `hcl:"alloc_dir"` // Servers is a list of known server addresses. These are as "host:port" Servers []string `hcl:"servers"` // NodeClass is used to group the node by class NodeClass string `hcl:"node_class"` // Options is used for configuration of nomad internals, // like fingerprinters and drivers. The format is: // // namespace.option = value Options map[string]string `hcl:"options"` // Metadata associated with the node Meta map[string]string `hcl:"meta"` // A mapping of directories on the host OS to attempt to embed inside each // task's chroot. ChrootEnv map[string]string `hcl:"chroot_env"` // Interface to use for network fingerprinting NetworkInterface string `hcl:"network_interface"` // NetworkSpeed is used to override any detected or default network link // speed. NetworkSpeed int `hcl:"network_speed"` // CpuCompute is used to override any detected or default total CPU compute. CpuCompute int `hcl:"cpu_total_compute"` // MemoryMB is used to override any detected or default total memory. MemoryMB int `hcl:"memory_total_mb"` // MaxKillTimeout allows capping the user-specifiable KillTimeout. MaxKillTimeout string `hcl:"max_kill_timeout"` // ClientMaxPort is the upper range of the ports that the client uses for // communicating with plugin subsystems ClientMaxPort int `hcl:"client_max_port"` // ClientMinPort is the lower range of the ports that the client uses for // communicating with plugin subsystems ClientMinPort int `hcl:"client_min_port"` // Reserved is used to reserve resources from being used by Nomad. This can // be used to target a certain utilization or to prevent Nomad from using a // particular set of ports. Reserved *Resources `hcl:"reserved"` // GCInterval is the time interval at which the client triggers garbage // collection GCInterval time.Duration GCIntervalHCL string `hcl:"gc_interval" json:"-"` // GCParallelDestroys is the number of parallel destroys the garbage // collector will allow. GCParallelDestroys int `hcl:"gc_parallel_destroys"` // GCDiskUsageThreshold is the disk usage threshold given as a percent // beyond which the Nomad client triggers GC of terminal allocations GCDiskUsageThreshold float64 `hcl:"gc_disk_usage_threshold"` // GCInodeUsageThreshold is the inode usage threshold beyond which the Nomad // client triggers GC of the terminal allocations GCInodeUsageThreshold float64 `hcl:"gc_inode_usage_threshold"` // GCMaxAllocs is the maximum number of allocations a node can have // before garbage collection is triggered. GCMaxAllocs int `hcl:"gc_max_allocs"` // NoHostUUID disables using the host's UUID and will force generation of a // random UUID. NoHostUUID *bool `hcl:"no_host_uuid"` // DisableRemoteExec disables remote exec targeting tasks on this client DisableRemoteExec bool `hcl:"disable_remote_exec"` // TemplateConfig includes configuration for template rendering TemplateConfig *ClientTemplateConfig `hcl:"template"` // ServerJoin contains information that is used to attempt to join servers ServerJoin *ServerJoin `hcl:"server_join"` // HostVolumes contains information about the volumes an operator has made // available to jobs running on this node. HostVolumes []*structs.ClientHostVolumeConfig `hcl:"host_volume"` // ExtraKeysHCL is used by hcl to surface unexpected keys ExtraKeysHCL []string `hcl:",unusedKeys" json:"-"` // CNIPath is the path to search for CNI plugins, multiple paths can be // specified colon delimited CNIPath string `hcl:"cni_path"` // BridgeNetworkName is the name of the bridge to create when using the // bridge network mode BridgeNetworkName string `hcl:"bridge_network_name"` // BridgeNetworkSubnet is the subnet to allocate IP addresses from when // creating allocations with bridge networking mode. This range is local to // the host BridgeNetworkSubnet string `hcl:"bridge_network_subnet"` }
ClientConfig is configuration specific to the client mode
func (*ClientConfig) Merge ¶
func (a *ClientConfig) Merge(b *ClientConfig) *ClientConfig
Merge is used to merge two client configs together
type ClientTemplateConfig ¶ added in v0.9.5
type ClientTemplateConfig struct { // FunctionBlacklist disables functions in consul-template that // are unsafe because they expose information from the client host. FunctionBlacklist []string `hcl:"function_blacklist"` // DisableSandbox allows templates to access arbitrary files on the // client host. By default templates can access files only within // the task directory. DisableSandbox bool `hcl:"disable_file_sandbox"` }
ClientTemplateConfig is configuration on the client specific to template rendering
type Command ¶
type Command struct { Version *version.VersionInfo Ui cli.Ui ShutdownCh <-chan struct{} // contains filtered or unexported fields }
Command is a Command implementation that runs a Nomad agent. The command will not end unless a shutdown message is sent on the ShutdownCh. If two messages are sent on the ShutdownCh it will forcibly exit.
func (*Command) AutocompleteArgs ¶ added in v0.6.0
func (*Command) AutocompleteFlags ¶ added in v0.6.0
type Config ¶
type Config struct { // Region is the region this agent is in. Defaults to global. Region string `hcl:"region"` // Datacenter is the datacenter this agent is in. Defaults to dc1 Datacenter string `hcl:"datacenter"` // NodeName is the name we register as. Defaults to hostname. NodeName string `hcl:"name"` // DataDir is the directory to store our state in DataDir string `hcl:"data_dir"` // PluginDir is the directory to lookup plugins. PluginDir string `hcl:"plugin_dir"` // LogLevel is the level of the logs to put out LogLevel string `hcl:"log_level"` // LogJson enables log output in a JSON format LogJson bool `hcl:"log_json"` // LogFile enables logging to a file LogFile string `hcl:"log_file"` // LogRotateDuration is the time period that logs should be rotated in LogRotateDuration string `hcl:"log_rotate_duration"` // LogRotateBytes is the max number of bytes that should be written to a file LogRotateBytes int `hcl:"log_rotate_bytes"` // LogRotateMaxFiles is the max number of log files to keep LogRotateMaxFiles int `hcl:"log_rotate_max_files"` // BindAddr is the address on which all of nomad's services will // be bound. If not specified, this defaults to 127.0.0.1. BindAddr string `hcl:"bind_addr"` // EnableDebug is used to enable debugging HTTP endpoints EnableDebug bool `hcl:"enable_debug"` // Ports is used to control the network ports we bind to. Ports *Ports `hcl:"ports"` // Addresses is used to override the network addresses we bind to. // // Use normalizedAddrs if you need the host+port to bind to. Addresses *Addresses `hcl:"addresses"` // AdvertiseAddrs is used to control the addresses we advertise. AdvertiseAddrs *AdvertiseAddrs `hcl:"advertise"` // Client has our client related settings Client *ClientConfig `hcl:"client"` // Server has our server related settings Server *ServerConfig `hcl:"server"` // ACL has our acl related settings ACL *ACLConfig `hcl:"acl"` // Telemetry is used to configure sending telemetry Telemetry *Telemetry `hcl:"telemetry"` // LeaveOnInt is used to gracefully leave on the interrupt signal LeaveOnInt bool `hcl:"leave_on_interrupt"` // LeaveOnTerm is used to gracefully leave on the terminate signal LeaveOnTerm bool `hcl:"leave_on_terminate"` // EnableSyslog is used to enable sending logs to syslog EnableSyslog bool `hcl:"enable_syslog"` // SyslogFacility is used to control the syslog facility used. SyslogFacility string `hcl:"syslog_facility"` // DisableUpdateCheck is used to disable the periodic update // and security bulletin checking. DisableUpdateCheck *bool `hcl:"disable_update_check"` // DisableAnonymousSignature is used to disable setting the // anonymous signature when doing the update check and looking // for security bulletins DisableAnonymousSignature bool `hcl:"disable_anonymous_signature"` // Consul contains the configuration for the Consul Agent and // parameters necessary to register services, their checks, and // discover the current Nomad servers. Consul *config.ConsulConfig `hcl:"consul"` // Vault contains the configuration for the Vault Agent and // parameters necessary to derive tokens. Vault *config.VaultConfig `hcl:"vault"` // NomadConfig is used to override the default config. // This is largely used for testing purposes. NomadConfig *nomad.Config `hcl:"-" json:"-"` // ClientConfig is used to override the default config. // This is largely used for testing purposes. ClientConfig *client.Config `hcl:"-" json:"-"` // DevMode is set by the -dev CLI flag. DevMode bool `hcl:"-"` // Version information is set at compilation time Version *version.VersionInfo // List of config files that have been loaded (in order) Files []string `hcl:"-"` // TLSConfig provides TLS related configuration for the Nomad server and // client TLSConfig *config.TLSConfig `hcl:"tls"` // HTTPAPIResponseHeaders allows users to configure the Nomad http agent to // set arbitrary headers on API responses HTTPAPIResponseHeaders map[string]string `hcl:"http_api_response_headers"` // Sentinel holds sentinel related settings Sentinel *config.SentinelConfig `hcl:"sentinel"` // Autopilot contains the configuration for Autopilot behavior. Autopilot *config.AutopilotConfig `hcl:"autopilot"` // Plugins is the set of configured plugins Plugins []*config.PluginConfig `hcl:"plugin"` // ExtraKeysHCL is used by hcl to surface unexpected keys ExtraKeysHCL []string `hcl:",unusedKeys" json:"-"` // contains filtered or unexported fields }
Config is the configuration for the Nomad agent.
time.Duration values have two parts:
- a string field tagged with an hcl:"foo" and json:"-"
- a time.Duration field in the same struct and a call to duration in config_parse.go ParseConfigFile
All config structs should have an ExtraKeysHCL field to check for unexpected keys
func DefaultConfig ¶
func DefaultConfig() *Config
DefaultConfig is a the baseline configuration for Nomad
func DefaultEntConfig ¶ added in v0.8.0
func DefaultEntConfig() *Config
DefaultEntConfig is an empty config in open source
func DevConfig ¶
func DevConfig(mode *devModeConfig) *Config
DevConfig is a Config that is used for dev mode of Nomad.
func LoadConfig ¶
LoadConfig loads the configuration at the given path, regardless if its a file or directory. Called for each -config to build up the runtime config value. Do not apply any default values, defaults should be added once in DefaultConfig
func LoadConfigDir ¶
LoadConfigDir loads all the configurations in the given directory in alphabetical order.
func ParseConfigFile ¶ added in v0.3.1
type DiscoverInterface ¶ added in v0.8.4
type DiscoverInterface interface { // Addrs discovers ip addresses of nodes that match the given filter // criteria. // The config string must have the format 'provider=xxx key=val key=val ...' // where the keys and values are provider specific. The values are URL // encoded. Addrs(string, *golog.Logger) ([]string, error) // Help describes the format of the configuration string for address // discovery and the various provider specific options. Help() string // Names returns the names of the configured providers. Names() []string }
DiscoverInterface is an interface for the Discover type in the go-discover library. Using an interface allows for ease of testing.
type HTTPCodedError ¶
HTTPCodedError is used to provide the HTTP error code
func CodedError ¶
func CodedError(c int, s string) HTTPCodedError
type HTTPServer ¶
type HTTPServer struct { Addr string // contains filtered or unexported fields }
HTTPServer is used to wrap an Agent and expose it over an HTTP interface
func NewHTTPServer ¶
func NewHTTPServer(agent *Agent, config *Config) (*HTTPServer, error)
NewHTTPServer starts new HTTP server over the agent
func (*HTTPServer) ACLPoliciesRequest ¶ added in v0.7.0
func (s *HTTPServer) ACLPoliciesRequest(resp http.ResponseWriter, req *http.Request) (interface{}, error)
func (*HTTPServer) ACLPolicySpecificRequest ¶ added in v0.7.0
func (s *HTTPServer) ACLPolicySpecificRequest(resp http.ResponseWriter, req *http.Request) (interface{}, error)
func (*HTTPServer) ACLTokenBootstrap ¶ added in v0.7.0
func (s *HTTPServer) ACLTokenBootstrap(resp http.ResponseWriter, req *http.Request) (interface{}, error)
func (*HTTPServer) ACLTokenSpecificRequest ¶ added in v0.7.0
func (s *HTTPServer) ACLTokenSpecificRequest(resp http.ResponseWriter, req *http.Request) (interface{}, error)
func (*HTTPServer) ACLTokensRequest ¶ added in v0.7.0
func (s *HTTPServer) ACLTokensRequest(resp http.ResponseWriter, req *http.Request) (interface{}, error)
func (*HTTPServer) AgentForceLeaveRequest ¶
func (s *HTTPServer) AgentForceLeaveRequest(resp http.ResponseWriter, req *http.Request) (interface{}, error)
func (*HTTPServer) AgentJoinRequest ¶
func (s *HTTPServer) AgentJoinRequest(resp http.ResponseWriter, req *http.Request) (interface{}, error)
func (*HTTPServer) AgentMembersRequest ¶
func (s *HTTPServer) AgentMembersRequest(resp http.ResponseWriter, req *http.Request) (interface{}, error)
func (*HTTPServer) AgentMonitor ¶ added in v0.10.2
func (s *HTTPServer) AgentMonitor(resp http.ResponseWriter, req *http.Request) (interface{}, error)
func (*HTTPServer) AgentSelfRequest ¶
func (s *HTTPServer) AgentSelfRequest(resp http.ResponseWriter, req *http.Request) (interface{}, error)
func (*HTTPServer) AgentServersRequest ¶
func (s *HTTPServer) AgentServersRequest(resp http.ResponseWriter, req *http.Request) (interface{}, error)
AgentServersRequest is used to query the list of servers used by the Nomad Client for RPCs. This endpoint can also be used to update the list of servers for a given agent.
func (*HTTPServer) AllocSpecificRequest ¶
func (s *HTTPServer) AllocSpecificRequest(resp http.ResponseWriter, req *http.Request) (interface{}, error)
func (*HTTPServer) AllocsRequest ¶
func (s *HTTPServer) AllocsRequest(resp http.ResponseWriter, req *http.Request) (interface{}, error)
func (*HTTPServer) ClientAllocRequest ¶ added in v0.4.0
func (s *HTTPServer) ClientAllocRequest(resp http.ResponseWriter, req *http.Request) (interface{}, error)
func (*HTTPServer) ClientGCRequest ¶ added in v0.5.2
func (s *HTTPServer) ClientGCRequest(resp http.ResponseWriter, req *http.Request) (interface{}, error)
func (*HTTPServer) ClientStatsRequest ¶ added in v0.4.0
func (s *HTTPServer) ClientStatsRequest(resp http.ResponseWriter, req *http.Request) (interface{}, error)
func (*HTTPServer) DeploymentSpecificRequest ¶ added in v0.6.0
func (s *HTTPServer) DeploymentSpecificRequest(resp http.ResponseWriter, req *http.Request) (interface{}, error)
func (*HTTPServer) DeploymentsRequest ¶ added in v0.6.0
func (s *HTTPServer) DeploymentsRequest(resp http.ResponseWriter, req *http.Request) (interface{}, error)
func (*HTTPServer) DirectoryListRequest ¶ added in v0.3.0
func (s *HTTPServer) DirectoryListRequest(resp http.ResponseWriter, req *http.Request) (interface{}, error)
func (*HTTPServer) EvalSpecificRequest ¶
func (s *HTTPServer) EvalSpecificRequest(resp http.ResponseWriter, req *http.Request) (interface{}, error)
func (*HTTPServer) EvalsRequest ¶
func (s *HTTPServer) EvalsRequest(resp http.ResponseWriter, req *http.Request) (interface{}, error)
func (*HTTPServer) FileCatRequest ¶ added in v0.3.2
func (s *HTTPServer) FileCatRequest(resp http.ResponseWriter, req *http.Request) (interface{}, error)
func (*HTTPServer) FileReadAtRequest ¶ added in v0.3.0
func (s *HTTPServer) FileReadAtRequest(resp http.ResponseWriter, req *http.Request) (interface{}, error)
func (*HTTPServer) FileStatRequest ¶ added in v0.3.0
func (s *HTTPServer) FileStatRequest(resp http.ResponseWriter, req *http.Request) (interface{}, error)
func (*HTTPServer) FsRequest ¶ added in v0.3.1
func (s *HTTPServer) FsRequest(resp http.ResponseWriter, req *http.Request) (interface{}, error)
func (*HTTPServer) GarbageCollectRequest ¶ added in v0.3.0
func (s *HTTPServer) GarbageCollectRequest(resp http.ResponseWriter, req *http.Request) (interface{}, error)
func (*HTTPServer) HealthRequest ¶ added in v0.7.0
func (s *HTTPServer) HealthRequest(resp http.ResponseWriter, req *http.Request) (interface{}, error)
func (*HTTPServer) JobSpecificRequest ¶
func (s *HTTPServer) JobSpecificRequest(resp http.ResponseWriter, req *http.Request) (interface{}, error)
func (*HTTPServer) JobsParseRequest ¶ added in v0.8.2
func (s *HTTPServer) JobsParseRequest(resp http.ResponseWriter, req *http.Request) (interface{}, error)
JobsParseRequest parses a hcl jobspec and returns a api.Job
func (*HTTPServer) JobsRequest ¶
func (s *HTTPServer) JobsRequest(resp http.ResponseWriter, req *http.Request) (interface{}, error)
func (*HTTPServer) KeyringOperationRequest ¶ added in v0.5.0
func (s *HTTPServer) KeyringOperationRequest(resp http.ResponseWriter, req *http.Request) (interface{}, error)
KeyringOperationRequest allows an operator to install/delete/use keys
func (*HTTPServer) Logs ¶ added in v0.4.1
func (s *HTTPServer) Logs(resp http.ResponseWriter, req *http.Request) (interface{}, error)
Logs streams the content of a log blocking on EOF. The parameters are:
- task: task name to stream logs for.
- type: stdout/stderr to stream.
- follow: A boolean of whether to follow the logs.
- offset: The offset to start streaming data at, defaults to zero.
- origin: Either "start" or "end" and defines from where the offset is applied. Defaults to "start".
func (*HTTPServer) MetricsRequest ¶ added in v0.7.0
func (s *HTTPServer) MetricsRequest(resp http.ResponseWriter, req *http.Request) (interface{}, error)
MetricsRequest returns metrics for the agent. Metrics are JSON by default but Prometheus is an optional format.
func (*HTTPServer) NodeSpecificRequest ¶
func (s *HTTPServer) NodeSpecificRequest(resp http.ResponseWriter, req *http.Request) (interface{}, error)
func (*HTTPServer) NodesRequest ¶
func (s *HTTPServer) NodesRequest(resp http.ResponseWriter, req *http.Request) (interface{}, error)
func (*HTTPServer) OperatorAutopilotConfiguration ¶ added in v0.8.0
func (s *HTTPServer) OperatorAutopilotConfiguration(resp http.ResponseWriter, req *http.Request) (interface{}, error)
OperatorAutopilotConfiguration is used to inspect the current Autopilot configuration. This supports the stale query mode in case the cluster doesn't have a leader.
func (*HTTPServer) OperatorRaftConfiguration ¶ added in v0.5.5
func (s *HTTPServer) OperatorRaftConfiguration(resp http.ResponseWriter, req *http.Request) (interface{}, error)
OperatorRaftConfiguration is used to inspect the current Raft configuration. This supports the stale query mode in case the cluster doesn't have a leader.
func (*HTTPServer) OperatorRaftPeer ¶ added in v0.5.5
func (s *HTTPServer) OperatorRaftPeer(resp http.ResponseWriter, req *http.Request) (interface{}, error)
OperatorRaftPeer supports actions on Raft peers. Currently we only support removing peers by address.
func (*HTTPServer) OperatorRequest ¶ added in v0.5.5
func (s *HTTPServer) OperatorRequest(resp http.ResponseWriter, req *http.Request) (interface{}, error)
func (*HTTPServer) OperatorSchedulerConfiguration ¶ added in v0.9.0
func (s *HTTPServer) OperatorSchedulerConfiguration(resp http.ResponseWriter, req *http.Request) (interface{}, error)
OperatorSchedulerConfiguration is used to inspect the current Scheduler configuration. This supports the stale query mode in case the cluster doesn't have a leader.
func (*HTTPServer) OperatorServerHealth ¶ added in v0.8.0
func (s *HTTPServer) OperatorServerHealth(resp http.ResponseWriter, req *http.Request) (interface{}, error)
OperatorServerHealth is used to get the health of the servers in the given Region.
func (*HTTPServer) ReconcileJobSummaries ¶ added in v0.4.1
func (s *HTTPServer) ReconcileJobSummaries(resp http.ResponseWriter, req *http.Request) (interface{}, error)
func (*HTTPServer) RegionListRequest ¶ added in v0.2.1
func (s *HTTPServer) RegionListRequest(resp http.ResponseWriter, req *http.Request) (interface{}, error)
func (*HTTPServer) SearchRequest ¶ added in v0.6.1
func (s *HTTPServer) SearchRequest(resp http.ResponseWriter, req *http.Request) (interface{}, error)
SearchRequest accepts a prefix and context and returns a list of matching IDs for that context.
func (*HTTPServer) Shutdown ¶
func (s *HTTPServer) Shutdown()
Shutdown is used to shutdown the HTTP server
func (*HTTPServer) StatusLeaderRequest ¶
func (s *HTTPServer) StatusLeaderRequest(resp http.ResponseWriter, req *http.Request) (interface{}, error)
func (*HTTPServer) StatusPeersRequest ¶
func (s *HTTPServer) StatusPeersRequest(resp http.ResponseWriter, req *http.Request) (interface{}, error)
func (*HTTPServer) Stream ¶ added in v0.4.1
func (s *HTTPServer) Stream(resp http.ResponseWriter, req *http.Request) (interface{}, error)
Stream streams the content of a file blocking on EOF. The parameters are:
- path: path to file to stream.
- follow: A boolean of whether to follow the file, defaults to true.
- offset: The offset to start streaming data at, defaults to zero.
- origin: Either "start" or "end" and defines from where the offset is applied. Defaults to "start".
func (*HTTPServer) ValidateJobRequest ¶ added in v0.5.5
func (s *HTTPServer) ValidateJobRequest(resp http.ResponseWriter, req *http.Request) (interface{}, error)
type Ports ¶
type Ports struct { HTTP int `hcl:"http"` RPC int `hcl:"rpc"` Serf int `hcl:"serf"` // ExtraKeysHCL is used by hcl to surface unexpected keys ExtraKeysHCL []string `hcl:",unusedKeys" json:"-"` }
Ports encapsulates the various ports we bind to for network services. If any are not specified then the defaults are used instead.
type Resources ¶ added in v0.3.1
type Resources struct { CPU int `hcl:"cpu"` MemoryMB int `hcl:"memory"` DiskMB int `hcl:"disk"` ReservedPorts string `hcl:"reserved_ports"` // ExtraKeysHCL is used by hcl to surface unexpected keys ExtraKeysHCL []string `hcl:",unusedKeys" json:"-"` }
func (*Resources) CanParseReserved ¶ added in v0.9.0
CanParseReserved returns if the reserved ports specification is parsable. The supported syntax is comma separated integers or ranges separated by hyphens. For example, "80,120-150,160"
type ServerConfig ¶
type ServerConfig struct { // Enabled controls if we are a server Enabled bool `hcl:"enabled"` // AuthoritativeRegion is used to control which region is treated as // the source of truth for global tokens and ACL policies. AuthoritativeRegion string `hcl:"authoritative_region"` // BootstrapExpect tries to automatically bootstrap the Consul cluster, // by withholding peers until enough servers join. BootstrapExpect int `hcl:"bootstrap_expect"` // DataDir is the directory to store our state in DataDir string `hcl:"data_dir"` // ProtocolVersion is the protocol version to speak. This must be between // ProtocolVersionMin and ProtocolVersionMax. ProtocolVersion int `hcl:"protocol_version"` // RaftProtocol is the Raft protocol version to speak. This must be from [1-3]. RaftProtocol int `hcl:"raft_protocol"` // NumSchedulers is the number of scheduler thread that are run. // This can be as many as one per core, or zero to disable this server // from doing any scheduling work. NumSchedulers *int `hcl:"num_schedulers"` // EnabledSchedulers controls the set of sub-schedulers that are // enabled for this server to handle. This will restrict the evaluations // that the workers dequeue for processing. EnabledSchedulers []string `hcl:"enabled_schedulers"` // NodeGCThreshold controls how "old" a node must be to be collected by GC. // Age is not the only requirement for a node to be GCed but the threshold // can be used to filter by age. NodeGCThreshold string `hcl:"node_gc_threshold"` // JobGCInterval controls how often we dispatch a job to GC jobs that are // available for garbage collection. JobGCInterval string `hcl:"job_gc_interval"` // JobGCThreshold controls how "old" a job must be to be collected by GC. // Age is not the only requirement for a Job to be GCed but the threshold // can be used to filter by age. JobGCThreshold string `hcl:"job_gc_threshold"` // EvalGCThreshold controls how "old" an eval must be to be collected by GC. // Age is not the only requirement for a eval to be GCed but the threshold // can be used to filter by age. EvalGCThreshold string `hcl:"eval_gc_threshold"` // DeploymentGCThreshold controls how "old" a deployment must be to be // collected by GC. Age is not the only requirement for a deployment to be // GCed but the threshold can be used to filter by age. DeploymentGCThreshold string `hcl:"deployment_gc_threshold"` // HeartbeatGrace is the grace period beyond the TTL to account for network, // processing delays and clock skew before marking a node as "down". HeartbeatGrace time.Duration HeartbeatGraceHCL string `hcl:"heartbeat_grace" json:"-"` // MinHeartbeatTTL is the minimum time between heartbeats. This is used as // a floor to prevent excessive updates. MinHeartbeatTTL time.Duration MinHeartbeatTTLHCL string `hcl:"min_heartbeat_ttl" json:"-"` // MaxHeartbeatsPerSecond is the maximum target rate of heartbeats // being processed per second. This allows the TTL to be increased // to meet the target rate. MaxHeartbeatsPerSecond float64 `hcl:"max_heartbeats_per_second"` // StartJoin is a list of addresses to attempt to join when the // agent starts. If Serf is unable to communicate with any of these // addresses, then the agent will error and exit. // Deprecated in Nomad 0.10 StartJoin []string `hcl:"start_join"` // RetryJoin is a list of addresses to join with retry enabled. // Deprecated in Nomad 0.10 RetryJoin []string `hcl:"retry_join"` // RetryMaxAttempts specifies the maximum number of times to retry joining a // host on startup. This is useful for cases where we know the node will be // online eventually. // Deprecated in Nomad 0.10 RetryMaxAttempts int `hcl:"retry_max"` // RetryInterval specifies the amount of time to wait in between join // attempts on agent start. The minimum allowed value is 1 second and // the default is 30s. // Deprecated in Nomad 0.10 RetryInterval time.Duration RetryIntervalHCL string `hcl:"retry_interval" json:"-"` // RejoinAfterLeave controls our interaction with the cluster after leave. // When set to false (default), a leave causes Consul to not rejoin // the cluster until an explicit join is received. If this is set to // true, we ignore the leave, and rejoin the cluster on start. RejoinAfterLeave bool `hcl:"rejoin_after_leave"` // (Enterprise-only) NonVotingServer is whether this server will act as a // non-voting member of the cluster to help provide read scalability. NonVotingServer bool `hcl:"non_voting_server"` // (Enterprise-only) RedundancyZone is the redundancy zone to use for this server. RedundancyZone string `hcl:"redundancy_zone"` // (Enterprise-only) UpgradeVersion is the custom upgrade version to use when // performing upgrade migrations. UpgradeVersion string `hcl:"upgrade_version"` // Encryption key to use for the Serf communication EncryptKey string `hcl:"encrypt" json:"-"` // ServerJoin contains information that is used to attempt to join servers ServerJoin *ServerJoin `hcl:"server_join"` // ExtraKeysHCL is used by hcl to surface unexpected keys ExtraKeysHCL []string `hcl:",unusedKeys" json:"-"` }
ServerConfig is configuration specific to the server mode
func (*ServerConfig) EncryptBytes ¶ added in v0.5.0
func (s *ServerConfig) EncryptBytes() ([]byte, error)
EncryptBytes returns the encryption key configured.
func (*ServerConfig) Merge ¶
func (a *ServerConfig) Merge(b *ServerConfig) *ServerConfig
Merge is used to merge two server configs together
type ServerJoin ¶ added in v0.8.4
type ServerJoin struct { // StartJoin is a list of addresses to attempt to join when the // agent starts. If Serf is unable to communicate with any of these // addresses, then the agent will error and exit. StartJoin []string `hcl:"start_join"` // RetryJoin is a list of addresses to join with retry enabled, or a single // value to find multiple servers using go-discover syntax. RetryJoin []string `hcl:"retry_join"` // RetryMaxAttempts specifies the maximum number of times to retry joining a // host on startup. This is useful for cases where we know the node will be // online eventually. RetryMaxAttempts int `hcl:"retry_max"` // RetryInterval specifies the amount of time to wait in between join // attempts on agent start. The minimum allowed value is 1 second and // the default is 30s. RetryInterval time.Duration RetryIntervalHCL string `hcl:"retry_interval" json:"-"` // ExtraKeysHCL is used by hcl to surface unexpected keys ExtraKeysHCL []string `hcl:",unusedKeys" json:"-"` }
ServerJoin is used in both clients and servers to bootstrap connections to servers
func (*ServerJoin) Merge ¶ added in v0.8.4
func (s *ServerJoin) Merge(b *ServerJoin) *ServerJoin
type SyslogWrapper ¶
type SyslogWrapper struct {
// contains filtered or unexported fields
}
SyslogWrapper is used to cleanup log messages before writing them to a Syslogger. Implements the io.Writer interface.
type Telemetry ¶
type Telemetry struct { StatsiteAddr string `hcl:"statsite_address"` StatsdAddr string `hcl:"statsd_address"` DataDogAddr string `hcl:"datadog_address"` DataDogTags []string `hcl:"datadog_tags"` PrometheusMetrics bool `hcl:"prometheus_metrics"` DisableHostname bool `hcl:"disable_hostname"` UseNodeName bool `hcl:"use_node_name"` CollectionInterval string `hcl:"collection_interval"` PublishAllocationMetrics bool `hcl:"publish_allocation_metrics"` PublishNodeMetrics bool `hcl:"publish_node_metrics"` // DisableTaggedMetrics disables a new version of generating metrics which // uses tags DisableTaggedMetrics bool `hcl:"disable_tagged_metrics"` // BackwardsCompatibleMetrics allows for generating metrics in a simple // key/value structure as done in older versions of Nomad BackwardsCompatibleMetrics bool `hcl:"backwards_compatible_metrics"` // PrefixFilter allows for filtering out metrics from being collected PrefixFilter []string `hcl:"prefix_filter"` // FilterDefault controls whether to allow metrics that have not been specified // by the filter FilterDefault *bool `hcl:"filter_default"` // DisableDispatchedJobSummaryMetrics allows ignoring dispatched jobs when // publishing Job summary metrics. This is useful in environments that produce // high numbers of single count dispatch jobs as the metrics for each take up // a small memory overhead. DisableDispatchedJobSummaryMetrics bool `hcl:"disable_dispatched_job_summary_metrics"` // CirconusAPIToken is a valid API Token used to create/manage check. If provided, // metric management is enabled. // Default: none CirconusAPIToken string `hcl:"circonus_api_token"` // CirconusAPIApp is an app name associated with API token. // Default: "nomad" CirconusAPIApp string `hcl:"circonus_api_app"` // CirconusAPIURL is the base URL to use for contacting the Circonus API. // Default: "https://api.circonus.com/v2" CirconusAPIURL string `hcl:"circonus_api_url"` // CirconusSubmissionInterval is the interval at which metrics are submitted to Circonus. // Default: 10s CirconusSubmissionInterval string `hcl:"circonus_submission_interval"` // CirconusCheckSubmissionURL is the check.config.submission_url field from a // previously created HTTPTRAP check. // Default: none CirconusCheckSubmissionURL string `hcl:"circonus_submission_url"` // CirconusCheckID is the check id (not check bundle id) from a previously created // HTTPTRAP check. The numeric portion of the check._cid field. // Default: none CirconusCheckID string `hcl:"circonus_check_id"` // CirconusCheckForceMetricActivation will force enabling metrics, as they are encountered, // if the metric already exists and is NOT active. If check management is enabled, the default // behavior is to add new metrics as they are encountered. If the metric already exists in the // check, it will *NOT* be activated. This setting overrides that behavior. // Default: "false" CirconusCheckForceMetricActivation string `hcl:"circonus_check_force_metric_activation"` // CirconusCheckInstanceID serves to uniquely identify the metrics coming from this "instance". // It can be used to maintain metric continuity with transient or ephemeral instances as // they move around within an infrastructure. // Default: hostname:app CirconusCheckInstanceID string `hcl:"circonus_check_instance_id"` // CirconusCheckSearchTag is a special tag which, when coupled with the instance id, helps to // narrow down the search results when neither a Submission URL or Check ID is provided. // Default: service:app (e.g. service:nomad) CirconusCheckSearchTag string `hcl:"circonus_check_search_tag"` // CirconusCheckTags is a comma separated list of tags to apply to the check. Note that // the value of CirconusCheckSearchTag will always be added to the check. // Default: none CirconusCheckTags string `hcl:"circonus_check_tags"` // CirconusCheckDisplayName is the name for the check which will be displayed in the Circonus UI. // Default: value of CirconusCheckInstanceID CirconusCheckDisplayName string `hcl:"circonus_check_display_name"` // CirconusBrokerID is an explicit broker to use when creating a new check. The numeric portion // of broker._cid. If metric management is enabled and neither a Submission URL nor Check ID // is provided, an attempt will be made to search for an existing check using Instance ID and // Search Tag. If one is not found, a new HTTPTRAP check will be created. // Default: use Select Tag if provided, otherwise, a random Enterprise Broker associated // with the specified API token or the default Circonus Broker. // Default: none CirconusBrokerID string `hcl:"circonus_broker_id"` // CirconusBrokerSelectTag is a special tag which will be used to select a broker when // a Broker ID is not provided. The best use of this is to as a hint for which broker // should be used based on *where* this particular instance is running. // (e.g. a specific geo location or datacenter, dc:sfo) // Default: none CirconusBrokerSelectTag string `hcl:"circonus_broker_select_tag"` // ExtraKeysHCL is used by hcl to surface unexpected keys ExtraKeysHCL []string `hcl:",unusedKeys" json:"-"` // contains filtered or unexported fields }
Telemetry is the telemetry configuration for the server
func (*Telemetry) PrefixFilters ¶ added in v0.8.7
PrefixFilters parses the PrefixFilter field and returns a list of allowed and blocked filters
type TestAgent ¶ added in v0.6.0
type TestAgent struct { // T is the testing object T testing.T // Name is an optional name of the agent. Name string // ConfigCallback is an optional callback that allows modification of the // configuration before the agent is started. ConfigCallback func(*Config) // Config is the agent configuration. If Config is nil then // TestConfig() is used. If Config.DataDir is set then it is // the callers responsibility to clean up the data directory. // Otherwise, a temporary data directory is created and removed // when Shutdown() is called. Config *Config // LogOutput is the sink for the logs. If nil, logs are written // to os.Stderr. LogOutput io.Writer // DataDir is the data directory which is used when Config.DataDir // is not set. It is created automatically and removed when // Shutdown() is called. DataDir string // Key is the optional encryption key for the keyring. Key string // Server is a reference to the started HTTP endpoint. // It is valid after Start(). Server *HTTPServer // Agent is the embedded Nomad agent. // It is valid after Start(). *Agent // RootToken is auto-bootstrapped if ACLs are enabled RootToken *structs.ACLToken }
TestAgent encapsulates an Agent with a default configuration and startup procedure suitable for testing. It manages a temporary data directory which is removed after shutdown.
func NewTestAgent ¶ added in v0.6.0
NewTestAgent returns a started agent with the given name and configuration. The caller should call Shutdown() to stop the agent and remove temporary directories.
Source Files ¶
- acl_endpoint.go
- agent.go
- agent_endpoint.go
- alloc_endpoint.go
- command.go
- config.go
- config_oss.go
- config_parse.go
- deployment_endpoint.go
- eval_endpoint.go
- fs_endpoint.go
- helpers.go
- http.go
- http_oss.go
- job_endpoint.go
- keyring.go
- log_file.go
- log_levels.go
- metrics_endpoint.go
- node_endpoint.go
- operator_endpoint.go
- plugins.go
- region_endpoint.go
- retry_join.go
- search_endpoint.go
- stats_endpoint.go
- status_endpoint.go
- stub_asset.go
- syslog.go
- system_endpoint.go
- testagent.go