39 lines
1.2 KiB
Go
39 lines
1.2 KiB
Go
package config
|
|
|
|
import (
|
|
"io"
|
|
|
|
mtime "go.unistack.org/micro/v3/util/time"
|
|
yaml "gopkg.in/yaml.v3"
|
|
)
|
|
|
|
type Config struct {
|
|
Services []*Service `json:"services,omitempty" yaml:"services,omitempty"`
|
|
}
|
|
|
|
type Service struct {
|
|
Name string `json:"name,omitempty" yaml:"name,omitempty"`
|
|
Addr string `json:"addr,omitempty" yaml:"addr,omitempty"`
|
|
Type string `json:"type,omitempty" yaml:"type,omitempty"`
|
|
Reflection bool `json:"reflection,omitempty" yaml:"reflection,omitempty"`
|
|
Protoset string `json:"protoset,omitempty" yaml:"protoset,omitempty"`
|
|
Checks []*Check `json:"checks,omitempty" yaml:"checks,omitempty"`
|
|
TLSVerify *bool `json:"tls_verify,omitempty" yaml:"tls_verify,omitempty"`
|
|
}
|
|
|
|
type Check struct {
|
|
Name string `json:"name,omitempty" yaml:"name,omitempty"`
|
|
Data string `json:"data,omitempty" yaml:"data,omitempty"`
|
|
Timeout mtime.Duration `json:"timeout,omitempty" yaml:"timeout,omitempty"`
|
|
Interval mtime.Duration `json:"interval,omitempty" yaml:"interval,omitempty"`
|
|
}
|
|
|
|
func (cfg *Config) Parse(r io.Reader) error {
|
|
buf, err := io.ReadAll(r)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
return yaml.Unmarshal(buf, cfg)
|
|
}
|