Add support for CronJob to kind_visitor

pull/6/head
Mahdi Mohammadi 2017-11-10 04:22:57 +00:00
parent 338ee7f5d5
commit 821ffddeae
3 changed files with 18 additions and 1 deletions

View File

@ -32,6 +32,7 @@ type KindVisitor interface {
VisitReplicaSet(kind GroupKindElement) VisitReplicaSet(kind GroupKindElement)
VisitReplicationController(kind GroupKindElement) VisitReplicationController(kind GroupKindElement)
VisitStatefulSet(kind GroupKindElement) VisitStatefulSet(kind GroupKindElement)
VisitCronJob(kind GroupKindElement)
} }
// GroupKindElement defines a Kubernetes API group elem // GroupKindElement defines a Kubernetes API group elem
@ -48,12 +49,14 @@ func (elem GroupKindElement) Accept(visitor KindVisitor) error {
visitor.VisitJob(elem) visitor.VisitJob(elem)
case elem.GroupMatch("", "core") && elem.Kind == "Pod": case elem.GroupMatch("", "core") && elem.Kind == "Pod":
visitor.VisitPod(elem) visitor.VisitPod(elem)
case elem.GroupMatch("extensions") && elem.Kind == "ReplicaSet": case elem.GroupMatch("apps", "extensions") && elem.Kind == "ReplicaSet":
visitor.VisitReplicaSet(elem) visitor.VisitReplicaSet(elem)
case elem.GroupMatch("", "core") && elem.Kind == "ReplicationController": case elem.GroupMatch("", "core") && elem.Kind == "ReplicationController":
visitor.VisitReplicationController(elem) visitor.VisitReplicationController(elem)
case elem.GroupMatch("apps") && elem.Kind == "StatefulSet": case elem.GroupMatch("apps") && elem.Kind == "StatefulSet":
visitor.VisitStatefulSet(elem) visitor.VisitStatefulSet(elem)
case elem.GroupMatch("batch") && elem.Kind == "CronJob":
visitor.VisitCronJob(elem)
default: default:
return fmt.Errorf("no visitor method exists for %v", elem) 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) VisitReplicaSet(kind GroupKindElement) {}
func (*NoOpKindVisitor) VisitReplicationController(kind GroupKindElement) {} func (*NoOpKindVisitor) VisitReplicationController(kind GroupKindElement) {}
func (*NoOpKindVisitor) VisitStatefulSet(kind GroupKindElement) {} func (*NoOpKindVisitor) VisitStatefulSet(kind GroupKindElement) {}
func (*NoOpKindVisitor) VisitCronJob(kind GroupKindElement) {}

View File

@ -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() { It("should give an error if the Kind is unknown", func() {
kind := apps.GroupKindElement{ kind := apps.GroupKindElement{
Kind: "Unknown", 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) VisitReplicaSet(kind apps.GroupKindElement) { t.Visit(kind) }
func (t *TestKindVisitor) VisitReplicationController(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) VisitStatefulSet(kind apps.GroupKindElement) { t.Visit(kind) }
func (t *TestKindVisitor) VisitCronJob(kind apps.GroupKindElement) { t.Visit(kind) }

View File

@ -73,6 +73,7 @@ func (v *HistoryVisitor) VisitJob(kind kapps.GroupKindElement)
func (v *HistoryVisitor) VisitPod(kind kapps.GroupKindElement) {} func (v *HistoryVisitor) VisitPod(kind kapps.GroupKindElement) {}
func (v *HistoryVisitor) VisitReplicaSet(kind kapps.GroupKindElement) {} func (v *HistoryVisitor) VisitReplicaSet(kind kapps.GroupKindElement) {}
func (v *HistoryVisitor) VisitReplicationController(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 // HistoryViewerFor returns an implementation of HistoryViewer interface for the given schema kind
func HistoryViewerFor(kind schema.GroupKind, c kubernetes.Interface) (HistoryViewer, error) { func HistoryViewerFor(kind schema.GroupKind, c kubernetes.Interface) (HistoryViewer, error) {