/
client.go
53 lines (46 loc) · 1.33 KB
/
client.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
package rkv
import (
"fmt"
"github.com/tdx/rkv/api"
"github.com/tdx/rkv/internal/agent"
"github.com/tdx/rkv/registry"
hlog "github.com/hashicorp/go-hclog"
)
// NewClient creates rkv client
func NewClient(config *api.Config) (api.Client, error) {
if config.NodeName == "" {
return nil, api.ErrNodeNameEmpty
}
if config.Logger == nil {
logLevel := hlog.LevelFromString(config.LogLevel)
if logLevel == hlog.NoLevel {
logLevel = hlog.Info
}
config.Logger = hlog.New(&hlog.LoggerOptions{
Name: fmt.Sprintf("rkv-%s", config.NodeName),
Level: logLevel,
IncludeLocation: config.LogIncludeLocation,
Output: config.LogOutput,
})
}
config.Raft.LogLevel = config.LogLevel
reg := config.Registry
if reg == nil {
reg = registry.NewApplyRegistrator()
}
return agent.New(&agent.Config{
Raft: config.Raft,
DataDir: config.DataDir,
Backend: config.Backend,
Logger: config.Logger,
NodeName: config.NodeName,
BindAddr: config.DiscoveryAddr,
StartJoinAddrs: config.DiscoveryJoinAddrs,
RaftPort: config.RaftPort,
RPCPort: config.RPCPort,
BindHTTP: config.HTTPAddr,
Bootstrap: len(config.DiscoveryJoinAddrs) == 0,
OnLeaderChangeFn: config.OnChangeLeaderFn,
Registry: reg,
})
}