log-agent/etcd/etcd.go

55 lines
1.0 KiB
Go

package etcd
import (
"context"
"encoding/json"
"fmt"
clientv3 "go.etcd.io/etcd/client/v3"
"time"
)
var (
cli *clientv3.Client
)
type LogEntry struct {
Path string `json:"path"`
Topic string `json:"topic"`
}
//初始化etcd
func Init(addr string, timeout time.Duration) (err error) {
cli, err = clientv3.New(clientv3.Config{
Endpoints: []string{addr},
DialTimeout: 5 * time.Second,
})
if err != nil {
//handle error!
fmt.Println("connect etcd server failed,error:", err)
return
}
fmt.Println("connect etcd server success")
return
}
// 从etcd中根据key获取配置项
func GetConf(key string) (logEntryConf []*LogEntry, err error) {
ctx, cancel := context.WithTimeout(context.Background(), time.Second)
resp, err := cli.Get(ctx, key)
cancel()
if err != nil {
fmt.Println("get etcd config failed,error:", err)
}
for _, ev := range resp.Kvs {
err = json.Unmarshal(ev.Value, &logEntryConf)
if err != nil {
fmt.Println("parse etcd config failed,error:", err)
return
}
}
return
}