config

package
v1.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 12, 2024 License: MIT Imports: 9 Imported by: 0

Documentation

Overview

Package config provides data structures and methods to read configuration files and validates the content of such files for sane values while setting default where applicable.

Index

Constants

View Source
const (
	GroupTypeDeviceTag    = "device_tag"
	GroupTypeInterfaceTag = "interface_tag"
	GroupTypeService      = "service"
	InetFamilyAny         = "any"
	InetFamilyInet        = "inet"
	InetFamilyInet6       = "inet6"
)

Variables

View Source
var (
	ErrorBadFilterLabel    = errors.New("bad label for filter provided (must start with 'netbox_')")
	ErrorBadFilterMatch    = errors.New("bad filter match provided")
	ErrorBadGroupType      = errors.New("bad group type value")
	ErrorBadInetFamily     = errors.New("bad inet_family value provided")
	ErrorBadPort           = errors.New("bad port value")
	ErrorBadScanInterval   = errors.New("failed to parse scan_interval")
	ErrorBaseURLMissingTLS = errors.New("netbox_base_url must start with https and support tls")
	ErrorDuplicateFile     = errors.New("duplicate file name in configuration")
	ErrorMissingFile       = errors.New("missing config file path")
	ErrorMissingRequired   = errors.New("missing one or more required config values")
	ErrorParsingFile       = errors.New("failed to parse config file")
	ErrorReadingFile       = errors.New("failed to read config file")
)

Functions

This section is empty.

Types

type Config

type Config struct {
	BaseURL            string        `yaml:"base_url"`
	Token              string        `yaml:"api_token"`
	AllowInsecure      bool          `yaml:"allow_insecure"`
	ScanIntervalString string        `yaml:"scan_interval"`
	ScanInterval       time.Duration `yaml:"-"`
	Groups             []*Group      `yaml:"groups"`
}

Config is a generic config struct for netbox_sd

func ReadConfigFile

func ReadConfigFile(file string) (*Config, error)

ReadConfigFile reads and parses a given config file

type Filter

type Filter struct {
	Label  string `yaml:"label"`
	Match  string `yaml:"match"`
	Negate bool   `yaml:"negate"`
	// contains filtered or unexported fields
}

Filter defines a new filter where a the string index of the map is a label name and the value at that index represents a regular expression that must match.

type Flags

type Flags struct {
	// IncludeVMs will cause VMs to be checked for matches too.
	IncludeVMs *bool `yaml:"include_vms"`
	// InetFamily defines which inet address family is returned. If an address of a target doesn't match the family, the
	// device is skipped in the resulting target group.
	InetFamily *string `yaml:"inet_family"`
	// AllAddresses causes all addresses of a service, device or interface to be returned when set to true. This still
	// honors the InetFamily filter.
	AllAddresses *bool `yaml:"all_addresses"`
}

Flags defines specific behavior that can be toggled on or off

type Group

type Group struct {
	File               string         `yaml:"file"`
	Type               string         `yaml:"type"`
	Match              string         `yaml:"match"`
	ScanIntervalString string         `yaml:"scan_interval"`
	ScanInterval       time.Duration  `yaml:"-"`
	Labels             model.LabelSet `yaml:"labels"`
	Port               *int           `yaml:"port"`
	Flags              Flags          `yaml:"flags"`
	Filters            []*Filter      `yaml:"filters"`
}

Group contains specific configuration for groups to get targets for

func (*Group) FiltersMatch

func (group *Group) FiltersMatch(target *targetgroup.Group) bool

FiltersMatch returns true if all filters match with the target's labels.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL