diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 6f417ad3..7cdfed47 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -8,7 +8,7 @@ "dockerfile": "${localWorkspaceFolder}/.devcontainer/Dockerfile", "context": "${localWorkspaceFolder}", "args": { - "GO_VERSION": "1.25.6", + "GO_VERSION": "1.26.1", "KUBECTX_VERSION": "0.9.5", "SVELTOSCTL_VERSION": "0.53.0" } diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml index 917a78f4..ee86e156 100644 --- a/.github/workflows/main.yaml +++ b/.github/workflows/main.yaml @@ -18,7 +18,7 @@ jobs: - name: Set up Go uses: actions/setup-go@4b73464bb391d4059bd26b0524d20df3927bd417 # v6.3.0 with: - go-version: 1.25.6 + go-version: 1.26.1 - name: Build run: make build - name: FMT @@ -37,7 +37,7 @@ jobs: - name: Set up Go uses: actions/setup-go@4b73464bb391d4059bd26b0524d20df3927bd417 # v6.3.0 with: - go-version: 1.25.6 + go-version: 1.26.1 - name: ut run: make test env: @@ -50,7 +50,7 @@ jobs: - name: Set up Go uses: actions/setup-go@4b73464bb391d4059bd26b0524d20df3927bd417 # v6.3.0 with: - go-version: 1.25.6 + go-version: 1.26.1 - name: Free Disk Space (Ubuntu) uses: jlumbroso/free-disk-space@main with: @@ -78,7 +78,7 @@ jobs: - name: Set up Go uses: actions/setup-go@4b73464bb391d4059bd26b0524d20df3927bd417 # v6.3.0 with: - go-version: 1.25.6 + go-version: 1.26.1 - name: Free Disk Space (Ubuntu) uses: jlumbroso/free-disk-space@main with: @@ -106,7 +106,7 @@ jobs: - name: Set up Go uses: actions/setup-go@4b73464bb391d4059bd26b0524d20df3927bd417 # v6.3.0 with: - go-version: 1.25.6 + go-version: 1.26.1 - name: Free Disk Space (Ubuntu) uses: jlumbroso/free-disk-space@main with: @@ -134,7 +134,7 @@ jobs: - name: Set up Go uses: actions/setup-go@4b73464bb391d4059bd26b0524d20df3927bd417 # v6.3.0 with: - go-version: 1.25.6 + go-version: 1.26.1 - name: Free Disk Space (Ubuntu) uses: jlumbroso/free-disk-space@main with: @@ -162,7 +162,7 @@ jobs: - name: Set up Go uses: actions/setup-go@4b73464bb391d4059bd26b0524d20df3927bd417 # v6.3.0 with: - go-version: 1.25.6 + go-version: 1.26.1 - name: Free Disk Space (Ubuntu) uses: jlumbroso/free-disk-space@main with: @@ -190,7 +190,7 @@ jobs: - name: Set up Go uses: actions/setup-go@4b73464bb391d4059bd26b0524d20df3927bd417 # v6.3.0 with: - go-version: 1.25.6 + go-version: 1.26.1 - name: Free Disk Space (Ubuntu) uses: jlumbroso/free-disk-space@main with: diff --git a/Dockerfile b/Dockerfile index ef71fa28..30b06f6e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,5 @@ # Build the manager binary -FROM golang:1.25.6 AS builder +FROM golang:1.26.1 AS builder ARG BUILDOS ARG TARGETARCH diff --git a/Dockerfile_WithGit b/Dockerfile_WithGit index 81f638fd..0d9373be 100644 --- a/Dockerfile_WithGit +++ b/Dockerfile_WithGit @@ -1,5 +1,5 @@ # Build the manager binary -FROM golang:1.25.6 AS builder +FROM golang:1.26.1 AS builder ARG BUILDOS ARG TARGETARCH diff --git a/Makefile b/Makefile index fb5d1a16..d14825a0 100644 --- a/Makefile +++ b/Makefile @@ -72,7 +72,7 @@ KIND := $(TOOLS_BIN_DIR)/kind KUBECTL := $(TOOLS_BIN_DIR)/kubectl GOVULNCHECK_VERSION := "v1.1.4" -GOLANGCI_LINT_VERSION := "v2.8.0" +GOLANGCI_LINT_VERSION := "v2.11.3" CLUSTERCTL_VERSION := v1.12.3 KUSTOMIZE_VER := v5.8.0 diff --git a/controllers/clustersummary_watchers.go b/controllers/clustersummary_watchers.go index 8cd82a4c..b5243d2b 100644 --- a/controllers/clustersummary_watchers.go +++ b/controllers/clustersummary_watchers.go @@ -373,7 +373,7 @@ func (m *manager) startWatcher(ctx context.Context, gvk *schema.GroupVersionKind return err } - watcherCtx, cancel := context.WithCancel(ctx) + watcherCtx, cancel := context.WithCancel(ctx) //nolint:gosec // cancel is stored in m.watchers and called when the watcher is stopped m.watchers[*gvk] = cancel go m.runInformer(watcherCtx.Done(), dcinformer.Informer(), logger) return nil diff --git a/controllers/dependencymanager/manager.go b/controllers/dependencymanager/manager.go index 8a5f0c45..454cf553 100644 --- a/controllers/dependencymanager/manager.go +++ b/controllers/dependencymanager/manager.go @@ -489,10 +489,20 @@ func (m *instance) updateClusterProfile(ctx context.Context, c client.Client, cl } func (m *instance) updateProfiles(ctx context.Context, c client.Client, logger logr.Logger) { + const interval = 30 * time.Second for { m.chartMux.Lock() + canceled := false for profile := range m.profileToBeUpdated { + select { + case <-ctx.Done(): + canceled = true + default: + } + if canceled { + break + } clusters := m.profileClusterRequests.getClusterDeployments(&profile) logger.V(logs.LogDebug).Info(fmt.Sprintf("updating prerequestite profile %s/%s", profile.Namespace, profile.Name)) err := m.updateProfileInstance(ctx, c, &profile, clusters) @@ -503,8 +513,15 @@ func (m *instance) updateProfiles(ctx context.Context, c client.Client, logger l m.chartMux.Unlock() - const interval = 30 * time.Second - time.Sleep(interval) + if canceled { + return + } + + select { + case <-ctx.Done(): + return + case <-time.After(interval): + } } } diff --git a/controllers/handlers_helm_test.go b/controllers/handlers_helm_test.go index 6c8ade8b..00cf5967 100644 --- a/controllers/handlers_helm_test.go +++ b/controllers/handlers_helm_test.go @@ -1038,20 +1038,19 @@ resources: }) It("getCredentialsAndCAFiles returns files containing credentials and CA", func() { - type Credentials struct { - Username string - Password string - RefreshToken string - AccessToken string - } - - credentials := Credentials{ + credentials := struct { + Username string `json:"username"` + Password string `json:"password"` + RefreshToken string `json:"refresh_token"` + AccessToken string `json:"access_token"` + }{ Username: randomString(), Password: randomString(), RefreshToken: randomString(), AccessToken: randomString(), } + //nolint:gosec // This is dummy data for testing purposes credentialsBytes, err := json.Marshal(credentials) Expect(err).To(BeNil()) diff --git a/controllers/handlers_kustomize_test.go b/controllers/handlers_kustomize_test.go index e268dc6b..6e13e6ff 100644 --- a/controllers/handlers_kustomize_test.go +++ b/controllers/handlers_kustomize_test.go @@ -620,6 +620,10 @@ func createTarGz(dest string) { tarWriter := tar.NewWriter(gzWriter) defer tarWriter.Close() + root, err := os.OpenRoot("testdata") + Expect(err).To(BeNil()) + defer root.Close() + err = filepath.Walk("testdata/", func(path string, info os.FileInfo, err error) error { if err != nil { return err @@ -636,12 +640,12 @@ func createTarGz(dest string) { if !info.Mode().IsRegular() { return nil } - file, err := os.Open(path) + f, err := root.Open(path[len("testdata")+1:]) if err != nil { return err } - defer file.Close() - _, err = io.Copy(tarWriter, file) + defer f.Close() + _, err = io.Copy(tarWriter, f) return err }) Expect(err).To(BeNil()) diff --git a/controllers/handlers_utils.go b/controllers/handlers_utils.go index fc160f5b..97f78464 100644 --- a/controllers/handlers_utils.go +++ b/controllers/handlers_utils.go @@ -22,6 +22,8 @@ import ( "encoding/hex" "encoding/json" "fmt" + "io" + "io/fs" "os" "path/filepath" "sort" @@ -174,20 +176,44 @@ func deployContentOfSource(ctx context.Context, deployingToMgmtCluster bool, des func readFiles(dir string) (map[string]string, error) { files := make(map[string]string) - err := filepath.Walk(dir, func(path string, info os.FileInfo, err error) error { + + // 1. Open the directory as a Root handle + root, err := os.OpenRoot(dir) + if err != nil { + return nil, err + } + defer root.Close() + + // 2. WalkDir is faster than Walk as it doesn't Lstat every file unnecessarily + err = filepath.WalkDir(dir, func(path string, d fs.DirEntry, err error) error { if err != nil { return err } - if !info.IsDir() { - content, err := os.ReadFile(path) + if !d.IsDir() { + // 3. Get the path relative to the root directory + rel, err := filepath.Rel(dir, path) if err != nil { return err } - files[filepath.Base(path)] = string(content) + + // 4. Open the file via the Root handle to prevent symlink traversal + f, err := root.Open(rel) + if err != nil { + return err + } + defer f.Close() + + content, err := io.ReadAll(f) + if err != nil { + return err + } + + files[d.Name()] = string(content) } return nil }) + return files, err } @@ -1092,12 +1118,12 @@ func getDeployedGroupVersionKinds(clusterSummary *configv1beta1.ClusterSummary, gvks := make([]schema.GroupVersionKind, 0) // For backward compatible we still look at this field. // New code set only FeatureDeploymentInfo - fs := getFeatureSummaryForFeatureID(clusterSummary, featureID) - if fs != nil { + featureSummary := getFeatureSummaryForFeatureID(clusterSummary, featureID) + if featureSummary != nil { //nolint:staticcheck // using for backward compatibility - for j := range fs.DeployedGroupVersionKind { + for j := range featureSummary.DeployedGroupVersionKind { //nolint:staticcheck // using for backward compatibility - gvk, _ := schema.ParseKindArg(fs.DeployedGroupVersionKind[j]) + gvk, _ := schema.ParseKindArg(featureSummary.DeployedGroupVersionKind[j]) gvks = append(gvks, *gvk) } } diff --git a/controllers/resourcesummary_collection.go b/controllers/resourcesummary_collection.go index bb1a591c..4769c14e 100644 --- a/controllers/resourcesummary_collection.go +++ b/controllers/resourcesummary_collection.go @@ -62,17 +62,22 @@ func collectAndProcessResourceSummaries(ctx context.Context, c client.Client, sh } for i := range clusterList { - cluster := &clusterList[i] - if _, ok := clustersWithDD[*cluster]; !ok { - continue - } + select { + case <-ctx.Done(): + return + default: + cluster := &clusterList[i] + if _, ok := clustersWithDD[*cluster]; !ok { + continue + } - l := logger.WithValues("cluster", fmt.Sprintf("%s/%s", cluster.Namespace, cluster.Name)) - err = collectResourceSummariesFromCluster(ctx, c, cluster, version, l) - if err != nil { - if !strings.Contains(err.Error(), "unable to retrieve the complete list of server APIs") { - l.V(logs.LogInfo).Info(fmt.Sprintf("failed to collect ResourceSummaries from cluster: %s/%s %v", - cluster.Namespace, cluster.Name, err)) + l := logger.WithValues("cluster", fmt.Sprintf("%s/%s", cluster.Namespace, cluster.Name)) + err = collectResourceSummariesFromCluster(ctx, c, cluster, version, l) + if err != nil { + if !strings.Contains(err.Error(), "unable to retrieve the complete list of server APIs") { + l.V(logs.LogInfo).Info(fmt.Sprintf("failed to collect ResourceSummaries from cluster: %s/%s %v", + cluster.Namespace, cluster.Name, err)) + } } } } diff --git a/go.mod b/go.mod index 413218a7..b4dfc59d 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module github.com/projectsveltos/addon-controller -go 1.25.6 +go 1.26.1 require ( dario.cat/mergo v1.0.2 @@ -25,15 +25,15 @@ require ( github.com/yuin/gopher-lua v1.1.1 golang.org/x/text v0.35.0 helm.sh/helm/v4 v4.1.3 - k8s.io/api v0.35.2 - k8s.io/apiextensions-apiserver v0.35.2 - k8s.io/apimachinery v0.35.2 - k8s.io/cli-runtime v0.35.2 - k8s.io/client-go v0.35.2 - k8s.io/component-base v0.35.2 + k8s.io/api v0.35.3 + k8s.io/apiextensions-apiserver v0.35.3 + k8s.io/apimachinery v0.35.3 + k8s.io/cli-runtime v0.35.3 + k8s.io/client-go v0.35.3 + k8s.io/component-base v0.35.3 k8s.io/klog/v2 v2.140.0 - k8s.io/utils v0.0.0-20260210185600-b8788abfbbc2 - sigs.k8s.io/cluster-api v1.12.3 + k8s.io/utils v0.0.0-20260319190234-28399d86e0b5 + sigs.k8s.io/cluster-api v1.12.4 sigs.k8s.io/controller-runtime v0.23.3 sigs.k8s.io/kustomize/api v0.21.1 sigs.k8s.io/kustomize/kyaml v0.21.1 @@ -171,7 +171,7 @@ require ( gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect gotest.tools/v3 v3.4.0 // indirect - k8s.io/apiserver v0.35.2 // indirect + k8s.io/apiserver v0.35.3 // indirect k8s.io/cluster-bootstrap v0.34.2 // indirect k8s.io/kube-openapi v0.0.0-20250910181357-589584f1c912 // indirect k8s.io/kubectl v0.35.1 // indirect diff --git a/go.sum b/go.sum index 565314ff..77d7e2c9 100644 --- a/go.sum +++ b/go.sum @@ -500,36 +500,36 @@ gotest.tools/v3 v3.4.0 h1:ZazjZUfuVeZGLAmlKKuyv3IKP5orXcwtOwDQH6YVr6o= gotest.tools/v3 v3.4.0/go.mod h1:CtbdzLSsqVhDgMtKsx03ird5YTGB3ar27v0u/yKBW5g= helm.sh/helm/v4 v4.1.3 h1:Abfmb+oJUtxoaXDyB2Jhw1zRk3hT6aFfHta+AXb8Lno= helm.sh/helm/v4 v4.1.3/go.mod h1:5dSo8rRgn3OTkDAc/k0Ipw5/Q+BlqKIKZwa0XwSiINI= -k8s.io/api v0.35.2 h1:tW7mWc2RpxW7HS4CoRXhtYHSzme1PN1UjGHJ1bdrtdw= -k8s.io/api v0.35.2/go.mod h1:7AJfqGoAZcwSFhOjcGM7WV05QxMMgUaChNfLTXDRE60= -k8s.io/apiextensions-apiserver v0.35.2 h1:iyStXHoJZsUXPh/nFAsjC29rjJWdSgUmG1XpApE29c0= -k8s.io/apiextensions-apiserver v0.35.2/go.mod h1:OdyGvcO1FtMDWQ+rRh/Ei3b6X3g2+ZDHd0MSRGeS8rU= -k8s.io/apimachinery v0.35.2 h1:NqsM/mmZA7sHW02JZ9RTtk3wInRgbVxL8MPfzSANAK8= -k8s.io/apimachinery v0.35.2/go.mod h1:jQCgFZFR1F4Ik7hvr2g84RTJSZegBc8yHgFWKn//hns= -k8s.io/apiserver v0.35.2 h1:rb52v0CZGEL0FkhjS+I6jHflAp7fZ4MIaKcEHX7wmDk= -k8s.io/apiserver v0.35.2/go.mod h1:CROJUAu0tfjZLyYgSeBsBan2T7LUJGh0ucWwTCSSk7g= -k8s.io/cli-runtime v0.35.2 h1:3DNctzpPNXavqyrm/FFiT60TLk4UjUxuUMYbKOE970E= -k8s.io/cli-runtime v0.35.2/go.mod h1:G2Ieu0JidLm5m1z9b0OkFhnykvJ1w+vjbz1tR5OFKL0= -k8s.io/client-go v0.35.2 h1:YUfPefdGJA4aljDdayAXkc98DnPkIetMl4PrKX97W9o= -k8s.io/client-go v0.35.2/go.mod h1:4QqEwh4oQpeK8AaefZ0jwTFJw/9kIjdQi0jpKeYvz7g= +k8s.io/api v0.35.3 h1:pA2fiBc6+N9PDf7SAiluKGEBuScsTzd2uYBkA5RzNWQ= +k8s.io/api v0.35.3/go.mod h1:9Y9tkBcFwKNq2sxwZTQh1Njh9qHl81D0As56tu42GA4= +k8s.io/apiextensions-apiserver v0.35.3 h1:2fQUhEO7P17sijylbdwt0nBdXP0TvHrHj0KeqHD8FiU= +k8s.io/apiextensions-apiserver v0.35.3/go.mod h1:tK4Kz58ykRpwAEkXUb634HD1ZAegEElktz/B3jgETd8= +k8s.io/apimachinery v0.35.3 h1:MeaUwQCV3tjKP4bcwWGgZ/cp/vpsRnQzqO6J6tJyoF8= +k8s.io/apimachinery v0.35.3/go.mod h1:jQCgFZFR1F4Ik7hvr2g84RTJSZegBc8yHgFWKn//hns= +k8s.io/apiserver v0.35.3 h1:D2eIcfJ05hEAEewoSDg+05e0aSRwx8Y4Agvd/wiomUI= +k8s.io/apiserver v0.35.3/go.mod h1:JI0n9bHYzSgIxgIrfe21dbduJ9NHzKJ6RchcsmIKWKY= +k8s.io/cli-runtime v0.35.3 h1:UZq4ipNimtzBmhN7PPKbfAdqo8quK0H0UdGl6qAQnqI= +k8s.io/cli-runtime v0.35.3/go.mod h1:O7MUmCqcKSd5xI+O5X7/pRkB5l0O2NIhOdUVwbHLXu4= +k8s.io/client-go v0.35.3 h1:s1lZbpN4uI6IxeTM2cpdtrwHcSOBML1ODNTCCfsP1pg= +k8s.io/client-go v0.35.3/go.mod h1:RzoXkc0mzpWIDvBrRnD+VlfXP+lRzqQjCmKtiwZ8Q9c= k8s.io/cluster-bootstrap v0.34.2 h1:oKckPeunVCns37BntcsxaOesDul32yzGd3DFLjW2fc8= k8s.io/cluster-bootstrap v0.34.2/go.mod h1:f21byPR7X5nt12ivZi+J3pb4sG4SH6VySX8KAAJA8BY= -k8s.io/component-base v0.35.2 h1:btgR+qNrpWuRSuvWSnQYsZy88yf5gVwemvz0yw79pGc= -k8s.io/component-base v0.35.2/go.mod h1:B1iBJjooe6xIJYUucAxb26RwhAjzx0gHnqO9htWIX+0= +k8s.io/component-base v0.35.3 h1:mbKbzoIMy7JDWS/wqZobYW1JDVRn/RKRaoMQHP9c4P0= +k8s.io/component-base v0.35.3/go.mod h1:IZ8LEG30kPN4Et5NeC7vjNv5aU73ku5MS15iZyvyMYk= k8s.io/klog/v2 v2.140.0 h1:Tf+J3AH7xnUzZyVVXhTgGhEKnFqye14aadWv7bzXdzc= k8s.io/klog/v2 v2.140.0/go.mod h1:o+/RWfJ6PwpnFn7OyAG3QnO47BFsymfEfrz6XyYSSp0= k8s.io/kube-openapi v0.0.0-20250910181357-589584f1c912 h1:Y3gxNAuB0OBLImH611+UDZcmKS3g6CthxToOb37KgwE= k8s.io/kube-openapi v0.0.0-20250910181357-589584f1c912/go.mod h1:kdmbQkyfwUagLfXIad1y2TdrjPFWp2Q89B3qkRwf/pQ= k8s.io/kubectl v0.35.1 h1:zP3Er8C5i1dcAFUMh9Eva0kVvZHptXIn/+8NtRWMxwg= k8s.io/kubectl v0.35.1/go.mod h1:cQ2uAPs5IO/kx8R5s5J3Ihv3VCYwrx0obCXum0CvnXo= -k8s.io/utils v0.0.0-20260210185600-b8788abfbbc2 h1:AZYQSJemyQB5eRxqcPky+/7EdBj0xi3g0ZcxxJ7vbWU= -k8s.io/utils v0.0.0-20260210185600-b8788abfbbc2/go.mod h1:xDxuJ0whA3d0I4mf/C4ppKHxXynQ+fxnkmQH0vTHnuk= +k8s.io/utils v0.0.0-20260319190234-28399d86e0b5 h1:kBawHLSnx/mYHmRnNUf9d4CpjREbeZuxoSGOX/J+aYM= +k8s.io/utils v0.0.0-20260319190234-28399d86e0b5/go.mod h1:xDxuJ0whA3d0I4mf/C4ppKHxXynQ+fxnkmQH0vTHnuk= oras.land/oras-go/v2 v2.6.0 h1:X4ELRsiGkrbeox69+9tzTu492FMUu7zJQW6eJU+I2oc= oras.land/oras-go/v2 v2.6.0/go.mod h1:magiQDfG6H1O9APp+rOsvCPcW1GD2MM7vgnKY0Y+u1o= sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.31.2 h1:jpcvIRr3GLoUoEKRkHKSmGjxb6lWwrBlJsXc+eUYQHM= sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.31.2/go.mod h1:Ve9uj1L+deCXFrPOk1LpFXqTg7LCFzFso6PA48q/XZw= -sigs.k8s.io/cluster-api v1.12.3 h1:cuOl3fWXhlXFuQcyIH4C8i3ns8rLhtcnK+x00MVdKBs= -sigs.k8s.io/cluster-api v1.12.3/go.mod h1:EAiTJtf/8M5eBetPwumi6t8DJJ55Ln6Fkvh2OAa7PD4= +sigs.k8s.io/cluster-api v1.12.4 h1:usvoZ+Nblfu//l31hm1B1WUdigb6OnGAJqwt8qWq/iA= +sigs.k8s.io/cluster-api v1.12.4/go.mod h1:ePDeVCVaW6SGxRgDeLt5+KK4TigEnF0LPV6ztEzRzlI= sigs.k8s.io/controller-runtime v0.23.3 h1:VjB/vhoPoA9l1kEKZHBMnQF33tdCLQKJtydy4iqwZ80= sigs.k8s.io/controller-runtime v0.23.3/go.mod h1:B6COOxKptp+YaUT5q4l6LqUJTRpizbgf9KSRNdQGns0= sigs.k8s.io/json v0.0.0-20250730193827-2d320260d730 h1:IpInykpT6ceI+QxKBbEflcR5EXP7sU1kvOlxwZh5txg= diff --git a/hack/tools/go.mod b/hack/tools/go.mod index 391a544c..526d0cf8 100644 --- a/hack/tools/go.mod +++ b/hack/tools/go.mod @@ -1,13 +1,13 @@ module github.com/projectsveltos/addon-controller/hack/tools -go 1.25.6 +go 1.26.1 require ( github.com/a8m/envsubst v1.4.3 github.com/onsi/ginkgo/v2 v2.28.1 golang.org/x/oauth2 v0.36.0 golang.org/x/tools v0.43.0 - k8s.io/client-go v0.35.2 + k8s.io/client-go v0.35.3 sigs.k8s.io/controller-tools v0.20.1 sigs.k8s.io/kind v0.31.0 ) @@ -57,9 +57,9 @@ require ( gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect - k8s.io/api v0.35.2 // indirect + k8s.io/api v0.35.3 // indirect k8s.io/apiextensions-apiserver v0.35.0 // indirect - k8s.io/apimachinery v0.35.2 // indirect + k8s.io/apimachinery v0.35.3 // indirect k8s.io/code-generator v0.35.0 // indirect k8s.io/gengo/v2 v2.0.0-20250922181213-ec3ebc5fd46b // indirect k8s.io/klog/v2 v2.130.1 // indirect diff --git a/hack/tools/go.sum b/hack/tools/go.sum index 1233f22a..772a21c0 100644 --- a/hack/tools/go.sum +++ b/hack/tools/go.sum @@ -236,16 +236,16 @@ 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.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -k8s.io/api v0.35.2 h1:tW7mWc2RpxW7HS4CoRXhtYHSzme1PN1UjGHJ1bdrtdw= -k8s.io/api v0.35.2/go.mod h1:7AJfqGoAZcwSFhOjcGM7WV05QxMMgUaChNfLTXDRE60= +k8s.io/api v0.35.3 h1:pA2fiBc6+N9PDf7SAiluKGEBuScsTzd2uYBkA5RzNWQ= +k8s.io/api v0.35.3/go.mod h1:9Y9tkBcFwKNq2sxwZTQh1Njh9qHl81D0As56tu42GA4= k8s.io/apiextensions-apiserver v0.35.0 h1:3xHk2rTOdWXXJM+RDQZJvdx0yEOgC0FgQ1PlJatA5T4= k8s.io/apiextensions-apiserver v0.35.0/go.mod h1:E1Ahk9SADaLQ4qtzYFkwUqusXTcaV2uw3l14aqpL2LU= -k8s.io/apimachinery v0.35.2 h1:NqsM/mmZA7sHW02JZ9RTtk3wInRgbVxL8MPfzSANAK8= -k8s.io/apimachinery v0.35.2/go.mod h1:jQCgFZFR1F4Ik7hvr2g84RTJSZegBc8yHgFWKn//hns= +k8s.io/apimachinery v0.35.3 h1:MeaUwQCV3tjKP4bcwWGgZ/cp/vpsRnQzqO6J6tJyoF8= +k8s.io/apimachinery v0.35.3/go.mod h1:jQCgFZFR1F4Ik7hvr2g84RTJSZegBc8yHgFWKn//hns= k8s.io/apiserver v0.35.0 h1:CUGo5o+7hW9GcAEF3x3usT3fX4f9r8xmgQeCBDaOgX4= k8s.io/apiserver v0.35.0/go.mod h1:QUy1U4+PrzbJaM3XGu2tQ7U9A4udRRo5cyxkFX0GEds= -k8s.io/client-go v0.35.2 h1:YUfPefdGJA4aljDdayAXkc98DnPkIetMl4PrKX97W9o= -k8s.io/client-go v0.35.2/go.mod h1:4QqEwh4oQpeK8AaefZ0jwTFJw/9kIjdQi0jpKeYvz7g= +k8s.io/client-go v0.35.3 h1:s1lZbpN4uI6IxeTM2cpdtrwHcSOBML1ODNTCCfsP1pg= +k8s.io/client-go v0.35.3/go.mod h1:RzoXkc0mzpWIDvBrRnD+VlfXP+lRzqQjCmKtiwZ8Q9c= k8s.io/code-generator v0.35.0 h1:TvrtfKYZTm9oDF2z+veFKSCcgZE3Igv0svY+ehCmjHQ= k8s.io/code-generator v0.35.0/go.mod h1:iS1gvVf3c/T71N5DOGYO+Gt3PdJ6B9LYSvIyQ4FHzgc= k8s.io/component-base v0.35.0 h1:+yBrOhzri2S1BVqyVSvcM3PtPyx5GUxCK2tinZz1G94=