-
Notifications
You must be signed in to change notification settings - Fork 71
/
local_cluster.go
86 lines (77 loc) · 1.94 KB
/
local_cluster.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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
package cluster
import (
"context"
"log"
"strconv"
"strings"
)
type nodeComponent struct {
ip string
port int32
component Component
}
// NewLocalClusterProvisioner reuses a local cluster
func NewLocalClusterProvisioner(dbs, pds, kvs []string) Provider {
return &LocalClusterProvider{
DBs: dbs,
PDs: pds,
KVs: kvs,
}
}
// LocalClusterProvider ...
type LocalClusterProvider struct {
DBs []string
PDs []string
KVs []string
}
// SetUp fills nodes and clientNodes
func (l *LocalClusterProvider) SetUp(ctx context.Context, _ Specs) ([]Node, []ClientNode, error) {
var nodes []Node
var clientNode []ClientNode
var nodeComponents = buildNodeComponent(l.DBs, TiDB)
nodeComponents = append(nodeComponents, buildNodeComponent(l.KVs, TiKV)...)
nodeComponents = append(nodeComponents, buildNodeComponent(l.PDs, PD)...)
for _, node := range nodeComponents {
nodes = append(nodes, Node{
Namespace: "",
Component: node.component,
PodName: "",
IP: node.ip,
Port: node.port,
Client: nil,
})
}
for _, node := range nodeComponents {
if node.component != TiDB {
continue
}
clientNode = append(clientNode, ClientNode{
Namespace: "",
ClusterName: "",
Component: node.component,
IP: node.ip,
Port: node.port,
})
}
return nodes, clientNode, nil
}
// TearDown does nothing here
func (l *LocalClusterProvider) TearDown(ctx context.Context, _ Specs) error {
return nil
}
func buildNodeComponent(nodes []string, component Component) []nodeComponent {
var nodeComponents []nodeComponent
for _, node := range nodes {
addr := strings.Split(node, ":")
if len(addr) != 2 {
log.Fatalf("expect format ip:port, got %s", addr)
}
ip := addr[0]
port, err := strconv.Atoi(addr[1])
if err != nil {
log.Fatalf("illegal port %s", addr[1])
}
nodeComponents = append(nodeComponents, nodeComponent{ip: ip, port: int32(port), component: component})
}
return nodeComponents
}