From 23156304afa172d412523888dd409d1941ea8c99 Mon Sep 17 00:00:00 2001 From: Tom Wilkie Date: Thu, 5 May 2016 18:34:07 +0100 Subject: [PATCH] Filter out docker containers for pods in the kube-system namespace --- render/filters.go | 6 +++--- render/pod_test.go | 20 +++++++++----------- 2 files changed, 12 insertions(+), 14 deletions(-) diff --git a/render/filters.go b/render/filters.go index 0d075ce32..41b6299b8 100644 --- a/render/filters.go +++ b/render/filters.go @@ -228,7 +228,7 @@ func IsApplication(n report.Node) bool { if roleLabel == "system" { return false } - namespace, _ := n.Latest.Lookup(kubernetes.Namespace) + namespace, _ := n.Latest.Lookup(docker.LabelPrefix + "io.kubernetes.pod.namespace") if namespace == "kube-system" { return false } @@ -278,8 +278,8 @@ func HasChildren(topology string) FilterFunc { // IsNamespace checks if the node is a pod/service in the specified namespace func IsNamespace(namespace string) FilterFunc { return func(n report.Node) bool { - gotNamespace, ok := n.Latest.Lookup(kubernetes.Namespace) - return !ok || namespace == gotNamespace + gotNamespace, _ := n.Latest.Lookup(kubernetes.Namespace) + return namespace == gotNamespace } } diff --git a/render/pod_test.go b/render/pod_test.go index f091f8c22..396d1b15a 100644 --- a/render/pod_test.go +++ b/render/pod_test.go @@ -3,7 +3,6 @@ package render_test import ( "testing" - "github.com/weaveworks/scope/probe/docker" "github.com/weaveworks/scope/probe/kubernetes" "github.com/weaveworks/scope/render" "github.com/weaveworks/scope/render/expected" @@ -20,22 +19,20 @@ func TestPodRenderer(t *testing.T) { } } +func filterNonKubeSystem(renderer render.Renderer) render.Renderer { + return render.MakeFilter(render.Complement(render.IsNamespace("kube-system")), renderer) +} + func TestPodFilterRenderer(t *testing.T) { // tag on containers or pod namespace in the topology and ensure // it is filtered out correctly. input := fixture.Report.Copy() input.Pod.Nodes[fixture.ClientPodNodeID] = input.Pod.Nodes[fixture.ClientPodNodeID].WithLatests(map[string]string{ - kubernetes.PodID: "kube-system/foo", kubernetes.Namespace: "kube-system", - kubernetes.PodName: "foo", }) - input.Container.Nodes[fixture.ClientContainerNodeID] = input.Container.Nodes[fixture.ClientContainerNodeID].WithLatests(map[string]string{ - docker.LabelPrefix + "io.kubernetes.pod.name": "kube-system/foo", - }) - have := Prune(render.PodRenderer.Render(input, render.FilterApplication)) + have := Prune(render.PodRenderer.Render(input, filterNonKubeSystem)) want := Prune(expected.RenderedPods.Copy()) delete(want, fixture.ClientPodNodeID) - delete(want, fixture.ClientContainerNodeID) if !reflect.DeepEqual(want, have) { t.Error(test.Diff(want, have)) } @@ -53,12 +50,13 @@ func TestPodServiceFilterRenderer(t *testing.T) { // tag on containers or pod namespace in the topology and ensure // it is filtered out correctly. input := fixture.Report.Copy() - have := Prune(render.PodServiceRenderer.Render(input, render.FilterSystem)) + input.Service.Nodes[fixture.ServiceNodeID] = input.Service.Nodes[fixture.ServiceNodeID].WithLatests(map[string]string{ + kubernetes.Namespace: "kube-system", + }) + have := Prune(render.PodServiceRenderer.Render(input, filterNonKubeSystem)) want := Prune(expected.RenderedPodServices.Copy()) delete(want, fixture.ServiceNodeID) - delete(want, expected.UnmanagedServerID) delete(want, render.IncomingInternetID) - delete(want, render.OutgoingInternetID) if !reflect.DeepEqual(want, have) { t.Error(test.Diff(want, have)) }