Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package kor for openSUSE:Factory checked in 
at 2024-07-04 16:24:55
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/kor (Old)
 and      /work/SRC/openSUSE:Factory/.kor.new.2080 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "kor"

Thu Jul  4 16:24:55 2024 rev:20 rq:1185195 version:0.5.2

Changes:
--------
--- /work/SRC/openSUSE:Factory/kor/kor.changes  2024-06-19 16:39:41.628030821 
+0200
+++ /work/SRC/openSUSE:Factory/.kor.new.2080/kor.changes        2024-07-04 
16:26:13.521976921 +0200
@@ -1,0 +2,12 @@
+Wed Jul 03 16:36:27 UTC 2024 - opensuse_buildserv...@ojkastl.de
+
+- Update to version 0.5.2:
+  * Fix: Add filters to replicasets (#324)
+  * fix(multi): Support grouping by resource in multi resource mode
+    (#320)
+  * fix(delete): Refactor input handling & output display on
+    resource deletion  (#323)
+  * feat: add CI step to package and publish Helm chart (#306)
+  * update readme to show unused reason (#317)
+
+-------------------------------------------------------------------

Old:
----
  kor-0.5.1.obscpio

New:
----
  kor-0.5.2.obscpio

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ kor.spec ++++++
--- /var/tmp/diff_new_pack.Dfm6ww/_old  2024-07-04 16:26:15.370044412 +0200
+++ /var/tmp/diff_new_pack.Dfm6ww/_new  2024-07-04 16:26:15.370044412 +0200
@@ -19,7 +19,7 @@
 %define __arch_install_post export NO_BRP_STRIP_DEBUG=true
 
 Name:           kor
-Version:        0.5.1
+Version:        0.5.2
 Release:        0
 Summary:        Tool to discover unused Kubernetes Resources
 License:        MIT

++++++ _service ++++++
--- /var/tmp/diff_new_pack.Dfm6ww/_old  2024-07-04 16:26:15.406045727 +0200
+++ /var/tmp/diff_new_pack.Dfm6ww/_new  2024-07-04 16:26:15.406045727 +0200
@@ -3,7 +3,7 @@
     <param name="url">https://github.com/yonahd/kor</param>
     <param name="scm">git</param>
     <param name="exclude">.git</param>
-    <param name="revision">v0.5.1</param>
+    <param name="revision">v0.5.2</param>
     <param name="versionformat">@PARENT_TAG@</param>
     <param name="changesgenerate">enable</param>
     <param name="versionrewrite-pattern">v(.*)</param>

++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.Dfm6ww/_old  2024-07-04 16:26:15.430046603 +0200
+++ /var/tmp/diff_new_pack.Dfm6ww/_new  2024-07-04 16:26:15.434046750 +0200
@@ -1,6 +1,6 @@
 <servicedata>
 <service name="tar_scm">
                 <param name="url">https://github.com/yonahd/kor</param>
-              <param 
name="changesrevision">ced2ef283271806d0102c102f21c28766344d423</param></service></servicedata>
+              <param 
name="changesrevision">181141dcce1fb608e6982500e88b8f0609b47356</param></service></servicedata>
 (No newline at EOF)
 

++++++ kor-0.5.1.obscpio -> kor-0.5.2.obscpio ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kor-0.5.1/.github/workflows/release.yml 
new/kor-0.5.2/.github/workflows/release.yml
--- old/kor-0.5.1/.github/workflows/release.yml 2024-06-18 20:44:31.000000000 
+0200
+++ new/kor-0.5.2/.github/workflows/release.yml 2024-06-26 10:08:43.000000000 
+0200
@@ -53,3 +53,14 @@
 
       - name: Update new version in krew-index
         uses: rajatjindal/krew-release-bot@v0.0.46
+
+      - name: Configure Git
+        run: |
+          git config user.name "$GITHUB_ACTOR"
+          git config user.email "$github_ac...@users.noreply.github.com"
+
+      - name: Run chart-releaser
+        uses: helm/chart-releaser-action@v1.6.0
+        env:
+          CR_TOKEN: "${{ secrets.RELEASE_GITHUB_TOKEN }}"
+          
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kor-0.5.1/README.md new/kor-0.5.2/README.md
--- old/kor-0.5.1/README.md     2024-06-18 20:44:31.000000000 +0200
+++ new/kor-0.5.2/README.md     2024-06-26 10:08:43.000000000 +0200
@@ -31,7 +31,7 @@
 - StorageClasses
 - NetworkPolicies
 
-![Kor Screenshot](/images/screenshot.png)
+![Kor Screenshot](/images/show_reason_screenshot.png)
 
 ## Installation
 
@@ -224,6 +224,27 @@
 Kor supports three output formats: `table`, `json`, and `yaml`. The default 
output format is `table`.
 Additionally, you can use the `--group-by` flag to group the output by 
`namespace` or `resource`.
 
+#### Show reason
+
+```sh
+kor all -n test --show-reason
+```
+```
+Unused resources in namespace: "test"
++---+----------------+----------------------------------------------+--------------------------------------------------------+
+| # | RESOURCE TYPE  |                RESOURCE NAME                 |          
               REASON                         |
++---+----------------+----------------------------------------------+--------------------------------------------------------+
+| 1 | Service        | do-not-delete                                | Marked 
with unused label                               |
+| 2 | Ingress        | example-ingress                              | Ingress 
does not have a valid backend service          |
+| 3 | Ingress        | example-ingress2                             | Ingress 
does not have a valid backend service          |
+| 4 | ConfigMap      | prober-blackbox-config                       | 
ConfigMap is not used in any pod or container          |
+| 5 | ConfigMap      | release-name-prober-operator-blackbox-config | 
ConfigMap is not used in any pod or container          |
+| 6 | ConfigMap      | unused-cm                                    | 
ConfigMap is not used in any pod or container          |
+| 7 | ServiceAccount | my-service-account2                          | 
ServiceAccount is not in use                           |
+| 8 | Pdb            | my-pdb                                       | Pdb is 
not referencing any deployments or statefulsets |
++---+----------------+----------------------------------------------+--------------------------------------------------------+
+```
+
 #### Group by resource
 
 ```sh
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kor-0.5.1/charts/kor/Chart.yaml 
new/kor-0.5.2/charts/kor/Chart.yaml
--- old/kor-0.5.1/charts/kor/Chart.yaml 2024-06-18 20:44:31.000000000 +0200
+++ new/kor-0.5.2/charts/kor/Chart.yaml 2024-06-26 10:08:43.000000000 +0200
@@ -2,8 +2,17 @@
 name: kor
 description: A Kubernetes Helm Chart to discover orphaned resources using kor
 type: application
-version: 0.1.8
-appVersion: "0.4.3"
+version: 0.1.9
+appVersion: "0.5.1"
 maintainers:
   - name: "yonahd"
     url: "https://github.com/yonahd/kor";
+annotations:
+  "artifacthub.io/license": MIT
+  "artifacthub.io/links": |
+    - name: Application Source
+      url: https://github.com/yonahd/kor
+    - name: Chart Source
+      url: https://github.com/yonahd/kor/tree/main/charts/kor
+    - name: Grafana Dashboard
+      url: https://grafana.com/grafana/dashboards/19863-kor-dashboard/
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kor-0.5.1/charts/kor/README.md 
new/kor-0.5.2/charts/kor/README.md
--- old/kor-0.5.1/charts/kor/README.md  2024-06-18 20:44:31.000000000 +0200
+++ new/kor-0.5.2/charts/kor/README.md  2024-06-26 10:08:43.000000000 +0200
@@ -1,6 +1,6 @@
 # kor
 
-![Version: 
0.1.8](https://img.shields.io/badge/Version-0.1.8-informational?style=flat-square)
 ![Type: 
application](https://img.shields.io/badge/Type-application-informational?style=flat-square)
 ![AppVersion: 
0.4.3](https://img.shields.io/badge/AppVersion-0.4.3-informational?style=flat-square)
+![Version: 
0.1.9](https://img.shields.io/badge/Version-0.1.9-informational?style=flat-square)
 ![Type: 
application](https://img.shields.io/badge/Type-application-informational?style=flat-square)
 ![AppVersion: 
0.5.1](https://img.shields.io/badge/AppVersion-0.5.1-informational?style=flat-square)
 
 A Kubernetes Helm Chart to discover orphaned resources using kor
 
Binary files old/kor-0.5.1/images/show_reason_screenshot.png and 
new/kor-0.5.2/images/show_reason_screenshot.png differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kor-0.5.1/pkg/kor/clusterroles.go 
new/kor-0.5.2/pkg/kor/clusterroles.go
--- old/kor-0.5.1/pkg/kor/clusterroles.go       2024-06-18 20:44:31.000000000 
+0200
+++ new/kor-0.5.2/pkg/kor/clusterroles.go       2024-06-26 10:08:43.000000000 
+0200
@@ -44,9 +44,6 @@
        usedClusterRoles := make(map[string]bool)
 
        for _, rb := range roleBindingsAllNameSpaces {
-               if pass, _ := filter.Run(filterOpts); pass {
-                       continue
-               }
                usedClusterRoles[rb.RoleRef.Name] = true
                if rb.RoleRef.Kind == "ClusterRole" {
                        usedClusterRoles[rb.RoleRef.Name] = true
@@ -61,9 +58,6 @@
        }
 
        for _, crb := range clusterRoleBindings.Items {
-               if pass, _ := filter.Run(filterOpts); pass {
-                       continue
-               }
                usedClusterRoles[crb.RoleRef.Name] = true
        }
 
@@ -191,6 +185,11 @@
        if err != nil {
                fmt.Fprintf(os.Stderr, "Failed to process cluster role : %v\n", 
err)
        }
+       if opts.DeleteFlag {
+               if diff, err = DeleteResource(diff, clientset, "", 
"ClusterRole", opts.NoInteractive); err != nil {
+                       fmt.Fprintf(os.Stderr, "Failed to delete clusterRole %s 
: %v\n", diff, err)
+               }
+       }
        switch opts.GroupBy {
        case "namespace":
                resources[""] = make(map[string][]ResourceInfo)
@@ -198,11 +197,6 @@
        case "resource":
                appendResources(resources, "ClusterRole", "", diff)
        }
-       if opts.DeleteFlag {
-               if diff, err = DeleteResource2(diff, clientset, "", 
"ClusterRole", opts.NoInteractive); err != nil {
-                       fmt.Fprintf(os.Stderr, "Failed to delete clusterRole %s 
: %v\n", diff, err)
-               }
-       }
 
        var outputBuffer bytes.Buffer
        var jsonResponse []byte
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kor-0.5.1/pkg/kor/configmaps.go 
new/kor-0.5.2/pkg/kor/configmaps.go
--- old/kor-0.5.1/pkg/kor/configmaps.go 2024-06-18 20:44:31.000000000 +0200
+++ new/kor-0.5.2/pkg/kor/configmaps.go 2024-06-26 10:08:43.000000000 +0200
@@ -166,6 +166,11 @@
                        fmt.Fprintf(os.Stderr, "Failed to process namespace %s: 
%v\n", namespace, err)
                        continue
                }
+               if opts.DeleteFlag {
+                       if diff, err = DeleteResource(diff, clientset, 
namespace, "ConfigMap", opts.NoInteractive); err != nil {
+                               fmt.Fprintf(os.Stderr, "Failed to delete 
ConfigMap %s in namespace %s: %v\n", diff, namespace, err)
+                       }
+               }
                switch opts.GroupBy {
                case "namespace":
                        resources[namespace] = make(map[string][]ResourceInfo)
@@ -173,11 +178,6 @@
                case "resource":
                        appendResources(resources, "ConfigMap", namespace, diff)
                }
-               if opts.DeleteFlag {
-                       if diff, err = DeleteResource2(diff, clientset, 
namespace, "ConfigMap", opts.NoInteractive); err != nil {
-                               fmt.Fprintf(os.Stderr, "Failed to delete 
ConfigMap %s in namespace %s: %v\n", diff, namespace, err)
-                       }
-               }
        }
 
        var outputBuffer bytes.Buffer
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kor-0.5.1/pkg/kor/daemonsets.go 
new/kor-0.5.2/pkg/kor/daemonsets.go
--- old/kor-0.5.1/pkg/kor/daemonsets.go 2024-06-18 20:44:31.000000000 +0200
+++ new/kor-0.5.2/pkg/kor/daemonsets.go 2024-06-26 10:08:43.000000000 +0200
@@ -67,6 +67,11 @@
                        fmt.Fprintf(os.Stderr, "Failed to process namespace %s: 
%v\n", namespace, err)
                        continue
                }
+               if opts.DeleteFlag {
+                       if diff, err = DeleteResource(diff, clientset, 
namespace, "DaemonSet", opts.NoInteractive); err != nil {
+                               fmt.Fprintf(os.Stderr, "Failed to delete 
DaemonSet %s in namespace %s: %v\n", diff, namespace, err)
+                       }
+               }
                switch opts.GroupBy {
                case "namespace":
                        resources[namespace] = make(map[string][]ResourceInfo)
@@ -74,11 +79,6 @@
                case "resource":
                        appendResources(resources, "DaemonSet", namespace, diff)
                }
-               if opts.DeleteFlag {
-                       if diff, err = DeleteResource2(diff, clientset, 
namespace, "DaemonSet", opts.NoInteractive); err != nil {
-                               fmt.Fprintf(os.Stderr, "Failed to delete 
DaemonSet %s in namespace %s: %v\n", diff, namespace, err)
-                       }
-               }
        }
 
        var outputBuffer bytes.Buffer
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kor-0.5.1/pkg/kor/delete.go 
new/kor-0.5.2/pkg/kor/delete.go
--- old/kor-0.5.1/pkg/kor/delete.go     2024-06-18 20:44:31.000000000 +0200
+++ new/kor-0.5.2/pkg/kor/delete.go     2024-06-26 10:08:43.000000000 +0200
@@ -270,58 +270,7 @@
        return remainingResources, nil
 }
 
-func DeleteResource(diff []string, clientset kubernetes.Interface, namespace, 
resourceType string, noInteractive bool) ([]string, error) {
-       deletedDiff := []string{}
-
-       for _, resourceName := range diff {
-               deleteFunc, exists := DeleteResourceCmd()[resourceType]
-               if !exists {
-                       fmt.Printf("Resource type '%s' is not supported\n", 
resourceName)
-                       continue
-               }
-
-               if !noInteractive {
-                       fmt.Printf("Do you want to delete %s %s in namespace 
%s? (Y/N): ", resourceType, resourceName, namespace)
-                       var confirmation string
-                       _, err := fmt.Scanf("%s", &confirmation)
-                       if err != nil {
-                               fmt.Fprintf(os.Stderr, "Failed to read input: 
%v\n", err)
-                               continue
-                       }
-
-                       if strings.ToLower(confirmation) != "y" && 
strings.ToLower(confirmation) != "yes" {
-                               deletedDiff = append(deletedDiff, resourceName)
-
-                               fmt.Printf("Do you want flag the resource %s %s 
in namespace %s as In Use? (Y/N): ", resourceType, resourceName, namespace)
-                               var inUse string
-                               _, err := fmt.Scanf("%s", &inUse)
-                               if err != nil {
-                                       fmt.Fprintf(os.Stderr, "Failed to read 
input: %v\n", err)
-                                       continue
-                               }
-
-                               if strings.ToLower(inUse) == "y" || 
strings.ToLower(inUse) == "yes" {
-                                       if err := FlagResource(clientset, 
namespace, resourceType, resourceName); err != nil {
-                                               fmt.Fprintf(os.Stderr, "Failed 
to flag resource %s %s in namespace %s as In Use: %v\n", resourceType, 
resourceName, namespace, err)
-                                       }
-                                       continue
-                               }
-                               continue
-                       }
-               }
-
-               fmt.Printf("Deleting %s %s in namespace %s\n", resourceType, 
resourceName, namespace)
-               if err := deleteFunc(clientset, namespace, resourceName); err 
!= nil {
-                       fmt.Fprintf(os.Stderr, "Failed to delete %s %s in 
namespace %s: %v\n", resourceType, resourceName, namespace, err)
-                       continue
-               }
-               deletedDiff = append(deletedDiff, resourceName+"-DELETED")
-       }
-
-       return deletedDiff, nil
-}
-
-func DeleteResource2(diff []ResourceInfo, clientset kubernetes.Interface, 
namespace, resourceType string, noInteractive bool) ([]ResourceInfo, error) {
+func DeleteResource(diff []ResourceInfo, clientset kubernetes.Interface, 
namespace, resourceType string, noInteractive bool) ([]ResourceInfo, error) {
        deletedDiff := []ResourceInfo{}
 
        for _, resource := range diff {
@@ -334,7 +283,7 @@
                if !noInteractive {
                        fmt.Printf("Do you want to delete %s %s in namespace 
%s? (Y/N): ", resourceType, resource.Name, namespace)
                        var confirmation string
-                       _, err := fmt.Scanf("%s", &confirmation)
+                       _, err := fmt.Scanf("%s\n", &confirmation)
                        if err != nil {
                                fmt.Fprintf(os.Stderr, "Failed to read input: 
%v\n", err)
                                continue
@@ -345,7 +294,7 @@
 
                                fmt.Printf("Do you want flag the resource %s %s 
in namespace %s as In Use? (Y/N): ", resourceType, resource.Name, namespace)
                                var inUse string
-                               _, err := fmt.Scanf("%s", &inUse)
+                               _, err := fmt.Scanf("%s\n", &inUse)
                                if err != nil {
                                        fmt.Fprintf(os.Stderr, "Failed to read 
input: %v\n", err)
                                        continue
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kor-0.5.1/pkg/kor/delete_test.go 
new/kor-0.5.2/pkg/kor/delete_test.go
--- old/kor-0.5.1/pkg/kor/delete_test.go        2024-06-18 20:44:31.000000000 
+0200
+++ new/kor-0.5.2/pkg/kor/delete_test.go        2024-06-26 10:08:43.000000000 
+0200
@@ -15,26 +15,42 @@
 func TestDeleteResource(t *testing.T) {
        clientset := fake.NewSimpleClientset()
 
+       configmap1 := CreateTestConfigmap(testNamespace, "configmap-1", 
AppLabels)
+       _, err := 
clientset.CoreV1().ConfigMaps(testNamespace).Create(context.TODO(), configmap1, 
metav1.CreateOptions{})
+       if err != nil {
+               t.Fatalf("Error creating fake configmap: %v", err)
+       }
+       configmap2 := CreateTestConfigmap(testNamespace, "configmap-2", 
AppLabels)
+       _, err = 
clientset.CoreV1().ConfigMaps(testNamespace).Create(context.TODO(), configmap2, 
metav1.CreateOptions{})
+       if err != nil {
+               t.Fatalf("Error creating fake configmap: %v", err)
+       }
+
        tests := []struct {
                name          string
-               diff          []string
+               diff          []ResourceInfo
                resourceType  string
-               expectedDiff  []string
+               expectedDiff  []ResourceInfo
                expectedError bool
        }{
                {
-                       name:          "Test deletion confirmation",
-                       diff:          []string{"resource1", "resource2"},
-                       resourceType:  "ConfigMap",
-                       expectedDiff:  []string{"resource1-DELETED", 
"resource2"},
+                       name: "Test deletion confirmation",
+                       diff: []ResourceInfo{
+                               {Name: configmap1.Name, Reason: "ConfigMap is 
not used in any pod or container"},
+                               {Name: configmap2.Name, Reason: "Marked with 
unused label"},
+                       },
+                       resourceType: "ConfigMap",
+                       expectedDiff: []ResourceInfo{
+                               {Name: configmap1.Name + "-DELETED", Reason: 
"ConfigMap is not used in any pod or container"},
+                               {Name: configmap2.Name + "-DELETED", Reason: 
"Marked with unused label"},
+                       },
                        expectedError: false,
                },
        }
 
        for _, test := range tests {
                t.Run(test.name, func(t *testing.T) {
-                       deletedDiff, _ := DeleteResource(test.diff, clientset, 
"namespace", test.resourceType, true)
-
+                       deletedDiff, _ := DeleteResource(test.diff, clientset, 
testNamespace, test.resourceType, true)
                        for i, deleted := range deletedDiff {
                                if deleted != test.expectedDiff[i] {
                                        t.Errorf("Expected: %s, Got: %s", 
test.expectedDiff[i], deleted)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kor-0.5.1/pkg/kor/deployments.go 
new/kor-0.5.2/pkg/kor/deployments.go
--- old/kor-0.5.1/pkg/kor/deployments.go        2024-06-18 20:44:31.000000000 
+0200
+++ new/kor-0.5.2/pkg/kor/deployments.go        2024-06-26 10:08:43.000000000 
+0200
@@ -49,6 +49,11 @@
                        fmt.Fprintf(os.Stderr, "Failed to process namespace %s: 
%v\n", namespace, err)
                        continue
                }
+               if opts.DeleteFlag {
+                       if diff, err = DeleteResource(diff, clientset, 
namespace, "Deployment", opts.NoInteractive); err != nil {
+                               fmt.Fprintf(os.Stderr, "Failed to delete 
Deployment %s in namespace %s: %v\n", diff, namespace, err)
+                       }
+               }
                switch opts.GroupBy {
                case "namespace":
                        resources[namespace] = make(map[string][]ResourceInfo)
@@ -56,11 +61,6 @@
                case "resource":
                        appendResources(resources, "Deployment", namespace, 
diff)
                }
-               if opts.DeleteFlag {
-                       if diff, err = DeleteResource2(diff, clientset, 
namespace, "Deployment", opts.NoInteractive); err != nil {
-                               fmt.Fprintf(os.Stderr, "Failed to delete 
Deployment %s in namespace %s: %v\n", diff, namespace, err)
-                       }
-               }
        }
 
        var outputBuffer bytes.Buffer
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kor-0.5.1/pkg/kor/finalizers.go 
new/kor-0.5.2/pkg/kor/finalizers.go
--- old/kor-0.5.1/pkg/kor/finalizers.go 2024-06-18 20:44:31.000000000 +0200
+++ new/kor-0.5.2/pkg/kor/finalizers.go 2024-06-26 10:08:43.000000000 +0200
@@ -47,7 +47,7 @@
                                        continue
                                }
                                for _, item := range resourceList.Items {
-                                       if pass, _ := filter.Run(filterOpts); 
pass {
+                                       if pass, _ := 
filter.SetObject(&item).Run(filterOpts); pass {
                                                continue
                                        }
                                        if 
CheckFinalizers(item.GetFinalizers(), item.GetDeletionTimestamp()) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kor-0.5.1/pkg/kor/formatter.go 
new/kor-0.5.2/pkg/kor/formatter.go
--- old/kor-0.5.1/pkg/kor/formatter.go  2024-06-18 20:44:31.000000000 +0200
+++ new/kor-0.5.2/pkg/kor/formatter.go  2024-06-26 10:08:43.000000000 +0200
@@ -148,7 +148,7 @@
                }
        }
        table.Render()
-       return fmt.Sprintf("Unused %ss:\n%s", resource, buf.String())
+       return fmt.Sprintf("Unused %ss:\n%s\n", resource, buf.String())
 }
 
 func appendResources(resources map[string]map[string][]ResourceInfo, 
resourceType, namespace string, diff []ResourceInfo) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kor-0.5.1/pkg/kor/hpas.go 
new/kor-0.5.2/pkg/kor/hpas.go
--- old/kor-0.5.1/pkg/kor/hpas.go       2024-06-18 20:44:31.000000000 +0200
+++ new/kor-0.5.2/pkg/kor/hpas.go       2024-06-26 10:08:43.000000000 +0200
@@ -88,6 +88,11 @@
                        fmt.Fprintf(os.Stderr, "Failed to process namespace %s: 
%v\n", namespace, err)
                        continue
                }
+               if opts.DeleteFlag {
+                       if diff, err = DeleteResource(diff, clientset, 
namespace, "HPA", opts.NoInteractive); err != nil {
+                               fmt.Fprintf(os.Stderr, "Failed to delete HPA %s 
in namespace %s: %v\n", diff, namespace, err)
+                       }
+               }
                switch opts.GroupBy {
                case "namespace":
                        resources[namespace] = make(map[string][]ResourceInfo)
@@ -95,11 +100,6 @@
                case "resource":
                        appendResources(resources, "Hpa", namespace, diff)
                }
-               if opts.DeleteFlag {
-                       if diff, err = DeleteResource2(diff, clientset, 
namespace, "HPA", opts.NoInteractive); err != nil {
-                               fmt.Fprintf(os.Stderr, "Failed to delete HPA %s 
in namespace %s: %v\n", diff, namespace, err)
-                       }
-               }
        }
 
        var outputBuffer bytes.Buffer
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kor-0.5.1/pkg/kor/ingresses.go 
new/kor-0.5.2/pkg/kor/ingresses.go
--- old/kor-0.5.1/pkg/kor/ingresses.go  2024-06-18 20:44:31.000000000 +0200
+++ new/kor-0.5.2/pkg/kor/ingresses.go  2024-06-26 10:08:43.000000000 +0200
@@ -36,7 +36,7 @@
        usedIngresses := []string{}
 
        for _, ingress := range ingresses.Items {
-               if pass, _ := filter.Run(filterOpts); pass {
+               if pass, _ := filter.SetObject(&ingress).Run(filterOpts); pass {
                        continue
                }
 
@@ -124,6 +124,11 @@
                        fmt.Fprintf(os.Stderr, "Failed to process namespace %s: 
%v\n", namespace, err)
                        continue
                }
+               if opts.DeleteFlag {
+                       if diff, err = DeleteResource(diff, clientset, 
namespace, "Ingress", opts.NoInteractive); err != nil {
+                               fmt.Fprintf(os.Stderr, "Failed to delete 
Ingress %s in namespace %s: %v\n", diff, namespace, err)
+                       }
+               }
                switch opts.GroupBy {
                case "namespace":
                        resources[namespace] = make(map[string][]ResourceInfo)
@@ -131,11 +136,6 @@
                case "resource":
                        appendResources(resources, "Ingress", namespace, diff)
                }
-               if opts.DeleteFlag {
-                       if diff, err = DeleteResource2(diff, clientset, 
namespace, "Ingress", opts.NoInteractive); err != nil {
-                               fmt.Fprintf(os.Stderr, "Failed to delete 
Ingress %s in namespace %s: %v\n", diff, namespace, err)
-                       }
-               }
        }
 
        var outputBuffer bytes.Buffer
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kor-0.5.1/pkg/kor/jobs.go 
new/kor-0.5.2/pkg/kor/jobs.go
--- old/kor-0.5.1/pkg/kor/jobs.go       2024-06-18 20:44:31.000000000 +0200
+++ new/kor-0.5.2/pkg/kor/jobs.go       2024-06-26 10:08:43.000000000 +0200
@@ -73,6 +73,11 @@
                        fmt.Fprintf(os.Stderr, "Failed to process namespace %s: 
%v\n", namespace, err)
                        continue
                }
+               if opts.DeleteFlag {
+                       if diff, err = DeleteResource(diff, clientset, 
namespace, "Job", opts.NoInteractive); err != nil {
+                               fmt.Fprintf(os.Stderr, "Failed to delete Job %s 
in namespace %s: %v\n", diff, namespace, err)
+                       }
+               }
                switch opts.GroupBy {
                case "namespace":
                        resources[namespace] = make(map[string][]ResourceInfo)
@@ -80,11 +85,6 @@
                case "resource":
                        appendResources(resources, "Job", namespace, diff)
                }
-               if opts.DeleteFlag {
-                       if diff, err = DeleteResource2(diff, clientset, 
namespace, "Job", opts.NoInteractive); err != nil {
-                               fmt.Fprintf(os.Stderr, "Failed to delete Job %s 
in namespace %s: %v\n", diff, namespace, err)
-                       }
-               }
        }
 
        var outputBuffer bytes.Buffer
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kor-0.5.1/pkg/kor/multi.go 
new/kor-0.5.2/pkg/kor/multi.go
--- old/kor-0.5.1/pkg/kor/multi.go      2024-06-18 20:44:31.000000000 +0200
+++ new/kor-0.5.2/pkg/kor/multi.go      2024-06-26 10:08:43.000000000 +0200
@@ -97,64 +97,62 @@
 }
 
 func GetUnusedMulti(resourceNames string, filterOpts *filters.Options, 
clientset kubernetes.Interface, apiExtClient apiextensionsclientset.Interface, 
dynamicClient dynamic.Interface, outputFormat string, opts Opts) (string, 
error) {
-       var allDiffs []ResourceDiff
-       var outputBuffer bytes.Buffer
-       var unusedMulti string
        resourceList := strings.Split(resourceNames, ",")
        namespaces := filterOpts.Namespaces(clientset)
-       response := make(map[string]map[string][]ResourceInfo)
+       resources := make(map[string]map[string][]ResourceInfo)
        var err error
 
        noNamespaceDiff, resourceList := retrieveNoNamespaceDiff(clientset, 
apiExtClient, dynamicClient, resourceList, filterOpts)
        if len(noNamespaceDiff) != 0 {
                for _, diff := range noNamespaceDiff {
                        if len(diff.diff) != 0 {
-                               output := FormatOutputAll("", 
[]ResourceDiff{diff}, opts)
-                               outputBuffer.WriteString(output)
-
-                               resourceMap := make(map[string][]ResourceInfo)
-                               resourceMap[diff.resourceType] = diff.diff
-                               response[""] = resourceMap
+                               if opts.DeleteFlag {
+                                       if diff.diff, err = 
DeleteResource(diff.diff, clientset, "", diff.resourceType, 
opts.NoInteractive); err != nil {
+                                               fmt.Fprintf(os.Stderr, "Failed 
to delete %s %s: %v\n", diff.resourceType, diff.diff, err)
+                                       }
+                               }
+                               switch opts.GroupBy {
+                               case "namespace":
+                                       resources[""] = 
make(map[string][]ResourceInfo)
+                                       resources[""][diff.resourceType] = 
diff.diff
+                               case "resource":
+                                       appendResources(resources, 
diff.resourceType, "", diff.diff)
+                               }
                        }
                }
-
-               resourceMap := make(map[string][]ResourceInfo)
-               for _, diff := range noNamespaceDiff {
-                       resourceMap[diff.resourceType] = diff.diff
-               }
-               response[""] = resourceMap
-
        }
 
        for _, namespace := range namespaces {
-               allDiffs = retrieveNamespaceDiffs(clientset, namespace, 
resourceList, filterOpts)
-
-               if opts.DeleteFlag {
-                       for _, diff := range allDiffs {
-                               if diff.diff, err = DeleteResource2(diff.diff, 
clientset, namespace, diff.resourceType, opts.NoInteractive); err != nil {
+               allDiffs := retrieveNamespaceDiffs(clientset, namespace, 
resourceList, filterOpts)
+               for _, diff := range allDiffs {
+                       if opts.DeleteFlag {
+                               if diff.diff, err = DeleteResource(diff.diff, 
clientset, namespace, diff.resourceType, opts.NoInteractive); err != nil {
                                        fmt.Fprintf(os.Stderr, "Failed to 
delete %s %s in namespace %s: %v\n", diff.resourceType, diff.diff, namespace, 
err)
                                }
                        }
-
-               }
-               output := FormatOutputAll(namespace, allDiffs, opts)
-               if output != "" {
-                       outputBuffer.WriteString(output)
-
-                       resourceMap := make(map[string][]ResourceInfo)
-                       for _, diff := range allDiffs {
-                               resourceMap[diff.resourceType] = diff.diff
+                       switch opts.GroupBy {
+                       case "namespace":
+                               resources[namespace] = 
make(map[string][]ResourceInfo)
+                               resources[namespace][diff.resourceType] = 
diff.diff
+                       case "resource":
+                               appendResources(resources, diff.resourceType, 
namespace, diff.diff)
                        }
-                       response[namespace] = resourceMap
                }
        }
 
-       jsonResponse, err := json.MarshalIndent(response, "", "  ")
-       if err != nil {
-               return "", err
+       var outputBuffer bytes.Buffer
+       var jsonResponse []byte
+       switch outputFormat {
+       case "table":
+               outputBuffer = FormatOutput(resources, opts)
+       case "json", "yaml":
+               var err error
+               if jsonResponse, err = json.MarshalIndent(resources, "", "  "); 
err != nil {
+                       return "", err
+               }
        }
 
-       unusedMulti, err = unusedResourceFormatter(outputFormat, outputBuffer, 
opts, jsonResponse)
+       unusedMulti, err := unusedResourceFormatter(outputFormat, outputBuffer, 
opts, jsonResponse)
        if err != nil {
                fmt.Printf("err: %v\n", err)
        }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kor-0.5.1/pkg/kor/networkpolicies.go 
new/kor-0.5.2/pkg/kor/networkpolicies.go
--- old/kor-0.5.1/pkg/kor/networkpolicies.go    2024-06-18 20:44:31.000000000 
+0200
+++ new/kor-0.5.2/pkg/kor/networkpolicies.go    2024-06-26 10:08:43.000000000 
+0200
@@ -62,7 +62,11 @@
                        fmt.Fprintf(os.Stderr, "Failed to process namespace %s: 
%v\n", namespace, err)
                        continue
                }
-
+               if opts.DeleteFlag {
+                       if diff, err := DeleteResource(diff, clientset, 
namespace, "NetworkPolicy", opts.NoInteractive); err != nil {
+                               fmt.Fprintf(os.Stderr, "Failed to delete 
NetworkPolicy %s in namespace %s: %v\n", diff, namespace, err)
+                       }
+               }
                switch opts.GroupBy {
                case "namespace":
                        resources[namespace] = make(map[string][]ResourceInfo)
@@ -70,12 +74,6 @@
                case "resource":
                        appendResources(resources, "NetworkPolicy", namespace, 
diff)
                }
-
-               if opts.DeleteFlag {
-                       if diff, err := DeleteResource2(diff, clientset, 
namespace, "NetworkPolicy", opts.NoInteractive); err != nil {
-                               fmt.Fprintf(os.Stderr, "Failed to delete 
NetworkPolicy %s in namespace %s: %v\n", diff, namespace, err)
-                       }
-               }
        }
 
        var outputBuffer bytes.Buffer
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kor-0.5.1/pkg/kor/pdbs.go 
new/kor-0.5.2/pkg/kor/pdbs.go
--- old/kor-0.5.1/pkg/kor/pdbs.go       2024-06-18 20:44:31.000000000 +0200
+++ new/kor-0.5.2/pkg/kor/pdbs.go       2024-06-26 10:08:43.000000000 +0200
@@ -89,6 +89,11 @@
                        fmt.Fprintf(os.Stderr, "Failed to process namespace %s: 
%v\n", namespace, err)
                        continue
                }
+               if opts.DeleteFlag {
+                       if diff, err = DeleteResource(diff, clientset, 
namespace, "PDB", opts.NoInteractive); err != nil {
+                               fmt.Fprintf(os.Stderr, "Failed to delete PDB %s 
in namespace %s: %v\n", diff, namespace, err)
+                       }
+               }
                switch opts.GroupBy {
                case "namespace":
                        resources[namespace] = make(map[string][]ResourceInfo)
@@ -96,11 +101,6 @@
                case "resource":
                        appendResources(resources, "Pdb", namespace, diff)
                }
-               if opts.DeleteFlag {
-                       if diff, err = DeleteResource2(diff, clientset, 
namespace, "PDB", opts.NoInteractive); err != nil {
-                               fmt.Fprintf(os.Stderr, "Failed to delete PDB %s 
in namespace %s: %v\n", diff, namespace, err)
-                       }
-               }
        }
 
        var outputBuffer bytes.Buffer
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kor-0.5.1/pkg/kor/pods.go 
new/kor-0.5.2/pkg/kor/pods.go
--- old/kor-0.5.1/pkg/kor/pods.go       2024-06-18 20:44:31.000000000 +0200
+++ new/kor-0.5.2/pkg/kor/pods.go       2024-06-26 10:08:43.000000000 +0200
@@ -51,6 +51,11 @@
                        fmt.Fprintf(os.Stderr, "Failed to process namespace %s: 
%v\n", namespace, err)
                        continue
                }
+               if opts.DeleteFlag {
+                       if diff, err = DeleteResource(diff, clientset, 
namespace, "Pod", opts.NoInteractive); err != nil {
+                               fmt.Fprintf(os.Stderr, "Failed to delete Pod %s 
in namespace %s: %v\n", diff, namespace, err)
+                       }
+               }
                switch opts.GroupBy {
                case "namespace":
                        resources[namespace] = make(map[string][]ResourceInfo)
@@ -58,11 +63,6 @@
                case "resource":
                        appendResources(resources, "Pod", namespace, diff)
                }
-               if opts.DeleteFlag {
-                       if diff, err = DeleteResource2(diff, clientset, 
namespace, "Pod", opts.NoInteractive); err != nil {
-                               fmt.Fprintf(os.Stderr, "Failed to delete Pod %s 
in namespace %s: %v\n", diff, namespace, err)
-                       }
-               }
        }
 
        var outputBuffer bytes.Buffer
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kor-0.5.1/pkg/kor/pv.go new/kor-0.5.2/pkg/kor/pv.go
--- old/kor-0.5.1/pkg/kor/pv.go 2024-06-18 20:44:31.000000000 +0200
+++ new/kor-0.5.2/pkg/kor/pv.go 2024-06-26 10:08:43.000000000 +0200
@@ -50,6 +50,11 @@
        if err != nil {
                fmt.Fprintf(os.Stderr, "Failed to process pvs: %v\n", err)
        }
+       if opts.DeleteFlag {
+               if diff, err = DeleteResource(diff, clientset, "", "PV", 
opts.NoInteractive); err != nil {
+                       fmt.Fprintf(os.Stderr, "Failed to delete PV %s: %v\n", 
diff, err)
+               }
+       }
        switch opts.GroupBy {
        case "namespace":
                resources[""] = make(map[string][]ResourceInfo)
@@ -57,11 +62,6 @@
        case "resource":
                appendResources(resources, "Pv", "", diff)
        }
-       if opts.DeleteFlag {
-               if diff, err = DeleteResource2(diff, clientset, "", "PV", 
opts.NoInteractive); err != nil {
-                       fmt.Fprintf(os.Stderr, "Failed to delete PV %s: %v\n", 
diff, err)
-               }
-       }
 
        var outputBuffer bytes.Buffer
        var jsonResponse []byte
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kor-0.5.1/pkg/kor/pvc.go new/kor-0.5.2/pkg/kor/pvc.go
--- old/kor-0.5.1/pkg/kor/pvc.go        2024-06-18 20:44:31.000000000 +0200
+++ new/kor-0.5.2/pkg/kor/pvc.go        2024-06-26 10:08:43.000000000 +0200
@@ -80,6 +80,11 @@
                        fmt.Fprintf(os.Stderr, "Failed to process namespace %s: 
%v\n", namespace, err)
                        continue
                }
+               if opts.DeleteFlag {
+                       if diff, err = DeleteResource(diff, clientset, 
namespace, "PVC", opts.NoInteractive); err != nil {
+                               fmt.Fprintf(os.Stderr, "Failed to delete PVC %s 
in namespace %s: %v\n", diff, namespace, err)
+                       }
+               }
                switch opts.GroupBy {
                case "namespace":
                        resources[namespace] = make(map[string][]ResourceInfo)
@@ -87,11 +92,6 @@
                case "resource":
                        appendResources(resources, "Pvc", namespace, diff)
                }
-               if opts.DeleteFlag {
-                       if diff, err = DeleteResource2(diff, clientset, 
namespace, "PVC", opts.NoInteractive); err != nil {
-                               fmt.Fprintf(os.Stderr, "Failed to delete PVC %s 
in namespace %s: %v\n", diff, namespace, err)
-                       }
-               }
        }
 
        var outputBuffer bytes.Buffer
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kor-0.5.1/pkg/kor/replicaset.go 
new/kor-0.5.2/pkg/kor/replicaset.go
--- old/kor-0.5.1/pkg/kor/replicaset.go 2024-06-18 20:44:31.000000000 +0200
+++ new/kor-0.5.2/pkg/kor/replicaset.go 2024-06-26 10:08:43.000000000 +0200
@@ -22,7 +22,7 @@
        var unusedReplicaSetNames []ResourceInfo
 
        for _, replicaSet := range replicaSetList.Items {
-               if pass, _ := filter.Run(filterOpts); pass {
+               if pass, _ := filter.SetObject(&replicaSet).Run(filterOpts); 
pass {
                        continue
                }
 
@@ -44,6 +44,11 @@
                        fmt.Fprintf(os.Stderr, "Failed to process namespace %s: 
%v\n", namespace, err)
                        continue
                }
+               if opts.DeleteFlag {
+                       if diff, err = DeleteResource(diff, clientset, 
namespace, "ReplicaSet", opts.NoInteractive); err != nil {
+                               fmt.Fprintf(os.Stderr, "Failed to delete 
ReplicaSet %s in namespace %s: %v\n", diff, namespace, err)
+                       }
+               }
                switch opts.GroupBy {
                case "namespace":
                        resources[namespace] = make(map[string][]ResourceInfo)
@@ -51,11 +56,6 @@
                case "resource":
                        appendResources(resources, "ReplicaSet", namespace, 
diff)
                }
-               if opts.DeleteFlag {
-                       if diff, err = DeleteResource2(diff, clientset, 
namespace, "ReplicaSet", opts.NoInteractive); err != nil {
-                               fmt.Fprintf(os.Stderr, "Failed to delete 
ReplicaSet %s in namespace %s: %v\n", diff, namespace, err)
-                       }
-               }
        }
 
        var outputBuffer bytes.Buffer
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kor-0.5.1/pkg/kor/roles.go 
new/kor-0.5.2/pkg/kor/roles.go
--- old/kor-0.5.1/pkg/kor/roles.go      2024-06-18 20:44:31.000000000 +0200
+++ new/kor-0.5.2/pkg/kor/roles.go      2024-06-26 10:08:43.000000000 +0200
@@ -18,7 +18,7 @@
 //go:embed exceptions/roles/roles.json
 var rolesConfig []byte
 
-func retrieveUsedRoles(clientset kubernetes.Interface, namespace string, 
filterOpts *filters.Options) ([]string, error) {
+func retrieveUsedRoles(clientset kubernetes.Interface, namespace string) 
([]string, error) {
        // Get a list of all role bindings in the specified namespace
        roleBindings, err := 
clientset.RbacV1().RoleBindings(namespace).List(context.TODO(), 
metav1.ListOptions{})
        if err != nil {
@@ -27,10 +27,6 @@
 
        usedRoles := make(map[string]bool)
        for _, rb := range roleBindings.Items {
-               if pass, _ := filter.Run(filterOpts); pass {
-                       continue
-               }
-
                usedRoles[rb.RoleRef.Name] = true
        }
 
@@ -78,7 +74,7 @@
 }
 
 func processNamespaceRoles(clientset kubernetes.Interface, namespace string, 
filterOpts *filters.Options) ([]ResourceInfo, error) {
-       usedRoles, err := retrieveUsedRoles(clientset, namespace, filterOpts)
+       usedRoles, err := retrieveUsedRoles(clientset, namespace)
        if err != nil {
                return nil, err
        }
@@ -113,6 +109,11 @@
                        fmt.Fprintf(os.Stderr, "Failed to process namespace %s: 
%v\n", namespace, err)
                        continue
                }
+               if opts.DeleteFlag {
+                       if diff, err = DeleteResource(diff, clientset, 
namespace, "Role", opts.NoInteractive); err != nil {
+                               fmt.Fprintf(os.Stderr, "Failed to delete Role 
%s in namespace %s: %v\n", diff, namespace, err)
+                       }
+               }
                switch opts.GroupBy {
                case "namespace":
                        resources[namespace] = make(map[string][]ResourceInfo)
@@ -120,11 +121,6 @@
                case "resource":
                        appendResources(resources, "Role", namespace, diff)
                }
-               if opts.DeleteFlag {
-                       if diff, err = DeleteResource2(diff, clientset, 
namespace, "Role", opts.NoInteractive); err != nil {
-                               fmt.Fprintf(os.Stderr, "Failed to delete Role 
%s in namespace %s: %v\n", diff, namespace, err)
-                       }
-               }
        }
 
        var outputBuffer bytes.Buffer
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kor-0.5.1/pkg/kor/roles_test.go 
new/kor-0.5.2/pkg/kor/roles_test.go
--- old/kor-0.5.1/pkg/kor/roles_test.go 2024-06-18 20:44:31.000000000 +0200
+++ new/kor-0.5.2/pkg/kor/roles_test.go 2024-06-26 10:08:43.000000000 +0200
@@ -63,7 +63,7 @@
 func TestRetrieveUsedRoles(t *testing.T) {
        clientset := createTestRoles(t)
 
-       usedRoles, err := retrieveUsedRoles(clientset, testNamespace, 
&filters.Options{})
+       usedRoles, err := retrieveUsedRoles(clientset, testNamespace)
        if err != nil {
                t.Errorf("Expected no error, got %v", err)
        }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kor-0.5.1/pkg/kor/secrets.go 
new/kor-0.5.2/pkg/kor/secrets.go
--- old/kor-0.5.1/pkg/kor/secrets.go    2024-06-18 20:44:31.000000000 +0200
+++ new/kor-0.5.2/pkg/kor/secrets.go    2024-06-26 10:08:43.000000000 +0200
@@ -203,6 +203,11 @@
                        fmt.Fprintf(os.Stderr, "Failed to process namespace %s: 
%v\n", namespace, err)
                        continue
                }
+               if opts.DeleteFlag {
+                       if diff, err = DeleteResource(diff, clientset, 
namespace, "Secret", opts.NoInteractive); err != nil {
+                               fmt.Fprintf(os.Stderr, "Failed to delete Secret 
%s in namespace %s: %v\n", diff, namespace, err)
+                       }
+               }
                switch opts.GroupBy {
                case "namespace":
                        resources[namespace] = make(map[string][]ResourceInfo)
@@ -210,11 +215,6 @@
                case "resource":
                        appendResources(resources, "Secret", namespace, diff)
                }
-               if opts.DeleteFlag {
-                       if diff, err = DeleteResource2(diff, clientset, 
namespace, "Secret", opts.NoInteractive); err != nil {
-                               fmt.Fprintf(os.Stderr, "Failed to delete Secret 
%s in namespace %s: %v\n", diff, namespace, err)
-                       }
-               }
        }
 
        var outputBuffer bytes.Buffer
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kor-0.5.1/pkg/kor/serviceaccounts.go 
new/kor-0.5.2/pkg/kor/serviceaccounts.go
--- old/kor-0.5.1/pkg/kor/serviceaccounts.go    2024-06-18 20:44:31.000000000 
+0200
+++ new/kor-0.5.2/pkg/kor/serviceaccounts.go    2024-06-26 10:08:43.000000000 
+0200
@@ -171,6 +171,11 @@
                        fmt.Fprintf(os.Stderr, "Failed to process namespace %s: 
%v\n", namespace, err)
                        continue
                }
+               if opts.DeleteFlag {
+                       if diff, err = DeleteResource(diff, clientset, 
namespace, "ServiceAccount", opts.NoInteractive); err != nil {
+                               fmt.Fprintf(os.Stderr, "Failed to delete 
Serviceaccount %s in namespace %s: %v\n", diff, namespace, err)
+                       }
+               }
                switch opts.GroupBy {
                case "namespace":
                        resources[namespace] = make(map[string][]ResourceInfo)
@@ -178,11 +183,6 @@
                case "resource":
                        appendResources(resources, "ServiceAccount", namespace, 
diff)
                }
-               if opts.DeleteFlag {
-                       if diff, err = DeleteResource2(diff, clientset, 
namespace, "ServiceAccount", opts.NoInteractive); err != nil {
-                               fmt.Fprintf(os.Stderr, "Failed to delete 
Serviceaccount %s in namespace %s: %v\n", diff, namespace, err)
-                       }
-               }
        }
 
        var outputBuffer bytes.Buffer
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kor-0.5.1/pkg/kor/services.go 
new/kor-0.5.2/pkg/kor/services.go
--- old/kor-0.5.1/pkg/kor/services.go   2024-06-18 20:44:31.000000000 +0200
+++ new/kor-0.5.2/pkg/kor/services.go   2024-06-26 10:08:43.000000000 +0200
@@ -31,7 +31,7 @@
        var endpointsWithoutSubsets []ResourceInfo
 
        for _, endpoints := range endpointsList.Items {
-               if pass, _ := filter.Run(filterOpts); pass {
+               if pass, _ := filter.SetObject(&endpoints).Run(filterOpts); 
pass {
                        continue
                }
 
@@ -68,7 +68,11 @@
                        fmt.Fprintf(os.Stderr, "Failed to process namespace %s: 
%v\n", namespace, err)
                        continue
                }
-
+               if opts.DeleteFlag {
+                       if diff, err = DeleteResource(diff, clientset, 
namespace, "Service", opts.NoInteractive); err != nil {
+                               fmt.Fprintf(os.Stderr, "Failed to delete 
Service %s in namespace %s: %v\n", diff, namespace, err)
+                       }
+               }
                switch opts.GroupBy {
                case "namespace":
                        if diff != nil {
@@ -79,13 +83,6 @@
                        if diff != nil {
                                appendResources(resources, "Service", 
namespace, diff)
                        }
-
-               }
-
-               if opts.DeleteFlag {
-                       if diff, err = DeleteResource2(diff, clientset, 
namespace, "Service", opts.NoInteractive); err != nil {
-                               fmt.Fprintf(os.Stderr, "Failed to delete 
Service %s in namespace %s: %v\n", diff, namespace, err)
-                       }
                }
        }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kor-0.5.1/pkg/kor/statefulsets.go 
new/kor-0.5.2/pkg/kor/statefulsets.go
--- old/kor-0.5.1/pkg/kor/statefulsets.go       2024-06-18 20:44:31.000000000 
+0200
+++ new/kor-0.5.2/pkg/kor/statefulsets.go       2024-06-26 10:08:43.000000000 
+0200
@@ -22,7 +22,7 @@
        var statefulSetsWithoutReplicas []ResourceInfo
 
        for _, statefulSet := range statefulSetsList.Items {
-               if pass, _ := filter.Run(filterOpts); pass {
+               if pass, _ := filter.SetObject(&statefulSet).Run(filterOpts); 
pass {
                        continue
                }
 
@@ -51,6 +51,11 @@
                        fmt.Fprintf(os.Stderr, "Failed to process namespace %s: 
%v\n", namespace, err)
                        continue
                }
+               if opts.DeleteFlag {
+                       if diff, err = DeleteResource(diff, clientset, 
namespace, "StatefulSet", opts.NoInteractive); err != nil {
+                               fmt.Fprintf(os.Stderr, "Failed to delete 
Statefulset %s in namespace %s: %v\n", diff, namespace, err)
+                       }
+               }
                switch opts.GroupBy {
                case "namespace":
                        if diff != nil {
@@ -62,11 +67,6 @@
                                appendResources(resources, "StatefulSet", 
namespace, diff)
                        }
                }
-               if opts.DeleteFlag {
-                       if diff, err = DeleteResource2(diff, clientset, 
namespace, "StatefulSet", opts.NoInteractive); err != nil {
-                               fmt.Fprintf(os.Stderr, "Failed to delete 
Statefulset %s in namespace %s: %v\n", diff, namespace, err)
-                       }
-               }
        }
 
        var outputBuffer bytes.Buffer
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kor-0.5.1/pkg/kor/storageclasses.go 
new/kor-0.5.2/pkg/kor/storageclasses.go
--- old/kor-0.5.1/pkg/kor/storageclasses.go     2024-06-18 20:44:31.000000000 
+0200
+++ new/kor-0.5.2/pkg/kor/storageclasses.go     2024-06-26 10:08:43.000000000 
+0200
@@ -104,6 +104,11 @@
        if err != nil {
                fmt.Fprintf(os.Stderr, "Failed to process storageClasses: 
%v\n", err)
        }
+       if opts.DeleteFlag {
+               if diff, err = DeleteResource(diff, clientset, "", 
"StorageClass", opts.NoInteractive); err != nil {
+                       fmt.Fprintf(os.Stderr, "Failed to delete StorageClass 
%s: %v\n", diff, err)
+               }
+       }
        switch opts.GroupBy {
        case "namespace":
                resources[""] = make(map[string][]ResourceInfo)
@@ -111,11 +116,6 @@
        case "resource":
                appendResources(resources, "StorageClass", "", diff)
        }
-       if opts.DeleteFlag {
-               if diff, err = DeleteResource2(diff, clientset, "", 
"StorageClass", opts.NoInteractive); err != nil {
-                       fmt.Fprintf(os.Stderr, "Failed to delete StorageClass 
%s: %v\n", diff, err)
-               }
-       }
 
        var outputBuffer bytes.Buffer
        var jsonResponse []byte

++++++ kor.obsinfo ++++++
--- /var/tmp/diff_new_pack.Dfm6ww/_old  2024-07-04 16:26:15.610053177 +0200
+++ /var/tmp/diff_new_pack.Dfm6ww/_new  2024-07-04 16:26:15.614053323 +0200
@@ -1,5 +1,5 @@
 name: kor
-version: 0.5.1
-mtime: 1718736271
-commit: ced2ef283271806d0102c102f21c28766344d423
+version: 0.5.2
+mtime: 1719389323
+commit: 181141dcce1fb608e6982500e88b8f0609b47356
 

++++++ vendor.tar.gz ++++++
/work/SRC/openSUSE:Factory/kor/vendor.tar.gz 
/work/SRC/openSUSE:Factory/.kor.new.2080/vendor.tar.gz differ: char 5, line 1

Reply via email to