From aaea3731034f3af58ea94f0983e87a6da320ffad Mon Sep 17 00:00:00 2001 From: TheDiveO Date: Tue, 19 Mar 2024 14:56:20 +0100 Subject: [PATCH 1/6] ci: chore: bump up alpine, golang build deps Signed-off-by: TheDiveO --- deployments/lxkns/Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/deployments/lxkns/Dockerfile b/deployments/lxkns/Dockerfile index 42cedf7..b3e62ce 100644 --- a/deployments/lxkns/Dockerfile +++ b/deployments/lxkns/Dockerfile @@ -15,8 +15,8 @@ # repository's root directory. ARG ALPINE_VERSION=3.19 -ARG ALPINE_PATCH=0 -ARG GO_VERSION=1.21.6 +ARG ALPINE_PATCH=1 +ARG GO_VERSION=1.21.8 ARG NODE_VERSION=21 # 0th stage: https://github.com/tonistiigi/xx/blob/master/README.md From 1c19b007c7796cceeb1e36d050ec8e5dc78a8742 Mon Sep 17 00:00:00 2001 From: thediveo Date: Sat, 22 Jun 2024 18:31:45 +0200 Subject: [PATCH 2/6] test: fix expected user/pid tree Signed-off-by: thediveo --- cmd/lspidns/main_test.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cmd/lspidns/main_test.go b/cmd/lspidns/main_test.go index b54a29d..3b62a14 100644 --- a/cmd/lspidns/main_test.go +++ b/cmd/lspidns/main_test.go @@ -93,11 +93,11 @@ read pidnsid.Ino))) }) - It("CLI w/o args renders pid tree", func() { + It("CLI -u renders user/pid tree", func() { os.Args = append(os.Args[:1], "-u") out := getstdout.Stdouterr(main) Expect(out).To(MatchRegexp(fmt.Sprintf(`(?m)^user:\[%d\] process .* -└─ pid:\[%d\] process .*$`, +[├└]─ pid:\[%d\] process .*$`, initusernsid.Ino, initpidnsid.Ino))) Expect(out).To(MatchRegexp(fmt.Sprintf(`(?m)^ [├└]─ user:\[%d\] process .* [│ ] [├└]─ pid:\[%d\] process .*$`, From 3ff167ce2a6664c2e7b10165d00f1413de163c12 Mon Sep 17 00:00:00 2001 From: thediveo Date: Sat, 22 Jun 2024 18:49:33 +0200 Subject: [PATCH 3/6] test: refactor cri test to use morbyd Signed-off-by: thediveo --- decorator/kuhbernetes/cri/decorator_test.go | 78 ++++++++++----------- 1 file changed, 37 insertions(+), 41 deletions(-) diff --git a/decorator/kuhbernetes/cri/decorator_test.go b/decorator/kuhbernetes/cri/decorator_test.go index 2e2e4c8..ee35f03 100644 --- a/decorator/kuhbernetes/cri/decorator_test.go +++ b/decorator/kuhbernetes/cri/decorator_test.go @@ -17,18 +17,20 @@ package cri import ( "context" "fmt" - "io" "os" "strings" "time" "github.com/google/uuid" - "github.com/ory/dockertest/v3" - "github.com/ory/dockertest/v3/docker" "github.com/thediveo/lxkns/containerizer/whalefriend" "github.com/thediveo/lxkns/decorator/kuhbernetes" "github.com/thediveo/lxkns/model" "github.com/thediveo/lxkns/test/matcher" + "github.com/thediveo/morbyd" + "github.com/thediveo/morbyd/build" + "github.com/thediveo/morbyd/run" + "github.com/thediveo/morbyd/session" + "github.com/thediveo/morbyd/timestamper" criengine "github.com/thediveo/whalewatcher/engineclient/cri" "github.com/thediveo/whalewatcher/engineclient/cri/test/img" "github.com/thediveo/whalewatcher/test" @@ -62,7 +64,8 @@ var _ = Describe("k8s (CRI) pods", Ordered, func() { }) }) - var providerCntr *dockertest.Resource + var sess *morbyd.Session + var providerCntr *morbyd.Container var cricl *criengine.Client // We build and use the same Docker container for testing our CRI event API @@ -74,9 +77,13 @@ var _ = Describe("k8s (CRI) pods", Ordered, func() { Skip("needs root") } + By("creating a new Docker session for testing") + sess = Successful(morbyd.NewSession(ctx, session.WithAutoCleaning("lxkns.test=cri"))) + DeferCleanup(func(ctx context.Context) { + sess.Close(ctx) + }) + By("spinning up a Docker container with CRI API providers, courtesy of the KinD k8s sig") - pool := Successful(dockertest.NewPool("unix:///var/run/docker.sock")) - _ = pool.RemoveContainerByName(kindischName) // The necessary container start arguments come from KinD's Docker node // provisioner, see: // https://github.com/kubernetes-sigs/kind/blob/3610f606516ccaa88aa098465d8c13af70937050/pkg/cluster/internal/providers/docker/provision.go#L133 @@ -97,46 +104,35 @@ var _ = Describe("k8s (CRI) pods", Ordered, func() { // --volume /var // --volume /lib/modules:/lib/modules:ro // kindisch-... - Expect(pool.Client.BuildImage(docker.BuildImageOptions{ - Name: img.Name, - ContextDir: "./test/_kindisch", // sorry, couldn't resist the pun. - Dockerfile: "Dockerfile", - BuildArgs: []docker.BuildArg{ - {Name: "KINDEST_BASE_TAG", Value: test.KindestBaseImageTag}, - }, - OutputStream: io.Discard, - })).To(Succeed()) - providerCntr = Successful(pool.RunWithOptions( - &dockertest.RunOptions{ - Name: kindischName, - Repository: img.Name, - Privileged: true, - Mounts: []string{ - "/var", - "/dev/mapper:/dev/mapper", - "/lib/modules:/lib/modules:ro", - }, - }, func(hc *docker.HostConfig) { - hc.Init = false - hc.Tmpfs = map[string]string{ - "/tmp": "", - "/run": "", - } - hc.Devices = []docker.Device{ - {PathOnHost: "/dev/fuse"}, - } - })) - DeferCleanup(func() { - By("removing the CRI API providers Docker container") - Expect(pool.Purge(providerCntr)).To(Succeed()) + Expect(sess.BuildImage(ctx, "./test/_kindisch", + build.WithTag(img.Name), + build.WithBuildArg("KINDEST_BASE_TAG="+test.KindestBaseImageTag), + build.WithOutput(timestamper.New(GinkgoWriter)))). + Error().NotTo(HaveOccurred()) + providerCntr = Successful(sess.Run(ctx, img.Name, + run.WithName(kindischName), + run.WithAutoRemove(), + run.WithPrivileged(), + run.WithSecurityOpt("label=disable"), + run.WithCgroupnsMode("private"), + run.WithVolume("/var"), + run.WithVolume("/dev/mapper:/dev/mapper"), + run.WithVolume("/lib/modules:/lib/modules:ro"), + run.WithTmpfs("/tmp"), + run.WithTmpfs("/run"), + run.WithDevice("/dev/fuse"), + run.WithCombinedOutput(timestamper.New(GinkgoWriter)))) + DeferCleanup(func(ctx context.Context) { + By("removing the test container") + providerCntr.Kill(ctx) }) By("waiting for the CRI API provider to become responsive") - Expect(providerCntr.Container.State.Pid).NotTo(BeZero()) + pid := Successful(providerCntr.PID(ctx)) // apipath must not include absolute symbolic links, but already be // properly resolved. endpoint := fmt.Sprintf("/proc/%d/root%s", - providerCntr.Container.State.Pid, "/run/containerd/containerd.sock") + pid, "/run/containerd/containerd.sock") Eventually(func() error { var err error cricl, err = criengine.New(endpoint, criengine.WithTimeout(1*time.Second)) @@ -154,7 +150,7 @@ var _ = Describe("k8s (CRI) pods", Ordered, func() { defer cancel() criw := watcher.New(criengine.NewCRIWatcher( Successful(criengine.New(strings.TrimPrefix(cricl.Address(), "unix://"))), - criengine.WithPID(providerCntr.Container.State.Pid)), nil) + criengine.WithPID(Successful(providerCntr.PID(ctx)))), nil) cizer := whalefriend.New(ctx, []watcher.Watcher{criw}) defer cizer.Close() Eventually(criw.Ready()).Within(5 * time.Second).Should(BeClosed()) From cc3448a873f59b0477377a40a5afda403e2da719 Mon Sep 17 00:00:00 2001 From: thediveo Date: Sat, 22 Jun 2024 18:57:35 +0200 Subject: [PATCH 4/6] feat: socketino-to-PIDs discovery Signed-off-by: thediveo --- api/types/discovery_test.go | 4 ++- defs_version.go | 2 +- discover/discover.go | 11 ++++++ discover/discovery_fd.go | 63 +++++++++++++++++++++++++++++------ discover/discovery_fd_test.go | 32 +++++++++++++++--- discover/discovery_opt.go | 31 ++++++++++++----- plural/plural.go | 1 + 7 files changed, 117 insertions(+), 27 deletions(-) diff --git a/api/types/discovery_test.go b/api/types/discovery_test.go index dc81ed7..8272a50 100644 --- a/api/types/discovery_test.go +++ b/api/types/discovery_test.go @@ -17,9 +17,10 @@ package types import ( "encoding/json" + "github.com/thediveo/lxkns/model" + . "github.com/onsi/ginkgo/v2" . "github.com/onsi/gomega" - "github.com/thediveo/lxkns/model" . "github.com/thediveo/lxkns/nstest/gmodel" ) @@ -38,6 +39,7 @@ var _ = Describe("discovery result JSON", func() { "with-ownership": true, "with-freezer": true, "with-mounts": true, + "with-socket-processes": false, "labels": {}, "scanned-namespace-types": [ "time", diff --git a/defs_version.go b/defs_version.go index bdc4958..778e21f 100644 --- a/defs_version.go +++ b/defs_version.go @@ -4,4 +4,4 @@ package lxkns // SemVersion is the semantic version string of the lxkns module. -const SemVersion = "0.32.2-2-g6776f8e" +const SemVersion = "0.32.4-10-g3ff167c" diff --git a/discover/discover.go b/discover/discover.go index ae93353..7ad9bce 100644 --- a/discover/discover.go +++ b/discover/discover.go @@ -42,8 +42,19 @@ type Result struct { PIDMap model.PIDMapper `json:"-"` // optional PID translator. Mounts NamespacedMountPathMap // per mount-namespace mount paths and mount points. Containers model.Containers // all alive containers found + SocketProcessMap SocketProcesses // optional socket inode number to process(es) mapping } +// SocketProcesses maps socket inode numbers to processes that have open file +// descriptors for specific sockets. +// +// As it turned out over time, there are multiple lxkns API users that otherwise +// repeatedly scan the open file descriptors of processes for sockets in order +// to gather their inode numbers, so in the sense of DRY we offer this +// information with a single scan we need to do anyway in case discovering +// network namespaces from sockets. +type SocketProcesses map[uint64][]model.PIDType + // SortNamespaces returns a sorted copy of a list of namespaces. The // namespaces are sorted by their namespace ids in ascending order. func SortNamespaces(nslist []model.Namespace) []model.Namespace { diff --git a/discover/discovery_fd.go b/discover/discovery_fd.go index 8756419..3383f98 100644 --- a/discover/discovery_fd.go +++ b/discover/discovery_fd.go @@ -35,22 +35,40 @@ import ( "golang.org/x/sys/unix" ) -// discoverFromFd discovers namespaces from process file descriptors referencing -// them either directly or via socket fds. Since file descriptors are per -// process only, but not per task/thread, it sufficies to only iterate the -// process fd entries, leaving out the copies in the task fd entries. +// discoverFromFd discovers (1) namespaces from open file descriptors +// referencing them either directly or sockets that are attached to them, as +// well as (2) the socket-to-processes mapping in a single run. This way we +// avoid DRY of repeated open fd socket scanning. +// +// Please note that scanning file descriptors for namespaces and sockets +// automatically opts into discovering the socket-to-processes mapping, as this +// is a byproduct anyway. +// +// Since file descriptors are per process only, but not per task/thread, it +// sufficies to only iterate the process fd entries, leaving out the copies in +// the task fd entries. func discoverFromFd(t species.NamespaceType, procfs string, result *Result) { - if !result.Options.ScanFds { - log.Infof("skipping discovery of fd-referenced namespaces") + if !result.Options.ScanFds && !result.Options.DiscoverSocketProcesses { + log.Infof("skipping discovery of fd-referenced namespaces and socket processes") return } - log.Debugf("discovering fd-referenced namespaces...") + switch { + case result.Options.ScanFds: + log.Debugf("discovering fd-referenced namespaces and socket processes...") + default: + log.Debugf("discovering socket processes...") + } scanFd(t, procfs, false, result) } +const socketPrefix = "socket:[" +const socketPrefixLen = len(socketPrefix) + // namespaceFromFd is discoverFromFd with special test harness handling enabled // or disabled. func scanFd(_ species.NamespaceType, procfs string, fakeprocfs bool, result *Result) { + result.SocketProcessMap = SocketProcesses{} + scanFds := result.Options.ScanFds // Iterate over all known processes, and then over all of their open file // descriptors. The /proc filesystem will give us the required // information. @@ -98,9 +116,27 @@ func scanFd(_ species.NamespaceType, procfs string, fakeprocfs bool, result *Res } var nsid species.NamespaceID var nstype species.NamespaceType - if strings.HasPrefix(fdtarget, "socket:[") { - // It's a socket ... and we want to query it using an ioctl for - // the network namespace it is connected to. + if strings.HasPrefix(fdtarget, socketPrefix) { + // It's a socket so we note down the relationship between the + // socket's inode number and this process in any case, as this + // is a byproduct of trying to find the socket's network + // namespace. + l := len(fdtarget) + if l <= socketPrefixLen { + continue + } + ino, err := strconv.ParseUint(fdtarget[8:l-1], 10, 64) + if err != nil { + continue + } + result.SocketProcessMap[ino] = append(result.SocketProcessMap[ino], pid) + if !scanFds { + continue + } + // So the calling explorer really wants to discover network + // namespaces from sockets. If we haven't done yet for this + // process, get a PID fd so we can later duplicate the + // processes's fd into our process for further inspection. if pidfd <= 0 { pidfd, err = unix.PidfdOpen(int(pid), 0) if err != nil { @@ -108,6 +144,8 @@ func scanFd(_ species.NamespaceType, procfs string, fakeprocfs bool, result *Res } } nsid, nstype = namespaceOfSocket(pidfd, fdentry.Name()) + } else if !scanFds { + continue } else { nsid, nstype = namespaceFromLink(procfdpath, fdtarget, fakeprocfs) } @@ -138,7 +176,10 @@ func scanFd(_ species.NamespaceType, procfs string, fakeprocfs bool, result *Res pidfd = 0 } } - log.Infof("discovered %s", plural.Elements(total, "fd-referenced namespaces")) + if result.Options.ScanFds { + log.Infof("discovered %s", plural.Elements(total, "fd-referenced namespaces")) + } + log.Infof("discovered %s", plural.Elements(len(result.SocketProcessMap), "sockets")) } // namespaceOfSocket returns the network namespace a particular socket fd (of diff --git a/discover/discovery_fd_test.go b/discover/discovery_fd_test.go index 24a8e31..5251400 100644 --- a/discover/discovery_fd_test.go +++ b/discover/discovery_fd_test.go @@ -16,6 +16,7 @@ package discover import ( "os" + "sync" "time" "github.com/thediveo/lxkns/model" @@ -29,7 +30,7 @@ import ( . "github.com/onsi/gomega" . "github.com/onsi/gomega/gleak" . "github.com/thediveo/fdooze" - . "github.com/thediveo/once" + . "github.com/thediveo/success" ) var _ = Describe("Discover from fds", func() { @@ -105,8 +106,8 @@ read # wait for test to proceed() By("creating a transient new network namespace we only keep a socket connected to") netnsFd := netns.NewTransient() - closeOnceNetnsFd := Once(func() { unix.Close(netnsFd) }) - defer closeOnceNetnsFd.Do() + closeNetnsFd := sync.OnceFunc(func() { unix.Close(netnsFd) }) + defer closeNetnsFd() netnsino := netns.Ino(netnsFd) @@ -114,11 +115,32 @@ read # wait for test to proceed() defer nlh.Close() By("keeping only a socket as the last reference to the transient network namespace") - closeOnceNetnsFd.Do() + closeNetnsFd() By("discovering the transient network namespace from the RTNETLINK socket") allns := Namespaces(FromFds()) - Expect(allns.Namespaces[model.NetNS]).To(HaveKey(species.NamespaceIDfromInode(netnsino))) + Expect(allns.Namespaces[model.NetNS]).To( + HaveKey(species.NamespaceIDfromInode(netnsino))) + }) + + It("discovers the socket-to-process mapping", func() { + if os.Getuid() != 0 { + Skip("needs root") + } + + sockfd := Successful(unix.Socket(unix.AF_INET, unix.SOCK_DGRAM, 0)) + defer unix.Close(sockfd) + var sockstat unix.Stat_t + Expect(unix.Fstat(sockfd, &sockstat)).To(Succeed()) + + By("requesting scanning fds for socket network namespaces") + allns := Namespaces(FromFds()) + Expect(allns.SocketProcessMap).To(HaveKeyWithValue( + sockstat.Ino, ConsistOf(model.PIDType(os.Getpid())))) + + allns = Namespaces(WithSocketProcesses()) + Expect(allns.SocketProcessMap).To(HaveKeyWithValue( + sockstat.Ino, ConsistOf(model.PIDType(os.Getpid())))) }) }) diff --git a/discover/discovery_opt.go b/discover/discovery_opt.go index a8f8ca1..2a8a782 100644 --- a/discover/discovery_opt.go +++ b/discover/discovery_opt.go @@ -32,15 +32,16 @@ type DiscoverOpts struct { // If zero, defaults to discovering all namespaces. NamespaceTypes species.NamespaceType `json:"-"` - ScanProcs bool `json:"from-procs"` // Scan processes for attached namespaces. - ScanTasks bool `json:"from-tasks"` // Scan all tasks for attached namespaces. - ScanFds bool `json:"from-fds"` // Scan open file descriptors for namespaces. - ScanBindmounts bool `json:"from-bindmounts"` // Scan bind-mounts for namespaces. - DiscoverHierarchy bool `json:"with-hierarchy"` // Discover the hierarchy of PID and user namespaces. - DiscoverOwnership bool `json:"with-ownership"` // Discover the ownership of non-user namespaces. - DiscoverFreezerState bool `json:"with-freezer"` // Discover the cgroup freezer state of processes. - DiscoverMounts bool `json:"with-mounts"` // Discover mount point hierarchy with mount paths and visibility. - Labels map[string]string `json:"labels"` // Pass options (in form of labels) to decorators + ScanProcs bool `json:"from-procs"` // Scan processes for attached namespaces. + ScanTasks bool `json:"from-tasks"` // Scan all tasks for attached namespaces. + ScanFds bool `json:"from-fds"` // Scan open file descriptors for namespaces. + ScanBindmounts bool `json:"from-bindmounts"` // Scan bind-mounts for namespaces. + DiscoverHierarchy bool `json:"with-hierarchy"` // Discover the hierarchy of PID and user namespaces. + DiscoverOwnership bool `json:"with-ownership"` // Discover the ownership of non-user namespaces. + DiscoverFreezerState bool `json:"with-freezer"` // Discover the cgroup freezer state of processes. + DiscoverMounts bool `json:"with-mounts"` // Discover mount point hierarchy with mount paths and visibility. + DiscoverSocketProcesses bool `json:"with-socket-processes"` // Discover the processes related to specific socket inode numbers. + Labels map[string]string `json:"labels"` // Pass options (in form of labels) to decorators Containerizer containerizer.Containerizer `json:"-"` // Discover containers using containerizer. @@ -186,6 +187,18 @@ func WithoutMounts() DiscoveryOption { return func(o *DiscoverOpts) { o.DiscoverMounts = false } } +// WithSocketProcesses opts to find the relationship between socket inode +// numbers and process PIDs. +func WithSocketProcesses() DiscoveryOption { + return func(o *DiscoverOpts) { o.DiscoverSocketProcesses = true } +} + +// WithoutSocketProcesses opts out of finding the relationship between socket +// inode numbers and process PIDs. +func WithoutSocketProcesses() DiscoveryOption { + return func(o *DiscoverOpts) { o.DiscoverSocketProcesses = false } +} + // WithLabel adds a key-value pair to the discovery options. func WithLabel(key, value string) DiscoveryOption { return func(o *DiscoverOpts) { diff --git a/plural/plural.go b/plural/plural.go index cd845f0..2c58462 100644 --- a/plural/plural.go +++ b/plural/plural.go @@ -47,6 +47,7 @@ var elements = [...]element{ {"mount point", "mount points"}, {"pod", "pods"}, {"process", "processes"}, + {"socket", "sockets"}, } func init() { From 2665afdc98db760359fd89d5b1d4891f4b364cbf Mon Sep 17 00:00:00 2001 From: thediveo Date: Sat, 22 Jun 2024 19:13:54 +0200 Subject: [PATCH 5/6] chore: bump up base image refs Signed-off-by: thediveo --- deployments/lxkns/Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/deployments/lxkns/Dockerfile b/deployments/lxkns/Dockerfile index b3e62ce..0ce305b 100644 --- a/deployments/lxkns/Dockerfile +++ b/deployments/lxkns/Dockerfile @@ -14,9 +14,9 @@ # done executing "make deploy" with the current working directory set to this # repository's root directory. -ARG ALPINE_VERSION=3.19 +ARG ALPINE_VERSION=3.20 ARG ALPINE_PATCH=1 -ARG GO_VERSION=1.21.8 +ARG GO_VERSION=1.22.4 ARG NODE_VERSION=21 # 0th stage: https://github.com/tonistiigi/xx/blob/master/README.md From 11f12e75bf3c10beeb7b19d94b729e48ab53fcf3 Mon Sep 17 00:00:00 2001 From: thediveo Date: Sat, 22 Jun 2024 19:23:09 +0200 Subject: [PATCH 6/6] chore: go deps Signed-off-by: thediveo --- go.mod | 52 +++++++++++++------------- go.sum | 113 +++++++++++++++++++++++++++++---------------------------- 2 files changed, 83 insertions(+), 82 deletions(-) diff --git a/go.mod b/go.mod index fecaf79..1a7ec05 100644 --- a/go.mod +++ b/go.mod @@ -4,34 +4,34 @@ go 1.21 require ( github.com/PaesslerAG/jsonpath v0.1.1 - github.com/containerd/containerd v1.7.14 - github.com/getkin/kin-openapi v0.123.0 + github.com/containerd/containerd v1.7.18 + github.com/getkin/kin-openapi v0.125.0 github.com/gorilla/mux v1.8.1 github.com/muesli/termenv v0.15.2 - github.com/onsi/ginkgo/v2 v2.17.0 - github.com/onsi/gomega v1.32.0 + github.com/onsi/ginkgo/v2 v2.19.0 + github.com/onsi/gomega v1.33.1 github.com/ory/dockertest/v3 v3.10.0 github.com/siemens/turtlefinder v1.1.3 github.com/sirupsen/logrus v1.9.3 - github.com/spf13/cobra v1.8.0 + github.com/spf13/cobra v1.8.1 github.com/thediveo/enumflag/v2 v2.0.5 github.com/thediveo/fdooze v0.3.1 github.com/thediveo/go-asciitree v1.0.1 github.com/thediveo/go-mntinfo v1.0.2 github.com/thediveo/ioctl v0.9.3 github.com/thediveo/klo v1.0.3 - github.com/thediveo/morbyd v0.10.0 + github.com/thediveo/morbyd v0.11.1 github.com/thediveo/namspill v0.1.6 github.com/thediveo/notwork v1.5.0 github.com/thediveo/procfsroot v1.0.1 github.com/thediveo/spaserve v1.0.2 github.com/thediveo/success v1.0.2 github.com/thediveo/testbasher v1.0.8 - github.com/thediveo/whalewatcher v0.11.2 - golang.org/x/sys v0.18.0 - golang.org/x/text v0.14.0 + github.com/thediveo/whalewatcher v0.11.3 + golang.org/x/sys v0.21.0 + golang.org/x/text v0.16.0 gopkg.in/yaml.v3 v3.0.1 - k8s.io/cri-api v0.29.3 + k8s.io/cri-api v0.29.6 ) require ( @@ -40,6 +40,7 @@ require ( github.com/AdamKorcz/go-118-fuzz-build v0.0.0-20231105174938-2b5cbb29f3e2 // indirect github.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect github.com/cespare/xxhash/v2 v2.2.0 // indirect + github.com/containerd/errdefs v0.1.0 // indirect github.com/containerd/log v0.1.0 // indirect github.com/containerd/typeurl/v2 v2.1.1 // indirect github.com/distribution/reference v0.5.0 // indirect @@ -47,12 +48,13 @@ require ( github.com/go-logr/logr v1.4.1 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/go-sql-driver/mysql v1.7.0 // indirect - github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 // indirect + github.com/go-task/slim-sprig/v3 v3.0.0 // indirect github.com/go-test/deep v1.1.0 // indirect - github.com/google/pprof v0.0.0-20230602150820-91b7bce49751 // indirect + github.com/google/pprof v0.0.0-20240424215950-a892ee059fd6 // indirect github.com/invopop/yaml v0.2.0 // indirect github.com/josharian/intern v1.0.0 // indirect - github.com/moby/buildkit v0.12.5 // indirect + github.com/moby/buildkit v0.13.2 // indirect + github.com/moby/docker-image-spec v1.3.1 // indirect github.com/moby/patternmatcher v0.6.0 // indirect github.com/moby/sys/sequential v0.5.0 // indirect github.com/moby/sys/user v0.1.0 // indirect @@ -64,24 +66,23 @@ require ( go.opentelemetry.io/otel/metric v1.22.0 // indirect go.opentelemetry.io/otel/trace v1.22.0 // indirect go.uber.org/goleak v1.2.1 // indirect - golang.org/x/mod v0.16.0 // indirect - golang.org/x/tools v0.19.0 // indirect + golang.org/x/tools v0.22.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20240123012728-ef4313101c80 // indirect ) require ( github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161 // indirect - github.com/Microsoft/go-winio v0.6.1 // indirect - github.com/Microsoft/hcsshim v0.11.4 // indirect + github.com/Microsoft/go-winio v0.6.2 // indirect + github.com/Microsoft/hcsshim v0.11.5 // indirect github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5 // indirect github.com/PaesslerAG/gval v1.0.0 // indirect - github.com/cenkalti/backoff/v4 v4.2.1 // indirect + github.com/cenkalti/backoff/v4 v4.3.0 // indirect github.com/containerd/cgroups v1.1.0 // indirect github.com/containerd/continuity v0.4.3 // indirect github.com/containerd/fifo v1.1.0 // indirect - github.com/containerd/ttrpc v1.2.3 // indirect + github.com/containerd/ttrpc v1.2.4 // indirect github.com/docker/cli v25.0.4+incompatible // indirect - github.com/docker/docker v25.0.3+incompatible // indirect + github.com/docker/docker v26.1.1+incompatible // indirect github.com/docker/go-connections v0.5.0 // indirect github.com/docker/go-events v0.0.0-20190806004212-e31b211e4f1c // indirect github.com/docker/go-units v0.5.0 // indirect @@ -118,18 +119,17 @@ require ( github.com/spf13/pflag v1.0.5 // indirect github.com/thediveo/caps v0.10.1 github.com/thediveo/go-plugger/v3 v3.1.0 - github.com/thediveo/once v0.9.1 github.com/vishvananda/netlink v1.2.1-beta.2.0.20240223175432-6ab7f5a3765c // indirect - github.com/vishvananda/netns v0.0.0-20210104183010-2eb08e3e575f // indirect + github.com/vishvananda/netns v0.0.4 // indirect github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb // indirect github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 // indirect github.com/xeipuuv/gojsonschema v1.2.0 // indirect go.opencensus.io v0.24.0 // indirect - golang.org/x/exp v0.0.0-20240318143956-a85f2c67cd81 - golang.org/x/net v0.22.0 // indirect - golang.org/x/sync v0.6.0 // indirect + golang.org/x/exp v0.0.0-20240613232115-7f521ea00fb8 + golang.org/x/net v0.26.0 // indirect + golang.org/x/sync v0.7.0 // indirect google.golang.org/genproto v0.0.0-20240123012728-ef4313101c80 // indirect - google.golang.org/grpc v1.62.0 // indirect + google.golang.org/grpc v1.62.1 // indirect google.golang.org/protobuf v1.33.0 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect k8s.io/client-go v0.28.3 // indirect diff --git a/go.sum b/go.sum index f963a70..b901d93 100644 --- a/go.sum +++ b/go.sum @@ -8,10 +8,10 @@ github.com/AdamKorcz/go-118-fuzz-build v0.0.0-20231105174938-2b5cbb29f3e2/go.mod github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161 h1:L/gRVlceqvL25UVaW/CKtUDjefjrs0SPonmDGUVOYP0= github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= -github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow= -github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM= -github.com/Microsoft/hcsshim v0.11.4 h1:68vKo2VN8DE9AdN4tnkWnmdhqdbpUFM8OF3Airm7fz8= -github.com/Microsoft/hcsshim v0.11.4/go.mod h1:smjE4dvqPX9Zldna+t5FG3rnoHhaB7QYxPRqGcpAD9w= +github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= +github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= +github.com/Microsoft/hcsshim v0.11.5 h1:haEcLNpj9Ka1gd3B3tAEs9CpE0c+1IhoL59w/exYU38= +github.com/Microsoft/hcsshim v0.11.5/go.mod h1:MV8xMfmECjl5HdO7U/3/hFVnkmSBjAjmA09d4bExKcU= github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5 h1:TngWCqHvy9oXAN6lEVMRuU21PR1EtLVZJmdB18Gu3Rw= github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5/go.mod h1:lmUJ/7eu/Q8D7ML55dXQrVaamCz2vxCfdQBasLZfHKk= github.com/PaesslerAG/gval v1.0.0 h1:GEKnRwkWDdf9dOmKcNrar9EA1bz1z9DqPIO1+iLzhd8= @@ -25,8 +25,8 @@ github.com/andybalholm/cascadia v1.3.1 h1:nhxRkql1kdYCc8Snf7D5/D3spOX+dBgjA6u8x0 github.com/andybalholm/cascadia v1.3.1/go.mod h1:R4bJ1UQfqADjvDa4P6HZHLh/3OxWWEqc0Sk8XGwHqvA= github.com/aymanbagabas/go-osc52/v2 v2.0.1 h1:HwpRHbFMcZLEVr42D4p7XBqjyuxQH5SMiErDT4WkJ2k= github.com/aymanbagabas/go-osc52/v2 v2.0.1/go.mod h1:uYgXzlJ7ZpABp8OJ+exZzJJhRNQ2ASbcXHWsFqH8hp8= -github.com/cenkalti/backoff/v4 v4.2.1 h1:y4OZtCnogmCPw98Zjyt5a6+QwPLGkiQsYW5oUqylYbM= -github.com/cenkalti/backoff/v4 v4.2.1/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= +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/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44= github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= @@ -34,19 +34,21 @@ github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDk github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/containerd/cgroups v1.1.0 h1:v8rEWFl6EoqHB+swVNjVoCJE8o3jX7e8nqBGPLaDFBM= github.com/containerd/cgroups v1.1.0/go.mod h1:6ppBcbh/NOOUU+dMKrykgaBnK9lCIBxHqJDGwsa1mIw= -github.com/containerd/containerd v1.7.14 h1:H/XLzbnGuenZEGK+v0RkwTdv2u1QFAruMe5N0GNPJwA= -github.com/containerd/containerd v1.7.14/go.mod h1:YMC9Qt5yzNqXx/fO4j/5yYVIHXSRrlB3H7sxkUTvspg= +github.com/containerd/containerd v1.7.18 h1:jqjZTQNfXGoEaZdW1WwPU0RqSn1Bm2Ay/KJPUuO8nao= +github.com/containerd/containerd v1.7.18/go.mod h1:IYEk9/IO6wAPUz2bCMVUbsfXjzw5UNP5fLz4PsUygQ4= github.com/containerd/continuity v0.4.3 h1:6HVkalIp+2u1ZLH1J/pYX2oBVXlJZvh1X1A7bEZ9Su8= github.com/containerd/continuity v0.4.3/go.mod h1:F6PTNCKepoxEaXLQp3wDAjygEnImnZ/7o4JzpodfroQ= +github.com/containerd/errdefs v0.1.0 h1:m0wCRBiu1WJT/Fr+iOoQHMQS/eP5myQ8lCv4Dz5ZURM= +github.com/containerd/errdefs v0.1.0/go.mod h1:YgWiiHtLmSeBrvpw+UfPijzbLaB77mEG1WwJTDETIV0= github.com/containerd/fifo v1.1.0 h1:4I2mbh5stb1u6ycIABlBw9zgtlK8viPI9QkQNRQEEmY= github.com/containerd/fifo v1.1.0/go.mod h1:bmC4NWMbXlt2EZ0Hc7Fx7QzTFxgPID13eH0Qu+MAb2o= github.com/containerd/log v0.1.0 h1:TCJt7ioM2cr/tfR8GPbGf9/VRAX8D2B4PjzCpfX540I= github.com/containerd/log v0.1.0/go.mod h1:VRRf09a7mHDIRezVKTRCrOq78v577GXq3bSa3EhrzVo= -github.com/containerd/ttrpc v1.2.3 h1:4jlhbXIGvijRtNC8F/5CpuJZ7yKOBFGFOOXg1bkISz0= -github.com/containerd/ttrpc v1.2.3/go.mod h1:ieWsXucbb8Mj9PH0rXCw1i8IunRbbAiDkpXkbfflWBM= +github.com/containerd/ttrpc v1.2.4 h1:eQCQK4h9dxDmpOb9QOOMh2NHTfzroH1IkmHiKZi05Oo= +github.com/containerd/ttrpc v1.2.4/go.mod h1:ojvb8SJBSch0XkqNO0L0YX/5NxR3UnVk2LzFKBK0upc= github.com/containerd/typeurl/v2 v2.1.1 h1:3Q4Pt7i8nYwy2KmQWIw2+1hTvwTE/6w9FqcttATPO/4= github.com/containerd/typeurl/v2 v2.1.1/go.mod h1:IDp2JFvbwZ31H8dQbEIY7sDl2L3o3HZj1hsSQlywkQ0= -github.com/cpuguy83/go-md2man/v2 v2.0.3/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -56,8 +58,8 @@ github.com/distribution/reference v0.5.0 h1:/FUIFXtfc/x2gpa5/VGfiGLuOIdYa1t65IKK github.com/distribution/reference v0.5.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E= github.com/docker/cli v25.0.4+incompatible h1:DatRkJ+nrFoYL2HZUzjM5Z5sAmcA5XGp+AW0oEw2+cA= github.com/docker/cli v25.0.4+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= -github.com/docker/docker v25.0.3+incompatible h1:D5fy/lYmY7bvZa0XTZ5/UJPljor41F+vdyJG5luQLfQ= -github.com/docker/docker v25.0.3+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker v26.1.1+incompatible h1:oI+4kkAgIwwb54b9OC7Xc3hSgu1RlJA/Lln/DF72djQ= +github.com/docker/docker v26.1.1+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= 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= @@ -76,8 +78,8 @@ github.com/gammazero/deque v0.2.1 h1:qSdsbG6pgp6nL7A0+K/B7s12mcCY/5l5SIUpMOl+dC0 github.com/gammazero/deque v0.2.1/go.mod h1:LFroj8x4cMYCukHJDbxFCkT+r9AndaJnFMuZDV34tuU= github.com/gammazero/workerpool v1.1.3 h1:WixN4xzukFoN0XSeXF6puqEqFTl2mECI9S6W44HWy9Q= github.com/gammazero/workerpool v1.1.3/go.mod h1:wPjyBLDbyKnUn2XwwyD3EEwo9dHutia9/fwNmSHWACc= -github.com/getkin/kin-openapi v0.123.0 h1:zIik0mRwFNLyvtXK274Q6ut+dPh6nlxBp0x7mNrPhs8= -github.com/getkin/kin-openapi v0.123.0/go.mod h1:wb1aSZA/iWmorQP9KTAS/phLj/t17B5jT7+fS8ed9NM= +github.com/getkin/kin-openapi v0.125.0 h1:jyQCyf2qXS1qvs2U00xQzkGCqYPhEhZDmSmVt65fXno= +github.com/getkin/kin-openapi v0.125.0/go.mod h1:wb1aSZA/iWmorQP9KTAS/phLj/t17B5jT7+fS8ed9NM= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ= github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= @@ -89,8 +91,8 @@ github.com/go-openapi/swag v0.22.8 h1:/9RjDSQ0vbFR+NyjGMkFTsA1IA0fmhKSThmfGZjicb github.com/go-openapi/swag v0.22.8/go.mod h1:6QT22icPLEqAM/z/TChgb4WAveCHF92+2gF0CNjHpPI= github.com/go-sql-driver/mysql v1.7.0 h1:ueSltNNllEqE3qcWBTD0iQd3IpL/6U+mJxLkazJ7YPc= github.com/go-sql-driver/mysql v1.7.0/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI= -github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI= -github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls= +github.com/go-task/slim-sprig/v3 v3.0.0 h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1vB6EwHI= +github.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8= github.com/go-test/deep v1.1.0 h1:WOcxcdHcvdgThNXjw0t76K42FXTU7HpNQWHpA2HHNlg= github.com/go-test/deep v1.1.0/go.mod h1:5C2ZWiW0ErCdrYzpqxLbTX7MG14M9iiw8DgHncVwcsE= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= @@ -122,8 +124,8 @@ github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/google/pprof v0.0.0-20230602150820-91b7bce49751 h1:hR7/MlvK23p6+lIw9SN1TigNLn9ZnF3W4SYRKq2gAHs= -github.com/google/pprof v0.0.0-20230602150820-91b7bce49751/go.mod h1:Jh3hGz2jkYak8qXPD19ryItVnUgpgeqzdkY/D0EaeuA= +github.com/google/pprof v0.0.0-20240424215950-a892ee059fd6 h1:k7nVchz72niMH6YLQNvHSdIE7iqsQxK1P41mySCvssg= +github.com/google/pprof v0.0.0-20240424215950-a892ee059fd6/go.mod h1:kf6iHlnVGwgKolg33glAes7Yg/8iWP8ukqeldJSO7jw= 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.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= @@ -161,8 +163,10 @@ github.com/mattn/go-runewidth v0.0.14 h1:+xnbZSEeDbOIg5/mE6JF0w6n9duR1l3/WmbinWV github.com/mattn/go-runewidth v0.0.14/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= -github.com/moby/buildkit v0.12.5 h1:RNHH1l3HDhYyZafr5EgstEu8aGNCwyfvMtrQDtjH9T0= -github.com/moby/buildkit v0.12.5/go.mod h1:YGwjA2loqyiYfZeEo8FtI7z4x5XponAaIWsWcSjWwso= +github.com/moby/buildkit v0.13.2 h1:nXNszM4qD9E7QtG7bFWPnDI1teUQFQglBzon/IU3SzI= +github.com/moby/buildkit v0.13.2/go.mod h1:2cyVOv9NoHM7arphK9ZfHIWKn9YVZRFd1wXB8kKmEzY= +github.com/moby/docker-image-spec v1.3.1 h1:jMKff3w6PgbfSa69GfNg+zN/XLhfXJGnEx3Nl2EsFP0= +github.com/moby/docker-image-spec v1.3.1/go.mod h1:eKmb5VW8vQEh/BAr2yvVNvuiJuY6UIocYsFu/DxxRpo= github.com/moby/locker v1.0.1 h1:fOXqR41zeveg4fFODix+1Ch4mj/gT0NE1XJbp/epuBg= github.com/moby/locker v1.0.1/go.mod h1:S7SDdo5zpBK84bzzVlKr2V0hz+7x9hWbYC/kq7oQppc= github.com/moby/patternmatcher v0.6.0 h1:GmP9lR19aU5GqSSFko+5pRqHi+Ohk1O69aFiKkVGiPk= @@ -183,10 +187,10 @@ github.com/morikuni/aec v1.0.0 h1:nP9CBfwrvYnBRgY6qfDQkygYDmYwOilePFkwzv4dU8A= github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= github.com/muesli/termenv v0.15.2 h1:GohcuySI0QmI3wN8Ok9PtKGkgkFIk7y6Vpb5PvrY+Wo= github.com/muesli/termenv v0.15.2/go.mod h1:Epx+iuz8sNs7mNKhxzH4fWXGNpZwUaJKRS1noLXviQ8= -github.com/onsi/ginkgo/v2 v2.17.0 h1:kdnunFXpBjbzN56hcJHrXZ8M+LOkenKA7NnBzTNigTI= -github.com/onsi/ginkgo/v2 v2.17.0/go.mod h1:llBI3WDLL9Z6taip6f33H76YcWtJv+7R3HigUjbIBOs= -github.com/onsi/gomega v1.32.0 h1:JRYU78fJ1LPxlckP6Txi/EYqJvjtMrDC04/MM5XRHPk= -github.com/onsi/gomega v1.32.0/go.mod h1:a4x4gW6Pz2yK1MAmvluYme5lvYTn61afQ2ETw/8n4Lg= +github.com/onsi/ginkgo/v2 v2.19.0 h1:9Cnnf7UHo57Hy3k6/m5k3dRfGTMXGvxhHFvkDTCTpvA= +github.com/onsi/ginkgo/v2 v2.19.0/go.mod h1:rlwLi9PilAFJ8jCg9UE1QP6VBpd6/xj3SRC0d6TU0To= +github.com/onsi/gomega v1.33.1 h1:dsYjIxxSR755MDmKVsaFQTE22ChNBcuuTWgkUDSubOk= +github.com/onsi/gomega v1.33.1/go.mod h1:U4R44UsT+9eLIaYRB2a5qajjtQYn0hauxvRm16AVYg0= github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= github.com/opencontainers/image-spec v1.1.0 h1:8SG7/vwALn54lVB/0yZ/MMwhFrPYtpEHQb2IpWsCzug= @@ -206,8 +210,8 @@ github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINE github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/procfs v0.9.0 h1:wzCHvIvM5SxWqYvwgVL7yJY8Lz3PKn49KQtpgMYJfhI= -github.com/prometheus/procfs v0.9.0/go.mod h1:+pB4zwohETzFnmlpe6yd2lSc+0/46IYZRB/chUwxUZY= +github.com/prometheus/procfs v0.12.0 h1:jluTpSng7V9hY0O2R9DzzJHYb2xULk9VTR1V1R/k6Bo= +github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rivo/uniseg v0.4.4 h1:8TfxU8dW6PdqD27gjM8MVNuicgxIjxpm4K7x4jp8sis= github.com/rivo/uniseg v0.4.4/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= @@ -222,15 +226,14 @@ github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/spf13/afero v1.10.0 h1:EaGW2JJh15aKOejeuJ+wpFSHnbd7GE6Wvp3TsNhb6LY= github.com/spf13/afero v1.10.0/go.mod h1:UBogFpq8E9Hx+xc5CNTTEpTnuHVmXDwZcZcE1eb/UhQ= -github.com/spf13/cobra v1.8.0 h1:7aJaZx1B85qltLMc546zn58BxxfZdR/W22ej9CFoEf0= -github.com/spf13/cobra v1.8.0/go.mod h1:WXLWApfZ71AjXPya3WOlMsY9yMs7YeiHhFVlvLyhcho= +github.com/spf13/cobra v1.8.1 h1:e5/vxKd/rZsfSJMUX1agtjeTDf+qv1/JdBF8gg5k9ZM= +github.com/spf13/cobra v1.8.1/go.mod h1:wHxEcudfqmLYa8iTfL+OuZPbBZkmvliBWKIezN3kD9Y= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= -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.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= @@ -253,8 +256,8 @@ github.com/thediveo/ioctl v0.9.3 h1:DCxyUUY15z/Zezz+wf2nlbVf3yFh0nvfM7i7KnfgG8s= github.com/thediveo/ioctl v0.9.3/go.mod h1:Ro3WW0UuPDh1QByEwNb/alva3ODM+GbRlb80u/LZU9o= github.com/thediveo/klo v1.0.3 h1:NchmW7d/yp79vqSa81mCVVpFu8/7XM8+Zs2Ynu+TSWo= github.com/thediveo/klo v1.0.3/go.mod h1:pW+/dWxLxqM8O7N3HjNQp8vpd+vDh1ViIFXiOlPIHYQ= -github.com/thediveo/morbyd v0.10.0 h1:WWcJUSEfuRJSh9xzXDmQdjE2susZygwnOf1dO3AbB1s= -github.com/thediveo/morbyd v0.10.0/go.mod h1:vMmifCTGup37clahfCDEOdzwCpC+Si5iIaRmsDhY4y0= +github.com/thediveo/morbyd v0.11.1 h1:YXkMUdYtNNsuVpZTk1wpRnU7GCrY+6qsVx0PwM6DhHY= +github.com/thediveo/morbyd v0.11.1/go.mod h1:y71pBj0NQECSdyavfL4ukYwNVxyM2wRlbhA41peuZmA= github.com/thediveo/namspill v0.1.6 h1:eD8puqhwIkBS78vrzJtY46eurHX0o6JIAqzgkRmMLl0= github.com/thediveo/namspill v0.1.6/go.mod h1:oRhr6rRg9z5pHuHckecgP4l9qN4YECZ22TtGs9Ma51E= github.com/thediveo/notwork v1.5.0 h1:CcZoDrlT3DnNA4579nnuQ0BxiTACDnlieBv9fh+rQ7w= @@ -269,15 +272,15 @@ github.com/thediveo/success v1.0.2 h1:w+r3RbSjLmd7oiNnlCblfGqItcsaShcuAorRVh/+0x github.com/thediveo/success v1.0.2/go.mod h1:hdPJB77k70w764lh8uLUZgNhgeTl3DYeZ4d4bwMO2CU= github.com/thediveo/testbasher v1.0.8 h1:5V02Jx+XxnXWAS3V0a5buDH2XKP7bacy34nEL8AW2qk= github.com/thediveo/testbasher v1.0.8/go.mod h1:yzGD+ZTFcf/3dsV2F8uVWnYAg4uL1XUxk41itie66Ko= -github.com/thediveo/whalewatcher v0.11.2 h1:ehqBq36by0zTHCNB3//yZLrdBjyF4WSCoGA6/lhY5Zs= -github.com/thediveo/whalewatcher v0.11.2/go.mod h1:g1BprYJgSyXMrQtEuim503w1wWAHmOnF+27lLJE+MiI= +github.com/thediveo/whalewatcher v0.11.3 h1:znBAX/fcn9wPN4x05ALMfgpnboX34+NVyc6uO08pGXo= +github.com/thediveo/whalewatcher v0.11.3/go.mod h1:KNFbgboC9dPnD72ytmRVMI9uml3UGhoTw2Q43hqNSA0= github.com/ugorji/go/codec v1.2.7 h1:YPXUKf7fYbp/y8xloBqZOw2qaVggbfwMlI8WM3wZUJ0= github.com/ugorji/go/codec v1.2.7/go.mod h1:WGN1fab3R1fzQlVQTkfxVtIBhWDRqOviHU95kRgeqEY= github.com/vishvananda/netlink v1.2.1-beta.2.0.20240223175432-6ab7f5a3765c h1:sjsaSqCU4YC/jQ0hOqU8yGFaCBkPr5VOrys5oFQ9yyM= github.com/vishvananda/netlink v1.2.1-beta.2.0.20240223175432-6ab7f5a3765c/go.mod h1:whJevzBpTrid75eZy99s3DqCmy05NfibNaF2Ol5Ox5A= github.com/vishvananda/netns v0.0.0-20200728191858-db3c7e526aae/go.mod h1:DD4vA1DwXk04H54A1oHXtwZmA0grkVMdPxx/VGLCah0= -github.com/vishvananda/netns v0.0.0-20210104183010-2eb08e3e575f h1:p4VB7kIXpOQvVn1ZaTIVp+3vuYAXFe3OJEvjbUYJLaA= -github.com/vishvananda/netns v0.0.0-20210104183010-2eb08e3e575f/go.mod h1:DD4vA1DwXk04H54A1oHXtwZmA0grkVMdPxx/VGLCah0= +github.com/vishvananda/netns v0.0.4 h1:Oeaw1EM2JMxD51g9uhtC0D7erkIjgmj8+JZc26m1YX8= +github.com/vishvananda/netns v0.0.4/go.mod h1:SpkAiCQRtJ6TvvxPnOSyH3BMl6unz3xZlaprSwhNNJM= github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb h1:zGWFAtiMcyryUHoUjUJX0/lt1H2+i2Ka2n+D3DImSNo= github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= @@ -293,8 +296,8 @@ go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.47.0 h1:sv9kVfa go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.47.0/go.mod h1:SK2UL73Zy1quvRPonmOmRDiWk1KBV3LyIeeIxcEApWw= go.opentelemetry.io/otel v1.22.0 h1:xS7Ku+7yTFvDfDraDIJVpw7XPyuHlB9MCiqqX5mcJ6Y= go.opentelemetry.io/otel v1.22.0/go.mod h1:eoV4iAi3Ea8LkAEI9+GFT44O6T/D0GWAVFyZVCC6pMI= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.19.0 h1:Mne5On7VWdx7omSrSSZvM4Kw7cS7NQkOOmLcgscI51U= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.19.0/go.mod h1:IPtUMKL4O3tH5y+iXVyAXqpAwMuzC1IrxVS81rummfE= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.21.0 h1:cl5P5/GIfFh4t6xyruOgJP5QiA1pw4fYYdv6nc6CBWw= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.21.0/go.mod h1:zgBdWWAu7oEEMC06MMKc5NLbA/1YDXV1sMpSqEeLQLg= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.22.0 h1:FyjCyI9jVEfqhUh2MoSkmolPjfh5fp2hnV0b0irxH4Q= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.22.0/go.mod h1:hYwym2nDEeZfG/motx0p7L7J1N1vyzIThemQsb4g2qY= go.opentelemetry.io/otel/metric v1.22.0 h1:lypMQnGyJYeuYPhOM/bgjbFM6WE44W1/T45er4d8Hhg= @@ -313,15 +316,13 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20240318143956-a85f2c67cd81 h1:6R2FC06FonbXQ8pK11/PDFY6N6LWlf9KlzibaCapmqc= -golang.org/x/exp v0.0.0-20240318143956-a85f2c67cd81/go.mod h1:CQ1k9gNrJ50XIzaKCRR2hssIjF07kZFEiieALBM/ARQ= +golang.org/x/exp v0.0.0-20240613232115-7f521ea00fb8 h1:yixxcjnhBmY0nkL253HFVIm0JsFHwrHdT3Yh6szTnfY= +golang.org/x/exp v0.0.0-20240613232115-7f521ea00fb8/go.mod h1:jj3sYF3dwk5D+ghuXyeI3r5MFf+NT2An6/9dOA95KSI= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.16.0 h1:QX4fJ0Rr5cPQCF7O9lh9Se4pmwfwskqZfq5moyldzic= -golang.org/x/mod v0.16.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -331,16 +332,16 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.22.0 h1:9sGLhx7iRIHEiX0oAJ3MRZMUCElJgy7Br1nO+AMN3Tc= -golang.org/x/net v0.22.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg= +golang.org/x/net v0.26.0 h1:soB7SVo0PWrY4vPW/+ay0jKDNScG2X9wFeYlXIvJsOQ= +golang.org/x/net v0.26.0/go.mod h1:5YKkiSynbBIh3p6iOc/vibscux0x38BZDkn8sCUPxHE= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.6.0 h1:5BMeUDZ7vkXGfEr1x9B4bRcTH4lpkTkpdh0T/J+qjbQ= -golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M= +golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -352,12 +353,12 @@ golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.10.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4= -golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.21.0 h1:rF+pYz3DAGSQAxAu1CbC7catZg4ebC4UIeIhKxBZvws= +golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= -golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4= +golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI= golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk= golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -368,8 +369,8 @@ golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBn golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.19.0 h1:tfGCXNR1OsFG+sVdLAitlpjAvD/I6dHDKnYrpEZUHkw= -golang.org/x/tools v0.19.0/go.mod h1:qoJWxmGSIBmAeriMx19ogtrEPrGtDbPK634QFIcLAhc= +golang.org/x/tools v0.22.0 h1:gqSGLZqv+AI9lIQzniJ0nZDRG5GBPsSi+DRNHWNz6yA= +golang.org/x/tools v0.22.0/go.mod h1:aCwcsjqvq7Yqt6TNyX7QMU2enbQ/Gt0bo6krSeEri+c= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -390,8 +391,8 @@ google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyac google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= -google.golang.org/grpc v1.62.0 h1:HQKZ/fa1bXkX1oFOvSjmZEUL8wLSaZTjCcLAlmZRtdk= -google.golang.org/grpc v1.62.0/go.mod h1:IWTG0VlJLCh1SkC58F7np9ka9mx/WNkjl4PGJaiq+QE= +google.golang.org/grpc v1.62.1 h1:B4n+nfKzOICUXMgyrNd19h/I9oH0L1pizfk1d4zSgTk= +google.golang.org/grpc v1.62.1/go.mod h1:IWTG0VlJLCh1SkC58F7np9ka9mx/WNkjl4PGJaiq+QE= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= @@ -420,7 +421,7 @@ honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWh honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= k8s.io/client-go v0.28.3 h1:2OqNb72ZuTZPKCl+4gTKvqao0AMOl9f3o2ijbAj3LI4= k8s.io/client-go v0.28.3/go.mod h1:LTykbBp9gsA7SwqirlCXBWtK0guzfhpoW4qSm7i9dxo= -k8s.io/cri-api v0.29.3 h1:ppKSui+hhTJW774Mou6x+/ealmzt2jmTM0vsEQVWrjI= -k8s.io/cri-api v0.29.3/go.mod h1:3X7EnhsNaQnCweGhQCJwKNHlH7wHEYuKQ19bRvXMoJY= +k8s.io/cri-api v0.29.6 h1:95kqUc2TzkxOiRBI9tSA+HY6JA/Zyg5jx6u541oJY9k= +k8s.io/cri-api v0.29.6/go.mod h1:A6pdbjzML2xi9B0Clqn5qt1HJ3Ik12x2j+jv/TkqjRE= sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E= sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY=