diff --git a/app/api_topologies.go b/app/api_topologies.go index 6930aeaf4..8c51f21e3 100644 --- a/app/api_topologies.go +++ b/app/api_topologies.go @@ -18,28 +18,6 @@ var ( topologyRegistry = ®istry{ items: map[string]APITopologyDesc{}, } - kubernetesTopologies = []APITopologyDesc{ - { - id: "pods", - renderer: render.PodRenderer, - Name: "Pods", - Rank: 3, - Options: map[string][]APITopologyOption{"system": { - {"show", "System pods shown", false, render.FilterNoop}, - {"hide", "System pods hidden", true, render.FilterSystem}, - }}, - }, - { - id: "pods-by-service", - parent: "pods", - renderer: render.PodServiceRenderer, - Name: "by service", - Options: map[string][]APITopologyOption{"system": { - {"show", "System services shown", false, render.FilterNoop}, - {"hide", "System services hidden", true, render.FilterSystem}, - }}, - }, - } ) func init() { @@ -106,6 +84,28 @@ func init() { Rank: 4, Options: map[string][]APITopologyOption{}, }, + APITopologyDesc{ + id: "pods", + renderer: render.PodRenderer, + Name: "Pods", + Rank: 3, + HideIfEmpty: true, + Options: map[string][]APITopologyOption{"system": { + {"show", "System pods shown", false, render.FilterNoop}, + {"hide", "System pods hidden", true, render.FilterSystem}, + }}, + }, + APITopologyDesc{ + id: "pods-by-service", + parent: "pods", + renderer: render.PodServiceRenderer, + Name: "by service", + HideIfEmpty: true, + Options: map[string][]APITopologyOption{"system": { + {"show", "System services shown", false, render.FilterNoop}, + {"hide", "System services hidden", true, render.FilterSystem}, + }}, + }, ) } @@ -121,9 +121,10 @@ type APITopologyDesc struct { parent string renderer render.Renderer - Name string `json:"name"` - Rank int `json:"rank"` - Options map[string][]APITopologyOption `json:"options"` + Name string `json:"name"` + Rank int `json:"rank"` + HideIfEmpty bool `json:"hide_if_empty"` + Options map[string][]APITopologyOption `json:"options"` URL string `json:"url"` SubTopologies []APITopologyDesc `json:"sub_topologies,omitempty"` @@ -241,10 +242,6 @@ func decorateWithStats(rpt report.Report, renderer render.Renderer) topologyStat } } -func (r *registry) enableKubernetesTopologies() { - r.add(kubernetesTopologies...) -} - func renderedForRequest(r *http.Request, topology APITopologyDesc) render.Renderer { renderer := topology.renderer for param, opts := range topology.Options { diff --git a/app/api_topologies_test.go b/app/api_topologies_test.go index 9579ccbe2..968525202 100644 --- a/app/api_topologies_test.go +++ b/app/api_topologies_test.go @@ -27,7 +27,7 @@ func TestAPITopology(t *testing.T) { if err := decoder.Decode(&topologies); err != nil { t.Fatalf("JSON parse error: %s", err) } - equals(t, 3, len(topologies)) + equals(t, 4, len(topologies)) for _, topology := range topologies { is200(t, ts, topology.URL) @@ -65,7 +65,7 @@ func TestAPITopologyAddsKubernetes(t *testing.T) { if err := decoder.Decode(&topologies); err != nil { t.Fatalf("JSON parse error: %s", err) } - equals(t, 3, len(topologies)) + equals(t, 4, len(topologies)) // Enable the kubernetes topologies rpt := report.MakeReport() diff --git a/app/router.go b/app/router.go index 7964861f6..08aba0ba5 100644 --- a/app/router.go +++ b/app/router.go @@ -157,9 +157,6 @@ func RegisterReportPostHandler(a Adder, router *mux.Router) { return } a.Add(ctx, rpt) - if len(rpt.Pod.Nodes) > 0 { - topologyRegistry.enableKubernetesTopologies() - } w.WriteHeader(http.StatusOK) })) }