Skip to content

Commit

Permalink
add lb algorithm to endpoint JSON representation (#447)
Browse files Browse the repository at this point in the history
Shows the lb algorithm of each endpoint in Gorouters /routes page.
This simplifies debugging of related issues.
The option to set route-specific load balancing algorithms was
introduced in #428.
  • Loading branch information
a18e authored Oct 22, 2024
1 parent 5174c18 commit 9ca6acc
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 11 deletions.
22 changes: 12 additions & 10 deletions route/pool.go
Original file line number Diff line number Diff line change
Expand Up @@ -514,16 +514,17 @@ func (e *endpointElem) isOverloaded() bool {

func (e *Endpoint) MarshalJSON() ([]byte, error) {
var jsonObj struct {
Address string `json:"address"`
AvailabilityZone string `json:"availability_zone"`
Protocol string `json:"protocol"`
TLS bool `json:"tls"`
TTL int `json:"ttl"`
RouteServiceUrl string `json:"route_service_url,omitempty"`
Tags map[string]string `json:"tags"`
IsolationSegment string `json:"isolation_segment,omitempty"`
PrivateInstanceId string `json:"private_instance_id,omitempty"`
ServerCertDomainSAN string `json:"server_cert_domain_san,omitempty"`
Address string `json:"address"`
AvailabilityZone string `json:"availability_zone"`
Protocol string `json:"protocol"`
TLS bool `json:"tls"`
TTL int `json:"ttl"`
RouteServiceUrl string `json:"route_service_url,omitempty"`
Tags map[string]string `json:"tags"`
IsolationSegment string `json:"isolation_segment,omitempty"`
PrivateInstanceId string `json:"private_instance_id,omitempty"`
ServerCertDomainSAN string `json:"server_cert_domain_san,omitempty"`
LoadBalancingAlgorithm string `json:"load_balancing_algorithm,omitempty"`
}

jsonObj.Address = e.addr
Expand All @@ -536,6 +537,7 @@ func (e *Endpoint) MarshalJSON() ([]byte, error) {
jsonObj.IsolationSegment = e.IsolationSegment
jsonObj.PrivateInstanceId = e.PrivateInstanceId
jsonObj.ServerCertDomainSAN = e.ServerCertDomainSAN
jsonObj.LoadBalancingAlgorithm = e.LoadBalancingAlgorithm
return json.Marshal(jsonObj)
}

Expand Down
3 changes: 2 additions & 1 deletion route/pool_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -821,6 +821,7 @@ var _ = Describe("EndpointPool", func() {
ServerCertDomainSAN: "pvt_test_san",
PrivateInstanceId: "pvt_test_instance_id",
UseTLS: true,
LoadBalancingAlgorithm: "lb-meow",
})

pool.Put(e)
Expand All @@ -829,7 +830,7 @@ var _ = Describe("EndpointPool", func() {
json, err := pool.MarshalJSON()
Expect(err).ToNot(HaveOccurred())

Expect(string(json)).To(Equal(`[{"address":"1.2.3.4:5678","availability_zone":"az-meow","protocol":"http1","tls":false,"ttl":-1,"route_service_url":"https://my-rs.com","tags":null},{"address":"5.6.7.8:5678","availability_zone":"","protocol":"http2","tls":true,"ttl":-1,"tags":null,"private_instance_id":"pvt_test_instance_id","server_cert_domain_san":"pvt_test_san"}]`))
Expect(string(json)).To(Equal(`[{"address":"1.2.3.4:5678","availability_zone":"az-meow","protocol":"http1","tls":false,"ttl":-1,"route_service_url":"https://my-rs.com","tags":null},{"address":"5.6.7.8:5678","availability_zone":"","protocol":"http2","tls":true,"ttl":-1,"tags":null,"private_instance_id":"pvt_test_instance_id","server_cert_domain_san":"pvt_test_san","load_balancing_algorithm":"lb-meow"}]`))
})

Context("when endpoints do not have empty tags", func() {
Expand Down

0 comments on commit 9ca6acc

Please sign in to comment.