-
Notifications
You must be signed in to change notification settings - Fork 173
Expand file tree
/
Copy pathinterfaces.go
More file actions
95 lines (79 loc) · 2.64 KB
/
Copy pathinterfaces.go
File metadata and controls
95 lines (79 loc) · 2.64 KB
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
87
88
89
90
91
92
93
94
95
package etcdcli
import (
"context"
"go.etcd.io/etcd/api/v3/etcdserverpb"
clientv3 "go.etcd.io/etcd/client/v3"
)
const (
EtcdMemberStatusAvailable = "EtcdMemberAvailable"
EtcdMemberStatusNotStarted = "EtcdMemberNotStarted"
EtcdMemberStatusUnhealthy = "EtcdMemberUnhealthy"
EtcdMemberStatusUnknown = "EtcdMemberUnknown"
)
type EtcdClient interface {
Defragment
MemberAdder
MemberPromoter
MemberHealth
IsMemberHealthy
MemberLister
MemberRemover
HealthyMemberLister
UnhealthyMemberLister
MemberStatusChecker
LeaderMover
Status
GetMember(ctx context.Context, name string) (*etcdserverpb.Member, error)
MemberUpdatePeerURL(ctx context.Context, id uint64, peerURL []string) error
}
type AllMemberLister interface {
MemberLister
HealthyMemberLister
UnhealthyMemberLister
MemberHealth
}
type Defragment interface {
Defragment(ctx context.Context, member *etcdserverpb.Member) (*clientv3.DefragmentResponse, error)
}
type Status interface {
Status(ctx context.Context, target string) (*clientv3.StatusResponse, error)
}
type MemberAdder interface {
MemberAddAsLearner(ctx context.Context, peerURL string) error
}
type MemberPromoter interface {
MemberPromote(ctx context.Context, member *etcdserverpb.Member) error
}
type MemberHealth interface {
MemberHealth(ctx context.Context) (memberHealth, error)
}
type IsMemberHealthy interface {
IsMemberHealthy(ctx context.Context, member *etcdserverpb.Member) (bool, error)
}
type MemberRemover interface {
MemberRemove(ctx context.Context, memberID uint64) error
}
type LeaderMover interface {
MoveLeader(ctx context.Context, leader *etcdserverpb.Member, toMember uint64) error
}
type MemberLister interface {
// MemberList lists all members in a cluster
MemberList(ctx context.Context) ([]*etcdserverpb.Member, error)
// VotingMemberList lists all non learner members in a cluster
VotingMemberList(ctx context.Context) ([]*etcdserverpb.Member, error)
}
type HealthyMemberLister interface {
// HealthyMembers lists all healthy members in a cluster
HealthyMembers(ctx context.Context) ([]*etcdserverpb.Member, error)
// HealthyVotingMembers lists all non learner healthy members in a cluster
HealthyVotingMembers(ctx context.Context) ([]*etcdserverpb.Member, error)
}
type UnhealthyMemberLister interface {
// UnhealthyMembers lists all unhealthy members in a cluster
UnhealthyMembers(ctx context.Context) ([]*etcdserverpb.Member, error)
// UnhealthyVotingMembers lists all non learner unhealthy members in a cluster
UnhealthyVotingMembers(ctx context.Context) ([]*etcdserverpb.Member, error)
}
type MemberStatusChecker interface {
MemberStatus(ctx context.Context, member *etcdserverpb.Member) string
}