From 821ffddeae728265041e2864af823a26533fe165 Mon Sep 17 00:00:00 2001 From: Mahdi Mohammadi Date: Fri, 10 Nov 2017 04:22:57 +0000 Subject: [PATCH] Add support for CronJob to kind_visitor --- pkg/kubectl/apps/kind_visitor.go | 6 +++++- pkg/kubectl/apps/kind_visitor_test.go | 12 ++++++++++++ pkg/kubectl/history.go | 1 + 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/pkg/kubectl/apps/kind_visitor.go b/pkg/kubectl/apps/kind_visitor.go index 69d1d76609..9c3ad07fe7 100644 --- a/pkg/kubectl/apps/kind_visitor.go +++ b/pkg/kubectl/apps/kind_visitor.go @@ -32,6 +32,7 @@ type KindVisitor interface { VisitReplicaSet(kind GroupKindElement) VisitReplicationController(kind GroupKindElement) VisitStatefulSet(kind GroupKindElement) + VisitCronJob(kind GroupKindElement) } // GroupKindElement defines a Kubernetes API group elem @@ -48,12 +49,14 @@ func (elem GroupKindElement) Accept(visitor KindVisitor) error { visitor.VisitJob(elem) case elem.GroupMatch("", "core") && elem.Kind == "Pod": visitor.VisitPod(elem) - case elem.GroupMatch("extensions") && elem.Kind == "ReplicaSet": + case elem.GroupMatch("apps", "extensions") && elem.Kind == "ReplicaSet": visitor.VisitReplicaSet(elem) case elem.GroupMatch("", "core") && elem.Kind == "ReplicationController": visitor.VisitReplicationController(elem) case elem.GroupMatch("apps") && elem.Kind == "StatefulSet": visitor.VisitStatefulSet(elem) + case elem.GroupMatch("batch") && elem.Kind == "CronJob": + visitor.VisitCronJob(elem) default: return fmt.Errorf("no visitor method exists for %v", elem) } @@ -83,3 +86,4 @@ func (*NoOpKindVisitor) VisitPod(kind GroupKindElement) {} func (*NoOpKindVisitor) VisitReplicaSet(kind GroupKindElement) {} func (*NoOpKindVisitor) VisitReplicationController(kind GroupKindElement) {} func (*NoOpKindVisitor) VisitStatefulSet(kind GroupKindElement) {} +func (*NoOpKindVisitor) VisitCronJob(kind GroupKindElement) {} diff --git a/pkg/kubectl/apps/kind_visitor_test.go b/pkg/kubectl/apps/kind_visitor_test.go index c5c2d1a631..10704b65e9 100644 --- a/pkg/kubectl/apps/kind_visitor_test.go +++ b/pkg/kubectl/apps/kind_visitor_test.go @@ -145,6 +145,17 @@ var _ = Describe("When KindVisitor accepts a GroupKind", func() { })) }) + It("should Visit CronJob iff the Kind is a CronJob", func() { + kind := apps.GroupKindElement{ + Kind: "CronJob", + Group: "batch", + } + Expect(kind.Accept(visitor)).ShouldNot(HaveOccurred()) + Expect(visitor.visits).To(Equal(map[string]int{ + "CronJob": 1, + })) + }) + It("should give an error if the Kind is unknown", func() { kind := apps.GroupKindElement{ Kind: "Unknown", @@ -171,3 +182,4 @@ func (t *TestKindVisitor) VisitPod(kind apps.GroupKindElement) func (t *TestKindVisitor) VisitReplicaSet(kind apps.GroupKindElement) { t.Visit(kind) } func (t *TestKindVisitor) VisitReplicationController(kind apps.GroupKindElement) { t.Visit(kind) } func (t *TestKindVisitor) VisitStatefulSet(kind apps.GroupKindElement) { t.Visit(kind) } +func (t *TestKindVisitor) VisitCronJob(kind apps.GroupKindElement) { t.Visit(kind) } diff --git a/pkg/kubectl/history.go b/pkg/kubectl/history.go index f59da50bed..36f95776d2 100644 --- a/pkg/kubectl/history.go +++ b/pkg/kubectl/history.go @@ -73,6 +73,7 @@ func (v *HistoryVisitor) VisitJob(kind kapps.GroupKindElement) func (v *HistoryVisitor) VisitPod(kind kapps.GroupKindElement) {} func (v *HistoryVisitor) VisitReplicaSet(kind kapps.GroupKindElement) {} func (v *HistoryVisitor) VisitReplicationController(kind kapps.GroupKindElement) {} +func (v *HistoryVisitor) VisitCronJob(kind kapps.GroupKindElement) {} // HistoryViewerFor returns an implementation of HistoryViewer interface for the given schema kind func HistoryViewerFor(kind schema.GroupKind, c kubernetes.Interface) (HistoryViewer, error) {