Skip to content

Commit e709a88

Browse files
Add Label Selector to available parameters (#71)
* Add label-selector flag * Add labelSelector to job and pod filter * Update README.md
1 parent 1e14822 commit e709a88

File tree

3 files changed

+16
-0
lines changed

3 files changed

+16
-0
lines changed

README.md

+2
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,8 @@ Usage of ./bin/kube-cleanup-operator:
136136
Limit scope to a single namespace
137137
-run-outside-cluster
138138
Set this flag when running outside of the cluster.
139+
-label-selector
140+
Delete only jobs and pods that meet label selector requirements. #See https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/
139141
```
140142

141143
### Optional parameters

cmd/main.go

+6
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,9 @@ func main() {
5858
legacyMode := flag.Bool("legacy-mode", true, "Legacy mode: `true` - use old `keep-*` flags, `false` - enable new `delete-*-after` flags")
5959

6060
dryRun := flag.Bool("dry-run", false, "Print only, do not delete anything.")
61+
62+
labelSelector := flag.String("label-selector", "", "Delete only jobs and pods that meet label selector requirements")
63+
6164
flag.Parse()
6265
setupLogging()
6366

@@ -77,6 +80,8 @@ func main() {
7780
optsInfo.WriteString(fmt.Sprintf("\tkeep-successful: %d\n", *legacyKeepSuccessHours))
7881
optsInfo.WriteString(fmt.Sprintf("\tkeep-failures: %d\n", *legacyKeepFailedHours))
7982
optsInfo.WriteString(fmt.Sprintf("\tkeep-pending: %d\n", *legacyKeepPendingHours))
83+
84+
optsInfo.WriteString(fmt.Sprintf("\tlabel-selector: %s\n", *labelSelector))
8085
log.Println(optsInfo.String())
8186

8287
if *legacyMode {
@@ -129,6 +134,7 @@ func main() {
129134
*deleteOrphanedAfter,
130135
*deleteEvictedAfter,
131136
*ignoreOwnedByCronjob,
137+
*labelSelector,
132138
stopCh,
133139
).Run()
134140
}

pkg/controller/controller.go

+8
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,8 @@ type Kleaner struct {
5151
deleteEvictedAfter time.Duration
5252

5353
ignoreOwnedByCronjob bool
54+
55+
labelSelector string
5456

5557
dryRun bool
5658
ctx context.Context
@@ -60,13 +62,16 @@ type Kleaner struct {
6062
// NewKleaner creates a new NewKleaner
6163
func NewKleaner(ctx context.Context, kclient *kubernetes.Clientset, namespace string, dryRun bool, deleteSuccessfulAfter,
6264
deleteFailedAfter, deletePendingAfter, deleteOrphanedAfter, deleteEvictedAfter time.Duration, ignoreOwnedByCronjob bool,
65+
labelSelector string,
6366
stopCh <-chan struct{}) *Kleaner {
6467
jobInformer := cache.NewSharedIndexInformer(
6568
&cache.ListWatch{
6669
ListFunc: func(options metav1.ListOptions) (runtime.Object, error) {
70+
options.LabelSelector = labelSelector
6771
return kclient.BatchV1().Jobs(namespace).List(ctx, options)
6872
},
6973
WatchFunc: func(options metav1.ListOptions) (watch.Interface, error) {
74+
options.LabelSelector = labelSelector
7075
return kclient.BatchV1().Jobs(namespace).Watch(ctx, options)
7176
},
7277
},
@@ -78,9 +83,11 @@ func NewKleaner(ctx context.Context, kclient *kubernetes.Clientset, namespace st
7883
podInformer := cache.NewSharedIndexInformer(
7984
&cache.ListWatch{
8085
ListFunc: func(options metav1.ListOptions) (runtime.Object, error) {
86+
options.LabelSelector = labelSelector
8187
return kclient.CoreV1().Pods(namespace).List(ctx, options)
8288
},
8389
WatchFunc: func(options metav1.ListOptions) (watch.Interface, error) {
90+
options.LabelSelector = labelSelector
8491
return kclient.CoreV1().Pods(namespace).Watch(ctx, options)
8592
},
8693
},
@@ -99,6 +106,7 @@ func NewKleaner(ctx context.Context, kclient *kubernetes.Clientset, namespace st
99106
deleteOrphanedAfter: deleteOrphanedAfter,
100107
deleteEvictedAfter: deleteEvictedAfter,
101108
ignoreOwnedByCronjob: ignoreOwnedByCronjob,
109+
labelSelector: labelSelector,
102110
}
103111
jobInformer.AddEventHandler(cache.ResourceEventHandlerFuncs{
104112
UpdateFunc: func(old, new interface{}) {

0 commit comments

Comments
 (0)