Documentation ¶
Index ¶
- Constants
- func BuiltinFingerprints() []string
- func FindCgroupMountpointDir() (string, error)
- type ArchFingerprint
- type CGroupFingerprint
- type CPUFingerprint
- type ConsulFingerprint
- type DefaultMountPointDetector
- type DefaultNetworkInterfaceDetector
- type EnvAWSFingerprint
- type EnvGCEFingerprint
- type Factory
- type Fingerprint
- func NewArchFingerprint(logger *log.Logger) Fingerprint
- func NewCGroupFingerprint(logger *log.Logger) Fingerprint
- func NewCPUFingerprint(logger *log.Logger) Fingerprint
- func NewConsulFingerprint(logger *log.Logger) Fingerprint
- func NewEnvAWSFingerprint(logger *log.Logger) Fingerprint
- func NewEnvGCEFingerprint(logger *log.Logger) Fingerprint
- func NewFingerprint(name string, logger *log.Logger) (Fingerprint, error)
- func NewHostFingerprint(logger *log.Logger) Fingerprint
- func NewMemoryFingerprint(logger *log.Logger) Fingerprint
- func NewNetworkFingerprint(logger *log.Logger) Fingerprint
- func NewNomadFingerprint(logger *log.Logger) Fingerprint
- func NewSignalFingerprint(logger *log.Logger) Fingerprint
- func NewStorageFingerprint(logger *log.Logger) Fingerprint
- func NewVaultFingerprint(logger *log.Logger) Fingerprint
- type GCEMetadataNetworkInterface
- type HostFingerprint
- type MemoryFingerprint
- type MountPointDetector
- type NetworkFingerprint
- type NetworkInterfaceDetector
- type NomadFingerprint
- type ReqError
- type SignalFingerprint
- type StaticFingerprinter
- type StorageFingerprint
- type VaultFingerprint
Constants ¶
const ( // This is where the AWS metadata server normally resides. We hardcode the // "instance" path as well since it's the only one we access here. DEFAULT_AWS_URL = "http://169.254.169.254/latest/meta-data/" // AwsMetadataTimeout is the timeout used when contacting the AWS metadata // service AwsMetadataTimeout = 2 * time.Second )
const ( // This is where the GCE metadata server normally resides. We hardcode the // "instance" path as well since it's the only one we access here. DEFAULT_GCE_URL = "http://169.254.169.254/computeMetadata/v1/instance/" // GceMetadataTimeout is the timeout used when contacting the GCE metadata // service GceMetadataTimeout = 2 * time.Second )
const ( EmptyDuration = time.Duration(0) // TightenNetworkTimeoutsConfig is a config key that can be used during // tests to tighten the timeouts for fingerprinters that make network calls. TightenNetworkTimeoutsConfig = "test.tighten_network_timeouts" )
EmptyDuration is to be used by fingerprinters that are not periodic.
Variables ¶
This section is empty.
Functions ¶
func BuiltinFingerprints ¶
func BuiltinFingerprints() []string
BuiltinFingerprints is a slice containing the key names of all registered fingerprints available. The order of this slice should be preserved when fingerprinting.
func FindCgroupMountpointDir ¶
FindCgroupMountpointDir is used to find the cgroup mount point on a Linux system.
Types ¶
type ArchFingerprint ¶
type ArchFingerprint struct { StaticFingerprinter // contains filtered or unexported fields }
ArchFingerprint is used to fingerprint the architecture
func (*ArchFingerprint) Fingerprint ¶
type CGroupFingerprint ¶
type CGroupFingerprint struct {
// contains filtered or unexported fields
}
func (*CGroupFingerprint) Fingerprint ¶
Fingerprint tries to find a valid cgroup moint point
type CPUFingerprint ¶
type CPUFingerprint struct { StaticFingerprinter // contains filtered or unexported fields }
CPUFingerprint is used to fingerprint the CPU
func (*CPUFingerprint) Fingerprint ¶
type ConsulFingerprint ¶
type ConsulFingerprint struct {
// contains filtered or unexported fields
}
ConsulFingerprint is used to fingerprint for Consul
func (*ConsulFingerprint) Fingerprint ¶
type DefaultMountPointDetector ¶
type DefaultMountPointDetector struct { }
Implements the interface detector which calls the cgroups library directly
func (*DefaultMountPointDetector) MountPoint ¶
func (b *DefaultMountPointDetector) MountPoint() (string, error)
Call out to the default cgroup library
type DefaultNetworkInterfaceDetector ¶
type DefaultNetworkInterfaceDetector struct { }
Implements the interface detector which calls net directly
func (*DefaultNetworkInterfaceDetector) InterfaceByName ¶
func (b *DefaultNetworkInterfaceDetector) InterfaceByName(name string) (*net.Interface, error)
func (*DefaultNetworkInterfaceDetector) Interfaces ¶
func (b *DefaultNetworkInterfaceDetector) Interfaces() ([]net.Interface, error)
type EnvAWSFingerprint ¶
type EnvAWSFingerprint struct { StaticFingerprinter // contains filtered or unexported fields }
EnvAWSFingerprint is used to fingerprint AWS metadata
func (*EnvAWSFingerprint) Fingerprint ¶
type EnvGCEFingerprint ¶
type EnvGCEFingerprint struct { StaticFingerprinter // contains filtered or unexported fields }
EnvGCEFingerprint is used to fingerprint GCE metadata
func (*EnvGCEFingerprint) Fingerprint ¶
type Factory ¶
type Factory func(*log.Logger) Fingerprint
Factory is used to instantiate a new Fingerprint
type Fingerprint ¶
type Fingerprint interface { // Fingerprint is used to update properties of the Node, // and returns if the fingerprint was applicable and a potential error. Fingerprint(*config.Config, *structs.Node) (bool, error) // Periodic is a mechanism for the fingerprinter to indicate that it should // be run periodically. The return value is a boolean indicating if it // should be periodic, and if true, a duration. Periodic() (bool, time.Duration) }
Fingerprint is used for doing "fingerprinting" of the host to automatically determine attributes, resources, and metadata about it. Each of these is a heuristic, and many of them can be applied on a particular host.
func NewArchFingerprint ¶
func NewArchFingerprint(logger *log.Logger) Fingerprint
NewArchFingerprint is used to create an OS fingerprint
func NewCGroupFingerprint ¶
func NewCGroupFingerprint(logger *log.Logger) Fingerprint
NewCGroupFingerprint returns a new cgroup fingerprinter
func NewCPUFingerprint ¶
func NewCPUFingerprint(logger *log.Logger) Fingerprint
NewCPUFingerprint is used to create a CPU fingerprint
func NewConsulFingerprint ¶
func NewConsulFingerprint(logger *log.Logger) Fingerprint
NewConsulFingerprint is used to create a Consul fingerprint
func NewEnvAWSFingerprint ¶
func NewEnvAWSFingerprint(logger *log.Logger) Fingerprint
NewEnvAWSFingerprint is used to create a fingerprint from AWS metadata
func NewEnvGCEFingerprint ¶
func NewEnvGCEFingerprint(logger *log.Logger) Fingerprint
NewEnvGCEFingerprint is used to create a fingerprint from GCE metadata
func NewFingerprint ¶
func NewFingerprint(name string, logger *log.Logger) (Fingerprint, error)
NewFingerprint is used to instantiate and return a new fingerprint given the name and a logger
func NewHostFingerprint ¶
func NewHostFingerprint(logger *log.Logger) Fingerprint
NewHostFingerprint is used to create a Host fingerprint
func NewMemoryFingerprint ¶
func NewMemoryFingerprint(logger *log.Logger) Fingerprint
NewMemoryFingerprint is used to create a Memory fingerprint
func NewNetworkFingerprint ¶
func NewNetworkFingerprint(logger *log.Logger) Fingerprint
NewNetworkFingerprint returns a new NetworkFingerprinter with the given logger
func NewNomadFingerprint ¶
func NewNomadFingerprint(logger *log.Logger) Fingerprint
NewNomadFingerprint is used to create a Nomad fingerprint
func NewSignalFingerprint ¶
func NewSignalFingerprint(logger *log.Logger) Fingerprint
NewSignalFingerprint is used to create a Signal fingerprint
func NewStorageFingerprint ¶
func NewStorageFingerprint(logger *log.Logger) Fingerprint
func NewVaultFingerprint ¶
func NewVaultFingerprint(logger *log.Logger) Fingerprint
NewVaultFingerprint is used to create a Vault fingerprint
type HostFingerprint ¶
type HostFingerprint struct { StaticFingerprinter // contains filtered or unexported fields }
HostFingerprint is used to fingerprint the host
func (*HostFingerprint) Fingerprint ¶
type MemoryFingerprint ¶
type MemoryFingerprint struct { StaticFingerprinter // contains filtered or unexported fields }
MemoryFingerprint is used to fingerprint the available memory on the node
func (*MemoryFingerprint) Fingerprint ¶
type MountPointDetector ¶
An interface to isolate calls to the cgroup library This facilitates testing where we can implement fake mount points to test various code paths
type NetworkFingerprint ¶
type NetworkFingerprint struct { StaticFingerprinter // contains filtered or unexported fields }
NetworkFingerprint is used to fingerprint the Network capabilities of a node
func (*NetworkFingerprint) Fingerprint ¶
type NetworkInterfaceDetector ¶
type NetworkInterfaceDetector interface { Interfaces() ([]net.Interface, error) InterfaceByName(name string) (*net.Interface, error) Addrs(intf *net.Interface) ([]net.Addr, error) }
An interface to isolate calls to various api in net package This facilitates testing where we can implement fake interfaces and addresses to test varios code paths
type NomadFingerprint ¶
type NomadFingerprint struct { StaticFingerprinter // contains filtered or unexported fields }
NomadFingerprint is used to fingerprint the Nomad version
func (*NomadFingerprint) Fingerprint ¶
type SignalFingerprint ¶
type SignalFingerprint struct { StaticFingerprinter // contains filtered or unexported fields }
SignalFingerprint is used to fingerprint the available signals
func (*SignalFingerprint) Fingerprint ¶
type StaticFingerprinter ¶
type StaticFingerprinter struct{}
StaticFingerprinter can be embedded in a struct that has a Fingerprint method to make it non-periodic.
type StorageFingerprint ¶
type StorageFingerprint struct { StaticFingerprinter // contains filtered or unexported fields }
StorageFingerprint is used to measure the amount of storage free for applications that the Nomad agent will run on this machine.
func (*StorageFingerprint) Fingerprint ¶
type VaultFingerprint ¶
type VaultFingerprint struct {
// contains filtered or unexported fields
}
VaultFingerprint is used to fingerprint for Vault