xframe/component/service_discovery/http/consul/config.go

54 lines
1.1 KiB
Go
Raw Normal View History

2024-10-12 12:55:20 +08:00
package consul
import (
"errors"
"fmt"
)
const (
allEths = "0.0.0.0"
envPodIP = "POD_IP"
defaultCheckPath = "/healthcheck"
)
// Conf is the config item with the given key on etcd.
type Conf struct {
Host string // consul endpoint eg:127.0.0.1:8500
Key string `json:",optional"`
Token string `json:",optional"`
Tag []string `json:",optional"`
Meta map[string]string `json:",optional"`
// ttl check
TTL int `json:",default=20"` // Second
// http check
CheckPath string `json:",default=/healthcheck"`
Interval int `json:",default=10"` // Second
Timeout int `json:",default=1"` // Second
}
// Validate validates c.
func (c *Conf) Validate() error {
if len(c.Host) == 0 {
return errors.New("empty consul hosts")
}
if len(c.Key) == 0 {
return errors.New("empty consul key")
}
if c.TTL == 0 {
c.TTL = 20
}
return nil
}
type BuildTargetConf struct {
Service string
Tags []string
Healthy bool
}
func (t *BuildTargetConf) String() string {
return fmt.Sprintf("service='%s' healthy='%t' tags='%v'", t.Service, t.Healthy, t.Tags)
}