From 5fb4589bd9ab54041e5719a2aca3342d30c7c516 Mon Sep 17 00:00:00 2001 From: Charly Molter Date: Tue, 31 Oct 2023 10:57:15 +0100 Subject: [PATCH] fix(api-server): always remove empty array in inspect gw api Fix #8107 Signed-off-by: Charly Molter --- pkg/api-server/inspect_endpoints.go | 32 ++++++++++++++--------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/pkg/api-server/inspect_endpoints.go b/pkg/api-server/inspect_endpoints.go index c36867a638d8..c752f6e3f3e2 100644 --- a/pkg/api-server/inspect_endpoints.go +++ b/pkg/api-server/inspect_endpoints.go @@ -358,9 +358,16 @@ func newGatewayDataplaneInspectResponse( } for _, info := range gwListeners { - var hosts []api_server_types.HostInspectEntry + listener := api_server_types.GatewayListenerInspectEntry{ + Port: info.Listener.Port, + Protocol: info.Listener.Protocol.String(), + Hosts: []api_server_types.HostInspectEntry{}, + } for _, info := range info.HostInfos { - var routes []api_server_types.RouteInspectEntry + hostInspectEntry := api_server_types.HostInspectEntry{ + HostName: info.Host.Hostname, + Routes: []api_server_types.RouteInspectEntry{}, + } routeMap := map[string][]api_server_types.Destination{} for _, entry := range info.Entries { destinations := routeMap[entry.Route] @@ -378,28 +385,21 @@ func newGatewayDataplaneInspectResponse( sort.SliceStable(destinations, func(i, j int) bool { return destinations[i].Tags.String() < destinations[j].Tags.String() }) - routes = append(routes, api_server_types.RouteInspectEntry{ + hostInspectEntry.Routes = append(hostInspectEntry.Routes, api_server_types.RouteInspectEntry{ Route: name, Destinations: destinations, }) } } - sort.SliceStable(routes, func(i, j int) bool { - return routes[i].Route < routes[j].Route - }) - hosts = append(hosts, api_server_types.HostInspectEntry{ - HostName: info.Host.Hostname, - Routes: routes, + sort.SliceStable(hostInspectEntry.Routes, func(i, j int) bool { + return hostInspectEntry.Routes[i].Route < hostInspectEntry.Routes[j].Route }) + listener.Hosts = append(listener.Hosts, hostInspectEntry) } - sort.SliceStable(hosts, func(i, j int) bool { - return hosts[i].HostName < hosts[j].HostName - }) - result.Listeners = append(result.Listeners, api_server_types.GatewayListenerInspectEntry{ - Port: info.Listener.Port, - Protocol: info.Listener.Protocol.String(), - Hosts: hosts, + sort.SliceStable(listener.Hosts, func(i, j int) bool { + return listener.Hosts[i].HostName < listener.Hosts[j].HostName }) + result.Listeners = append(result.Listeners, listener) } gatewayPolicies := api_server_types.PolicyMap{}