Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package kubearmor-client for 
openSUSE:Factory checked in at 2025-11-21 16:55:28
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/kubearmor-client (Old)
 and      /work/SRC/openSUSE:Factory/.kubearmor-client.new.2061 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "kubearmor-client"

Fri Nov 21 16:55:28 2025 rev:20 rq:1318803 version:1.4.5

Changes:
--------
--- /work/SRC/openSUSE:Factory/kubearmor-client/kubearmor-client.changes        
2025-07-09 17:27:49.598095487 +0200
+++ 
/work/SRC/openSUSE:Factory/.kubearmor-client.new.2061/kubearmor-client.changes  
    2025-11-21 16:56:16.413336828 +0100
@@ -1,0 +2,10 @@
+Thu Nov 20 08:15:05 UTC 2025 - Johannes Kastl 
<[email protected]>
+
+- Update to version 1.4.5:
+  * update KubeArmor/protobuf dependency
+  * upgrade go dependencies
+  * rename unused variable
+  * feat: (recommend) Implement recommend functionality for Docker
+    Client
+
+-------------------------------------------------------------------

Old:
----
  kubearmor-client-1.4.4.obscpio

New:
----
  kubearmor-client-1.4.5.obscpio

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

Other differences:
------------------
++++++ kubearmor-client.spec ++++++
--- /var/tmp/diff_new_pack.BCDkFq/_old  2025-11-21 16:56:18.113408468 +0100
+++ /var/tmp/diff_new_pack.BCDkFq/_new  2025-11-21 16:56:18.113408468 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package kubearmor-client
 #
-# Copyright (c) 2025 SUSE LLC
+# Copyright (c) 2025 SUSE LLC and contributors
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -17,7 +17,7 @@
 
 
 Name:           kubearmor-client
-Version:        1.4.4
+Version:        1.4.5
 Release:        0
 Summary:        KubeArmor cli tool aka kArmor
 License:        Apache-2.0
@@ -26,7 +26,7 @@
 Source1:        vendor.tar.gz
 BuildRequires:  bash-completion
 BuildRequires:  fish
-BuildRequires:  go >= 1.22
+BuildRequires:  go1.24 >= 1.24.9
 BuildRequires:  zsh
 
 %description

++++++ _service ++++++
--- /var/tmp/diff_new_pack.BCDkFq/_old  2025-11-21 16:56:18.153410154 +0100
+++ /var/tmp/diff_new_pack.BCDkFq/_new  2025-11-21 16:56:18.161410491 +0100
@@ -3,7 +3,7 @@
     <param name="url">https://github.com/kubearmor/kubearmor-client</param>
     <param name="scm">git</param>
     <param name="exclude">.git</param>
-    <param name="revision">v1.4.4</param>
+    <param name="revision">v1.4.5</param>
     <param name="versionformat">@PARENT_TAG@</param>
     <param name="versionrewrite-pattern">v(.*)</param>
     <param name="changesgenerate">enable</param>

++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.BCDkFq/_old  2025-11-21 16:56:18.197412007 +0100
+++ /var/tmp/diff_new_pack.BCDkFq/_new  2025-11-21 16:56:18.201412176 +0100
@@ -1,6 +1,6 @@
 <servicedata>
 <service name="tar_scm">
                 <param 
name="url">https://github.com/kubearmor/kubearmor-client</param>
-              <param 
name="changesrevision">05c25322be6a2f44fbbe0e4a22b5aa62e6ad094a</param></service></servicedata>
+              <param 
name="changesrevision">f2ed4970aad4c729c8be2df27e2bf8eb504fcafc</param></service></servicedata>
 (No newline at EOF)
 

++++++ kubearmor-client-1.4.4.obscpio -> kubearmor-client-1.4.5.obscpio ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kubearmor-client-1.4.4/cmd/install.go 
new/kubearmor-client-1.4.5/cmd/install.go
--- old/kubearmor-client-1.4.4/cmd/install.go   2025-07-08 09:29:10.000000000 
+0200
+++ new/kubearmor-client-1.4.5/cmd/install.go   2025-11-13 10:46:41.000000000 
+0100
@@ -58,11 +58,11 @@
                                if err := 
