From 8eb72cf276d35755b99d3b59adb72454affcd65f Mon Sep 17 00:00:00 2001 From: Mike Lang Date: Wed, 7 Jun 2017 16:54:53 -0700 Subject: [PATCH] Remove deployment and daemonset views, change combined to controllers and remove bare pods and replica sets Since we still need to map through replica sets to find matching deployments, we simply filter them out as a post-step. --- app/api_topologies.go | 34 ++++---------------- render/detailed/summary.go | 5 ++- render/pod.go | 65 +++++++++++--------------------------- 3 files changed, 28 insertions(+), 76 deletions(-) diff --git a/app/api_topologies.go b/app/api_topologies.go index f7d4fb40c..e4c6eafaf 100644 --- a/app/api_topologies.go +++ b/app/api_topologies.go @@ -29,9 +29,7 @@ const ( containersByImageID = "containers-by-image" podsID = "pods" replicaSetsID = "replica-sets" - deploymentsID = "deployments" - daemonsetsID = "daemonsets" - kubeCombinedID = "kube-combined" + kubeControllersID = "kube-controllers" servicesID = "services" hostsID = "hosts" weaveID = "weave" @@ -121,7 +119,7 @@ func updateKubeFilters(rpt report.Report, topologies []APITopologyDesc) []APITop sort.Strings(ns) topologies = append([]APITopologyDesc{}, topologies...) // Make a copy so we can make changes safely for i, t := range topologies { - if t.id == containersID || t.id == podsID || t.id == servicesID || t.id == deploymentsID || t.id == replicaSetsID || t.id == daemonsetsID || t.id == kubeCombinedID { + if t.id == containersID || t.id == podsID || t.id == servicesID || t.id == replicaSetsID || t.id == kubeControllersID { topologies[i] = mergeTopologyFilters(t, []APITopologyOptionGroup{ namespaceFilters(ns, "All Namespaces"), }) @@ -197,7 +195,7 @@ func MakeRegistry() *Registry { }, } - k8sCombinedTypeFilter := APITopologyOptionGroup{ + k8sControllersTypeFilter := APITopologyOptionGroup{ ID: "grouptype", Default: "", SelectType: "union", @@ -205,8 +203,6 @@ func MakeRegistry() *Registry { Options: []APITopologyOption{ {Value: report.Deployment, Label: "Deployments", filter: render.IsTopology(report.Deployment), filterPseudo: false}, {Value: report.DaemonSet, Label: "Daemonsets", filter: render.IsTopology(report.DaemonSet), filterPseudo: false}, - {Value: report.ReplicaSet, Label: "Replica sets", filter: render.IsTopology(report.ReplicaSet), filterPseudo: false}, - {Value: report.Pod, Label: "Pods", filter: render.IsTopology(report.Pod), filterPseudo: false}, }, } @@ -267,27 +263,11 @@ func MakeRegistry() *Registry { HideIfEmpty: true, }, APITopologyDesc{ - id: deploymentsID, + id: kubeControllersID, parent: podsID, - renderer: render.DeploymentRenderer, - Name: "deployments", - Options: []APITopologyOptionGroup{unmanagedFilter}, - HideIfEmpty: true, - }, - APITopologyDesc{ - id: daemonsetsID, - parent: podsID, - renderer: render.DaemonSetRenderer, - Name: "daemonsets", - Options: []APITopologyOptionGroup{unmanagedFilter}, - HideIfEmpty: true, - }, - APITopologyDesc{ - id: kubeCombinedID, - parent: podsID, - renderer: render.KubeCombinedRenderer, - Name: "combined", - Options: []APITopologyOptionGroup{unmanagedFilter, k8sCombinedTypeFilter}, + renderer: render.KubeControllerRenderer, + Name: "controllers", + Options: []APITopologyOptionGroup{unmanagedFilter, k8sControllersTypeFilter}, HideIfEmpty: true, }, APITopologyDesc{ diff --git a/render/detailed/summary.go b/render/detailed/summary.go index 5ba4061e3..b3d058b15 100644 --- a/render/detailed/summary.go +++ b/render/detailed/summary.go @@ -90,8 +90,8 @@ var primaryAPITopology = map[string]string{ report.ContainerImage: "containers-by-image", report.Pod: "pods", report.ReplicaSet: "replica-sets", - report.Deployment: "deployments", - report.DaemonSet: "daemonsets", + report.Deployment: "kube-controllers", + report.DaemonSet: "kube-controllers", report.Service: "services", report.ECSTask: "ecs-tasks", report.ECSService: "ecs-services", @@ -260,7 +260,6 @@ func podNodeSummary(base NodeSummary, n report.Node) (NodeSummary, bool) { var podGroupNodeTypeName = map[string]string{ report.Deployment: "Deployment", report.DaemonSet: "Daemon Set", - report.ReplicaSet: "Replica Set", } func podGroupNodeSummary(base NodeSummary, n report.Node) (NodeSummary, bool) { diff --git a/render/pod.go b/render/pod.go index 3ebd143de..4652d40eb 100644 --- a/render/pod.go +++ b/render/pod.go @@ -78,21 +78,6 @@ var PodServiceRenderer = ConditionalRenderer(renderKubernetesTopologies, ), ) -// DeploymentRenderer is a Renderer which produces a renderable kubernetes deployments -// graph by merging the pods graph and the deployments topology. -var DeploymentRenderer = ConditionalRenderer(renderKubernetesTopologies, - MakeMap( - PropagateSingleMetrics(report.ReplicaSet), - MakeReduce( - MakeMap( - Map2Parent([]string{report.Deployment}, NoParentsDrop, "", mapPodCounts), - ReplicaSetRenderer, - ), - SelectDeployment, - ), - ), -) - // ReplicaSetRenderer is a Renderer which produces a renderable kubernetes replica sets // graph by merging the pods graph and the replica sets topology. var ReplicaSetRenderer = ConditionalRenderer(renderKubernetesTopologies, @@ -108,41 +93,29 @@ var ReplicaSetRenderer = ConditionalRenderer(renderKubernetesTopologies, ), ) -// DaemonSetRenderer is a Renderer which produces a renderable kubernetes daemonsets -// graph by merging the pods graph and the daemonsets topology. -var DaemonSetRenderer = ConditionalRenderer(renderKubernetesTopologies, - MakeMap( - PropagateSingleMetrics(report.Pod), - MakeReduce( - MakeMap( - Map2Parent([]string{report.DaemonSet}, NoParentsDrop, "", nil), - PodRenderer, - ), - SelectDaemonSet, - ), - ), -) - -// KubeCombinedRenderer is a Renderer which combines the 'top abstraction' of all pods. -// We first map pods to all possible things they can map to, then we map again to -// deployments since some things (replica sets) can map to those (the rest are passed through -// unchanged). +// KubeControllerRenderer is a Renderer which combines all the 'controller' topologies. +// We first map pods to daemonsets and replica sets, then to deployments since replica sets +// can map to those (the rest are passed through unchanged). +// Pods with no controller are mapped to 'Unmanaged' // We can't simply combine the rendered graphs of the high level objects as they would never // have connections to each other. -var KubeCombinedRenderer = ConditionalRenderer(renderKubernetesTopologies, +var KubeControllerRenderer = ConditionalRenderer(renderKubernetesTopologies, MakeReduce( - MakeMap( - Map2Parent([]string{report.Deployment}, NoParentsKeep, "", mapPodCounts), - MakeReduce( - MakeMap( - Map2Parent([]string{ - report.ReplicaSet, - report.DaemonSet, - }, NoParentsKeep, "", nil), - PodRenderer, + MakeFilter( + Complement(IsTopology(report.ReplicaSet)), + MakeMap( + Map2Parent([]string{report.Deployment}, NoParentsKeep, "", mapPodCounts), + MakeReduce( + MakeMap( + Map2Parent([]string{ + report.ReplicaSet, + report.DaemonSet, + }, NoParentsPseudo, UnmanagedID, nil), + PodRenderer, + ), + SelectReplicaSet, + SelectDaemonSet, ), - SelectReplicaSet, - SelectDaemonSet, ), ), SelectDeployment,