Adds ability to specify API Port, either via CLI or in config. If port is not provided, default is used, taking into account if TLS is enabled or not
52 lines
1.1 KiB
Go
52 lines
1.1 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"`
|
|
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"`
|
|
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"`
|
|
User string `yaml:"user"`
|
|
Password string `yaml:"password"`
|
|
Port string `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
|
|
}
|