Skip to content

Commit 2865e9b

Browse files
authored
Merge pull request #1 from octu0/v1.0.1
v1.0.1
2 parents 369b04b + 8b022d4 commit 2865e9b

File tree

2 files changed

+31
-3
lines changed

2 files changed

+31
-3
lines changed

eds.go

+30-2
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,9 @@ const (
5959
type edsOptFunc func(*edsOpt)
6060

6161
type edsOpt struct {
62-
loadBalancingWeight uint32
62+
loadBalancingWeight uint32
63+
healthStatus corev3.HealthStatus
64+
setInitialHealthStatus bool
6365
}
6466

6567
func EdsLoadBalancingWeight(weight uint32) edsOptFunc {
@@ -68,6 +70,13 @@ func EdsLoadBalancingWeight(weight uint32) edsOptFunc {
6870
}
6971
}
7072

73+
func EdsLbEndpointHealthStatus(status corev3.HealthStatus) edsOptFunc {
74+
return func(opt *edsOpt) {
75+
opt.healthStatus = status
76+
opt.setInitialHealthStatus = true
77+
}
78+
}
79+
7180
func initEdsOpt(opt *edsOpt) {
7281
if opt.loadBalancingWeight < 1 {
7382
opt.loadBalancingWeight = defaultLoadBalancingWeight
@@ -110,13 +119,32 @@ func (e *endpointDiscoveryService) instanceEndpoint(instance EDSInstanceConfig)
110119
}
111120

112121
func (e *endpointDiscoveryService) lbEndpoints(instances []EDSInstanceConfig) []*endpointv3.LbEndpoint {
122+
if e.opt.setInitialHealthStatus {
123+
return e.lbEndpointsWithInitialStatus(instances, e.opt.healthStatus)
124+
}
125+
return e.lbEndpointsDefault(instances)
126+
}
127+
128+
func (e *endpointDiscoveryService) lbEndpointsWithInitialStatus(instances []EDSInstanceConfig, status corev3.HealthStatus) []*endpointv3.LbEndpoint {
129+
endpoints := make([]*endpointv3.LbEndpoint, len(instances))
130+
for idx, ins := range instances {
131+
endpoints[idx] = &endpointv3.LbEndpoint{
132+
HostIdentifier: &endpointv3.LbEndpoint_Endpoint{
133+
Endpoint: e.instanceEndpoint(ins),
134+
},
135+
HealthStatus: status,
136+
}
137+
}
138+
return endpoints
139+
}
140+
141+
func (e *endpointDiscoveryService) lbEndpointsDefault(instances []EDSInstanceConfig) []*endpointv3.LbEndpoint {
113142
endpoints := make([]*endpointv3.LbEndpoint, len(instances))
114143
for idx, ins := range instances {
115144
endpoints[idx] = &endpointv3.LbEndpoint{
116145
HostIdentifier: &endpointv3.LbEndpoint_Endpoint{
117146
Endpoint: e.instanceEndpoint(ins),
118147
},
119-
HealthStatus: corev3.HealthStatus_UNHEALTHY, // initial status = unhealthy
120148
}
121149
}
122150
return endpoints

version.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,6 @@ package xds
22

33
const (
44
AppName string = "example-envoy-xds"
5-
Version string = "1.0.0"
5+
Version string = "1.0.1"
66
UA string = AppName + "/" + Version
77
)

0 commit comments

Comments
 (0)