prometheus-adapter/pkg/config/loader.go
2019-07-19 17:51:03 -07:00

36 lines
1 KiB
Go

package config
import (
"fmt"
"io/ioutil"
"os"
"github.com/directxman12/k8s-prometheus-adapter/pkg/metrics"
"gopkg.in/yaml.v2"
)
// FromFile loads the configuration from a particular file.
func FromFile(filename string) (*MetricsDiscoveryConfig, error) {
file, err := os.Open(filename)
defer file.Close()
if err != nil {
return nil, fmt.Errorf("unable to load metrics discovery config file: %v", err)
}
contents, err := ioutil.ReadAll(file)
if err != nil {
return nil, fmt.Errorf("unable to load metrics discovery config file: %v", err)
}
return FromYAML(contents)
}
// FromYAML loads the configuration from a blob of YAML.
func FromYAML(contents []byte) (*MetricsDiscoveryConfig, error) {
var cfg MetricsDiscoveryConfig
if err := yaml.UnmarshalStrict(contents, &cfg); err != nil {
return nil, fmt.Errorf("unable to parse metrics discovery config: %v", err)
}
metrics.Rules.WithLabelValues("normal").Set(float64(len(cfg.Rules)))
metrics.Rules.WithLabelValues("external").Set(float64(len(cfg.ExternalRules)))
return &cfg, nil
}