-
Notifications
You must be signed in to change notification settings - Fork 0
/
health.go
67 lines (59 loc) · 1.74 KB
/
health.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
package v2
import (
"github.com/coreos/etcd/etcdserver/etcdserverpb"
)
// ClusterHealth holds cluster member status info.
type ClusterHealth struct {
// MemberID is the etcd cluster member's ID.
MemberID uint64
// Name is the cluster member's name.
Name string
// Err holds the string representation of any errors encountered while checking the member's health.
Err string
// Healthy describes the health of the cluster member.
Healthy bool
}
// HealthResponse contains cluster health and cluster alarms.
type HealthResponse struct {
// Alarms is the list of active etcd alarms.
Alarms []*etcdserverpb.AlarmMember
// ClusterHealth is the list of health status for every cluster member.
ClusterHealth []*ClusterHealth
// Header is the response header for the entire cluster response.
Header *etcdserverpb.ResponseHeader
}
// FixtureHealthResponse returns a HealthResponse fixture for testing.
func FixtureHealthResponse(healthy bool) *HealthResponse {
var err string
healthResponse := &HealthResponse{
Header: &etcdserverpb.ResponseHeader{
ClusterId: uint64(4255616304056076734),
},
}
clusterHealth := []*ClusterHealth{}
clusterHealth = append(clusterHealth, &ClusterHealth{
MemberID: uint64(12345),
Name: "backend0",
Err: "",
Healthy: true,
})
if healthy {
err = ""
} else {
err = "cluster error"
}
clusterHealth = append(clusterHealth, &ClusterHealth{
MemberID: uint64(12345),
Name: "backend1",
Err: err,
Healthy: false,
})
alarms := []*etcdserverpb.AlarmMember{}
alarms = append(alarms, &etcdserverpb.AlarmMember{
MemberID: uint64(56789),
Alarm: etcdserverpb.AlarmType_CORRUPT,
})
healthResponse.ClusterHealth = clusterHealth
healthResponse.Alarms = alarms
return healthResponse
}