* Added support to auto discovery witih SRV The yaml configuration has been modified to suport srv parameters. Now the name is taken form the router identity to allow dynamic discovery of devices based on SRV registry. * Corrected format * feat(collector): Added support to use custom DNS * feat(collector): get default dns server from resolv.conf * Remove getIdentity on the static config devices
64 lines
1.5 KiB
Go
64 lines
1.5 KiB
Go
package config
|
|
|
|
import (
|
|
"io"
|
|
"io/ioutil"
|
|
|
|
yaml "gopkg.in/yaml.v2"
|
|
)
|
|
|
|
// Config represents the configuration for the exporter
|
|
type Config struct {
|
|
Devices []Device `yaml:"devices"`
|
|
Features struct {
|
|
BGP bool `yaml:"bgp,omitempty"`
|
|
DHCP bool `yaml:"dhcp,omitempty"`
|
|
DHCPL bool `yaml:"dhcpl,omitemptu"`
|
|
DHCPv6 bool `yaml:"dhcpv6,omitempty"`
|
|
Routes bool `yaml:"routes,omitempty"`
|
|
POE bool `yaml:"poe,omitempty"`
|
|
Pools bool `yaml:"pools,omitempty"`
|
|
Optics bool `yaml:"optics,omitempty"`
|
|
W60G bool `yaml:"w60g,omitempty"`
|
|
WlanSTA bool `yaml:"wlansta,omitempty"`
|
|
WlanIF bool `yaml:"wlanif,omitempty"`
|
|
Monitor bool `yaml:"monitor,omitempty"`
|
|
Ipsec bool `yaml:"ipsec,omitempty"`
|
|
} `yaml:"features,omitempty"`
|
|
}
|
|
|
|
// Device represents a target device
|
|
type Device struct {
|
|
Name string `yaml:"name"`
|
|
Address string `yaml:"address,omitempty"`
|
|
Srv SrvRecord `yaml:"srv,omitempty"`
|
|
User string `yaml:"user"`
|
|
Password string `yaml:"password"`
|
|
Port string `yaml:"port"`
|
|
}
|
|
|
|
type SrvRecord struct {
|
|
Record string `yaml:"record"`
|
|
Dns DnsServer `yaml:"dns,omitempty"`
|
|
}
|
|
type DnsServer struct {
|
|
Address string `yaml:"address"`
|
|
Port int `yaml:"port"`
|
|
}
|
|
|
|
// Load reads YAML from reader and unmashals in Config
|
|
func Load(r io.Reader) (*Config, error) {
|
|
b, err := ioutil.ReadAll(r)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
c := &Config{}
|
|
err = yaml.Unmarshal(b, c)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return c, nil
|
|
}
|