diff --git a/render/detailed/node.go b/render/detailed/node.go index fb24f09e8..5164bc5b8 100644 --- a/render/detailed/node.go +++ b/render/detailed/node.go @@ -8,7 +8,6 @@ import ( "github.com/weaveworks/scope/probe/awsecs" "github.com/weaveworks/scope/probe/docker" - "github.com/weaveworks/scope/probe/host" "github.com/weaveworks/scope/probe/kubernetes" "github.com/weaveworks/scope/probe/process" "github.com/weaveworks/scope/report" @@ -126,103 +125,73 @@ func controls(r report.Report, n report.Node) []ControlInstance { return []ControlInstance{} } -var ( - nodeSummaryGroupSpecs = []struct { - topologyID string - NodeSummaryGroup - }{ - { - topologyID: report.Host, - NodeSummaryGroup: NodeSummaryGroup{ - Label: "Hosts", - Columns: []Column{ - {ID: host.CPUUsage, Label: "CPU", Datatype: "number"}, - {ID: host.MemoryUsage, Label: "Memory", Datatype: "number"}, - }, +// We only need to include topologies here where the nodes may appear +// as children of other nodes in some topology. +var nodeSummaryGroupSpecs = []struct { + topologyID string + NodeSummaryGroup +}{ + { + topologyID: report.ReplicaSet, + NodeSummaryGroup: NodeSummaryGroup{ + Label: "Replica Sets", + Columns: []Column{ + {ID: report.Pod, Label: "# Pods", Datatype: "number"}, + {ID: kubernetes.ObservedGeneration, Label: "Observed Gen.", Datatype: "number"}, }, }, - { - topologyID: report.Service, - NodeSummaryGroup: NodeSummaryGroup{ - Label: "Services", - Columns: []Column{ - {ID: report.Pod, Label: "# Pods", Datatype: "number"}, - {ID: kubernetes.IP, Label: "IP", Datatype: "ip"}, - }, - }, - }, - { - topologyID: report.ReplicaSet, - NodeSummaryGroup: NodeSummaryGroup{ - Label: "Replica Sets", - Columns: []Column{ - {ID: report.Pod, Label: "# Pods", Datatype: "number"}, - {ID: kubernetes.ObservedGeneration, Label: "Observed Gen.", Datatype: "number"}, - }, - }, - }, - { - topologyID: report.Pod, - NodeSummaryGroup: NodeSummaryGroup{ - Label: "Pods", + }, + { + topologyID: report.Pod, + NodeSummaryGroup: NodeSummaryGroup{ + Label: "Pods", - Columns: []Column{ - {ID: kubernetes.State, Label: "State"}, - {ID: report.Container, Label: "# Containers", Datatype: "number"}, - {ID: kubernetes.IP, Label: "IP", Datatype: "ip"}, - }, + Columns: []Column{ + {ID: kubernetes.State, Label: "State"}, + {ID: report.Container, Label: "# Containers", Datatype: "number"}, + {ID: kubernetes.IP, Label: "IP", Datatype: "ip"}, }, }, - { - topologyID: report.ECSService, - NodeSummaryGroup: NodeSummaryGroup{ - Label: "Services", - Columns: []Column{ - {ID: awsecs.ServiceRunningCount, Label: "Running", Datatype: "number"}, - {ID: awsecs.ServiceDesiredCount, Label: "Desired", Datatype: "number"}, - }, + }, + { + topologyID: report.ECSTask, + NodeSummaryGroup: NodeSummaryGroup{ + Label: "Tasks", + Columns: []Column{ + {ID: awsecs.CreatedAt, Label: "Created At", Datatype: "datetime"}, }, }, - { - topologyID: report.ECSTask, - NodeSummaryGroup: NodeSummaryGroup{ - Label: "Tasks", - Columns: []Column{ - {ID: awsecs.CreatedAt, Label: "Created At", Datatype: "datetime"}, - }, + }, + { + topologyID: report.Container, + NodeSummaryGroup: NodeSummaryGroup{ + Label: "Containers", Columns: []Column{ + {ID: docker.CPUTotalUsage, Label: "CPU", Datatype: "number"}, + {ID: docker.MemoryUsage, Label: "Memory", Datatype: "number"}, }, }, - { - topologyID: report.Container, - NodeSummaryGroup: NodeSummaryGroup{ - Label: "Containers", Columns: []Column{ - {ID: docker.CPUTotalUsage, Label: "CPU", Datatype: "number"}, - {ID: docker.MemoryUsage, Label: "Memory", Datatype: "number"}, - }, + }, + { + topologyID: report.Process, + NodeSummaryGroup: NodeSummaryGroup{ + 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"}, }, }, - { - topologyID: report.Process, - NodeSummaryGroup: NodeSummaryGroup{ - 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"}, - }, + }, + { + topologyID: report.ContainerImage, + NodeSummaryGroup: NodeSummaryGroup{ + TopologyID: "containers-by-image", + Label: "Container Images", + Columns: []Column{ + {ID: report.Container, Label: "# Containers", DefaultSort: true, Datatype: "number"}, }, }, - { - topologyID: report.ContainerImage, - NodeSummaryGroup: NodeSummaryGroup{ - TopologyID: "containers-by-image", - Label: "Container Images", - Columns: []Column{ - {ID: report.Container, Label: "# Containers", DefaultSort: true, Datatype: "number"}, - }, - }, - }, - } -) + }, +} func children(r report.Report, n report.Node) []NodeSummaryGroup { summaries := map[string][]NodeSummary{}