Skip to content

Commit

Permalink
Merge pull request #1 from octu0/v1.0.1
Browse files Browse the repository at this point in the history
v1.0.1
  • Loading branch information
octu0 authored Feb 1, 2021
2 parents 369b04b + 8b022d4 commit 2865e9b
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 3 deletions.
32 changes: 30 additions & 2 deletions eds.go
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,9 @@ const (
type edsOptFunc func(*edsOpt)

type edsOpt struct {
loadBalancingWeight uint32
loadBalancingWeight uint32
healthStatus corev3.HealthStatus
setInitialHealthStatus bool
}

func EdsLoadBalancingWeight(weight uint32) edsOptFunc {
Expand All @@ -68,6 +70,13 @@ func EdsLoadBalancingWeight(weight uint32) edsOptFunc {
}
}

func EdsLbEndpointHealthStatus(status corev3.HealthStatus) edsOptFunc {
return func(opt *edsOpt) {
opt.healthStatus = status
opt.setInitialHealthStatus = true
}
}

func initEdsOpt(opt *edsOpt) {
if opt.loadBalancingWeight < 1 {
opt.loadBalancingWeight = defaultLoadBalancingWeight
Expand Down Expand Up @@ -110,13 +119,32 @@ func (e *endpointDiscoveryService) instanceEndpoint(instance EDSInstanceConfig)
}

func (e *endpointDiscoveryService) lbEndpoints(instances []EDSInstanceConfig) []*endpointv3.LbEndpoint {
if e.opt.setInitialHealthStatus {
return e.lbEndpointsWithInitialStatus(instances, e.opt.healthStatus)
}
return e.lbEndpointsDefault(instances)
}

func (e *endpointDiscoveryService) lbEndpointsWithInitialStatus(instances []EDSInstanceConfig, status corev3.HealthStatus) []*endpointv3.LbEndpoint {
endpoints := make([]*endpointv3.LbEndpoint, len(instances))
for idx, ins := range instances {
endpoints[idx] = &endpointv3.LbEndpoint{
HostIdentifier: &endpointv3.LbEndpoint_Endpoint{
Endpoint: e.instanceEndpoint(ins),
},
HealthStatus: status,
}
}
return endpoints
}

func (e *endpointDiscoveryService) lbEndpointsDefault(instances []EDSInstanceConfig) []*endpointv3.LbEndpoint {
endpoints := make([]*endpointv3.LbEndpoint, len(instances))
for idx, ins := range instances {
endpoints[idx] = &endpointv3.LbEndpoint{
HostIdentifier: &endpointv3.LbEndpoint_Endpoint{
Endpoint: e.instanceEndpoint(ins),
},
HealthStatus: corev3.HealthStatus_UNHEALTHY, // initial status = unhealthy
}
}
return endpoints
Expand Down
2 changes: 1 addition & 1 deletion version.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,6 @@ package xds

const (
AppName string = "example-envoy-xds"
Version string = "1.0.0"
Version string = "1.0.1"
UA string = AppName + "/" + Version
)

0 comments on commit 2865e9b

Please sign in to comment.