Add configuration file
This commit is contained in:
45
config/config.go
Normal file
45
config/config.go
Normal file
@ -0,0 +1,45 @@
|
||||
package config
|
||||
|
||||
import (
|
||||
"gopkg.in/yaml.v2"
|
||||
"io/ioutil"
|
||||
)
|
||||
|
||||
type Config struct {
|
||||
Services []Service `yaml:"services"`
|
||||
}
|
||||
|
||||
type Service struct {
|
||||
Name string `yaml:"name"`
|
||||
Url string `yaml:"url"`
|
||||
Interval uint `yaml:"interval"`
|
||||
FailureThreshold uint `yaml:"failure-threshold"`
|
||||
Conditions []Condition `yaml:"conditions"`
|
||||
}
|
||||
|
||||
type Condition string
|
||||
|
||||
var config *Config
|
||||
|
||||
func Get() *Config {
|
||||
if config == nil {
|
||||
ReadConfigurationFile("config.yaml")
|
||||
}
|
||||
return config
|
||||
}
|
||||
|
||||
func ReadConfigurationFile(fileName string) *Config {
|
||||
config = &Config{}
|
||||
if bytes, err := ioutil.ReadFile(fileName); err == nil { // file exists
|
||||
return ParseConfigBytes(bytes)
|
||||
} else {
|
||||
panic(err)
|
||||
}
|
||||
return config
|
||||
}
|
||||
|
||||
func ParseConfigBytes(yamlBytes []byte) *Config {
|
||||
config = &Config{}
|
||||
yaml.Unmarshal(yamlBytes, config)
|
||||
return config
|
||||
}
|
Reference in New Issue
Block a user