From 9f0f120bc5d0effa4878819629b5d73c9c7f2a9b Mon Sep 17 00:00:00 2001 From: Mike Lang Date: Mon, 10 Apr 2017 15:06:38 -0700 Subject: [PATCH] Remove explicit listing of api topologies in render/detailed/node specs Instead, we can infer them from the render topology and the primaryAPITopology map --- render/detailed/node.go | 48 ++++++++++++++++++-------------------- render/detailed/summary.go | 1 + 2 files changed, 24 insertions(+), 25 deletions(-) diff --git a/render/detailed/node.go b/render/detailed/node.go index cd637c688..fb24f09e8 100644 --- a/render/detailed/node.go +++ b/render/detailed/node.go @@ -134,8 +134,7 @@ var ( { topologyID: report.Host, NodeSummaryGroup: NodeSummaryGroup{ - TopologyID: "hosts", - Label: "Hosts", + Label: "Hosts", Columns: []Column{ {ID: host.CPUUsage, Label: "CPU", Datatype: "number"}, {ID: host.MemoryUsage, Label: "Memory", Datatype: "number"}, @@ -145,8 +144,7 @@ var ( { topologyID: report.Service, NodeSummaryGroup: NodeSummaryGroup{ - TopologyID: "services", - Label: "Services", + Label: "Services", Columns: []Column{ {ID: report.Pod, Label: "# Pods", Datatype: "number"}, {ID: kubernetes.IP, Label: "IP", Datatype: "ip"}, @@ -156,8 +154,7 @@ var ( { topologyID: report.ReplicaSet, NodeSummaryGroup: NodeSummaryGroup{ - TopologyID: "replica-sets", - Label: "Replica Sets", + Label: "Replica Sets", Columns: []Column{ {ID: report.Pod, Label: "# Pods", Datatype: "number"}, {ID: kubernetes.ObservedGeneration, Label: "Observed Gen.", Datatype: "number"}, @@ -167,8 +164,7 @@ var ( { topologyID: report.Pod, NodeSummaryGroup: NodeSummaryGroup{ - TopologyID: "pods", - Label: "Pods", + Label: "Pods", Columns: []Column{ {ID: kubernetes.State, Label: "State"}, @@ -180,8 +176,7 @@ var ( { topologyID: report.ECSService, NodeSummaryGroup: NodeSummaryGroup{ - TopologyID: "ecs-services", - Label: "Services", + Label: "Services", Columns: []Column{ {ID: awsecs.ServiceRunningCount, Label: "Running", Datatype: "number"}, {ID: awsecs.ServiceDesiredCount, Label: "Desired", Datatype: "number"}, @@ -191,8 +186,7 @@ var ( { topologyID: report.ECSTask, NodeSummaryGroup: NodeSummaryGroup{ - TopologyID: "ecs-tasks", - Label: "Tasks", + Label: "Tasks", Columns: []Column{ {ID: awsecs.CreatedAt, Label: "Created At", Datatype: "datetime"}, }, @@ -201,8 +195,7 @@ var ( { topologyID: report.Container, NodeSummaryGroup: NodeSummaryGroup{ - TopologyID: "containers", - Label: "Containers", Columns: []Column{ + Label: "Containers", Columns: []Column{ {ID: docker.CPUTotalUsage, Label: "CPU", Datatype: "number"}, {ID: docker.MemoryUsage, Label: "Memory", Datatype: "number"}, }, @@ -211,8 +204,7 @@ var ( { topologyID: report.Process, NodeSummaryGroup: NodeSummaryGroup{ - TopologyID: "processes", - Label: "Processes", Columns: []Column{ + Label: "Processes", Columns: []Column{ {ID: process.PID, Label: "PID", Datatype: "number"}, {ID: process.CPUUsage, Label: "CPU", Datatype: "number"}, {ID: process.MemoryUsage, Label: "Memory", Datatype: "number"}, @@ -248,13 +240,19 @@ func children(r report.Report, n report.Node) []NodeSummaryGroup { nodeSummaryGroups := []NodeSummaryGroup{} // Apply specific group specs in the order they're listed for _, spec := range nodeSummaryGroupSpecs { - if len(summaries[spec.topologyID]) > 0 { - sort.Sort(nodeSummariesByID(summaries[spec.TopologyID])) - group := spec.NodeSummaryGroup - group.Nodes = summaries[spec.topologyID] - nodeSummaryGroups = append(nodeSummaryGroups, group) - delete(summaries, spec.topologyID) + if len(summaries[spec.topologyID]) == 0 { + continue } + apiTopology, ok := primaryAPITopology[spec.topologyID] + if !ok { + continue + } + sort.Sort(nodeSummariesByID(summaries[spec.topologyID])) + group := spec.NodeSummaryGroup + group.Nodes = summaries[spec.topologyID] + group.TopologyID = apiTopology + nodeSummaryGroups = append(nodeSummaryGroups, group) + delete(summaries, spec.topologyID) } // As a fallback, in case a topology has no group spec defined, add any remaining at the end for topologyID, nodeSummaries := range summaries { @@ -271,9 +269,9 @@ func children(r report.Report, n report.Node) []NodeSummaryGroup { } sort.Sort(nodeSummariesByID(nodeSummaries)) group := NodeSummaryGroup{ - ID: apiTopology, - Label: topology.LabelPlural, - Columns: []Column{}, + TopologyID: apiTopology, + Label: topology.LabelPlural, + Columns: []Column{}, } nodeSummaryGroups = append(nodeSummaryGroups, group) } diff --git a/render/detailed/summary.go b/render/detailed/summary.go index 6cde8d49a..cd7f457b1 100644 --- a/render/detailed/summary.go +++ b/render/detailed/summary.go @@ -84,6 +84,7 @@ var templates = map[string]struct{ Label, LabelMinor string }{ // For each report.Topology, map to a 'primary' API topology. This can then be used in a variety of places. var primaryAPITopology = map[string]string{ + report.Process: "processes", report.Container: "containers", report.ContainerImage: "containers-by-image", report.Pod: "pods",