installOptions.Env.CheckAndSetValidEnvironmentOption(cmd.Flag("env").Value.String());
 err != nil {
                                        return fmt.Errorf("error in checking 
environment option: %v", err)
                                }
-                               if err := install.K8sLegacyInstaller(client, 
installOptions); err != nil {
+                               if err := install.K8sLegacyInstaller(k8sClient, 
installOptions); err != nil {
                                        return fmt.Errorf("error installing 
kubearmor in legacy mode: %v", err)
                                }
                        } else {
-                               if err := install.K8sInstaller(client, 
installOptions); err != nil {
+                               if err := install.K8sInstaller(k8sClient, 
installOptions); err != nil {
                                        return fmt.Errorf("error installing 
kubearmor: %v", err)
                                }
                        }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kubearmor-client-1.4.4/cmd/log.go 
new/kubearmor-client-1.4.5/cmd/log.go
--- old/kubearmor-client-1.4.4/cmd/log.go       2025-07-08 09:29:10.000000000 
+0200
+++ new/kubearmor-client-1.4.5/cmd/log.go       2025-11-13 10:46:41.000000000 
+0100
@@ -58,7 +58,7 @@
        Use "karmor logs --help" to see detailed flag descriptions and 
defaults.`,
        RunE: func(cmd *cobra.Command, args []string) error {
                log.StopChan = make(chan struct{})
-               return log.StartObserver(client, logOptions)
+               return log.StartObserver(k8sClient, logOptions)
        },
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kubearmor-client-1.4.4/cmd/probe.go 
new/kubearmor-client-1.4.5/cmd/probe.go
--- old/kubearmor-client-1.4.4/cmd/probe.go     2025-07-08 09:29:10.000000000 
+0200
+++ new/kubearmor-client-1.4.5/cmd/probe.go     2025-11-13 10:46:41.000000000 
+0100
@@ -22,7 +22,7 @@
 If KubeArmor is running, It probes which environment KubeArmor is running on 
(e.g: systemd mode, kubernetes etc.), 
 the supported KubeArmor features in the environment, the pods being handled by 
KubeArmor and the policies running on each of these pods`,
        RunE: func(cmd *cobra.Command, args []string) error {
-               err := probe.PrintProbeResultCmd(client, probeInstallOptions)
+               err := probe.PrintProbeResultCmd(k8sClient, probeInstallOptions)
                return err
 
        },
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kubearmor-client-1.4.4/cmd/recommend.go 
new/kubearmor-client-1.4.5/cmd/recommend.go
--- old/kubearmor-client-1.4.4/cmd/recommend.go 2025-07-08 09:29:10.000000000 
+0200
+++ new/kubearmor-client-1.4.5/cmd/recommend.go 2025-11-13 10:46:41.000000000 
+0100
@@ -4,11 +4,13 @@
 package cmd
 
 import (
+       "context"
        "github.com/kubearmor/kubearmor-client/recommend"
        "github.com/kubearmor/kubearmor-client/recommend/common"
        genericpolicies 
"github.com/kubearmor/kubearmor-client/recommend/engines/generic_policies"
        log "github.com/sirupsen/logrus"
        "github.com/spf13/cobra"
+       v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 )
 
 var recommendOptions common.Options
@@ -19,8 +21,19 @@
        Short: "Recommend Policies",
        Long:  `Recommend policies based on container image, k8s manifest or 
the actual runtime env`,
        RunE: func(cmd *cobra.Command, args []string) error {
-               err := recommend.Recommend(client, recommendOptions, 
genericpolicies.GenericPolicy{})
-               return err
+               if recommendOptions.K8s {
+                       // Check if k8sClient can connect to the server by 
listing namespaces
+                       _, err := 
k8sClient.K8sClientset.CoreV1().Namespaces().List(context.Background(), 
v1.ListOptions{})
+                       if err != nil {
+                               if len(recommendOptions.Images) == 0 { // only 
log the client if no images are provided
+                                       log.Error("K8s client is not 
initialized, using docker client instead")
+                               }
+                               return recommend.Recommend(dockerClient, 
recommendOptions, genericpolicies.GenericPolicy{})
+                       }
+                       return recommend.Recommend(k8sClient, recommendOptions, 
genericpolicies.GenericPolicy{})
+               } else {
+                       return recommend.Recommend(dockerClient, 
recommendOptions, genericpolicies.GenericPolicy{})
+               }
        },
 }
 var updateCmd = &cobra.Command{
@@ -28,7 +41,6 @@
        Short: "Updates policy-template cache",
        Long:  "Updates the local cache of policy-templates 
($HOME/.cache/karmor)",
        RunE: func(cmd *cobra.Command, args []string) error {
-
                if _, err := genericpolicies.DownloadAndUnzipRelease(); err != 
nil {
                        return err
                }
@@ -50,4 +62,5 @@
        recommendCmd.Flags().StringVarP(&recommendOptions.ReportFile, "report", 
"r", "report.txt", "report file")
        recommendCmd.Flags().StringSliceVarP(&recommendOptions.Tags, "tag", 
"t", []string{}, "tags (comma-separated) to apply. Eg. PCI-DSS, MITRE")
        recommendCmd.Flags().StringVarP(&recommendOptions.Config, "config", 
"c", common.UserHome()+"/.docker/config.json", "absolute path to image registry 
configuration file")
+       recommendCmd.Flags().BoolVarP(&recommendOptions.K8s, "k8s", "k", true, 
"Use k8s client instead of docker client")
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kubearmor-client-1.4.4/cmd/root.go 
new/kubearmor-client-1.4.5/cmd/root.go
--- old/kubearmor-client-1.4.4/cmd/root.go      2025-07-08 09:29:10.000000000 
+0200
+++ new/kubearmor-client-1.4.5/cmd/root.go      2025-11-13 10:46:41.000000000 
+0100
@@ -5,12 +5,14 @@
 package cmd
 
 import (
+       "github.com/kubearmor/kubearmor-client/docker"
        "github.com/kubearmor/kubearmor-client/k8s"
        "github.com/rs/zerolog/log"
        "github.com/spf13/cobra"
 )
 
-var client *k8s.Client
+var k8sClient *k8s.Client
+var dockerClient *docker.Client
 
 // rootCmd represents the base command when called without any subcommands
 var rootCmd = &cobra.Command{
@@ -18,12 +20,18 @@
                var err error
 
                //Initialise k8sClient for all child commands to inherit
-               client, err = k8s.ConnectK8sClient()
-               // fmt.Printf("%v", client.K8sClientset)
+               k8sClient, err = k8s.ConnectK8sClient()
                if err != nil {
                        log.Error().Msgf("unable to create Kubernetes clients: 
%s", err.Error())
                        return err
                }
+
+               // Initialise dockerClient for all child commands to inherit
+               dockerClient, err = docker.ConnectDockerClient()
+               if err != nil {
+                       log.Error().Msgf("unable to create Docker clients: %s", 
err.Error())
+                       return err
+               }
                return nil
        },
        Use:   "karmor",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kubearmor-client-1.4.4/cmd/rotate-tls.go 
new/kubearmor-client-1.4.5/cmd/rotate-tls.go
--- old/kubearmor-client-1.4.4/cmd/rotate-tls.go        2025-07-08 
09:29:10.000000000 +0200
+++ new/kubearmor-client-1.4.5/cmd/rotate-tls.go        2025-11-13 
10:46:41.000000000 +0100
@@ -11,7 +11,7 @@
        Short: "Rotate webhook controller tls certificates",
        Long:  `Rotate webhook controller tls certificates`,
        RunE: func(cmd *cobra.Command, args []string) error {
-               if err := rotatetls.RotateTLS(client, namespace); err != nil {
+               if err := rotatetls.RotateTLS(k8sClient, namespace); err != nil 
{
                        return err
                }
                return nil
@@ -20,6 +20,5 @@
 
 func init() {
        rootCmd.AddCommand(rotateCmd)
-
        rotateCmd.Flags().StringVarP(&namespace, "namespace", "n", "kubearmor", 
"Namespace for resources")
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kubearmor-client-1.4.4/cmd/selfupdate.go 
new/kubearmor-client-1.4.5/cmd/selfupdate.go
--- old/kubearmor-client-1.4.4/cmd/selfupdate.go        2025-07-08 
09:29:10.000000000 +0200
+++ new/kubearmor-client-1.4.5/cmd/selfupdate.go        2025-11-13 
10:46:41.000000000 +0100
@@ -14,7 +14,7 @@
        Short: "selfupdate this cli tool",
        Long:  `selfupdate this cli tool for checking the latest release on the 
github`,
        RunE: func(cmd *cobra.Command, args []string) error {
-               if err := selfupdate.SelfUpdate(client); err != nil {
+               if err := selfupdate.SelfUpdate(k8sClient); err != nil {
                        return err
                }
                return nil
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kubearmor-client-1.4.4/cmd/sysdump.go 
new/kubearmor-client-1.4.5/cmd/sysdump.go
--- old/kubearmor-client-1.4.4/cmd/sysdump.go   2025-07-08 09:29:10.000000000 
+0200
+++ new/kubearmor-client-1.4.5/cmd/sysdump.go   2025-11-13 10:46:41.000000000 
+0100
@@ -16,7 +16,7 @@
        Short: "Collect system dump information for troubleshooting and error 
report",
        Long:  `Collect system dump information for troubleshooting and error 
reports`,
        RunE: func(cmd *cobra.Command, args []string) error {
-               if err := sysdump.Collect(client, dumpOptions); err != nil {
+               if err := sysdump.Collect(k8sClient, dumpOptions); err != nil {
                        return err
                }
                return nil
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kubearmor-client-1.4.4/cmd/uninstall.go 
new/kubearmor-client-1.4.5/cmd/uninstall.go
--- old/kubearmor-client-1.4.4/cmd/uninstall.go 2025-07-08 09:29:10.000000000 
+0200
+++ new/kubearmor-client-1.4.5/cmd/uninstall.go 2025-11-13 10:46:41.000000000 
+0100
@@ -19,8 +19,8 @@
                //check for systemd or docker installation
                exist := install.CheckAndRemoveKAVmInstallation()
                if !exist {
-                       if err := install.K8sUninstaller(client, 
uninstallOptions); err != nil {
-                               if err := install.K8sLegacyUninstaller(client, 
uninstallOptions); err != nil {
+                       if err := install.K8sUninstaller(k8sClient, 
uninstallOptions); err != nil {
+                               if err := 
install.K8sLegacyUninstaller(k8sClient, uninstallOptions); err != nil {
                                        return err
                                }
                        }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kubearmor-client-1.4.4/cmd/version.go 
new/kubearmor-client-1.4.5/cmd/version.go
--- old/kubearmor-client-1.4.4/cmd/version.go   2025-07-08 09:29:10.000000000 
+0200
+++ new/kubearmor-client-1.4.5/cmd/version.go   2025-11-13 10:46:41.000000000 
+0100
@@ -14,7 +14,7 @@
        Short: "Display version information",
        Long:  `Display version information`,
        RunE: func(cmd *cobra.Command, args []string) error {
-               if err := version.PrintVersion(client); err != nil {
+               if err := version.PrintVersion(k8sClient); err != nil {
                        return err
                }
                return nil
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kubearmor-client-1.4.4/docker/client.go 
new/kubearmor-client-1.4.5/docker/client.go
--- old/kubearmor-client-1.4.4/docker/client.go 1970-01-01 01:00:00.000000000 
+0100
+++ new/kubearmor-client-1.4.5/docker/client.go 2025-11-13 10:46:41.000000000 
+0100
@@ -0,0 +1,41 @@
+package docker
+
+import (
+       "context"
+       "strings"
+
+       "github.com/docker/docker/api/types/container"
+       "github.com/docker/docker/api/types/filters"
+       "github.com/docker/docker/client"
+       "github.com/kubearmor/kubearmor-client/recommend/common"
+)
+
+type Client struct {
+       *client.Client
+}
+
+func ConnectDockerClient() (*Client, error) {
+       cli, err := client.NewClientWithOpts(client.FromEnv, 
client.WithAPIVersionNegotiation())
+       if err != nil {
+               return nil, err
+       }
+       return &Client{cli}, nil
+}
+
+func (c *Client) ListObjects(_ common.Options) ([]common.Object, error) {
+       var result []common.Object
+       containers, err := c.Client.ContainerList(context.Background(), 
container.ListOptions{
+               Filters: filters.NewArgs(),
+       })
+       if err != nil {
+               return nil, err
+       }
+       for _, ctr := range containers {
+               result = append(result, common.Object{
+                       Name:   strings.TrimPrefix(ctr.Names[0], "/"),
+                       Images: []string{ctr.Image},
+                       Labels: ctr.Labels,
+               })
+       }
+       return result, nil
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kubearmor-client-1.4.4/go.mod 
new/kubearmor-client-1.4.5/go.mod
--- old/kubearmor-client-1.4.4/go.mod   2025-07-08 09:29:10.000000000 +0200
+++ new/kubearmor-client-1.4.5/go.mod   2025-11-13 10:46:41.000000000 +0100
@@ -1,12 +1,6 @@
 module github.com/kubearmor/kubearmor-client
 
-go 1.24.4
-
-replace (
-       github.com/notaryproject/notation-go/signer => 
github.com/notaryproject/notation-go/signer v1.2.1
-       gopkg.in/yaml.v2 => gopkg.in/yaml.v2 v2.4.0
-       gopkg.in/yaml.v3 => gopkg.in/yaml.v3 v3.0.1
-)
+go 1.24.9
 
 require (
        github.com/blang/semver v3.5.1+incompatible
@@ -14,7 +8,7 @@
        github.com/docker/docker v28.3.1+incompatible
        github.com/fatih/color v1.18.0
        github.com/json-iterator/go v1.1.12
-       github.com/kubearmor/KubeArmor/protobuf 
v0.0.0-20250707142851-6b7fc953dd6c
+       github.com/kubearmor/KubeArmor/protobuf 
v0.0.0-20251112065124-b3d682e08d62
        github.com/mholt/archiver/v3 v3.5.1
        github.com/moby/term v0.5.2
        github.com/olekukonko/tablewriter v0.0.5
@@ -59,7 +53,6 @@
 
 require (
        dario.cat/mergo v1.0.2 // indirect
-       github.com/AdaLogics/go-fuzz-headers v0.0.0-20240806141605-e8a1dd7889d6 
// indirect
        github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c // 
indirect
        github.com/BurntSushi/toml v1.5.0 // indirect
        github.com/MakeNowJust/heredoc v1.0.0 // indirect
@@ -69,27 +62,24 @@
        github.com/Masterminds/sprig/v3 v3.3.0 // indirect
        github.com/Masterminds/squirrel v1.5.4 // indirect
        github.com/Microsoft/go-winio v0.6.2 // indirect
-       github.com/andybalholm/brotli v1.2.0 // indirect
+       github.com/andybalholm/brotli v1.0.1 // indirect
        github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 // 
indirect
        github.com/atotto/clipboard v0.1.4 // indirect
        github.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect
        github.com/blang/semver/v4 v4.0.0 // indirect
-       github.com/carapace-sh/carapace-shlex v1.0.1 // indirect
-       github.com/chai2010/gettext-go v1.0.3 // indirect
-       github.com/charmbracelet/colorprofile v0.3.1 // indirect
+       github.com/chai2010/gettext-go v1.0.2 // indirect
+       github.com/charmbracelet/colorprofile 
v0.2.3-0.20250311203215-f60798e515dc // indirect
        github.com/charmbracelet/x/ansi v0.9.3 // indirect
-       github.com/charmbracelet/x/cellbuf v0.0.13 // indirect
+       github.com/charmbracelet/x/cellbuf 
v0.0.13-0.20250311204145-2c3ea96c31dd // indirect
        github.com/charmbracelet/x/term v0.2.1 // indirect
        github.com/containerd/containerd v1.7.27 // indirect
        github.com/containerd/errdefs v1.0.0 // indirect
        github.com/containerd/errdefs/pkg v0.3.0 // indirect
        github.com/containerd/log v0.1.0 // indirect
        github.com/containerd/platforms v1.0.0-rc.1 // indirect
-       github.com/creack/pty v1.1.21 // indirect
        github.com/cyphar/filepath-securejoin v0.4.1 // indirect
        github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // 
indirect
        github.com/distribution/reference v0.6.0 // indirect
-       github.com/docker/docker-credential-helpers v0.9.3 // indirect
        github.com/docker/go-connections v0.5.0 // indirect
        github.com/docker/go-units v0.5.0 // indirect
        github.com/dsnet/compress v0.0.2-0.20210315054119-f66993602bf5 // 
indirect
@@ -100,7 +90,7 @@
        github.com/felixge/httpsnoop v1.0.4 // indirect
        github.com/fsnotify/fsnotify v1.9.0 // indirect
        github.com/fxamacker/cbor/v2 v2.8.0 // indirect
-       github.com/go-errors/errors v1.5.1 // indirect
+       github.com/go-errors/errors v1.4.2 // indirect
        github.com/go-gorp/gorp/v3 v3.1.0 // indirect
        github.com/go-logr/logr v1.4.3 // indirect
        github.com/go-logr/stdr v1.2.2 // indirect
@@ -112,12 +102,14 @@
        github.com/gobwas/glob v0.2.3 // indirect
        github.com/godbus/dbus/v5 v5.1.0 // indirect
        github.com/gogo/protobuf v1.3.2 // indirect
-       github.com/golang/snappy v1.0.0 // indirect
+       github.com/golang/protobuf v1.5.4 // indirect
+       github.com/golang/snappy v0.0.2 // indirect
        github.com/google/btree v1.1.3 // indirect
        github.com/google/gnostic-models v0.7.0 // indirect
        github.com/google/go-github/v30 v30.1.0 // indirect
-       github.com/google/go-querystring v1.1.0 // indirect
+       github.com/google/go-querystring v1.0.0 // indirect
        github.com/google/pprof v0.0.0-20241029153458-d1b30febd7db // indirect
+       github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 // indirect
        github.com/google/uuid v1.6.0 // indirect
        github.com/gorilla/websocket v1.5.4-0.20250319132907-e064f32e3674 // 
indirect
        github.com/gosuri/uitable v0.0.4 // indirect
@@ -125,20 +117,20 @@
        github.com/hashicorp/errwrap v1.1.0 // indirect
        github.com/hashicorp/go-multierror v1.1.1 // indirect
        github.com/huandu/xstrings v1.5.0 // indirect
-       github.com/imdario/mergo v0.3.16 // indirect
+       github.com/imdario/mergo v0.3.13 // indirect
        github.com/inconshreveable/go-update v0.0.0-20160112193335-8152e7eb6ccf 
// indirect
        github.com/inconshreveable/mousetrap v1.1.0 // indirect
        github.com/jmoiron/sqlx v1.4.0 // indirect
        github.com/josharian/intern v1.0.0 // indirect
        github.com/klauspost/compress v1.18.0 // indirect
-       github.com/klauspost/pgzip v1.2.6 // indirect
+       github.com/klauspost/pgzip v1.2.5 // indirect
        github.com/lann/builder v0.0.0-20180802200727-47ae307949d0 // indirect
        github.com/lann/ps v0.0.0-20150810152359-62de8c46ede0 // indirect
        github.com/lib/pq v1.10.9 // indirect
        github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de // 
indirect
        github.com/lucasb-eyer/go-colorful v1.2.0 // indirect
        github.com/mailru/easyjson v0.9.0 // indirect
-       github.com/mattn/go-colorable v0.1.14 // indirect
+       github.com/mattn/go-colorable v0.1.13 // indirect
        github.com/mattn/go-isatty v0.0.20 // indirect
        github.com/mattn/go-localereader v0.0.1 // indirect
        github.com/mattn/go-runewidth v0.0.16 // indirect
@@ -157,18 +149,17 @@
        github.com/muesli/termenv v0.16.0 // indirect
        github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // 
indirect
        github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f // 
indirect
-       github.com/nwaples/rardecode v1.1.3 // indirect
+       github.com/nwaples/rardecode v1.1.0 // indirect
        github.com/opencontainers/go-digest v1.0.0 // indirect
        github.com/opencontainers/image-spec v1.1.1 // indirect
        github.com/pelletier/go-toml/v2 v2.2.4 // indirect
        github.com/peterbourgon/diskv v2.0.1+incompatible // indirect
-       github.com/pierrec/lz4/v4 v4.1.22 // indirect
+       github.com/pierrec/lz4/v4 v4.1.2 // indirect
        github.com/pkg/errors v0.9.1 // indirect
        github.com/rivo/uniseg v0.4.7 // indirect
        github.com/rubenv/sql-migrate v1.8.0 // indirect
        github.com/russross/blackfriday/v2 v2.1.0 // indirect
        github.com/sagikazarmark/locafero v0.9.0 // indirect
-       github.com/sergi/go-diff v1.3.1 // indirect
        github.com/shopspring/decimal v1.4.0 // indirect
        github.com/sourcegraph/conc v0.3.0 // indirect
        github.com/spf13/afero v1.14.0 // indirect
@@ -177,7 +168,7 @@
        github.com/spf13/viper v1.20.1 // indirect
        github.com/subosito/gotenv v1.6.0 // indirect
        github.com/tcnksm/go-gitconfig v0.1.2 // indirect
-       github.com/ulikunitz/xz v0.5.12 // indirect
+       github.com/ulikunitz/xz v0.5.9 // indirect
        github.com/x448/float16 v0.8.4 // indirect
        github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb // 
indirect
        github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 
// indirect
@@ -201,11 +192,11 @@
        golang.org/x/text v0.26.0 // indirect
        golang.org/x/time v0.12.0 // indirect
        golang.org/x/tools v0.34.0 // indirect
-       google.golang.org/genproto/googleapis/rpc 
v0.0.0-20250707201910-8d1bb00bc6a7 // indirect
+       google.golang.org/genproto/googleapis/rpc 
v0.0.0-20250603155806-513f23925822 // indirect
        gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect
        gopkg.in/inf.v0 v0.9.1 // indirect
        gopkg.in/yaml.v3 v3.0.1 // indirect
-       gotest.tools/v3 v3.5.1 // indirect
+       gotest.tools/v3 v3.5.2 // indirect
        k8s.io/apiserver v0.33.2 // indirect
        k8s.io/component-base v0.33.2 // indirect
        k8s.io/klog/v2 v2.130.1 // indirect
@@ -213,8 +204,8 @@
        k8s.io/utils v0.0.0-20250604170112-4c0f3b243397 // indirect
        sigs.k8s.io/controller-runtime v0.21.0 // indirect
        sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8 // indirect
-       sigs.k8s.io/kustomize/api v0.20.0 // indirect
-       sigs.k8s.io/kustomize/kyaml v0.20.0 // indirect
+       sigs.k8s.io/kustomize/api v0.19.0 // indirect
+       sigs.k8s.io/kustomize/kyaml v0.19.0 // indirect
        sigs.k8s.io/randfill v1.0.0 // indirect
        sigs.k8s.io/structured-merge-diff/v4 v4.7.0 // indirect
 )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kubearmor-client-1.4.4/go.sum 
new/kubearmor-client-1.4.5/go.sum
--- old/kubearmor-client-1.4.4/go.sum   2025-07-08 09:29:10.000000000 +0200
+++ new/kubearmor-client-1.4.5/go.sum   2025-11-13 10:46:41.000000000 +0100
@@ -2,8 +2,8 @@
 dario.cat/mergo v1.0.2/go.mod h1:E/hbnu0NxMFBjpMIE34DRGLWqDy0g5FuKDhCb31ngxA=
 filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA=
 filippo.io/edwards25519 v1.1.0/go.mod 
h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4=
-github.com/AdaLogics/go-fuzz-headers v0.0.0-20240806141605-e8a1dd7889d6 
h1:He8afgbRMd7mFxO99hRNu+6tazq8nFF9lIwo9JFroBk=
-github.com/AdaLogics/go-fuzz-headers v0.0.0-20240806141605-e8a1dd7889d6/go.mod 
h1:8o94RPi1/7XTJvwPpRSzSUedZrtlirdB3r9Z20bi2f8=
+github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24 
h1:bvDV9vkmnHYOMsOr4WLk+Vo07yKIzd94sVoIqshQ4bU=
+github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24/go.mod 
h1:8o94RPi1/7XTJvwPpRSzSUedZrtlirdB3r9Z20bi2f8=
 github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c 
h1:udKWzYgxTojEKWjV8V+WSxDXJ4NFATAsZjh8iIbsQIg=
 github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c/go.mod 
h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E=
 github.com/BurntSushi/toml v1.5.0 
h1:W5quZX/G/csjUnuI8SUYlsHs9M38FC7znL0lIO+DvMg=
@@ -26,9 +26,8 @@
 github.com/Masterminds/squirrel v1.5.4/go.mod 
h1:NNaOrjSoIDfDA40n7sr2tPNZRfjzjA400rg+riTZj10=
 github.com/Microsoft/go-winio v0.6.2 
h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY=
 github.com/Microsoft/go-winio v0.6.2/go.mod 
h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU=
+github.com/andybalholm/brotli v1.0.1 
h1:KqhlKozYbRtJvsPrrEeXcO+N2l6NYT5A2QAFmSULpEc=
 github.com/andybalholm/brotli v1.0.1/go.mod 
h1:loMXtMfwqflxFJPmdbJO0a3KNoPuLBgiu3qAvBg8x/Y=
-github.com/andybalholm/brotli v1.2.0 
h1:ukwgCxwYrmACq68yiUqwIWnGY0cTPox/M94sVwToPjQ=
-github.com/andybalholm/brotli v1.2.0/go.mod 
h1:rzTDkvFWvIrjDXZHkuS16NPggd91W3kUSvPlQ1pLaKY=
 github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 
h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio=
 github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod 
h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs=
 github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 
h1:DklsrG3dyBCFEj5IhUbnKptjxatkF07cF2ak3yi77so=
@@ -47,26 +46,24 @@
 github.com/blang/semver/v4 v4.0.0/go.mod 
h1:IbckMUScFkM3pff0VJDNKRiT6TG/YpiHIM2yvyW5YoQ=
 github.com/bshuster-repo/logrus-logstash-hook v1.0.0 
h1:e+C0SB5R1pu//O4MQ3f9cFuPGoOVeF2fE4Og9otCc70=
 github.com/bshuster-repo/logrus-logstash-hook v1.0.0/go.mod 
h1:zsTqEiSzDgAa/8GZR7E1qaXrhYNDKBYy5/dWPTIflbk=
-github.com/carapace-sh/carapace-shlex v1.0.1 
h1:ww0JCgWpOVuqWG7k3724pJ18Lq8gh5pHQs9j3ojUs1c=
-github.com/carapace-sh/carapace-shlex v1.0.1/go.mod 
h1:lJ4ZsdxytE0wHJ8Ta9S7Qq0XpjgjU0mdfCqiI2FHx7M=
 github.com/cenkalti/backoff/v4 v4.3.0 
h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8=
 github.com/cenkalti/backoff/v4 v4.3.0/go.mod 
h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE=
 github.com/cespare/xxhash/v2 v2.3.0 
h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs=
 github.com/cespare/xxhash/v2 v2.3.0/go.mod 
h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
-github.com/chai2010/gettext-go v1.0.3 
h1:9liNh8t+u26xl5ddmWLmsOsdNLwkdRTg5AG+JnTiM80=
-github.com/chai2010/gettext-go v1.0.3/go.mod 
h1:y+wnP2cHYaVj19NZhYKAwEMH2CI1gNHeQQ+5AjwawxA=
+github.com/chai2010/gettext-go v1.0.2 
h1:1Lwwip6Q2QGsAdl/ZKPCwTe9fe0CjlUbqj5bFNSjIRk=
+github.com/chai2010/gettext-go v1.0.2/go.mod 
h1:y+wnP2cHYaVj19NZhYKAwEMH2CI1gNHeQQ+5AjwawxA=
 github.com/charmbracelet/bubbles v0.21.0 
h1:9TdC97SdRVg/1aaXNVWfFH3nnLAwOXr8Fn6u6mfQdFs=
 github.com/charmbracelet/bubbles v0.21.0/go.mod 
h1:HF+v6QUR4HkEpz62dx7ym2xc71/KBHg+zKwJtMw+qtg=
 github.com/charmbracelet/bubbletea v1.3.6 
h1:VkHIxPJQeDt0aFJIsVxw8BQdh/F/L2KKZGsK6et5taU=
 github.com/charmbracelet/bubbletea v1.3.6/go.mod 
h1:oQD9VCRQFF8KplacJLo28/jofOI2ToOfGYeFgBBxHOc=
-github.com/charmbracelet/colorprofile v0.3.1 
h1:k8dTHMd7fgw4bnFd7jXTLZrSU/CQrKnL3m+AxCzDz40=
-github.com/charmbracelet/colorprofile v0.3.1/go.mod 
h1:/GkGusxNs8VB/RSOh3fu0TJmQ4ICMMPApIIVn0KszZ0=
+github.com/charmbracelet/colorprofile v0.2.3-0.20250311203215-f60798e515dc 
h1:4pZI35227imm7yK2bGPcfpFEmuY1gc2YSTShr4iJBfs=
+github.com/charmbracelet/colorprofile 
v0.2.3-0.20250311203215-f60798e515dc/go.mod 
h1:X4/0JoqgTIPSFcRA/P6INZzIuyqdFY5rm8tb41s9okk=
 github.com/charmbracelet/lipgloss v1.1.0 
h1:vYXsiLHVkK7fp74RkV7b2kq9+zDLoEU4MZoFqR/noCY=
 github.com/charmbracelet/lipgloss v1.1.0/go.mod 
h1:/6Q8FR2o+kj8rz4Dq0zQc3vYf7X+B0binUUBwA0aL30=
 github.com/charmbracelet/x/ansi v0.9.3 
h1:BXt5DHS/MKF+LjuK4huWrC6NCvHtexww7dMayh6GXd0=
 github.com/charmbracelet/x/ansi v0.9.3/go.mod 
h1:3RQDQ6lDnROptfpWuUVIUG64bD2g2BgntdxH0Ya5TeE=
-github.com/charmbracelet/x/cellbuf v0.0.13 
h1:/KBBKHuVRbq1lYx5BzEHBAFBP8VcQzJejZ/IA3iR28k=
-github.com/charmbracelet/x/cellbuf v0.0.13/go.mod 
h1:xe0nKWGd3eJgtqZRaN9RjMtK7xUYchjzPr7q6kcvCCs=
+github.com/charmbracelet/x/cellbuf v0.0.13-0.20250311204145-2c3ea96c31dd 
h1:vy0GVL4jeHEwG5YOXDmi86oYw2yuYUGqz6a8sLwg0X8=
+github.com/charmbracelet/x/cellbuf 
v0.0.13-0.20250311204145-2c3ea96c31dd/go.mod 
h1:xe0nKWGd3eJgtqZRaN9RjMtK7xUYchjzPr7q6kcvCCs=
 github.com/charmbracelet/x/exp/golden v0.0.0-20241011142426-46044092ad91 
h1:payRxjMjKgx2PaCWLZ4p3ro9y97+TVLZNaRZgJwSVDQ=
 github.com/charmbracelet/x/exp/golden 
v0.0.0-20241011142426-46044092ad91/go.mod 
h1:wDlXFlCrmJ8J+swcL/MnGUuYnqgQdW9rhSD61oNMb6U=
 github.com/charmbracelet/x/term v0.2.1 
h1:AQeHeLZ1OqSXhrAWpYUtZyX1T3zVxfpZuEQMIQaGIAQ=
@@ -86,8 +83,8 @@
 github.com/coreos/go-systemd/v22 v22.5.0 
h1:RrqgGjYQKalulkV8NGVIfkXQf6YYmOyiJKk8iXXhfZs=
 github.com/coreos/go-systemd/v22 v22.5.0/go.mod 
h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc=
 github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod 
h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g=
-github.com/creack/pty v1.1.21 h1:1/QdRyBaHHJP61QkWMXlOIBfsgdDeeKfK8SYVUWJKf0=
-github.com/creack/pty v1.1.21/go.mod 
h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4=
+github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY=
+github.com/creack/pty v1.1.18/go.mod 
h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4=
 github.com/cyphar/filepath-securejoin v0.4.1 
h1:JyxxyPEaktOD+GAnqIqTf9A8tHyAG22rowi7HkoSU1s=
 github.com/cyphar/filepath-securejoin v0.4.1/go.mod 
h1:Sdj7gXlvMcPZsbhwhQ33GguGLDGQL7h7bg04C/+u9jI=
 github.com/davecgh/go-spew v1.1.0/go.mod 
h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
@@ -104,8 +101,8 @@
 github.com/distribution/reference v0.6.0/go.mod 
h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E=
 github.com/docker/docker v28.3.1+incompatible 
h1:20+BmuA9FXlCX4ByQ0vYJcUEnOmRM6XljDnFWR+jCyY=
 github.com/docker/docker v28.3.1+incompatible/go.mod 
h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk=
-github.com/docker/docker-credential-helpers v0.9.3 
h1:gAm/VtF9wgqJMoxzT3Gj5p4AqIjCBS4wrsOh9yRqcz8=
-github.com/docker/docker-credential-helpers v0.9.3/go.mod 
h1:x+4Gbw9aGmChi3qTLZj8Dfn0TD20M/fuWy0E5+WDeCo=
+github.com/docker/docker-credential-helpers v0.8.2 
h1:bX3YxiGzFP5sOXWc3bTPEXdEaZSeVMrFgOr3T+zrFAo=
+github.com/docker/docker-credential-helpers v0.8.2/go.mod 
h1:P3ci7E3lwkZg6XiHdRKft1KckHiO9a2rNtyFbZ/ry9M=
 github.com/docker/go-connections v0.5.0 
h1:USnMq7hx7gwdVZq1L49hLXaFtUdTADjXGp+uj1Br63c=
 github.com/docker/go-connections v0.5.0/go.mod 
h1:ov60Kzw0kKElRwhNs9UlUHAE/F9Fe6GLaXnqyDdmEXc=
 github.com/docker/go-events v0.0.0-20190806004212-e31b211e4f1c 
h1:+pKlWGMw7gf6bQ+oDZB4KHQFypsfjYlq/C4rfL7D3g8=
@@ -140,8 +137,8 @@
 github.com/fsnotify/fsnotify v1.9.0/go.mod 
h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0=
 github.com/fxamacker/cbor/v2 v2.8.0 
h1:fFtUGXUzXPHTIUdne5+zzMPTfffl3RD5qYnkY40vtxU=
 github.com/fxamacker/cbor/v2 v2.8.0/go.mod 
h1:vM4b+DJCtHn+zz7h3FFp/hDAI9WNWCsZj23V5ytsSxQ=
-github.com/go-errors/errors v1.5.1 
h1:ZwEMSLRCapFLflTpT7NKaAc7ukJ8ZPEjzlxt8rPN8bk=
-github.com/go-errors/errors v1.5.1/go.mod 
h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3BopGUQ5a5Og=
+github.com/go-errors/errors v1.4.2 
h1:J6MZopCL4uSllY1OfXM374weqZFFItUbrImctkmUxIA=
+github.com/go-errors/errors v1.4.2/go.mod 
h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3BopGUQ5a5Og=
 github.com/go-gorp/gorp/v3 v3.1.0 
h1:ItKF/Vbuj31dmV4jxA1qblpSwkl9g1typ24xoe70IGs=
 github.com/go-gorp/gorp/v3 v3.1.0/go.mod 
h1:dLEjIyyRNiXvNZ8PSmzpt1GsWAUK8kjVhEpjH8TixEw=
 github.com/go-logr/logr v1.2.2/go.mod 
h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
@@ -172,14 +169,12 @@
 github.com/golang/protobuf v1.3.2/go.mod 
h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
 github.com/golang/protobuf v1.5.4 
h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek=
 github.com/golang/protobuf v1.5.4/go.mod 
h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps=
+github.com/golang/snappy v0.0.2 h1:aeE13tS0IiQgFjYdoL8qN3K1N2bXXtI6Vi51/y7BpMw=
 github.com/golang/snappy v0.0.2/go.mod 
h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
-github.com/golang/snappy v1.0.0 h1:Oy607GVXHs7RtbggtPBnr2RmDArIsAefDwvrdWvRhGs=
-github.com/golang/snappy v1.0.0/go.mod 
h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
 github.com/google/btree v1.1.3 h1:CVpQJjYgC4VbzxeGVHfvZrv1ctoYCAI8vbl07Fcxlyg=
 github.com/google/btree v1.1.3/go.mod 
h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4=
 github.com/google/gnostic-models v0.7.0 
h1:qwTtogB15McXDaNqTZdzPJRHvaVJlAl+HVQnLmJEJxo=
 github.com/google/gnostic-models v0.7.0/go.mod 
h1:whL5G0m6dmc5cPxKc5bdKdEN3UjI7OUGxBlw57miDrQ=
-github.com/google/go-cmp v0.5.2/go.mod 
h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
 github.com/google/go-cmp v0.5.5/go.mod 
h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
 github.com/google/go-cmp v0.5.9/go.mod 
h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
 github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=
@@ -188,12 +183,13 @@
 github.com/google/go-github v17.0.0+incompatible/go.mod 
h1:zLgOLi98H3fifZn+44m+umXrS52loVEgC2AApnigrVQ=
 github.com/google/go-github/v30 v30.1.0 
h1:VLDx+UolQICEOKu2m4uAoMti1SxuEBAl7RSEG16L+Oo=
 github.com/google/go-github/v30 v30.1.0/go.mod 
h1:n8jBpHl45a/rlBUtRJMOG4GhNADUQFEufcolZ95JfU8=
+github.com/google/go-querystring v1.0.0 
h1:Xkwi/a1rcvNg1PPYe5vI8GbeBY/jrVuDX5ASuANWTrk=
 github.com/google/go-querystring v1.0.0/go.mod 
h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck=
-github.com/google/go-querystring v1.1.0 
h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD/fhyJ8=
-github.com/google/go-querystring v1.1.0/go.mod 
h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU=
 github.com/google/gofuzz v1.0.0/go.mod 
h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
 github.com/google/pprof v0.0.0-20241029153458-d1b30febd7db 
h1:097atOisP2aRj7vFgYQBbFN4U4JNXUNYpxael3UzMyo=
 github.com/google/pprof v0.0.0-20241029153458-d1b30febd7db/go.mod 
h1:vavhavw2zAxS5dIdcRluK6cSGGPlZynqzFM8NdvU144=
+github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 
h1:El6M4kTTCOh6aBiKaUGG7oYTSPP8MxqL4YI3kZKwcP4=
+github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod 
h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ=
 github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
 github.com/google/uuid v1.6.0/go.mod 
h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
 github.com/gorilla/handlers v1.5.2 
h1:cLTUSsNkgcwhgRqvCNmdbRWG0A3N4F+M2nWKdScwyEE=
@@ -221,8 +217,8 @@
 github.com/hpcloud/tail v1.0.0/go.mod 
h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
 github.com/huandu/xstrings v1.5.0 
h1:2ag3IFq9ZDANvthTwTiqSSZLjDc+BedvHPAp5tJy2TI=
 github.com/huandu/xstrings v1.5.0/go.mod 
h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE=
-github.com/imdario/mergo v0.3.16 
h1:wwQJbIsHYGMUyLSPrEq1CT16AhnhNJQ51+4fdHUnCl4=
-github.com/imdario/mergo v0.3.16/go.mod 
h1:WBLT9ZmE3lPoWsEzCh9LPo3TiwVN+ZKEjmz+hD27ysY=
+github.com/imdario/mergo v0.3.13 
h1:lFzP57bqS/wsqKssCGmtLAb8A0wKjLGrve2q3PPVcBk=
+github.com/imdario/mergo v0.3.13/go.mod 
h1:4lJ1jqUDcsbIECGy0RUJAXNIhg+6ocWgb1ALK2O4oXg=
 github.com/inconshreveable/go-update v0.0.0-20160112193335-8152e7eb6ccf 
h1:WfD7VjIE6z8dIvMsI4/s+1qr5EL+zoIGev1BQj1eoJ8=
 github.com/inconshreveable/go-update v0.0.0-20160112193335-8152e7eb6ccf/go.mod 
h1:hyb9oH7vZsitZCiBt0ZvifOrB+qc8PS5IiilCIb87rg=
 github.com/inconshreveable/mousetrap v1.1.0 
h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8=
@@ -240,9 +236,8 @@
 github.com/klauspost/compress v1.18.0 
h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo=
 github.com/klauspost/compress v1.18.0/go.mod 
h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ=
 github.com/klauspost/cpuid v1.2.0/go.mod 
h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek=
+github.com/klauspost/pgzip v1.2.5 
h1:qnWYvvKqedOF2ulHpMG72XQol4ILEJ8k2wwRl/Km8oE=
 github.com/klauspost/pgzip v1.2.5/go.mod 
h1:Ch1tH69qFZu15pkjo5kYi6mth2Zzwzt50oCQKQE9RUs=
-github.com/klauspost/pgzip v1.2.6 
h1:8RXeL5crjEUFnR2/Sn6GJNWtSQ3Dk8pq4CL3jvdDyjU=
-github.com/klauspost/pgzip v1.2.6/go.mod 
h1:Ch1tH69qFZu15pkjo5kYi6mth2Zzwzt50oCQKQE9RUs=
 github.com/kr/pretty v0.1.0/go.mod 
h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
 github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
 github.com/kr/pretty v0.3.1/go.mod 
h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
@@ -258,8 +253,8 @@
 github.com/kubearmor/KubeArmor/pkg/KubeArmorController 
v0.0.0-20250707142851-6b7fc953dd6c/go.mod 
h1:xekCBFS6h63sH25RJaQZiPbCJ7HDKGIk9P1f2ZhVExU=
 github.com/kubearmor/KubeArmor/pkg/KubeArmorOperator 
v0.0.0-20250707142851-6b7fc953dd6c 
h1:QYmtWVDeBULE6zUowfbCTSlbaHRHhYO+H9isgICYWt0=
 github.com/kubearmor/KubeArmor/pkg/KubeArmorOperator 
v0.0.0-20250707142851-6b7fc953dd6c/go.mod 
h1:9TkYHGVKqvHJKn4RhcHq0pv12jbaogpdlMciFfzZjeI=
-github.com/kubearmor/KubeArmor/protobuf v0.0.0-20250707142851-6b7fc953dd6c 
h1:DnQKvgM0vJUwbUY+riDtM2NZSFLImgNRlZPUd/ZMrYw=
-github.com/kubearmor/KubeArmor/protobuf 
v0.0.0-20250707142851-6b7fc953dd6c/go.mod 
h1:ZQIx9XAMhZ+D3obBOaCr62DwcxpxLPUHSkLqECovA2c=
+github.com/kubearmor/KubeArmor/protobuf v0.0.0-20251112065124-b3d682e08d62 
h1:2ve8oG5GxO0R4veMP6Af63nh5CyBcx56OTp415txSdA=
+github.com/kubearmor/KubeArmor/protobuf 
v0.0.0-20251112065124-b3d682e08d62/go.mod 
h1:PyS1HDa7oXyxqXYvuLHphlYGcCoB3eLXWt+TwgUDJV0=
 github.com/lann/builder v0.0.0-20180802200727-47ae307949d0 
h1:SOEGU9fKiNWd/HOJuq6+3iTQz8KNCLtVX6idSoTLdUw=
 github.com/lann/builder v0.0.0-20180802200727-47ae307949d0/go.mod 
h1:dXGbAdH5GtBTC4WfIxhKZfyBF/HBFgRZSWwZ9g/He9o=
 github.com/lann/ps v0.0.0-20150810152359-62de8c46ede0 
h1:P6pPBnrTSX3DEVR4fDembhRWSsG5rVo6hYhAB/ADZrk=
@@ -272,9 +267,8 @@
 github.com/lucasb-eyer/go-colorful v1.2.0/go.mod 
h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0=
 github.com/mailru/easyjson v0.9.0 
h1:PrnmzHw7262yW8sTBwxi1PdJA3Iw/EKBa8psRf7d9a4=
 github.com/mailru/easyjson v0.9.0/go.mod 
h1:1+xMtQp2MRNVL/V1bOzuP3aP8VNwRW55fQUto+XFtTU=
+github.com/mattn/go-colorable v0.1.13 
h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
 github.com/mattn/go-colorable v0.1.13/go.mod 
h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=
-github.com/mattn/go-colorable v0.1.14 
h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHPsaIE=
-github.com/mattn/go-colorable v0.1.14/go.mod 
h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8=
 github.com/mattn/go-isatty v0.0.16/go.mod 
h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
 github.com/mattn/go-isatty v0.0.19/go.mod 
h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
 github.com/mattn/go-isatty v0.0.20 
h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
@@ -328,9 +322,8 @@
 github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod 
h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=
 github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f 
h1:y5//uYreIhSUg3J1GEMiLbxo1LJaP8RfCpH6pymGZus=
 github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod 
h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw=
+github.com/nwaples/rardecode v1.1.0 
h1:vSxaY8vQhOcVr4mm5e8XllHWTiM4JF507A0Katqw7MQ=
 github.com/nwaples/rardecode v1.1.0/go.mod 
h1:5DzqNKiOdpKKBH87u8VlvAnPZMXcGRhxWkRpHbbfGS0=
-github.com/nwaples/rardecode v1.1.3 
h1:cWCaZwfM5H7nAD6PyEdcVnczzV8i/JtotnyW/dD9lEc=
-github.com/nwaples/rardecode v1.1.3/go.mod 
h1:5DzqNKiOdpKKBH87u8VlvAnPZMXcGRhxWkRpHbbfGS0=
 github.com/olekukonko/tablewriter v0.0.5 
h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec=
 github.com/olekukonko/tablewriter v0.0.5/go.mod 
h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY=
 github.com/onsi/ginkgo v1.6.0/go.mod 
h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
@@ -349,9 +342,8 @@
 github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod 
h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU=
 github.com/phayes/freeport v0.0.0-20220201140144-74d24b5ae9f5 
h1:Ii+DKncOVM8Cu1Hc+ETb5K+23HdAMvESYE3ZJ5b5cMI=
 github.com/phayes/freeport v0.0.0-20220201140144-74d24b5ae9f5/go.mod 
h1:iIss55rKnNBTvrwdmkUpLnDpZoAHvWaiq5+iMmen4AE=
+github.com/pierrec/lz4/v4 v4.1.2 
h1:qvY3YFXRQE/XB8MlLzJH7mSzBs74eA2gg52YTk6jUPM=
 github.com/pierrec/lz4/v4 v4.1.2/go.mod 
h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4=
-github.com/pierrec/lz4/v4 v4.1.22 
h1:cKFw6uJDK+/gfw5BcDL0JL5aBsAFdsIT18eRtLj7VIU=
-github.com/pierrec/lz4/v4 v4.1.22/go.mod 
h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4=
 github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
 github.com/pkg/errors v0.9.1/go.mod 
h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
 github.com/pmezard/go-difflib v1.0.0/go.mod 
h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
@@ -390,8 +382,8 @@
 github.com/russross/blackfriday/v2 v2.1.0/go.mod 
h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
 github.com/sagikazarmark/locafero v0.9.0 
h1:GbgQGNtTrEmddYDSAH9QLRyfAHY12md+8YFTqyMTC9k=
 github.com/sagikazarmark/locafero v0.9.0/go.mod 
h1:UBUyz37V+EdMS3hDF3QWIiVr/2dPrx49OMO0Bn0hJqk=
-github.com/sergi/go-diff v1.3.1 h1:xkr+Oxo4BOQKmkn/B9eMK0g5Kg/983T9DqqPHwYqD+8=
-github.com/sergi/go-diff v1.3.1/go.mod 
h1:aMJSSKb2lpPvRNec0+w3fl7LP9IOFzdc9Pa4NFbPK1I=
+github.com/sergi/go-diff v1.2.0 h1:XU+rvMAioB0UC3q1MFrIQy4Vo5/4VsRDQQXHsEya6xQ=
+github.com/sergi/go-diff v1.2.0/go.mod 
h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM=
 github.com/shopspring/decimal v1.4.0 
h1:bxl37RwXBklmTi0C79JfXCEBD1cqqHt0bbgBAGFp81k=
 github.com/shopspring/decimal v1.4.0/go.mod 
h1:gawqmDU56v4yIKSwfBSFip1HdCCXN8/+DMd9qYNcwME=
 github.com/sirupsen/logrus v1.9.3 
h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ=
@@ -413,7 +405,6 @@
 github.com/stretchr/objx v0.5.2/go.mod 
h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA=
 github.com/stretchr/testify v1.2.2/go.mod 
h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
 github.com/stretchr/testify v1.3.0/go.mod 
h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
-github.com/stretchr/testify v1.4.0/go.mod 
h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
 github.com/stretchr/testify v1.6.1/go.mod 
h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
 github.com/stretchr/testify v1.7.0/go.mod 
h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
 github.com/stretchr/testify v1.10.0 
h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA=
@@ -423,9 +414,8 @@
 github.com/tcnksm/go-gitconfig v0.1.2 
h1:iiDhRitByXAEyjgBqsKi9QU4o2TNtv9kPP3RgPgXBPw=
 github.com/tcnksm/go-gitconfig v0.1.2/go.mod 
h1:/8EhP4H7oJZdIPyT+/UIsG87kTzrzM4UsLGSItWYCpE=
 github.com/ulikunitz/xz v0.5.8/go.mod 
h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14=
+github.com/ulikunitz/xz v0.5.9 h1:RsKRIA2MO8x56wkkcd3LbtcE/uMszhb6DpRf+3uwa3I=
 github.com/ulikunitz/xz v0.5.9/go.mod 
h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14=
-github.com/ulikunitz/xz v0.5.12 h1:37Nm15o69RwBkXM0J6A5OlE67RZTfzUxTj8fB3dfcsc=
-github.com/ulikunitz/xz v0.5.12/go.mod 
h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14=
 github.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM=
 github.com/x448/float16 v0.8.4/go.mod 
h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg=
 github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod 
h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU=
@@ -441,8 +431,6 @@
 github.com/xlab/treeprint v1.2.0/go.mod 
h1:gj5Gd3gPdKtR1ikdDK6fnFLdmIS0X30kTTuNd/WEJu0=
 github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e 
h1:JVG44RsyaB9T2KIHavMF/ppJZNG9ZpyihvCd0w101no=
 github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e/go.mod 
h1:RbqR21r5mrJuqunuUZ/Dhy/avygyECGrLceyNeo4LiM=
-github.com/xyproto/randomstring v1.0.5 
h1:YtlWPoRdgMu3NZtP45drfy1GKoojuR7hmRcnhZqKjWU=
-github.com/xyproto/randomstring v1.0.5/go.mod 
h1:rgmS5DeNXLivK7YprL0pY+lTuhNQW3iGxZ18UQApw/E=
 github.com/yuin/goldmark v1.1.27/go.mod 
h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
 github.com/yuin/goldmark v1.2.1/go.mod 
h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
 go.opentelemetry.io/auto/sdk v1.1.0 
h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA=
@@ -570,15 +558,14 @@
 google.golang.org/genproto v0.0.0-20240123012728-ef4313101c80 
h1:KAeGQVN3M9nD0/bQXnr/ClcEMJ968gUXJQ9pwfSynuQ=
 google.golang.org/genproto/googleapis/api v0.0.0-20250324211829-b45e905df463 
h1:hE3bRWtU6uceqlh4fhrSnUyjKHMKB9KrTLLG+bc0ddM=
 google.golang.org/genproto/googleapis/api 
v0.0.0-20250324211829-b45e905df463/go.mod 
h1:U90ffi8eUL9MwPcrJylN5+Mk2v3vuPDptd5yyNUiRR8=
-google.golang.org/genproto/googleapis/rpc v0.0.0-20250707201910-8d1bb00bc6a7 
h1:pFyd6EwwL2TqFf8emdthzeX+gZE1ElRq3iM8pui4KBY=
-google.golang.org/genproto/googleapis/rpc 
v0.0.0-20250707201910-8d1bb00bc6a7/go.mod 
h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 
h1:fc6jSaCT0vBduLYZHYrBBNY4dsWuvgyff9noRNDdBeE=
+google.golang.org/genproto/googleapis/rpc 
v0.0.0-20250603155806-513f23925822/go.mod 
h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A=
 google.golang.org/grpc v1.73.0 h1:VIWSmpI2MegBtTuFt5/JWy2oXxtjJ/e89Z70ImfD2ok=
 google.golang.org/grpc v1.73.0/go.mod 
h1:50sbHOUqWoCQGI8V2HQLJM0B+LMlIUjNSZmow7EVBQc=
 google.golang.org/protobuf v1.36.6 
h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY=
 google.golang.org/protobuf v1.36.6/go.mod 
h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY=
 gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod 
h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
 gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod 
h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
-gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod 
h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
 gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c 
h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
 gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod 
h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
 gopkg.in/evanphx/json-patch.v4 v4.12.0 
h1:n6jtcsulIzXPJaxegRbvFNNrZDjbij7ny3gmSPG+6V4=
@@ -587,12 +574,15 @@
 gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc=
 gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw=
 gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod 
h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw=
+gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
 gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
 gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
+gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod 
h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+gopkg.in/yaml.v3 v3.0.0/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
 gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
 gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
-gotest.tools/v3 v3.5.1 h1:EENdUnS3pdur5nybKYIh2Vfgc8IUNBjxDPSjtiJcOzU=
-gotest.tools/v3 v3.5.1/go.mod h1:isy3WKz7GK6uNw/sbHzfKBLvlvXwUyV06n6brMxxopU=
+gotest.tools/v3 v3.5.2 h1:7koQfIKdy+I8UTetycgUqXWSDwpgv193Ka+qRsmBY8Q=
+gotest.tools/v3 v3.5.2/go.mod h1:LtdLGcnqToBH83WByAAi/wiwSFCArdFIUV/xxN4pcjA=
 helm.sh/helm/v3 v3.18.3 h1:+cvyGKgs7Jt7BN3Klmb4SsG4IkVpA7GAZVGvMz6VO4I=
 helm.sh/helm/v3 v3.18.3/go.mod h1:wUc4n3txYBocM7S9RjTeZBN9T/b5MjffpcSsWEjSIpw=
 k8s.io/api v0.33.2 h1:YgwIS5jKfA+BZg//OQhkJNIfie/kmRsO0BmNaVSimvY=
@@ -623,10 +613,10 @@
 sigs.k8s.io/controller-runtime v0.21.0/go.mod 
h1:OSg14+F65eWqIu4DceX7k/+QRAbTTvxeQSNSOQpukWM=
 sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8 
h1:gBQPwqORJ8d8/YNZWEjoZs7npUVDpVXUUOFfW6CgAqE=
 sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8/go.mod 
h1:mdzfpAEoE6DHQEN0uh9ZbOCuHbLK5wOm7dK4ctXE9Tg=
-sigs.k8s.io/kustomize/api v0.20.0 
h1:xPLqcobHI0bThyRUteO+nCV8G4d1Rlo5HafO57VRcas=
-sigs.k8s.io/kustomize/api v0.20.0/go.mod 
h1:F6CfaV27oevRCMJgehLqyX81dlUnRX/Fc13Uo7+OSo4=
-sigs.k8s.io/kustomize/kyaml v0.20.0 
h1:tT8KMKi4R3hCJ1+9HDdek2VoXpkerP92ZfF6fDgGw14=
-sigs.k8s.io/kustomize/kyaml v0.20.0/go.mod 
h1:0EmkQHRUsJxY8Ug9Niig1pUMSCGHxQ5RklbpV/Ri6po=
+sigs.k8s.io/kustomize/api v0.19.0 
h1:F+2HB2mU1MSiR9Hp1NEgoU2q9ItNOaBJl0I4Dlus5SQ=
+sigs.k8s.io/kustomize/api v0.19.0/go.mod 
h1:/BbwnivGVcBh1r+8m3tH1VNxJmHSk1PzP5fkP6lbL1o=
+sigs.k8s.io/kustomize/kyaml v0.19.0 
h1:RFge5qsO1uHhwJsu3ipV7RNolC7Uozc0jUBC/61XSlA=
+sigs.k8s.io/kustomize/kyaml v0.19.0/go.mod 
h1:FeKD5jEOH+FbZPpqUghBP8mrLjJ3+zD3/rf9NNu1cwY=
 sigs.k8s.io/randfill v0.0.0-20250304075658-069ef1bbf016/go.mod 
h1:XeLlZ/jmk4i1HRopwe7/aU3H5n1zNUcX6TM94b3QxOY=
 sigs.k8s.io/randfill v1.0.0 h1:JfjMILfT8A6RbawdsK2JXGBR5AQVfd+9TbzrlneTyrU=
 sigs.k8s.io/randfill v1.0.0/go.mod 
h1:XeLlZ/jmk4i1HRopwe7/aU3H5n1zNUcX6TM94b3QxOY=
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kubearmor-client-1.4.4/k8s/client.go 
new/kubearmor-client-1.4.5/k8s/client.go
--- old/kubearmor-client-1.4.4/k8s/client.go    2025-07-08 09:29:10.000000000 
+0200
+++ new/kubearmor-client-1.4.5/k8s/client.go    2025-11-13 10:46:41.000000000 
+0100
@@ -6,7 +6,7 @@
 
 import (
        "context"
-
+       "github.com/kubearmor/kubearmor-client/recommend/common"
        "github.com/rs/zerolog/log"
        apiextensionsclientset 
"k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset"
        v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@@ -102,3 +102,162 @@
        }
        return secret.Items[0].Name, secret.Items[0].Namespace
 }
+
+func (k *Client) ListObjects(o common.Options) ([]common.Object, error) {
+       labelSelector := v1.FormatLabelSelector(&v1.LabelSelector{MatchLabels: 
common.LabelArrayToLabelMap(o.Labels)})
+       if labelSelector == "<none>" {
+               labelSelector = ""
+       }
+       // CronJobs
+       cronJobs, err := 
k.K8sClientset.BatchV1().CronJobs(o.Namespace).List(context.Background(), 
v1.ListOptions{
+               LabelSelector: labelSelector,
+       })
+       if err != nil {
+               log.Error().Msgf("error listing cronjobs: %v", err)
+               return nil, err
+       }
+
+       // DaemonSets
+       daemonSets, err := 
k.K8sClientset.AppsV1().DaemonSets(o.Namespace).List(context.Background(), 
v1.ListOptions{
+               LabelSelector: labelSelector,
+       })
+       if err != nil {
+               log.Error().Msgf("error listing daemonsets: %v", err)
+               return nil, err
+       }
+
+       // Deployments
+       deployments, err := 
k.K8sClientset.AppsV1().Deployments(o.Namespace).List(context.Background(), 
v1.ListOptions{
+               LabelSelector: labelSelector,
+       })
+       if err != nil {
+               log.Error().Msgf("error listing deployments: %v", err)
+               return nil, err
+       }
+
+       // Jobs
+       jobs, err := 
k.K8sClientset.BatchV1().Jobs(o.Namespace).List(context.Background(), 
v1.ListOptions{
+               LabelSelector: labelSelector,
+       })
+       if err != nil {
+               log.Error().Msgf("error listing jobs: %v", err)
+               return nil, err
+       }
+
+       // ReplicaSets
+       replicaSets, err := 
k.K8sClientset.AppsV1().ReplicaSets(o.Namespace).List(context.Background(), 
v1.ListOptions{
+               LabelSelector: labelSelector,
+       })
+       if err != nil {
+               log.Error().Msgf("error listing replicasets: %v", err)
+               return nil, err
+       }
+
+       // StatefulSets
+       statefulSets, err := 
k.K8sClientset.AppsV1().StatefulSets(o.Namespace).List(context.Background(), 
v1.ListOptions{
+               LabelSelector: labelSelector,
+       })
+       if err != nil {
+               log.Error().Msgf("error listing statefulsets: %v", err)
+               return nil, err
+       }
+
+       var result []common.Object
+
+       for _, cj := range cronJobs.Items {
+               var images []string
+               for _, container := range 
cj.Spec.JobTemplate.Spec.Template.Spec.Containers {
+                       images = append(images, container.Image)
+               }
+
+               result = append(result, common.Object{
+                       Name:      cj.Name,
+                       Namespace: cj.Namespace,
+                       Labels:    cj.Spec.JobTemplate.Spec.Template.Labels,
+                       Images:    images,
+               })
+       }
+
+       for _, ds := range daemonSets.Items {
+               var images []string
+               for _, container := range ds.Spec.Template.Spec.Containers {
+                       images = append(images, container.Image)
+               }
+
+               result = append(result, common.Object{
+                       Name:      ds.Name,
+                       Namespace: ds.Namespace,
+                       Labels:    ds.Spec.Template.Labels,
+                       Images:    images,
+               })
+       }
+
+       for _, dp := range deployments.Items {
+               var images []string
+               for _, container := range dp.Spec.Template.Spec.Containers {
+                       images = append(images, container.Image)
+               }
+
+               result = append(result, common.Object{
+                       Name:      dp.Name,
+                       Namespace: dp.Namespace,
+                       Labels:    dp.Spec.Template.Labels,
+                       Images:    images,
+               })
+       }
+
+       for _, j := range jobs.Items {
+               var images []string
+               for _, container := range j.Spec.Template.Spec.Containers {
+                       images = append(images, container.Image)
+               }
+
+               result = append(result, common.Object{
+                       Name:      j.Name,
+                       Namespace: j.Namespace,
+                       Labels:    j.Spec.Template.Labels,
+                       Images:    images,
+               })
+       }
+
+       for _, rs := range replicaSets.Items {
+               isOwned := false
+               for _, owner := range rs.OwnerReferences {
+                       if owner.Kind == "Deployment" || owner.Kind == 
"StatefulSet" || owner.Kind == "DaemonSet" || owner.Kind == "ReplicaSet" {
+                               isOwned = true
+                               break
+                       }
+               }
+               if isOwned {
+                       continue
+               }
+
+               var images []string
+               for _, container := range rs.Spec.Template.Spec.Containers {
+                       images = append(images, container.Image)
+               }
+               result = append(result, common.Object{
+                       Name:      rs.Name,
+                       Namespace: rs.Namespace,
+                       Labels:    rs.Spec.Template.Labels,
+                       Images:    images,
+               })
+       }
+
+       for _, sts := range statefulSets.Items {
+               var images []string
+               for _, container := range sts.Spec.Template.Spec.Containers {
+                       images = append(images, container.Image)
+               }
+
+               result = append(result, common.Object{
+                       Name:      sts.Name,
+                       Namespace: sts.Namespace,
+                       Labels:    sts.Spec.Template.Labels,
+                       Images:    images,
+               })
+       }
+
+       log.Printf("+%v", result)
+       return result, nil
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kubearmor-client-1.4.4/log/logClient.go 
new/kubearmor-client-1.4.5/log/logClient.go
--- old/kubearmor-client-1.4.4/log/logClient.go 2025-07-08 09:29:10.000000000 
+0200
+++ new/kubearmor-client-1.4.5/log/logClient.go 2025-11-13 10:46:41.000000000 
+0100
@@ -450,6 +450,7 @@
                        "Operation",
                        "Action",
                        "Data",
+                       "EventData",
                        "Enforcer",
                        "Result",
                }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kubearmor-client-1.4.4/recommend/common/common.go 
new/kubearmor-client-1.4.5/recommend/common/common.go
--- old/kubearmor-client-1.4.4/recommend/common/common.go       2025-07-08 
09:29:10.000000000 +0200
+++ new/kubearmor-client-1.4.5/recommend/common/common.go       2025-11-13 
10:46:41.000000000 +0100
@@ -7,6 +7,7 @@
 import (
        "os"
        "runtime"
+       "strings"
 
        pol 
"github.com/kubearmor/KubeArmor/pkg/KubeArmorController/api/security.kubearmor.com/v1"
 )
@@ -14,6 +15,21 @@
 // Handler interface
 var Handler interface{}
 
+// LabelMap is an alias for map[string]string
+type LabelMap = map[string]string
+
+type Client interface {
+       ListObjects(o Options) ([]Object, error)
+}
+
+// Object contains brief information about a k8s object
+type Object struct {
+       Name      string
+       Namespace string
+       Labels    LabelMap
+       Images    []string
+}
+
 // MatchSpec spec to match for defining policy
 type MatchSpec struct {
        Name         string                  `json:"name" yaml:"name"`
@@ -46,6 +62,7 @@
        OutDir     string
        ReportFile string
        Config     string
+       K8s        bool
 }
 
 // UserHome function returns users home directory
@@ -59,3 +76,18 @@
        }
        return os.Getenv("HOME")
 }
+
+func labelSplitter(r rune) bool {
+       return r == ':' || r == '='
+}
+func LabelArrayToLabelMap(labels []string) LabelMap {
+       labelMap := LabelMap{}
+       for _, label := range labels {
+               kvPair := strings.FieldsFunc(label, labelSplitter)
+               if len(kvPair) != 2 {
+                       continue
+               }
+               labelMap[kvPair[0]] = kvPair[1]
+       }
+       return labelMap
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kubearmor-client-1.4.4/recommend/image/image.go 
new/kubearmor-client-1.4.5/recommend/image/image.go
--- old/kubearmor-client-1.4.4/recommend/image/image.go 2025-07-08 
09:29:10.000000000 +0200
+++ new/kubearmor-client-1.4.5/recommend/image/image.go 2025-11-13 
10:46:41.000000000 +0100
@@ -234,7 +234,11 @@
                }
        } else {
                // policy recommendation based on k8s manifest
-               policyDir = fmt.Sprintf("%s-%s", img.Namespace, img.Deployment)
+               if img.Namespace == "" {
+                       policyDir = fmt.Sprintf("%s", img.Deployment)
+               } else {
+                       policyDir = fmt.Sprintf("%s-%s", img.Namespace, 
img.Deployment)
+               }
        }
        return filepath.Join(outDir, policyDir)
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kubearmor-client-1.4.4/recommend/recommend.go 
new/kubearmor-client-1.4.5/recommend/recommend.go
--- old/kubearmor-client-1.4.4/recommend/recommend.go   2025-07-08 
09:29:10.000000000 +0200
+++ new/kubearmor-client-1.4.5/recommend/recommend.go   2025-11-13 
10:46:41.000000000 +0100
@@ -5,7 +5,6 @@
 package recommend
 
 import (
-       "context"
        "errors"
        "fmt"
        "os"
@@ -13,7 +12,6 @@
        "strings"
 
        "github.com/fatih/color"
-       "github.com/kubearmor/kubearmor-client/k8s"
        "github.com/kubearmor/kubearmor-client/recommend/common"
        "github.com/kubearmor/kubearmor-client/recommend/engines"
        "github.com/kubearmor/kubearmor-client/recommend/image"
@@ -22,49 +20,10 @@
        "sigs.k8s.io/yaml"
 
        log "github.com/sirupsen/logrus"
-       v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 )
 
 var options common.Options
 
-// Deployment contains brief information about a k8s deployment
-type Deployment struct {
-       Name      string
-       Namespace string
-       Labels    LabelMap
-       Images    []string
-}
-
-// LabelMap is an alias for map[string]string
-type LabelMap = map[string]string
-
-func labelSplitter(r rune) bool {
-       return r == ':' || r == '='
-}
-
-func labelArrayToLabelMap(labels []string) LabelMap {
-       labelMap := LabelMap{}
-       for _, label := range labels {
-               kvPair := strings.FieldsFunc(label, labelSplitter)
-               if len(kvPair) != 2 {
-                       continue
-               }
-               labelMap[kvPair[0]] = kvPair[1]
-       }
-       return labelMap
-}
-
-func matchLabels(filter, selector LabelMap) bool {
-       match := true
-       for k, v := range filter {
-               if selector[k] != v {
-                       match = false
-                       break
-               }
-       }
-       return match
-}
-
 func unique(s []string) []string {
        inResult := make(map[string]bool)
        var result []string
@@ -108,7 +67,7 @@
                log.WithError(err).Fatal("failed to read report file")
                return
        }
-       fmt.Println(string(data))
+       fmt.Println(strings.Trim(string(data), "\n"))
 }
 
 func writePolicyFile(policMap map[string][]byte, msMap map[string]interface{}) 
{
@@ -137,44 +96,26 @@
 }
 
 // Recommend handler for karmor cli tool
-func Recommend(c *k8s.Client, o common.Options, policyGenerators 
...engines.Engine) error {
+func Recommend(client common.Client, o common.Options, policyGenerators 
...engines.Engine) error {
        var policyMap map[string][]byte
        var msMap map[string]interface{}
        var err error
-       deployments := []Deployment{}
+       var Objects []common.Object
 
-       labelMap := labelArrayToLabelMap(o.Labels)
+       labelMap := common.LabelArrayToLabelMap(o.Labels)
        if len(o.Images) == 0 {
-               // recommendation based on k8s manifest
-               dps, err := 
c.K8sClientset.AppsV1().Deployments(o.Namespace).List(context.TODO(), 
v1.ListOptions{})
+               Objects, err = client.ListObjects(o)
                if err != nil {
                        return err
                }
-               for _, dp := range dps.Items {
-
-                       if !matchLabels(labelMap, dp.Spec.Template.Labels) {
-                               continue
-                       }
-                       images := []string{}
-                       for _, container := range 
dp.Spec.Template.Spec.Containers {
-                               images = append(images, container.Image)
-                       }
-
-                       deployments = append(deployments, Deployment{
-                               Name:      dp.Name,
-                               Namespace: dp.Namespace,
-                               Labels:    dp.Spec.Template.Labels,
-                               Images:    images,
-                       })
-               }
-               if len(deployments) == 0 {
+               if len(Objects) == 0 {
                        log.WithFields(log.Fields{
                                "namespace": o.Namespace,
-                       }).Error("no k8s deployments found, hence nothing to 
recommend!")
+                       }).Error("no Object found to secure, hence nothing to 
recommend!")
                        return nil
                }
        } else {
-               deployments = append(deployments, Deployment{
+               Objects = append(Objects, common.Object{
                        Namespace: o.Namespace,
                        Labels:    labelMap,
                        Images:    o.Images,
@@ -196,14 +137,14 @@
                if err := gen.Init(); err != nil {
                        log.WithError(err).Error("policy generator init failed")
                }
-               for _, deployment := range deployments {
-                       for _, i := range deployment.Images {
+               for _, obj := range Objects {
+                       for _, v := range obj.Images {
                                img := image.Info{
-                                       Name:       i,
-                                       Namespace:  deployment.Namespace,
-                                       Labels:     deployment.Labels,
-                                       Image:      i,
-                                       Deployment: deployment.Name,
+                                       Name:       v,
+                                       Namespace:  obj.Namespace,
+                                       Labels:     obj.Labels,
+                                       Image:      v,
+                                       Deployment: obj.Name,
                                }
                                reg.Analyze(&img)
                                if policyMap, msMap, err = gen.Scan(&img, o); 
err != nil {

++++++ kubearmor-client.obsinfo ++++++
--- /var/tmp/diff_new_pack.BCDkFq/_old  2025-11-21 16:56:18.517425493 +0100
+++ /var/tmp/diff_new_pack.BCDkFq/_new  2025-11-21 16:56:18.525425830 +0100
@@ -1,5 +1,5 @@
 name: kubearmor-client
-version: 1.4.4
-mtime: 1751959750
-commit: 05c25322be6a2f44fbbe0e4a22b5aa62e6ad094a
+version: 1.4.5
+mtime: 1763027201
+commit: f2ed4970aad4c729c8be2df27e2bf8eb504fcafc
 

++++++ vendor.tar.gz ++++++
/work/SRC/openSUSE:Factory/kubearmor-client/vendor.tar.gz 
/work/SRC/openSUSE:Factory/.kubearmor-client.new.2061/vendor.tar.gz differ: 
char 106, line 1

Reply via email to