diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 41e54fb1ae8b..58b97c74cdbe 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -51,6 +51,7 @@ updates: # runc/containerd - dependency-name: github.com/containerd/containerd + - dependency-name: github.com/opencontainers/runc # sonobuoy - dependency-name: github.com/vmware-tanzu/sonobuoy diff --git a/.github/workflows/publish-docs-manual.yml b/.github/workflows/publish-docs-manual.yml index 88ea1a197fa4..0ddd8aee18e7 100644 --- a/.github/workflows/publish-docs-manual.yml +++ b/.github/workflows/publish-docs-manual.yml @@ -3,7 +3,7 @@ on: workflow_dispatch: inputs: version: - description: 'Version tag (e.g."v1.30.4+k0s.0")' + description: 'Version tag (e.g."v1.31.0+k0s.0")' required: true env: diff --git a/embedded-bins/Makefile.variables b/embedded-bins/Makefile.variables index f13036d6f0f5..b787f65dce7d 100644 --- a/embedded-bins/Makefile.variables +++ b/embedded-bins/Makefile.variables @@ -22,7 +22,7 @@ containerd_build_shim_go_cgo_enabled = 0 #containerd_build_go_ldflags = containerd_build_go_ldflags_extra = "-w -s -extldflags=-static" -kubernetes_version = 1.30.4 +kubernetes_version = 1.31.0 helm_version = 3.11.1 kubernetes_buildimage = $(golang_buildimage) kubernetes_build_go_tags = "providerless" diff --git a/examples/bootloose-ha-controllers/Dockerfile b/examples/bootloose-ha-controllers/Dockerfile index 10988c851156..c54be8115f37 100644 --- a/examples/bootloose-ha-controllers/Dockerfile +++ b/examples/bootloose-ha-controllers/Dockerfile @@ -2,7 +2,7 @@ FROM quay.io/k0sproject/bootloose-ubuntu18.04 ADD k0s.service /etc/systemd/system/k0s.service -RUN curl --proto '=https' --tlsv1.2 --retry 5 --retry-all-errors -Lfo /usr/local/bin/kubectl https://storage.googleapis.com/kubernetes-release/release/v1.30.4/bin/linux/amd64/kubectl && \ +RUN curl --proto '=https' --tlsv1.2 --retry 5 --retry-all-errors -Lfo /usr/local/bin/kubectl https://storage.googleapis.com/kubernetes-release/release/v1.31.0/bin/linux/amd64/kubectl && \ chmod +x /usr/local/bin/kubectl ENV KUBECONFIG=/var/lib/k0s/pki/admin.conf diff --git a/go.mod b/go.mod index f806737c471c..d14673d4cdde 100644 --- a/go.mod +++ b/go.mod @@ -63,22 +63,22 @@ require ( // Kubernetes require ( - k8s.io/api v0.30.4 - k8s.io/apiextensions-apiserver v0.30.4 - k8s.io/apimachinery v0.30.4 - k8s.io/cli-runtime v0.30.4 - k8s.io/client-go v0.30.4 - k8s.io/cloud-provider v0.30.4 - k8s.io/component-base v0.30.4 - k8s.io/component-helpers v0.30.4 - k8s.io/cri-api v0.30.4 - k8s.io/kube-aggregator v0.30.4 - k8s.io/kubectl v0.30.4 - k8s.io/kubelet v0.30.4 - k8s.io/kubernetes v1.30.4 - k8s.io/mount-utils v0.30.4 - k8s.io/utils v0.0.0-20230726121419-3b25d923346b - sigs.k8s.io/controller-runtime v0.18.5 + k8s.io/api v0.31.0 + k8s.io/apiextensions-apiserver v0.31.0 + k8s.io/apimachinery v0.31.0 + k8s.io/cli-runtime v0.31.0 + k8s.io/client-go v0.31.0 + k8s.io/cloud-provider v0.31.0 + k8s.io/component-base v0.31.0 + k8s.io/component-helpers v0.31.0 + k8s.io/cri-api v0.31.0 + k8s.io/kube-aggregator v0.31.0 + k8s.io/kubectl v0.31.0 + k8s.io/kubelet v0.31.0 + k8s.io/kubernetes v1.31.0 + k8s.io/mount-utils v0.31.0 + k8s.io/utils v0.0.0-20240711033017-18e509b52bc8 + sigs.k8s.io/controller-runtime v0.19.0 sigs.k8s.io/yaml v1.4.0 ) @@ -93,12 +93,12 @@ require ( github.com/Masterminds/sprig/v3 v3.2.3 // indirect github.com/Masterminds/squirrel v1.5.4 // indirect github.com/NYTimes/gziphandler v1.1.1 // indirect - github.com/antlr/antlr4/runtime/Go/antlr/v4 v4.0.0-20230305170008-8188dc5388df // indirect + github.com/antlr4-go/antlr/v4 v4.13.0 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/blang/semver/v4 v4.0.0 // indirect github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869 // indirect github.com/briandowns/spinner v1.19.0 // indirect - github.com/cenkalti/backoff/v4 v4.2.1 // indirect + github.com/cenkalti/backoff/v4 v4.3.0 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/chai2010/gettext-go v1.0.2 // indirect github.com/containerd/cgroups v1.1.0 // indirect @@ -135,8 +135,8 @@ require ( github.com/exponent-io/jsonpath v0.0.0-20151013193312-d6023ce2651d // indirect github.com/fatih/camelcase v1.0.0 // indirect github.com/fatih/color v1.14.1 // indirect - github.com/felixge/httpsnoop v1.0.3 // indirect - github.com/fvbommel/sortorder v1.1.0 // indirect + github.com/felixge/httpsnoop v1.0.4 // indirect + github.com/fxamacker/cbor/v2 v2.7.0 // indirect github.com/gabriel-vasile/mimetype v1.4.3 // indirect github.com/ghodss/yaml v1.0.0 // indirect github.com/go-errors/errors v1.4.2 // indirect @@ -153,7 +153,7 @@ require ( github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/golang/protobuf v1.5.4 // indirect github.com/google/btree v1.1.2 // indirect - github.com/google/cel-go v0.17.8 // indirect + github.com/google/cel-go v0.20.1 // indirect github.com/google/certificate-transparency-go v1.1.4 // indirect github.com/google/gnostic-models v0.6.8 // indirect github.com/google/gofuzz v1.2.0 // indirect @@ -164,7 +164,7 @@ require ( github.com/gosuri/uitable v0.0.4 // indirect github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7 // indirect github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 // indirect - github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0 // indirect + github.com/grpc-ecosystem/grpc-gateway/v2 v2.20.0 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/go-multierror v1.1.1 // indirect github.com/hashicorp/go-version v1.6.0 // indirect @@ -189,14 +189,13 @@ require ( github.com/mattn/go-isatty v0.0.17 // indirect github.com/mattn/go-runewidth v0.0.13 // indirect github.com/mattn/go-sqlite3 v1.14.19 // indirect - github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0 // indirect github.com/mitchellh/copystructure v1.2.0 // indirect github.com/mitchellh/go-wordwrap v1.0.1 // indirect github.com/mitchellh/reflectwalk v1.0.2 // indirect github.com/moby/docker-image-spec v1.3.1 // indirect github.com/moby/locker v1.0.1 // indirect - github.com/moby/spdystream v0.2.0 // indirect - github.com/moby/sys/mountinfo v0.6.2 // indirect + github.com/moby/spdystream v0.4.0 // indirect + github.com/moby/sys/mountinfo v0.7.1 // indirect github.com/moby/sys/sequential v0.5.0 // indirect github.com/moby/sys/signal v0.7.0 // indirect github.com/moby/sys/symlink v0.2.0 // indirect @@ -210,14 +209,15 @@ require ( github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f // indirect github.com/opencontainers/go-digest v1.0.0 // indirect github.com/opencontainers/image-spec v1.1.0 // indirect + github.com/opencontainers/runc v1.1.13 // indirect github.com/opencontainers/selinux v1.11.0 // indirect github.com/peterbourgon/diskv v2.0.1+incompatible // indirect github.com/pkg/errors v0.9.1 // indirect - github.com/pmezard/go-difflib v1.0.0 // indirect - github.com/prometheus/client_golang v1.18.0 // indirect - github.com/prometheus/client_model v0.6.0 // indirect - github.com/prometheus/common v0.45.0 // indirect - github.com/prometheus/procfs v0.12.0 // indirect + github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect + github.com/prometheus/client_golang v1.19.1 // indirect + github.com/prometheus/client_model v0.6.1 // indirect + github.com/prometheus/common v0.55.0 // indirect + github.com/prometheus/procfs v0.15.1 // indirect github.com/rifflock/lfshook v0.0.0-20180920164130-b9218ef580f5 // indirect github.com/rivo/uniseg v0.2.0 // indirect github.com/rubenv/sql-migrate v1.5.2 // indirect @@ -230,6 +230,7 @@ require ( github.com/stretchr/objx v0.5.2 // indirect github.com/vishvananda/netns v0.0.4 // indirect github.com/weppos/publicsuffix-go v0.15.1-0.20210511084619-b1f36a2d6c0b // 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 github.com/xeipuuv/gojsonschema v1.2.0 // indirect @@ -244,15 +245,15 @@ require ( go.etcd.io/etcd/raft/v3 v3.5.15 // indirect go.etcd.io/etcd/server/v3 v3.5.15 // indirect go.opencensus.io v0.24.0 // indirect - go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.46.1 // indirect - go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.45.0 // indirect - go.opentelemetry.io/otel v1.21.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.20.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.20.0 // indirect - go.opentelemetry.io/otel/metric v1.21.0 // indirect - go.opentelemetry.io/otel/sdk v1.21.0 // indirect - go.opentelemetry.io/otel/trace v1.21.0 // indirect - go.opentelemetry.io/proto/otlp v1.0.0 // indirect + go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.53.0 // indirect + go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.53.0 // indirect + go.opentelemetry.io/otel v1.28.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.28.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.27.0 // indirect + go.opentelemetry.io/otel/metric v1.28.0 // indirect + go.opentelemetry.io/otel/sdk v1.28.0 // indirect + go.opentelemetry.io/otel/trace v1.28.0 // indirect + go.opentelemetry.io/proto/otlp v1.3.1 // indirect go.starlark.net v0.0.0-20230525235612-a134d8f9ddca // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/exp v0.0.0-20230905200255-921286631fa9 // indirect @@ -264,58 +265,59 @@ require ( gomodules.xyz/jsonpatch/v2 v2.4.0 // indirect google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de // indirect google.golang.org/genproto/googleapis/api v0.0.0-20240604185151-ef581f913117 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240604185151-ef581f913117 // indirect - google.golang.org/protobuf v1.34.1 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240701130421-f6361c86f094 // indirect + google.golang.org/protobuf v1.34.2 // indirect + gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect - k8s.io/apiserver v0.30.4 // indirect - k8s.io/controller-manager v0.30.4 // indirect - k8s.io/klog/v2 v2.120.1 // indirect - k8s.io/kms v0.30.4 // indirect + k8s.io/apiserver v0.31.0 // indirect + k8s.io/controller-manager v0.31.0 // indirect + k8s.io/klog/v2 v2.130.1 // indirect + k8s.io/kms v0.31.0 // indirect k8s.io/kube-openapi v0.0.0-20240228011516-70dd3763d340 // indirect - k8s.io/metrics v0.30.4 // indirect + k8s.io/metrics v0.31.0 // indirect oras.land/oras-go v1.2.5 // indirect - sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.29.0 // indirect + sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.30.3 // indirect sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect - sigs.k8s.io/kustomize/api v0.13.5-0.20230601165947-6ce0bf390ce3 // indirect - sigs.k8s.io/kustomize/kustomize/v5 v5.0.4-0.20230601165947-6ce0bf390ce3 // indirect - sigs.k8s.io/kustomize/kyaml v0.14.3-0.20230601165947-6ce0bf390ce3 // indirect + sigs.k8s.io/kustomize/api v0.17.2 // indirect + sigs.k8s.io/kustomize/kustomize/v5 v5.4.2 // indirect + sigs.k8s.io/kustomize/kyaml v0.17.1 // indirect sigs.k8s.io/structured-merge-diff/v4 v4.4.1 // indirect ) // Replacements duplicated from upstream Kubernetes replace ( - // https://github.com/kubernetes/kubernetes/blob/v1.30.4/go.mod#L239-L270 - k8s.io/api => k8s.io/api v0.30.4 - k8s.io/apiextensions-apiserver => k8s.io/apiextensions-apiserver v0.30.4 - k8s.io/apimachinery => k8s.io/apimachinery v0.30.4 - k8s.io/apiserver => k8s.io/apiserver v0.30.4 - k8s.io/cli-runtime => k8s.io/cli-runtime v0.30.4 - k8s.io/client-go => k8s.io/client-go v0.30.4 - k8s.io/cloud-provider => k8s.io/cloud-provider v0.30.4 - k8s.io/cluster-bootstrap => k8s.io/cluster-bootstrap v0.30.4 - k8s.io/code-generator => k8s.io/code-generator v0.30.4 - k8s.io/component-base => k8s.io/component-base v0.30.4 - k8s.io/component-helpers => k8s.io/component-helpers v0.30.4 - k8s.io/controller-manager => k8s.io/controller-manager v0.30.4 - k8s.io/cri-api => k8s.io/cri-api v0.30.4 - k8s.io/csi-translation-lib => k8s.io/csi-translation-lib v0.30.4 - k8s.io/dynamic-resource-allocation => k8s.io/dynamic-resource-allocation v0.30.4 - k8s.io/endpointslice => k8s.io/endpointslice v0.30.4 - k8s.io/kms => k8s.io/kms v0.30.4 - k8s.io/kube-aggregator => k8s.io/kube-aggregator v0.30.4 - k8s.io/kube-controller-manager => k8s.io/kube-controller-manager v0.30.4 - k8s.io/kube-proxy => k8s.io/kube-proxy v0.30.4 - k8s.io/kube-scheduler => k8s.io/kube-scheduler v0.30.4 - k8s.io/kubectl => k8s.io/kubectl v0.30.4 - k8s.io/kubelet => k8s.io/kubelet v0.30.4 - k8s.io/legacy-cloud-providers => k8s.io/legacy-cloud-providers v0.30.4 - k8s.io/metrics => k8s.io/metrics v0.30.4 - k8s.io/mount-utils => k8s.io/mount-utils v0.30.4 - k8s.io/pod-security-admission => k8s.io/pod-security-admission v0.30.4 - k8s.io/sample-apiserver => k8s.io/sample-apiserver v0.30.4 - k8s.io/sample-cli-plugin => k8s.io/sample-cli-plugin v0.30.4 - k8s.io/sample-controller => k8s.io/sample-controller v0.30.4 + // https://github.com/kubernetes/kubernetes/blob/v1.31.0/go.mod#L227-L258 + k8s.io/api => k8s.io/api v0.31.0 + k8s.io/apiextensions-apiserver => k8s.io/apiextensions-apiserver v0.31.0 + k8s.io/apimachinery => k8s.io/apimachinery v0.31.0 + k8s.io/apiserver => k8s.io/apiserver v0.31.0 + k8s.io/cli-runtime => k8s.io/cli-runtime v0.31.0 + k8s.io/client-go => k8s.io/client-go v0.31.0 + k8s.io/cloud-provider => k8s.io/cloud-provider v0.31.0 + k8s.io/cluster-bootstrap => k8s.io/cluster-bootstrap v0.31.0 + k8s.io/code-generator => k8s.io/code-generator v0.31.0 + k8s.io/component-base => k8s.io/component-base v0.31.0 + k8s.io/component-helpers => k8s.io/component-helpers v0.31.0 + k8s.io/controller-manager => k8s.io/controller-manager v0.31.0 + k8s.io/cri-api => k8s.io/cri-api v0.31.0 + k8s.io/cri-client => k8s.io/cri-client v0.31.0 + k8s.io/csi-translation-lib => k8s.io/csi-translation-lib v0.31.0 + k8s.io/dynamic-resource-allocation => k8s.io/dynamic-resource-allocation v0.31.0 + k8s.io/endpointslice => k8s.io/endpointslice v0.31.0 + k8s.io/kms => k8s.io/kms v0.31.0 + k8s.io/kube-aggregator => k8s.io/kube-aggregator v0.31.0 + k8s.io/kube-controller-manager => k8s.io/kube-controller-manager v0.31.0 + k8s.io/kube-proxy => k8s.io/kube-proxy v0.31.0 + k8s.io/kube-scheduler => k8s.io/kube-scheduler v0.31.0 + k8s.io/kubectl => k8s.io/kubectl v0.31.0 + k8s.io/kubelet => k8s.io/kubelet v0.31.0 + k8s.io/metrics => k8s.io/metrics v0.31.0 + k8s.io/mount-utils => k8s.io/mount-utils v0.31.0 + k8s.io/pod-security-admission => k8s.io/pod-security-admission v0.31.0 + k8s.io/sample-apiserver => k8s.io/sample-apiserver v0.31.0 + k8s.io/sample-cli-plugin => k8s.io/sample-cli-plugin v0.31.0 + k8s.io/sample-controller => k8s.io/sample-controller v0.31.0 ) diff --git a/go.sum b/go.sum index bcff62b7f354..570a2f5c860b 100644 --- a/go.sum +++ b/go.sum @@ -1,8 +1,4 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go v0.112.0 h1:tpFCD7hpHFlQ8yPwT3x+QeXqc2T6+n6T+hmABHfDUSM= -cloud.google.com/go/compute v1.24.0 h1:phWcR2eWzRJaL/kOiJwfFsPs4BaKq1j6vnpZrc1YlVg= -cloud.google.com/go/compute/metadata v0.3.0 h1:Tz+eQXMEqDIKRsmY3cHTL6FVaynIjX2QxYC4trgAKZc= -cloud.google.com/go/compute/metadata v0.3.0/go.mod h1:zFmK7XCadkQkj6TtorcaGlCW1hT1fIilQDwofLpJ20k= dario.cat/mergo v1.0.0 h1:AGCNq9Evsj31mOgNPcLyXc+4PNABt905YmuqPYYpBWk= dario.cat/mergo v1.0.0/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24 h1:bvDV9vkmnHYOMsOr4WLk+Vo07yKIzd94sVoIqshQ4bU= @@ -42,8 +38,8 @@ github.com/Shopify/logrus-bugsnag v0.0.0-20171204204709-577dee27f20d h1:UrqY+r/O github.com/Shopify/logrus-bugsnag v0.0.0-20171204204709-577dee27f20d/go.mod h1:HI8ITrYtUY+O+ZhtlqUnD8+KwNPOyugEhfP9fdUIaEQ= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= -github.com/antlr/antlr4/runtime/Go/antlr/v4 v4.0.0-20230305170008-8188dc5388df h1:7RFfzj4SSt6nnvCPbCqijJi1nWCd+TqAT3bYCStRC18= -github.com/antlr/antlr4/runtime/Go/antlr/v4 v4.0.0-20230305170008-8188dc5388df/go.mod h1:pSwJ0fSY5KhvocuWSx4fz3BA8OrA1bQn+K1Eli3BRwM= +github.com/antlr4-go/antlr/v4 v4.13.0 h1:lxCg3LAv+EUK6t1i0y1V6/SLeUi0eKEKdhQAlS8TVTI= +github.com/antlr4-go/antlr/v4 v4.13.0/go.mod h1:pfChB/xh/Unjila75QW7+VU4TSnWnnk9UTnmpPaOR2g= 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-20200428143746-21a406dcc535 h1:4daAzAu0S6Vi7/lbWECcX0j45yZReDZ56BQsrVBOEEY= @@ -74,8 +70,8 @@ github.com/carlmjohnson/requests v0.24.2 h1:JDakhAmTIKL/qL/1P7Kkc2INGBJIkIFP6xUe github.com/carlmjohnson/requests v0.24.2/go.mod h1:duYA/jDnyZ6f3xbcF5PpZ9N8clgopubP2nK5i6MVMhU= github.com/cavaliergopher/grab/v3 v3.0.1 h1:4z7TkBfmPjmLAAmkkAZNX/6QJ1nNFdv3SdIHXju0Fr4= github.com/cavaliergopher/grab/v3 v3.0.1/go.mod h1:1U/KNnD+Ft6JJiYoYBAimKH2XrYptb8Kl3DFGmsjpq4= -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.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= @@ -90,8 +86,6 @@ github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDk github.com/cloudflare/cfssl v1.6.4 h1:NMOvfrEjFfC63K3SGXgAnFdsgkmiq4kATme5BfcqrO8= github.com/cloudflare/cfssl v1.6.4/go.mod h1:8b3CQMxfWPAeom3zBnGJ6sd+G1NkL5TXqmDXacb+1J0= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= -github.com/cncf/xds/go v0.0.0-20240423153145-555b57ec207b h1:ga8SEFjZ60pxLcmhnThWgvH2wg8376yUJmPhEH4H3kw= -github.com/cncf/xds/go v0.0.0-20240423153145-555b57ec207b/go.mod h1:W+zGtBO5Y1IgJhy4+A9GOqVhqLpfZi+vwmdNXUehLA8= github.com/cockroachdb/datadriven v1.0.2 h1:H9MtNqVoVhvd9nCBwOyDjUEdZCREqbIdCJD93PBm/jA= github.com/cockroachdb/datadriven v1.0.2/go.mod h1:a9RdTaap04u637JoCzcUoIcDmvwSUtcUFtT/C3kJlTU= github.com/containerd/cgroups v1.1.0 h1:v8rEWFl6EoqHB+swVNjVoCJE8o3jX7e8nqBGPLaDFBM= @@ -173,8 +167,6 @@ github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymF github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/envoyproxy/protoc-gen-validate v1.0.4 h1:gVPz/FMfvh57HdSJQyvBtF00j8JU4zdyUgIUNhlgg0A= -github.com/envoyproxy/protoc-gen-validate v1.0.4/go.mod h1:qys6tmnRsYrQqIhm2bvKZH4Blx/1gTIZ2UKVY1M+Yew= github.com/evanphx/json-patch v5.7.0+incompatible h1:vgGkfT/9f8zE6tvSCe74nfpAVDQ2tG6yudJd8LBksgI= github.com/evanphx/json-patch v5.7.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= github.com/evanphx/json-patch/v5 v5.9.0 h1:kcBlZQbplgElYIlo/n1hJbls2z/1awpXxpRi0/FOJfg= @@ -186,8 +178,8 @@ github.com/fatih/camelcase v1.0.0/go.mod h1:yN2Sb0lFhZJUdVvtELVWefmrXpuZESvPmqwo github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/color v1.14.1 h1:qfhVLaG5s+nCROl1zJsZRxFeYrHLqWroPOQ8BWiNb4w= github.com/fatih/color v1.14.1/go.mod h1:2oHN61fhTpgcxD3TSWCgKDiH1+x4OiDVVGH8WlgGZGg= -github.com/felixge/httpsnoop v1.0.3 h1:s/nj+GCswXYzN5v2DpNMuMQYe+0DDwt5WVCU6CWBdXk= -github.com/felixge/httpsnoop v1.0.3/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= +github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= +github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/foxcpp/go-mockdns v1.0.0 h1:7jBqxd3WDWwi/6WhDvacvH1XsN3rOLXyHM1uhvIx6FI= github.com/foxcpp/go-mockdns v1.0.0/go.mod h1:lgRN6+KxQBawyIghpnl5CezHFGS9VLzvtVlwxvzXTQ4= github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8= @@ -196,8 +188,8 @@ github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMo github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA= github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= -github.com/fvbommel/sortorder v1.1.0 h1:fUmoe+HLsBTctBDoaBwpQo5N+nrCp8g/BjKb/6ZQmYw= -github.com/fvbommel/sortorder v1.1.0/go.mod h1:uk88iVf1ovNn1iLfgUVU2F9o5eO30ui720w+kxuqRs0= +github.com/fxamacker/cbor/v2 v2.7.0 h1:iM5WgngdRBanHcxugY4JySA0nk1wZorNOpTgCMedv5E= +github.com/fxamacker/cbor/v2 v2.7.0/go.mod h1:pxXPTn3joSm21Gbwsv0w9OSA2y1HFR9qXEeXQVeNoDQ= github.com/gabriel-vasile/mimetype v1.4.3 h1:in2uUcidCuFcDKtdcBxlR0rJ1+fsokWf+uqxgUFjbI0= github.com/gabriel-vasile/mimetype v1.4.3/go.mod h1:d8uq/6HKRL6CGdk+aubisF/M5GcPfT7nKyLpA0lbSSk= github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk= @@ -237,9 +229,10 @@ github.com/go-quicktest/qt v1.101.0/go.mod h1:14Bz/f7NwaXPtdYEgzsx46kqSxVwTbzVZs github.com/go-sql-driver/mysql v1.6.0 h1:BCTh4TKNUYmOmMUcQ3IipzF5prigylS7XXjEkfCHuOE= github.com/go-sql-driver/mysql v1.6.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= +github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0 h1:p104kn46Q8WdvHunIJ9dAyjPVtrBPhSr3KT2yUst43I= github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= -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/gobuffalo/logger v1.0.6 h1:nnZNpxYo0zx+Aj9RfMPBm+x9zAU2OayFh/xrAWi34HU= github.com/gobuffalo/logger v1.0.6/go.mod h1:J31TBEHR1QLV2683OXTAItYIg8pv2JMHnF/quuAbMjs= github.com/gobuffalo/packd v1.0.1 h1:U2wXfRr4E9DH8IdsDLlRFwTZTK7hLfq9qT/QHXGVe/0= @@ -257,8 +250,6 @@ github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69 github.com/golang-jwt/jwt/v4 v4.5.0 h1:7cYmW1XlMY7h7ii7UhUyChSgS5wUJEnm9uZVTGqOWzg= github.com/golang-jwt/jwt/v4 v4.5.0/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/glog v1.2.1 h1:OptwRhECazUx5ix5TTWC3EZhsZEHWcYWY4FQHTIubm4= -github.com/golang/glog v1.2.1/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w= github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= @@ -287,8 +278,8 @@ github.com/gomodule/redigo v1.8.2 h1:H5XSIre1MB5NbPYFp+i1NBbb5qN1W8Y8YAQoAYbkm8k github.com/gomodule/redigo v1.8.2/go.mod h1:P9dn9mFrCBvWhGE1wpxx6fgq7BAeLBk+UUUzlpkBYO0= github.com/google/btree v1.1.2 h1:xf4v41cLI2Z6FxbKm+8Bu+m8ifhj15JuZ9sa0jZCMUU= github.com/google/btree v1.1.2/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4= -github.com/google/cel-go v0.17.8 h1:j9m730pMZt1Fc4oKhCLUHfjj6527LuhYcYw0Rl8gqto= -github.com/google/cel-go v0.17.8/go.mod h1:HXZKzB0LXqer5lHHgfWAnlYwJaQBDKMjxjulNQzhwhY= +github.com/google/cel-go v0.20.1 h1:nDx9r8S3L4pE61eDdt8igGj8rf5kjYR3ILxWIpWNi84= +github.com/google/cel-go v0.20.1/go.mod h1:kWcIzTsPX0zmQ+H3TirHstLLf9ep5QTsZBN9u4dOYLg= github.com/google/certificate-transparency-go v1.1.4 h1:hCyXHDbtqlr/lMXU0D4WgbalXL0Zk4dSWWMbPV8VrqY= github.com/google/certificate-transparency-go v1.1.4/go.mod h1:D6lvbfwckhNrbM9WVl1EVeMOyzC19mpIjMOI4nxBHtQ= github.com/google/gnostic-models v0.6.8 h1:yo/ABAfM5IMRsS1VnXjTBvUb61tFIHozhlYvRgGre9I= @@ -308,8 +299,8 @@ github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/ github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1 h1:K6RDEckDVWvDI9JAJYCmNdQXq6neHJOYx3V6jnqNEec= -github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20240525223248-4bfdf5a9a2af h1:kmjWCqn2qkEml422C2Rrd27c3VGxi6a/6HNq8QmHRKM= +github.com/google/pprof v0.0.0-20240525223248-4bfdf5a9a2af/go.mod h1:K1liHPHnj73Fdn/EKuT8nrFqBihUSKXoLYU0BuatOYo= 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.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= @@ -320,7 +311,6 @@ github.com/gorilla/handlers v1.5.1 h1:9lRY6j8DEeeBT10CvO9hGW0gmky0BprnvDI5vfhUHH github.com/gorilla/handlers v1.5.1/go.mod h1:t8XrUpc4KVXb7HGyJ4/cEnwQiaxrX/hz1Zv/4g96P1Q= github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI= github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= -github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc= github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/gosuri/uitable v0.0.4 h1:IG2xLKRvErL3uhY6e1BylFzG+aJiwQviDDTfOKeKTpY= @@ -333,8 +323,8 @@ github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 h1:Ovs26xHkKqVztRpIrF/92Bcuy github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo= github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0 h1:YBftPWNWd4WwGqtY2yeZL2ef8rHAxPBD8KFhJpmcqms= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0/go.mod h1:YN5jB8ie0yfIUg6VvR9Kz84aCaG7AsGZnLjhHbUqwPg= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.20.0 h1:bkypFPDjIYGfCYD5mRBvpqxfYX1YCS1PXdKYWi8FsN0= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.20.0/go.mod h1:P+Lt/0by1T8bfcF3z737NnSbmxQAppXMRziHUxPOC8k= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= @@ -436,8 +426,6 @@ github.com/mattn/go-sqlite3 v1.14.6/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A github.com/mattn/go-sqlite3 v1.14.19 h1:fhGleo2h1p8tVChob4I9HpmVFIAkKGpiukdrgQbWfGI= github.com/mattn/go-sqlite3 v1.14.19/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S2DGjv9HUNg= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= -github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0 h1:jWpvCLoY8Z/e3VKvlsiIGKtc+UG6U5vzxaoagmhXfyg= -github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0/go.mod h1:QUyp042oQthUoa9bqDv0ER0wrtXnBruoNd7aNjkbP+k= github.com/mdlayher/netlink v1.7.2 h1:/UtM3ofJap7Vl4QWCPDGXY8d3GIY2UGSDbK+QWmY8/g= github.com/mdlayher/netlink v1.7.2/go.mod h1:xraEF7uJbxLhc5fpHL4cPe221LI2bdttWlU+ZGLfQSw= github.com/mdlayher/socket v0.4.1 h1:eM9y2/jlbs1M615oshPQOHZzj6R6wMT7bX5NPiQvn2U= @@ -460,10 +448,10 @@ github.com/moby/docker-image-spec v1.3.1 h1:jMKff3w6PgbfSa69GfNg+zN/XLhfXJGnEx3N 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/spdystream v0.2.0 h1:cjW1zVyyoiM0T7b6UoySUFqzXMoqRckQtXwGPiBhOM8= -github.com/moby/spdystream v0.2.0/go.mod h1:f7i0iNDQJ059oMTcWxx8MA/zKFIuD/lY+0GqbN2Wy8c= -github.com/moby/sys/mountinfo v0.6.2 h1:BzJjoreD5BMFNmD9Rus6gdd1pLuecOFPt8wC+Vygl78= -github.com/moby/sys/mountinfo v0.6.2/go.mod h1:IJb6JQeOklcdMU9F5xQ8ZALD+CUr5VlGpwtX+VE0rpI= +github.com/moby/spdystream v0.4.0 h1:Vy79D6mHeJJjiPdFEL2yku1kl0chZpJfZcPpb16BRl8= +github.com/moby/spdystream v0.4.0/go.mod h1:xBAYlnt/ay+11ShkdFKNAG7LsyK/tmNBVvVOwrfMgdI= +github.com/moby/sys/mountinfo v0.7.1 h1:/tTvQaSJRr2FshkhXiIpux6fQ2Zvc4j7tAhMTStAG2g= +github.com/moby/sys/mountinfo v0.7.1/go.mod h1:IJb6JQeOklcdMU9F5xQ8ZALD+CUr5VlGpwtX+VE0rpI= github.com/moby/sys/sequential v0.5.0 h1:OPvI35Lzn9K04PBbCLW0g4LcFAJgHsvXsRyewg5lXtc= github.com/moby/sys/sequential v0.5.0/go.mod h1:tH2cOOs5V9MlPiXcQzRC+eEyab644PWKGRYaaV5ZZlo= github.com/moby/sys/signal v0.7.0 h1:25RW3d5TnQEoKvRbEKUGay6DCQ46IxAVTT9CUMgmsSI= @@ -502,18 +490,20 @@ github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vv github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU= github.com/onsi/ginkgo/v2 v2.1.3/go.mod h1:vw5CSIxN1JObi/U8gcbwft7ZxR2dgaR70JSE3/PpL4c= -github.com/onsi/ginkgo/v2 v2.17.1 h1:V++EzdbhI4ZV4ev0UTIj0PzhzOcReJFyJaLjtSF55M8= -github.com/onsi/ginkgo/v2 v2.17.1/go.mod h1:llBI3WDLL9Z6taip6f33H76YcWtJv+7R3HigUjbIBOs= +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.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY= -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/gomega v1.33.1 h1:dsYjIxxSR755MDmKVsaFQTE22ChNBcuuTWgkUDSubOk= +github.com/onsi/gomega v1.33.1/go.mod h1:U4R44UsT+9eLIaYRB2a5qajjtQYn0hauxvRm16AVYg0= github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= 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= github.com/opencontainers/image-spec v1.1.0/go.mod h1:W4s4sFTMaBeK1BQLXbG4AdM2szdn85PY75RI83NrTrM= +github.com/opencontainers/runc v1.1.13 h1:98S2srgG9vw0zWcDpFMn5TRrh8kLxa/5OFUstuUhmRs= +github.com/opencontainers/runc v1.1.13/go.mod h1:R016aXacfp/gwQBYw2FDGa9m+n6atbLWrYY8hNMT/sA= github.com/opencontainers/runtime-spec v1.2.0 h1:z97+pHb3uELt/yiAWD691HNHQIF07bE7dzrbT927iTk= github.com/opencontainers/runtime-spec v1.2.0/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= github.com/opencontainers/selinux v1.11.0 h1:+5Zbo97w3Lbmb3PeqQtpmTkMwsW5nRI3YaLpt7tQ7oU= @@ -531,37 +521,38 @@ github.com/phayes/freeport v0.0.0-20220201140144-74d24b5ae9f5/go.mod h1:iIss55rK github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= 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 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/poy/onpar v1.1.2 h1:QaNrNiZx0+Nar5dLgTVp5mXkyoVFIbepjyEoGSnhbAY= github.com/poy/onpar v1.1.2/go.mod h1:6X8FLNoxyr9kkmnlqpK6LSoiOtrO6MICtWwEuWkLjzg= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= github.com/prometheus/client_golang v1.1.0/go.mod h1:I1FGZT9+L76gKKOs5djB6ezCbFQP1xR9D75/vuwEF3g= -github.com/prometheus/client_golang v1.18.0 h1:HzFfmkOzH5Q8L8G+kSJKUx5dtG87sewO+FoDDqP5Tbk= -github.com/prometheus/client_golang v1.18.0/go.mod h1:T+GXkCk5wSJyOqMIzVgvvjFDlkOQntgjkJWKrN5txjA= +github.com/prometheus/client_golang v1.19.1 h1:wZWJDwK+NameRJuPGDhlnFgx8e8HN3XHQeLaYJFJBOE= +github.com/prometheus/client_golang v1.19.1/go.mod h1:mP78NwGzrVks5S2H6ab8+ZZGJLZUq1hoULYBAYBw1Ho= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.6.0 h1:k1v3CzpSRUTrKMppY35TLwPvxHqBu0bYgxZzqGIgaos= -github.com/prometheus/client_model v0.6.0/go.mod h1:NTQHnmxFpouOD0DpvP4XujX3CdOAGQPoaGhyTchlyt8= +github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= +github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.6.0/go.mod h1:eBmuwkDJBwy6iBfxCBob6t6dR6ENT/y+J+Zk0j9GMYc= -github.com/prometheus/common v0.45.0 h1:2BGz0eBc2hdMDLnO/8n0jeB3oPrt2D08CekT0lneoxM= -github.com/prometheus/common v0.45.0/go.mod h1:YJmSTw9BoKxJplESWWxlbyttQR4uaEcGyv9MZjVOJsY= +github.com/prometheus/common v0.55.0 h1:KEi6DK7lXW/m7Ig5i47x0vRzuBsHuvJdi5ee6Y3G1dc= +github.com/prometheus/common v0.55.0/go.mod h1:2SECS4xJG1kd8XF9IcM1gMX6510RAEL65zxzNImwdc8= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.3/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDaekg4FpcdQ= -github.com/prometheus/procfs v0.12.0 h1:jluTpSng7V9hY0O2R9DzzJHYb2xULk9VTR1V1R/k6Bo= -github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo= +github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= +github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= github.com/rifflock/lfshook v0.0.0-20180920164130-b9218ef580f5 h1:mZHayPoR0lNmnHyvtYjDeq0zlVHn9K/ZXoy17ylucdo= github.com/rifflock/lfshook v0.0.0-20180920164130-b9218ef580f5/go.mod h1:GEXHk5HgEKCvEIIrSpFI3ozzG5xOKA2DVlEX/gGnewM= github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/robfig/cron v1.2.0 h1:ZjScXvvxeQ63Dbyxy76Fj3AT3Ut0aKsyd2/tl3DTMuQ= github.com/robfig/cron v1.2.0/go.mod h1:JGuDeoQd7Z6yL4zQhZ3OPEVHB7fL6Ka6skscFHfmt2k= -github.com/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M= -github.com/rogpeppe/go-internal v1.11.0/go.mod h1:ddIwULY96R17DhadqLgMfk9H9tvdUzkipdSkR5nkCZA= +github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8= +github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4= github.com/rqlite/rqlite v4.6.0+incompatible h1:z70EJPSUsqoHEghCVC8tu9G2L4kG+/aYCj78fzrjI8A= github.com/rqlite/rqlite v4.6.0+incompatible/go.mod h1:1X3Z9kEdqfR2xfTobXlL3eja2jsQHlQkUZ9eGObVp5o= github.com/rubenv/sql-migrate v1.5.2 h1:bMDqOnrJVV/6JQgQ/MxOpU+AdO8uzYYA/TxFUBzFtS0= @@ -625,6 +616,8 @@ github.com/vmware-tanzu/sonobuoy v0.57.2/go.mod h1:pSxqh7S/Se+eqQu9np/PVDv428BTq github.com/weppos/publicsuffix-go v0.13.1-0.20210123135404-5fd73613514e/go.mod h1:HYux0V0Zi04bHNwOHy4cXJVz/TQjYonnF6aoYhj+3QE= github.com/weppos/publicsuffix-go v0.15.1-0.20210511084619-b1f36a2d6c0b h1:FsyNrX12e5BkplJq7wKOLk0+C6LZ+KGXvuEcKUYm5ss= github.com/weppos/publicsuffix-go v0.15.1-0.20210511084619-b1f36a2d6c0b/go.mod h1:HYux0V0Zi04bHNwOHy4cXJVz/TQjYonnF6aoYhj+3QE= +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= 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= @@ -676,24 +669,24 @@ go.etcd.io/etcd/server/v3 v3.5.15 h1:x35jrWnZgsRwMsFsUJIUdT1bvzIz1B+29HjMfRYVN/E go.etcd.io/etcd/server/v3 v3.5.15/go.mod h1:l9jX9oa/iuArjqz0RNX/TDbc70dLXxRZo/nmPucrpFo= go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.46.1 h1:SpGay3w+nEwMpfVnbqOLH5gY52/foP8RE8UzTZ1pdSE= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.46.1/go.mod h1:4UoMYEZOC0yN/sPGH76KPkkU7zgiEWYWL9vwmbnTJPE= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.45.0 h1:x8Z78aZx8cOF0+Kkazoc7lwUNMGy0LrzEMxTm4BbTxg= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.45.0/go.mod h1:62CPTSry9QZtOaSsE3tOzhx6LzDhHnXJ6xHeMNNiM6Q= -go.opentelemetry.io/otel v1.21.0 h1:hzLeKBZEL7Okw2mGzZ0cc4k/A7Fta0uoPgaJCr8fsFc= -go.opentelemetry.io/otel v1.21.0/go.mod h1:QZzNPQPm1zLX4gZK4cMi+71eaorMSGT3A4znnUvNNEo= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.20.0 h1:DeFD0VgTZ+Cj6hxravYYZE2W4GlneVH81iAOPjZkzk8= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.20.0/go.mod h1:GijYcYmNpX1KazD5JmWGsi4P7dDTTTnfv1UbGn84MnU= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.20.0 h1:gvmNvqrPYovvyRmCSygkUDyL8lC5Tl845MLEwqpxhEU= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.20.0/go.mod h1:vNUq47TGFioo+ffTSnKNdob241vePmtNZnAODKapKd0= -go.opentelemetry.io/otel/metric v1.21.0 h1:tlYWfeo+Bocx5kLEloTjbcDwBuELRrIFxwdQ36PlJu4= -go.opentelemetry.io/otel/metric v1.21.0/go.mod h1:o1p3CA8nNHW8j5yuQLdc1eeqEaPfzug24uvsyIEJRWM= -go.opentelemetry.io/otel/sdk v1.21.0 h1:FTt8qirL1EysG6sTQRZ5TokkU8d0ugCj8htOgThZXQ8= -go.opentelemetry.io/otel/sdk v1.21.0/go.mod h1:Nna6Yv7PWTdgJHVRD9hIYywQBRx7pbox6nwBnZIxl/E= -go.opentelemetry.io/otel/trace v1.21.0 h1:WD9i5gzvoUPuXIXH24ZNBudiarZDKuekPqi/E8fpfLc= -go.opentelemetry.io/otel/trace v1.21.0/go.mod h1:LGbsEB0f9LGjN+OZaQQ26sohbOmiMR+BaslueVtS/qQ= -go.opentelemetry.io/proto/otlp v1.0.0 h1:T0TX0tmXU8a3CbNXzEKGeU5mIVOdf0oykP+u2lIVU/I= -go.opentelemetry.io/proto/otlp v1.0.0/go.mod h1:Sy6pihPLfYHkr3NkUbEhGHFhINUSI/v80hjKIs5JXpM= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.53.0 h1:9G6E0TXzGFVfTnawRzrPl83iHOAV7L8NJiR8RSGYV1g= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.53.0/go.mod h1:azvtTADFQJA8mX80jIH/akaE7h+dbm/sVuaHqN13w74= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.53.0 h1:4K4tsIXefpVJtvA/8srF4V4y0akAoPHkIslgAkjixJA= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.53.0/go.mod h1:jjdQuTGVsXV4vSs+CJ2qYDeDPf9yIJV23qlIzBm73Vg= +go.opentelemetry.io/otel v1.28.0 h1:/SqNcYk+idO0CxKEUOtKQClMK/MimZihKYMruSMViUo= +go.opentelemetry.io/otel v1.28.0/go.mod h1:q68ijF8Fc8CnMHKyzqL6akLO46ePnjkgfIMIjUIX9z4= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.28.0 h1:3Q/xZUyC1BBkualc9ROb4G8qkH90LXEIICcs5zv1OYY= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.28.0/go.mod h1:s75jGIWA9OfCMzF0xr+ZgfrB5FEbbV7UuYo32ahUiFI= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.27.0 h1:qFffATk0X+HD+f1Z8lswGiOQYKHRlzfmdJm0wEaVrFA= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.27.0/go.mod h1:MOiCmryaYtc+V0Ei+Tx9o5S1ZjA7kzLucuVuyzBZloQ= +go.opentelemetry.io/otel/metric v1.28.0 h1:f0HGvSl1KRAU1DLgLGFjrwVyismPlnuU6JD6bOeuA5Q= +go.opentelemetry.io/otel/metric v1.28.0/go.mod h1:Fb1eVBFZmLVTMb6PPohq3TO9IIhUisDsbJoL/+uQW4s= +go.opentelemetry.io/otel/sdk v1.28.0 h1:b9d7hIry8yZsgtbmM0DKyPWMMUMlK9NEKuIG4aBqWyE= +go.opentelemetry.io/otel/sdk v1.28.0/go.mod h1:oYj7ClPUA7Iw3m+r7GeEjz0qckQRJK2B8zjcZEfu7Pg= +go.opentelemetry.io/otel/trace v1.28.0 h1:GhQ9cUuQGmNDd5BTCP2dAvv75RdMxEfTmYejp+lkx9g= +go.opentelemetry.io/otel/trace v1.28.0/go.mod h1:jPyXzNPg6da9+38HEwElrQiHlVMTnVfM3/yv2OlIHaI= +go.opentelemetry.io/proto/otlp v1.3.1 h1:TrMUixzpM0yuc/znrFTP9MMRh8trP93mkCiDVeXrui0= +go.opentelemetry.io/proto/otlp v1.3.1/go.mod h1:0X1WI4de4ZsLrrJNLAQbFeLCm3T7yBkR0XqQ7niQU+8= go.starlark.net v0.0.0-20230525235612-a134d8f9ddca h1:VdD38733bfYv5tUZwEIskMM93VanwNIi5bIKnDrJdEY= go.starlark.net v0.0.0-20230525235612-a134d8f9ddca/go.mod h1:jxU+3+j+71eXOW14274+SmmuW82qJzl6iZSeqEtTGds= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= @@ -830,8 +823,8 @@ google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de h1:F6qOa9AZTYJXOUE google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de/go.mod h1:VUhTRKeHn9wwcdrk73nvdC9gF178Tzhmt/qyaFcPLSo= google.golang.org/genproto/googleapis/api v0.0.0-20240604185151-ef581f913117 h1:+rdxYoE3E5htTEWIe15GlN6IfvbURM//Jt0mmkmm6ZU= google.golang.org/genproto/googleapis/api v0.0.0-20240604185151-ef581f913117/go.mod h1:OimBR/bc1wPO9iV4NC2bpyjy3VnAwZh5EBPQdtaE5oo= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240604185151-ef581f913117 h1:1GBuWVLM/KMVUv1t1En5Gs+gFZCNd360GGb4sSxtrhU= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240604185151-ef581f913117/go.mod h1:EfXuqaE1J41VCDicxHzUDm+8rk+7ZdXzHV0IhO/I6s0= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240701130421-f6361c86f094 h1:BwIjyKYGsK9dMCBOorzRri8MQwmi7mT9rGHsCEinZkA= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240701130421-f6361c86f094/go.mod h1:Ue6ibwXGpU+dqIcODieyLOcgj7z8+IcskoNIgZxtrFY= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= @@ -851,13 +844,15 @@ google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlba google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.34.1 h1:9ddQBjfCyZPOHPUiPxpYESBLc+T8P3E+Vo4IbKZgFWg= -google.golang.org/protobuf v1.34.1/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= +google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg= +google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= 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-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= +gopkg.in/evanphx/json-patch.v4 v4.12.0/go.mod h1:p8EYWUEYMpynmqDbY58zCKCFZw8pRWMG4EsWvDvM72M= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= @@ -881,62 +876,62 @@ helm.sh/helm/v3 v3.15.4 h1:UFHd6oZ1IN3FsUZ7XNhOQDyQ2QYknBNWRHH57e9cbHY= helm.sh/helm/v3 v3.15.4/go.mod h1:phOwlxqGSgppCY/ysWBNRhG3MtnpsttOzxaTK+Mt40E= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -k8s.io/api v0.30.4 h1:XASIELmW8w8q0i1Y4124LqPoWMycLjyQti/fdYHYjCs= -k8s.io/api v0.30.4/go.mod h1:ZqniWRKu7WIeLijbbzetF4U9qZ03cg5IRwl8YVs8mX0= -k8s.io/apiextensions-apiserver v0.30.4 h1:FwOMIk/rzZvM/Gx0IOz0+biZ+dlnlCeyfXW17uzV1qE= -k8s.io/apiextensions-apiserver v0.30.4/go.mod h1:m8cAkJ9PVU8Olb4cPW4hrUDBZGvoSJ0kY0G0CfdGQac= -k8s.io/apimachinery v0.30.4 h1:5QHQI2tInzr8LsT4kU/2+fSeibH1eIHswNx480cqIoY= -k8s.io/apimachinery v0.30.4/go.mod h1:iexa2somDaxdnj7bha06bhb43Zpa6eWH8N8dbqVjTUc= -k8s.io/apiserver v0.30.4 h1:rHkGJhxd+m4jILrgkenwSmG4X0QXk6ecGuybzS/PQak= -k8s.io/apiserver v0.30.4/go.mod h1:oyGAj9B9/0+I9huJyf4/8SMBF2mNh2bTMlu7703dkH8= -k8s.io/cli-runtime v0.30.4 h1:3iDwgInzWaMh3lrDY8JDj1D6c60agHSv2hy3O/a2a0U= -k8s.io/cli-runtime v0.30.4/go.mod h1:O9Rf0F9x0zeMCcBQEIQxzd4zvxoqfhZZgDAet4hhBPs= -k8s.io/client-go v0.30.4 h1:eculUe+HPQoPbixfwmaSZGsKcOf7D288tH6hDAdd+wY= -k8s.io/client-go v0.30.4/go.mod h1:IBS0R/Mt0LHkNHF4E6n+SUDPG7+m2po6RZU7YHeOpzc= -k8s.io/cloud-provider v0.30.4 h1:j5T/KePmxux289heU+aG+Aq3RmaGfzARAglWUkxTErE= -k8s.io/cloud-provider v0.30.4/go.mod h1:OfI8YUt8pCU8xvkN1dQ1pvJpQwNZlEszIY186v68H7A= -k8s.io/component-base v0.30.4 h1:FlgKqazIkIIxpLA4wFXsiPiDllJn9fhsN3G4TeX7T7U= -k8s.io/component-base v0.30.4/go.mod h1:Qd3h+OJxV/LrnriXG/E15ZK83dzd306qJHW9+87S5ls= -k8s.io/component-helpers v0.30.4 h1:A4KYmrz12HZtGZ8TAnanl0SUx7n6tKduxzB3NHvinr0= -k8s.io/component-helpers v0.30.4/go.mod h1:h5D4gI8hGQXMHw90qJq41PRUJrn2dvFA3ElZFUTzRps= -k8s.io/controller-manager v0.30.4 h1:PdAGa5srv9fTECbBtWeaLshNpy//hGHHpXjRkh1wOkQ= -k8s.io/controller-manager v0.30.4/go.mod h1:fTVfW8X0yJh+pUuybc45WxyoLQEhJqJjSff6/2b+l3I= -k8s.io/cri-api v0.30.4 h1:Q0A3QhPUWl4xv/rgmMnCLjEn2XldsLIn2VOgTzLLpck= -k8s.io/cri-api v0.30.4/go.mod h1://4/umPJSW1ISNSNng4OwjpkvswJOQwU8rnkvO8P+xg= -k8s.io/klog/v2 v2.120.1 h1:QXU6cPEOIslTGvZaXvFWiP9VKyeet3sawzTOvdXb4Vw= -k8s.io/klog/v2 v2.120.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE= -k8s.io/kms v0.30.4 h1:Je7wR5/m+w/E7Ef9R9RY1yeMU/C2GXIvhzRFfg8H5kQ= -k8s.io/kms v0.30.4/go.mod h1:GrMurD0qk3G4yNgGcsCEmepqf9KyyIrTXYR2lyUOJC4= -k8s.io/kube-aggregator v0.30.4 h1:YNP4SE+n13hcPbrloCqPLfo068baCSq+Nn/hotmF5To= -k8s.io/kube-aggregator v0.30.4/go.mod h1:w/ZLttTfMdPmEzV9k/9O2ENKI77ENpwIzeljQ5fj+qc= +k8s.io/api v0.31.0 h1:b9LiSjR2ym/SzTOlfMHm1tr7/21aD7fSkqgD/CVJBCo= +k8s.io/api v0.31.0/go.mod h1:0YiFF+JfFxMM6+1hQei8FY8M7s1Mth+z/q7eF1aJkTE= +k8s.io/apiextensions-apiserver v0.31.0 h1:fZgCVhGwsclj3qCw1buVXCV6khjRzKC5eCFt24kyLSk= +k8s.io/apiextensions-apiserver v0.31.0/go.mod h1:b9aMDEYaEe5sdK+1T0KU78ApR/5ZVp4i56VacZYEHxk= +k8s.io/apimachinery v0.31.0 h1:m9jOiSr3FoSSL5WO9bjm1n6B9KROYYgNZOb4tyZ1lBc= +k8s.io/apimachinery v0.31.0/go.mod h1:rsPdaZJfTfLsNJSQzNHQvYoTmxhoOEofxtOsF3rtsMo= +k8s.io/apiserver v0.31.0 h1:p+2dgJjy+bk+B1Csz+mc2wl5gHwvNkC9QJV+w55LVrY= +k8s.io/apiserver v0.31.0/go.mod h1:KI9ox5Yu902iBnnyMmy7ajonhKnkeZYJhTZ/YI+WEMk= +k8s.io/cli-runtime v0.31.0 h1:V2Q1gj1u3/WfhD475HBQrIYsoryg/LrhhK4RwpN+DhA= +k8s.io/cli-runtime v0.31.0/go.mod h1:vg3H94wsubuvWfSmStDbekvbla5vFGC+zLWqcf+bGDw= +k8s.io/client-go v0.31.0 h1:QqEJzNjbN2Yv1H79SsS+SWnXkBgVu4Pj3CJQgbx0gI8= +k8s.io/client-go v0.31.0/go.mod h1:Y9wvC76g4fLjmU0BA+rV+h2cncoadjvjjkkIGoTLcGU= +k8s.io/cloud-provider v0.31.0 h1:qNOs78I2/7zQmyStfDtY2M7EdilUl9fCSYMcqBju/tA= +k8s.io/cloud-provider v0.31.0/go.mod h1:QgUPqLoL6aXhLlrNg1U4IrJk/PvvxgeOnT2ixkgnqT0= +k8s.io/component-base v0.31.0 h1:/KIzGM5EvPNQcYgwq5NwoQBaOlVFrghoVGr8lG6vNRs= +k8s.io/component-base v0.31.0/go.mod h1:TYVuzI1QmN4L5ItVdMSXKvH7/DtvIuas5/mm8YT3rTo= +k8s.io/component-helpers v0.31.0 h1:jyRUKA+GX+q19o81k4x94imjNICn+e6Gzi6T89va1/A= +k8s.io/component-helpers v0.31.0/go.mod h1:MrNIvT4iB7wXIseYSWfHUJB/aNUiFvbilp4qDfBQi6s= +k8s.io/controller-manager v0.31.0 h1:OmM0JfkzMvNXGbKIInj8SOrqIHLW4ymDGaNaa4KqyGc= +k8s.io/controller-manager v0.31.0/go.mod h1:slaIzbI1ecqVphjSuHwlzJQ2pclSwtjUzTEQ6fYAB8A= +k8s.io/cri-api v0.31.0 h1:6o0XrhWlc1/zseGCh+aMScdXCg5nT6KCGdyx7HQkSKo= +k8s.io/cri-api v0.31.0/go.mod h1:Po3TMAYH/+KrZabi7QiwQI4a692oZcUOUThd/rqwxrI= +k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk= +k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE= +k8s.io/kms v0.31.0 h1:KchILPfB1ZE+ka7223mpU5zeFNkmb45jl7RHnlImUaI= +k8s.io/kms v0.31.0/go.mod h1:OZKwl1fan3n3N5FFxnW5C4V3ygrah/3YXeJWS3O6+94= +k8s.io/kube-aggregator v0.31.0 h1:3DqSpmqHF8rey7fY+qYXLJms0tYPhxrgWvjpnKVnS0Y= +k8s.io/kube-aggregator v0.31.0/go.mod h1:Fa+OVSpMQC7zbTTz7/QG7FXe9jZ8usuJQej5sMdCrkM= k8s.io/kube-openapi v0.0.0-20240228011516-70dd3763d340 h1:BZqlfIlq5YbRMFko6/PM7FjZpUb45WallggurYhKGag= k8s.io/kube-openapi v0.0.0-20240228011516-70dd3763d340/go.mod h1:yD4MZYeKMBwQKVht279WycxKyM84kkAx2DPrTXaeb98= -k8s.io/kubectl v0.30.4 h1:jU+6WSvcSgzs07H624RA2L79FnqppyV6BKI+dHWDzyo= -k8s.io/kubectl v0.30.4/go.mod h1:4KnGCshO4fFxd/tncWcbKH3Nj9wtoFYwMYPj8CUnduE= -k8s.io/kubelet v0.30.4 h1:2TP59RVxuWuKpD58gQ6qow1Oy2Ys2uOH4hfSD/qv5EQ= -k8s.io/kubelet v0.30.4/go.mod h1:v0lRl+1y2NNId5OlFiJ1rhjXc9D8Tp7PqvQYJS7W/L0= -k8s.io/kubernetes v1.30.4 h1:LfWX7JNmT9Hp8uFVHsB9gQCZesjcWTQ02PHwMz6dGqk= -k8s.io/kubernetes v1.30.4/go.mod h1:yPbIk3MhmhGigX62FLJm+CphNtjxqCvAIFQXup6RKS0= -k8s.io/metrics v0.30.4 h1:CI7Df+c2G65X9B/e6BxK8c1MqmjXRj3Fdd6VEN4N7YQ= -k8s.io/metrics v0.30.4/go.mod h1:3zPvjwIFSjjwdWIUwEaTO+/ugUpzFCV+l3jISZ+/x3A= -k8s.io/mount-utils v0.30.4 h1:48vAsFQNwSpFJ8a3+G1PoxEn5OmzS+5AajZjQwLY8t4= -k8s.io/mount-utils v0.30.4/go.mod h1:9sCVmwGLcV1MPvbZ+rToMDnl1QcGozy+jBPd0MsQLIo= -k8s.io/utils v0.0.0-20230726121419-3b25d923346b h1:sgn3ZU783SCgtaSJjpcVVlRqd6GSnlTLKgpAAttJvpI= -k8s.io/utils v0.0.0-20230726121419-3b25d923346b/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= +k8s.io/kubectl v0.31.0 h1:kANwAAPVY02r4U4jARP/C+Q1sssCcN/1p9Nk+7BQKVg= +k8s.io/kubectl v0.31.0/go.mod h1:pB47hhFypGsaHAPjlwrNbvhXgmuAr01ZBvAIIUaI8d4= +k8s.io/kubelet v0.31.0 h1:IlfkBy7QTojGEm97GuVGhtli0HL/Pgu4AdayiF76yWo= +k8s.io/kubelet v0.31.0/go.mod h1:s+OnqnfdIh14PFpUb7NgzM53WSYXcczA3w/1qSzsRc8= +k8s.io/kubernetes v1.31.0 h1:sYAB12TTWexXKp4RxqJMm/7EC+P0mNOgn4Xdj5eu7HM= +k8s.io/kubernetes v1.31.0/go.mod h1:UTpGn7nxrUrPWw5hNIYTAjodcWIvLakgHpLtfrr6GC8= +k8s.io/metrics v0.31.0 h1:s7Vu7W0oEZPTN8jgcoiWIXIZBmVxt7YP9MRVyIgMdOc= +k8s.io/metrics v0.31.0/go.mod h1:UNsz6swyX8FWkDoKN9ixPF75TBREMbHZIKjD7fydaOY= +k8s.io/mount-utils v0.31.0 h1:o+a+n6gyZ7MGc6bIERU3LeFTHbLDBiVReaDpWlJotUE= +k8s.io/mount-utils v0.31.0/go.mod h1:HV/VYBUGqYUj4vt82YltzpWvgv8FPg0G9ItyInT3NPU= +k8s.io/utils v0.0.0-20240711033017-18e509b52bc8 h1:pUdcCO1Lk/tbT5ztQWOBi5HBgbBP1J8+AsQnQCKsi8A= +k8s.io/utils v0.0.0-20240711033017-18e509b52bc8/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= oras.land/oras-go v1.2.5 h1:XpYuAwAb0DfQsunIyMfeET92emK8km3W4yEzZvUbsTo= oras.land/oras-go v1.2.5/go.mod h1:PuAwRShRZCsZb7g8Ar3jKKQR/2A/qN+pkYxIOd/FAoo= -sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.29.0 h1:/U5vjBbQn3RChhv7P11uhYvCSm5G2GaIi5AIGBS6r4c= -sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.29.0/go.mod h1:z7+wmGM2dfIiLRfrC6jb5kV2Mq/sK1ZP303cxzkV5Y4= -sigs.k8s.io/controller-runtime v0.18.5 h1:nTHio/W+Q4aBlQMgbnC5hZb4IjIidyrizMai9P6n4Rk= -sigs.k8s.io/controller-runtime v0.18.5/go.mod h1:TVoGrfdpbA9VRFaRnKgk9P5/atA0pMwq+f+msb9M8Sg= +sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.30.3 h1:2770sDpzrjjsAtVhSeUFseziht227YAWYHLGNM8QPwY= +sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.30.3/go.mod h1:Ve9uj1L+deCXFrPOk1LpFXqTg7LCFzFso6PA48q/XZw= +sigs.k8s.io/controller-runtime v0.19.0 h1:nWVM7aq+Il2ABxwiCizrVDSlmDcshi9llbaFbC0ji/Q= +sigs.k8s.io/controller-runtime v0.19.0/go.mod h1:iRmWllt8IlaLjvTTDLhRBXIEtkCK6hwVBJJsYS9Ajf4= sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd h1:EDPBXCAspyGV4jQlpZSudPeMmr1bNJefnuqLsRAsHZo= sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0= -sigs.k8s.io/kustomize/api v0.13.5-0.20230601165947-6ce0bf390ce3 h1:XX3Ajgzov2RKUdc5jW3t5jwY7Bo7dcRm+tFxT+NfgY0= -sigs.k8s.io/kustomize/api v0.13.5-0.20230601165947-6ce0bf390ce3/go.mod h1:9n16EZKMhXBNSiUC5kSdFQJkdH3zbxS/JoO619G1VAY= -sigs.k8s.io/kustomize/kustomize/v5 v5.0.4-0.20230601165947-6ce0bf390ce3 h1:vq2TtoDcQomhy7OxXLUOzSbHMuMYq0Bjn93cDtJEdKw= -sigs.k8s.io/kustomize/kustomize/v5 v5.0.4-0.20230601165947-6ce0bf390ce3/go.mod h1:/d88dHCvoy7d0AKFT0yytezSGZKjsZBVs9YTkBHSGFk= -sigs.k8s.io/kustomize/kyaml v0.14.3-0.20230601165947-6ce0bf390ce3 h1:W6cLQc5pnqM7vh3b7HvGNfXrJ/xL6BDMS0v1V/HHg5U= -sigs.k8s.io/kustomize/kyaml v0.14.3-0.20230601165947-6ce0bf390ce3/go.mod h1:JWP1Fj0VWGHyw3YUPjXSQnRnrwezrZSrApfX5S0nIag= +sigs.k8s.io/kustomize/api v0.17.2 h1:E7/Fjk7V5fboiuijoZHgs4aHuexi5Y2loXlVOAVAG5g= +sigs.k8s.io/kustomize/api v0.17.2/go.mod h1:UWTz9Ct+MvoeQsHcJ5e+vziRRkwimm3HytpZgIYqye0= +sigs.k8s.io/kustomize/kustomize/v5 v5.4.2 h1:9Zl5Gqg3XMdBEvkR54pVLCBj7FVO7W+VPNDDEzD6AyE= +sigs.k8s.io/kustomize/kustomize/v5 v5.4.2/go.mod h1:5ypfJVYlPb2MKKeoGknVLxvHemDlQT+szI4+KOhnD6k= +sigs.k8s.io/kustomize/kyaml v0.17.1 h1:TnxYQxFXzbmNG6gOINgGWQt09GghzgTP6mIurOgrLCQ= +sigs.k8s.io/kustomize/kyaml v0.17.1/go.mod h1:9V0mCjIEYjlXuCdYsSXvyoy2BTsLESH7TlGV81S282U= sigs.k8s.io/structured-merge-diff/v4 v4.4.1 h1:150L+0vs/8DA78h1u02ooW1/fFq/Lwr+sGiqlzvrtq4= sigs.k8s.io/structured-merge-diff/v4 v4.4.1/go.mod h1:N8hJocpFajUSSeSJ9bOZ77VzejKZaXsTtZo4/u7Io08= sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E= diff --git a/hack/tool/go.mod b/hack/tool/go.mod index 3f41fc501aa9..ca14412d8829 100644 --- a/hack/tool/go.mod +++ b/hack/tool/go.mod @@ -26,9 +26,10 @@ require ( github.com/carlmjohnson/versioninfo v0.22.5 // indirect github.com/cpuguy83/go-md2man/v2 v2.0.4 // indirect github.com/creasty/defaults v1.7.0 // indirect - github.com/davecgh/go-spew v1.1.1 // indirect + github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/davidmz/go-pageant v1.0.2 // indirect github.com/denisbrodbeck/machineid v1.0.1 // indirect + github.com/fxamacker/cbor/v2 v2.7.0 // indirect github.com/gabriel-vasile/mimetype v1.4.4 // indirect github.com/go-logr/logr v1.4.2 // indirect github.com/go-playground/locales v0.14.1 // indirect @@ -75,6 +76,7 @@ require ( github.com/sirupsen/logrus v1.9.3 // indirect github.com/tidwall/transform v0.0.0-20201103190739-32f242e2dbde // indirect github.com/urfave/cli/v2 v2.27.2 // indirect + github.com/x448/float16 v0.8.4 // indirect github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1 // indirect github.com/xtgo/uuid v0.0.0-20140804021211-a0b114877d4c // indirect github.com/zclconf/go-cty v1.14.4 // indirect @@ -87,10 +89,10 @@ require ( golang.org/x/time v0.5.0 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect - k8s.io/apimachinery v0.30.4 // indirect - k8s.io/client-go v0.30.4 // indirect + k8s.io/apimachinery v0.31.0 // indirect + k8s.io/client-go v0.31.0 // indirect k8s.io/klog/v2 v2.130.1 // indirect - k8s.io/utils v0.0.0-20240502163921-fe8a2dddb1d0 // indirect + k8s.io/utils v0.0.0-20240711033017-18e509b52bc8 // indirect sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect sigs.k8s.io/structured-merge-diff/v4 v4.4.1 // indirect sigs.k8s.io/yaml v1.4.0 // indirect diff --git a/hack/tool/go.sum b/hack/tool/go.sum index 4f1153544b1d..9036bcff8e92 100644 --- a/hack/tool/go.sum +++ b/hack/tool/go.sum @@ -44,8 +44,9 @@ github.com/creasty/defaults v1.7.0/go.mod h1:iGzKe6pbEHnpMPtfDXZEr0NVxWnPTjb1bbD github.com/cyphar/filepath-securejoin v0.2.4 h1:Ugdm7cg7i6ZK6x3xDF1oEu1nfkyfH53EtKeQYTC3kyg= github.com/cyphar/filepath-securejoin v0.2.4/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= +github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davidmz/go-pageant v1.0.2 h1:bPblRCh5jGU+Uptpz6LgMZGD5hJoOt7otgT454WvHn0= github.com/davidmz/go-pageant v1.0.2/go.mod h1:P2EDDnMqIwG5Rrp05dTRITj9z2zpGcD9efWSkTNKLIE= github.com/denisbrodbeck/machineid v1.0.1 h1:geKr9qtkB876mXguW2X6TU4ZynleN6ezuMSRhl4D7AQ= @@ -54,6 +55,8 @@ github.com/emicklei/go-restful/v3 v3.11.0 h1:rAQeMHw1c7zTmncogyy8VvRZwtkmkZ4FxER github.com/emicklei/go-restful/v3 v3.11.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= github.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc= github.com/emirpasic/gods v1.18.1/go.mod h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FMNAnJvWQ= +github.com/fxamacker/cbor/v2 v2.7.0 h1:iM5WgngdRBanHcxugY4JySA0nk1wZorNOpTgCMedv5E= +github.com/fxamacker/cbor/v2 v2.7.0/go.mod h1:pxXPTn3joSm21Gbwsv0w9OSA2y1HFR9qXEeXQVeNoDQ= github.com/gabriel-vasile/mimetype v1.4.4 h1:QjV6pZ7/XZ7ryI2KuyeEDE8wnh7fHP9YnQy+R0LnH8I= github.com/gabriel-vasile/mimetype v1.4.4/go.mod h1:JwLei5XPtWdGiMFB5Pjle1oEeoSeEuJfJE+TtfvdB/s= github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 h1:+zs/tPmkDkHx3U66DAb0lQFJrpS6731Oaa12ikc+DiI= @@ -68,8 +71,8 @@ github.com/go-openapi/jsonpointer v0.19.6 h1:eCs3fxoIi3Wh6vtgmLTOjdhSpiqphQ+DaPn github.com/go-openapi/jsonpointer v0.19.6/go.mod h1:osyAmYz/mB/C3I+WsTTSgw1ONzaLJoLCyoi6/zppojs= github.com/go-openapi/jsonreference v0.20.2 h1:3sVjiK66+uXK/6oQ8xgcRKcFgQ5KXa2KvnJRumpMGbE= github.com/go-openapi/jsonreference v0.20.2/go.mod h1:Bl1zwGIM8/wsvqjsOQLJ/SH+En5Ap4rVB5KVcIDZG2k= -github.com/go-openapi/swag v0.22.3 h1:yMBqmnQ0gyZvEb/+KzuWZOXgllrXT4SADYbvDaXHv/g= -github.com/go-openapi/swag v0.22.3/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14= +github.com/go-openapi/swag v0.22.4 h1:QLMzNJnMGPRNDCbySlcj1x01tzU8/9LTTL9hZZZogBU= +github.com/go-openapi/swag v0.22.4/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14= github.com/go-playground/assert/v2 v2.2.0 h1:JvknZsQTYeFEAhQwI4qEt9cyV5ONwRHC+lYKSsYSR8s= github.com/go-playground/assert/v2 v2.2.0/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= github.com/go-playground/locales v0.14.1 h1:EWaQ/wswjilfKLTECiXz7Rh+3BjFhfDFKv/oXslEjJA= @@ -94,8 +97,8 @@ github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeN github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= -github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +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/securecookie v1.1.1 h1:miw7JPhV+b/lAHSXz4qd/nN9jRiAFV5FwjeKyCS8BvQ= github.com/gorilla/securecookie v1.1.1/go.mod h1:ra0sb63/xPlUeL+yeDciTfxMRAA+MP+HVt/4epWDjd4= github.com/gorilla/sessions v1.2.1 h1:DHd3rPN5lE3Ts3D8rKkQ8x/0kqfeNmBAaiSi+o7FsgI= @@ -193,10 +196,11 @@ github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/pjbgf/sha1cd v0.3.0 h1:4D5XXmUUBUl/xQ6IjCkEAbqXskkq/4O7LmGn0AqMDs4= github.com/pjbgf/sha1cd v0.3.0/go.mod h1:nZ1rrWOcGJ5uZgEEVL1VUM9iRQiZvWdbZjkKyFzPPsI= -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/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= -github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8= +github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4= github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/segmentio/analytics-go v3.1.0+incompatible h1:IyiOfUgQFVHvsykKKbdI7ZsH374uv3/DfZUo9+G0Z80= @@ -231,6 +235,8 @@ github.com/tidwall/transform v0.0.0-20201103190739-32f242e2dbde h1:AMNpJRc7P+GTw github.com/tidwall/transform v0.0.0-20201103190739-32f242e2dbde/go.mod h1:MvrEmduDUz4ST5pGZ7CABCnOU5f3ZiOAZzT6b1A6nX8= github.com/urfave/cli/v2 v2.27.2 h1:6e0H+AkS+zDckwPCUrZkKX38mRaau4nL2uipkJpbkcI= github.com/urfave/cli/v2 v2.27.2/go.mod h1:g0+79LmHHATl7DAcHO99smiR/T7uGLw84w8Y42x+4eM= +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/xanzy/ssh-agent v0.3.3 h1:+/15pJfg/RsTxqYcX6fHqOXZwwMP+2VyYWJeWM2qQFM= github.com/xanzy/ssh-agent v0.3.3/go.mod h1:6dzNDKs0J9rVPHPhaGCukekBHKqfl+L3KghI1Bc68Uw= github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1 h1:gEOO8jv9F4OT7lGCjxCBTO/36wtF6j2nSip77qHd4x4= @@ -326,18 +332,18 @@ 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.30.4 h1:XASIELmW8w8q0i1Y4124LqPoWMycLjyQti/fdYHYjCs= -k8s.io/api v0.30.4/go.mod h1:ZqniWRKu7WIeLijbbzetF4U9qZ03cg5IRwl8YVs8mX0= -k8s.io/apimachinery v0.30.4 h1:5QHQI2tInzr8LsT4kU/2+fSeibH1eIHswNx480cqIoY= -k8s.io/apimachinery v0.30.4/go.mod h1:iexa2somDaxdnj7bha06bhb43Zpa6eWH8N8dbqVjTUc= -k8s.io/client-go v0.30.4 h1:eculUe+HPQoPbixfwmaSZGsKcOf7D288tH6hDAdd+wY= -k8s.io/client-go v0.30.4/go.mod h1:IBS0R/Mt0LHkNHF4E6n+SUDPG7+m2po6RZU7YHeOpzc= +k8s.io/api v0.31.0 h1:b9LiSjR2ym/SzTOlfMHm1tr7/21aD7fSkqgD/CVJBCo= +k8s.io/api v0.31.0/go.mod h1:0YiFF+JfFxMM6+1hQei8FY8M7s1Mth+z/q7eF1aJkTE= +k8s.io/apimachinery v0.31.0 h1:m9jOiSr3FoSSL5WO9bjm1n6B9KROYYgNZOb4tyZ1lBc= +k8s.io/apimachinery v0.31.0/go.mod h1:rsPdaZJfTfLsNJSQzNHQvYoTmxhoOEofxtOsF3rtsMo= +k8s.io/client-go v0.31.0 h1:QqEJzNjbN2Yv1H79SsS+SWnXkBgVu4Pj3CJQgbx0gI8= +k8s.io/client-go v0.31.0/go.mod h1:Y9wvC76g4fLjmU0BA+rV+h2cncoadjvjjkkIGoTLcGU= k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk= k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE= k8s.io/kube-openapi v0.0.0-20240228011516-70dd3763d340 h1:BZqlfIlq5YbRMFko6/PM7FjZpUb45WallggurYhKGag= k8s.io/kube-openapi v0.0.0-20240228011516-70dd3763d340/go.mod h1:yD4MZYeKMBwQKVht279WycxKyM84kkAx2DPrTXaeb98= -k8s.io/utils v0.0.0-20240502163921-fe8a2dddb1d0 h1:jgGTlFYnhF1PM1Ax/lAlxUPE+KfCIXHaathvJg1C3ak= -k8s.io/utils v0.0.0-20240502163921-fe8a2dddb1d0/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= +k8s.io/utils v0.0.0-20240711033017-18e509b52bc8 h1:pUdcCO1Lk/tbT5ztQWOBi5HBgbBP1J8+AsQnQCKsi8A= +k8s.io/utils v0.0.0-20240711033017-18e509b52bc8/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd h1:EDPBXCAspyGV4jQlpZSudPeMmr1bNJefnuqLsRAsHZo= sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0= sigs.k8s.io/structured-merge-diff/v4 v4.4.1 h1:150L+0vs/8DA78h1u02ooW1/fFq/Lwr+sGiqlzvrtq4= diff --git a/internal/testutil/fakeclient/tracker.go b/internal/testutil/fakeclient/tracker.go index 486a5e963c51..c319e089cd42 100644 --- a/internal/testutil/fakeclient/tracker.go +++ b/internal/testutil/fakeclient/tracker.go @@ -88,30 +88,22 @@ var _ testing.ObjectTracker = (*TransformingObjectTracker)(nil) // Add implements testing.ObjectTracker. func (t *TransformingObjectTracker) Add(obj runtime.Object) error { - internal, err := t.Internalize(obj) - if err != nil { - return fmt.Errorf("failed to internalize object: %w", err) - } - return t.Inner.Add(internal) + return t.internalized(obj, t.Inner.Add) } // Create implements testing.ObjectTracker. -func (t *TransformingObjectTracker) Create(gvr schema.GroupVersionResource, obj runtime.Object, ns string) error { - internal, err := t.Internalize(obj) - if err != nil { - return fmt.Errorf("failed to internalize object: %w", err) - } - return t.Inner.Create(gvr, internal, ns) +func (t *TransformingObjectTracker) Create(gvr schema.GroupVersionResource, obj runtime.Object, ns string, opts ...metav1.CreateOptions) error { + return t.internalized(obj, func(obj runtime.Object) error { return t.Inner.Create(gvr, obj, ns, opts...) }) } // Delete implements testing.ObjectTracker. -func (t *TransformingObjectTracker) Delete(gvr schema.GroupVersionResource, ns string, name string) error { - return t.Inner.Delete(gvr, ns, ns) +func (t *TransformingObjectTracker) Delete(gvr schema.GroupVersionResource, ns string, name string, opts ...metav1.DeleteOptions) error { + return t.Inner.Delete(gvr, ns, ns, opts...) } // Get implements testing.ObjectTracker. -func (t *TransformingObjectTracker) Get(gvr schema.GroupVersionResource, ns string, name string) (runtime.Object, error) { - obj, err := t.Inner.Get(gvr, ns, name) +func (t *TransformingObjectTracker) Get(gvr schema.GroupVersionResource, ns string, name string, opts ...metav1.GetOptions) (runtime.Object, error) { + obj, err := t.Inner.Get(gvr, ns, name, opts...) if err != nil { return nil, err } @@ -125,8 +117,8 @@ func (t *TransformingObjectTracker) Get(gvr schema.GroupVersionResource, ns stri } // List implements testing.ObjectTracker. -func (t *TransformingObjectTracker) List(gvr schema.GroupVersionResource, gvk schema.GroupVersionKind, ns string) (runtime.Object, error) { - obj, err := t.Inner.List(gvr, gvk, ns) +func (t *TransformingObjectTracker) List(gvr schema.GroupVersionResource, gvk schema.GroupVersionKind, ns string, opts ...metav1.ListOptions) (runtime.Object, error) { + obj, err := t.Inner.List(gvr, gvk, ns, opts...) if err != nil { return nil, err } @@ -140,23 +132,29 @@ func (t *TransformingObjectTracker) List(gvr schema.GroupVersionResource, gvk sc } // Update implements testing.ObjectTracker. -func (t *TransformingObjectTracker) Update(gvr schema.GroupVersionResource, obj runtime.Object, ns string) error { - internal, err := t.Internalize(obj) - if err != nil { - return fmt.Errorf("failed to internalize object: %w", err) - } - return t.Inner.Update(gvr, internal, ns) +func (t *TransformingObjectTracker) Update(gvr schema.GroupVersionResource, obj runtime.Object, ns string, opts ...metav1.UpdateOptions) error { + return t.internalized(obj, func(obj runtime.Object) error { return t.Inner.Update(gvr, obj, ns, opts...) }) +} + +// Patch implements testing.ObjectTracker. +func (t *TransformingObjectTracker) Patch(gvr schema.GroupVersionResource, obj runtime.Object, ns string, opts ...metav1.PatchOptions) error { + return t.internalized(obj, func(obj runtime.Object) error { return t.Inner.Patch(gvr, obj, ns, opts...) }) +} + +// Apply implements testing.ObjectTracker. +func (t *TransformingObjectTracker) Apply(gvr schema.GroupVersionResource, applyConfiguration runtime.Object, ns string, opts ...metav1.PatchOptions) error { + return t.internalized(applyConfiguration, func(obj runtime.Object) error { return t.Inner.Apply(gvr, applyConfiguration, ns, opts...) }) } // Watch implements testing.ObjectTracker. -func (t *TransformingObjectTracker) Watch(gvr schema.GroupVersionResource, ns string) (watch.Interface, error) { +func (t *TransformingObjectTracker) Watch(gvr schema.GroupVersionResource, ns string, opts ...metav1.ListOptions) (watch.Interface, error) { w, err := t.Inner.Watch(gvr, ns) if err != nil { return w, err } internal := w.ResultChan() - external := make(chan watch.Event, cap(internal)) + external := make(chan watch.Event) go func() { defer close(external) @@ -184,6 +182,14 @@ func (t *TransformingObjectTracker) Watch(gvr schema.GroupVersionResource, ns st return &watcher{external, w.Stop}, nil } +func (t *TransformingObjectTracker) internalized(obj runtime.Object, f func(runtime.Object) error) error { + internal, err := t.Internalize(obj) + if err != nil { + return fmt.Errorf("failed to internalize object: %w", err) + } + return f(internal) +} + type watcher struct { result <-chan watch.Event stop func() diff --git a/inttest/sonobuoy/README.md b/inttest/sonobuoy/README.md index 2a351931a271..85fa96a646a6 100644 --- a/inttest/sonobuoy/README.md +++ b/inttest/sonobuoy/README.md @@ -61,7 +61,7 @@ spec: user: "ubuntu" uploadBinary: true k0s: - version: "1.30.4+k0s.0" + version: "1.31.0+k0s.0" ``` To deploy a k0s cluster on the AWS machine, run: @@ -98,9 +98,9 @@ INFO ==> Running phase: Gather host facts . . . -INFO [ssh] 3.250.52.147:22: uploading k0s binary from /home/ubuntu/.cache/k0sctl/k0s/linux/amd64/k0s-v1.30.4+k0s.0 -INFO [ssh] 63.32.21.232:22: uploading k0s binary from /home/ubuntu/.cache/k0sctl/k0s/linux/amd64/k0s-v1.30.4+k0s.0 -INFO [ssh] 54.216.71.108:22: uploading k0s binary from /home/ubuntu/.cache/k0sctl/k0s/linux/amd64/k0s-v1.30.4+k0s.0 +INFO [ssh] 3.250.52.147:22: uploading k0s binary from /home/ubuntu/.cache/k0sctl/k0s/linux/amd64/k0s-v1.31.0+k0s.0 +INFO [ssh] 63.32.21.232:22: uploading k0s binary from /home/ubuntu/.cache/k0sctl/k0s/linux/amd64/k0s-v1.31.0+k0s.0 +INFO [ssh] 54.216.71.108:22: uploading k0s binary from /home/ubuntu/.cache/k0sctl/k0s/linux/amd64/k0s-v1.31.0+k0s.0 INFO ==> Running phase: Configure k0s WARN [ssh] 63.32.21.232:22: generating default configuration INFO [ssh] 63.32.21.232:22: validating configuration @@ -124,7 +124,7 @@ INFO [ssh] 3.250.52.147:22: waiting for node to become ready INFO ==> Running phase: Release exclusive host lock INFO ==> Running phase: Disconnect from hosts INFO ==> Finished in 1m42s -INFO k0s cluster version v1.30.4+k0s.0 is now installed +INFO k0s cluster version v1.31.0+k0s.0 is now installed INFO Tip: To access the cluster you can now fetch the admin kubeconfig using: INFO k0sctl kubeconfig ``` @@ -152,7 +152,7 @@ Example Output: /home/ubuntu/k0s/inttest/bin/sonobuoy run --wait=1200 \ --mode=certified-conformance \ --plugin-env=e2e.E2E_EXTRA_ARGS="--ginkgo.v" \ - --kubernetes-version=v1.30.4 + --kubernetes-version=v1.31.0 INFO[0000] create request issued name=sonobuoy namespace= resource=namespaces INFO[0000] create request issued name=sonobuoy-serviceaccount namespace=sonobuoy resource=serviceaccounts INFO[0000] create request issued name=sonobuoy-serviceaccount-sonobuoy namespace= resource=clusterrolebindings diff --git a/inttest/update-server/html/unstable/index.yaml b/inttest/update-server/html/unstable/index.yaml index c5e0741483c4..beb6ee62fc57 100644 --- a/inttest/update-server/html/unstable/index.yaml +++ b/inttest/update-server/html/unstable/index.yaml @@ -1,5 +1,5 @@ name: unstable -version: v1.30.4+k0s.0 +version: v1.31.0+k0s.0 downloadURLs: k0s: linux-amd64: ..../k0s-amd64 diff --git a/pkg/apis/k0s/v1beta1/kubeproxy.go b/pkg/apis/k0s/v1beta1/kubeproxy.go index ac264023bd8b..5b8a4bddac9c 100644 --- a/pkg/apis/k0s/v1beta1/kubeproxy.go +++ b/pkg/apis/k0s/v1beta1/kubeproxy.go @@ -41,7 +41,7 @@ type KubeProxy struct { } // KubeProxyIPTablesConfiguration contains iptables-related kube-proxy configuration -// @see https://github.com/kubernetes/kube-proxy/blob/v0.30.4/config/v1alpha1/types.go#L27-L48 +// @see https://github.com/kubernetes/kube-proxy/blob/v0.31.0/config/v1alpha1/types.go#L27-L48 type KubeProxyIPTablesConfiguration struct { MasqueradeBit *int32 `json:"masqueradeBit,omitempty"` MasqueradeAll bool `json:"masqueradeAll,omitempty"` @@ -51,7 +51,7 @@ type KubeProxyIPTablesConfiguration struct { } // KubeProxyIPVSConfiguration contains ipvs-related kube-proxy configuration -// @see https://github.com/kubernetes/kube-proxy/blob/v0.30.4/config/v1alpha1/types.go#L52-L78 +// @see https://github.com/kubernetes/kube-proxy/blob/v0.31.0/config/v1alpha1/types.go#L52-L78 type KubeProxyIPVSConfiguration struct { SyncPeriod metav1.Duration `json:"syncPeriod,omitempty"` MinSyncPeriod metav1.Duration `json:"minSyncPeriod,omitempty"` diff --git a/pkg/autopilot/controller/root_controller.go b/pkg/autopilot/controller/root_controller.go index 390e57a256d7..d0cfa167e9f7 100644 --- a/pkg/autopilot/controller/root_controller.go +++ b/pkg/autopilot/controller/root_controller.go @@ -32,6 +32,7 @@ import ( "github.com/sirupsen/logrus" "golang.org/x/sync/errgroup" v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/utils/ptr" cr "sigs.k8s.io/controller-runtime" crcli "sigs.k8s.io/controller-runtime/pkg/client" crman "sigs.k8s.io/controller-runtime/pkg/manager" @@ -56,6 +57,8 @@ type rootController struct { stopSubHandler subControllerStopFunc leaseWatcherCreator leaseWatcherCreatorFunc setupHandler setupFunc + + initialized bool } var _ aproot.Root = (*rootController)(nil) @@ -157,6 +160,16 @@ func (c *rootController) startSubControllerRoutine(ctx context.Context, logger * HealthProbeBindAddress: c.cfg.HealthProbeBindAddr, } + // If this controller is already initialized, this means that all + // controller-runtime controllers have already been successfully registered + // to another manager. However, controller-runtime maintains a global + // checklist of controller names and doesn't currently provide a way to + // unregister names from discarded managers. So it's necessary to suppress + // the global name check whenever things are restarted for reconfiguration. + if c.initialized { + managerOpts.Controller.SkipNameValidation = ptr.To(true) + } + mgr, err := cr.NewManager(c.autopilotClientFactory.RESTConfig(), managerOpts) if err != nil { logger.WithError(err).Error("unable to start controller manager") @@ -217,6 +230,9 @@ func (c *rootController) startSubControllerRoutine(ctx context.Context, logger * return err } + // All the controller-runtime controllers have been registered. + c.initialized = true + // The controller-runtime start blocks until the context is cancelled. if err := mgr.Start(ctx); err != nil { logger.WithError(err).Error("unable to run controller-runtime manager") diff --git a/pkg/client/clientset/fake/clientset_generated.go b/pkg/client/clientset/fake/clientset_generated.go index 4a175fa9c6c9..7a1456b76bde 100644 --- a/pkg/client/clientset/fake/clientset_generated.go +++ b/pkg/client/clientset/fake/clientset_generated.go @@ -37,8 +37,12 @@ import ( // NewSimpleClientset returns a clientset that will respond with the provided objects. // It's backed by a very simple object tracker that processes creates, updates and deletions as-is, -// without applying any validations and/or defaults. It shouldn't be considered a replacement +// without applying any field management, validations and/or defaults. It shouldn't be considered a replacement // for a real clientset and is mostly useful in simple unit tests. +// +// DEPRECATED: NewClientset replaces this with support for field management, which significantly improves +// server side apply testing. NewClientset is only available when apply configurations are generated (e.g. +// via --with-applyconfig). func NewSimpleClientset(objects ...runtime.Object) *Clientset { o := testing.NewObjectTracker(scheme, codecs.UniversalDecoder()) for _, obj := range objects { diff --git a/pkg/client/clientset/typed/autopilot/v1beta2/controlnode.go b/pkg/client/clientset/typed/autopilot/v1beta2/controlnode.go index 9cf304297209..d0aec0ae8dd1 100644 --- a/pkg/client/clientset/typed/autopilot/v1beta2/controlnode.go +++ b/pkg/client/clientset/typed/autopilot/v1beta2/controlnode.go @@ -20,13 +20,12 @@ package v1beta2 import ( "context" - "time" v1beta2 "github.com/k0sproject/k0s/pkg/apis/autopilot/v1beta2" scheme "github.com/k0sproject/k0s/pkg/client/clientset/scheme" v1 "k8s.io/apimachinery/pkg/apis/meta/v1" watch "k8s.io/apimachinery/pkg/watch" - rest "k8s.io/client-go/rest" + gentype "k8s.io/client-go/gentype" ) // ControlNodesGetter has a method to return a ControlNodeInterface. @@ -39,6 +38,7 @@ type ControlNodesGetter interface { type ControlNodeInterface interface { Create(ctx context.Context, controlNode *v1beta2.ControlNode, opts v1.CreateOptions) (*v1beta2.ControlNode, error) Update(ctx context.Context, controlNode *v1beta2.ControlNode, opts v1.UpdateOptions) (*v1beta2.ControlNode, error) + // Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus(). UpdateStatus(ctx context.Context, controlNode *v1beta2.ControlNode, opts v1.UpdateOptions) (*v1beta2.ControlNode, error) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error Get(ctx context.Context, name string, opts v1.GetOptions) (*v1beta2.ControlNode, error) @@ -49,104 +49,18 @@ type ControlNodeInterface interface { // controlNodes implements ControlNodeInterface type controlNodes struct { - client rest.Interface + *gentype.ClientWithList[*v1beta2.ControlNode, *v1beta2.ControlNodeList] } // newControlNodes returns a ControlNodes func newControlNodes(c *AutopilotV1beta2Client) *controlNodes { return &controlNodes{ - client: c.RESTClient(), + gentype.NewClientWithList[*v1beta2.ControlNode, *v1beta2.ControlNodeList]( + "controlnodes", + c.RESTClient(), + scheme.ParameterCodec, + "", + func() *v1beta2.ControlNode { return &v1beta2.ControlNode{} }, + func() *v1beta2.ControlNodeList { return &v1beta2.ControlNodeList{} }), } } - -// Get takes name of the controlNode, and returns the corresponding controlNode object, and an error if there is any. -func (c *controlNodes) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1beta2.ControlNode, err error) { - result = &v1beta2.ControlNode{} - err = c.client.Get(). - Resource("controlnodes"). - Name(name). - VersionedParams(&options, scheme.ParameterCodec). - Do(ctx). - Into(result) - return -} - -// List takes label and field selectors, and returns the list of ControlNodes that match those selectors. -func (c *controlNodes) List(ctx context.Context, opts v1.ListOptions) (result *v1beta2.ControlNodeList, err error) { - var timeout time.Duration - if opts.TimeoutSeconds != nil { - timeout = time.Duration(*opts.TimeoutSeconds) * time.Second - } - result = &v1beta2.ControlNodeList{} - err = c.client.Get(). - Resource("controlnodes"). - VersionedParams(&opts, scheme.ParameterCodec). - Timeout(timeout). - Do(ctx). - Into(result) - return -} - -// Watch returns a watch.Interface that watches the requested controlNodes. -func (c *controlNodes) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) { - var timeout time.Duration - if opts.TimeoutSeconds != nil { - timeout = time.Duration(*opts.TimeoutSeconds) * time.Second - } - opts.Watch = true - return c.client.Get(). - Resource("controlnodes"). - VersionedParams(&opts, scheme.ParameterCodec). - Timeout(timeout). - Watch(ctx) -} - -// Create takes the representation of a controlNode and creates it. Returns the server's representation of the controlNode, and an error, if there is any. -func (c *controlNodes) Create(ctx context.Context, controlNode *v1beta2.ControlNode, opts v1.CreateOptions) (result *v1beta2.ControlNode, err error) { - result = &v1beta2.ControlNode{} - err = c.client.Post(). - Resource("controlnodes"). - VersionedParams(&opts, scheme.ParameterCodec). - Body(controlNode). - Do(ctx). - Into(result) - return -} - -// Update takes the representation of a controlNode and updates it. Returns the server's representation of the controlNode, and an error, if there is any. -func (c *controlNodes) Update(ctx context.Context, controlNode *v1beta2.ControlNode, opts v1.UpdateOptions) (result *v1beta2.ControlNode, err error) { - result = &v1beta2.ControlNode{} - err = c.client.Put(). - Resource("controlnodes"). - Name(controlNode.Name). - VersionedParams(&opts, scheme.ParameterCodec). - Body(controlNode). - Do(ctx). - Into(result) - return -} - -// UpdateStatus was generated because the type contains a Status member. -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus(). -func (c *controlNodes) UpdateStatus(ctx context.Context, controlNode *v1beta2.ControlNode, opts v1.UpdateOptions) (result *v1beta2.ControlNode, err error) { - result = &v1beta2.ControlNode{} - err = c.client.Put(). - Resource("controlnodes"). - Name(controlNode.Name). - SubResource("status"). - VersionedParams(&opts, scheme.ParameterCodec). - Body(controlNode). - Do(ctx). - Into(result) - return -} - -// Delete takes name of the controlNode and deletes it. Returns an error if one occurs. -func (c *controlNodes) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error { - return c.client.Delete(). - Resource("controlnodes"). - Name(name). - Body(&opts). - Do(ctx). - Error() -} diff --git a/pkg/client/clientset/typed/autopilot/v1beta2/fake/fake_controlnode.go b/pkg/client/clientset/typed/autopilot/v1beta2/fake/fake_controlnode.go index 8e4b15808594..ce4debdcaa95 100644 --- a/pkg/client/clientset/typed/autopilot/v1beta2/fake/fake_controlnode.go +++ b/pkg/client/clientset/typed/autopilot/v1beta2/fake/fake_controlnode.go @@ -39,20 +39,22 @@ var controlnodesKind = v1beta2.SchemeGroupVersion.WithKind("ControlNode") // Get takes name of the controlNode, and returns the corresponding controlNode object, and an error if there is any. func (c *FakeControlNodes) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1beta2.ControlNode, err error) { + emptyResult := &v1beta2.ControlNode{} obj, err := c.Fake. - Invokes(testing.NewRootGetAction(controlnodesResource, name), &v1beta2.ControlNode{}) + Invokes(testing.NewRootGetActionWithOptions(controlnodesResource, name, options), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } return obj.(*v1beta2.ControlNode), err } // List takes label and field selectors, and returns the list of ControlNodes that match those selectors. func (c *FakeControlNodes) List(ctx context.Context, opts v1.ListOptions) (result *v1beta2.ControlNodeList, err error) { + emptyResult := &v1beta2.ControlNodeList{} obj, err := c.Fake. - Invokes(testing.NewRootListAction(controlnodesResource, controlnodesKind, opts), &v1beta2.ControlNodeList{}) + Invokes(testing.NewRootListActionWithOptions(controlnodesResource, controlnodesKind, opts), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } label, _, _ := testing.ExtractFromListOptions(opts) @@ -71,36 +73,39 @@ func (c *FakeControlNodes) List(ctx context.Context, opts v1.ListOptions) (resul // Watch returns a watch.Interface that watches the requested controlNodes. func (c *FakeControlNodes) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) { return c.Fake. - InvokesWatch(testing.NewRootWatchAction(controlnodesResource, opts)) + InvokesWatch(testing.NewRootWatchActionWithOptions(controlnodesResource, opts)) } // Create takes the representation of a controlNode and creates it. Returns the server's representation of the controlNode, and an error, if there is any. func (c *FakeControlNodes) Create(ctx context.Context, controlNode *v1beta2.ControlNode, opts v1.CreateOptions) (result *v1beta2.ControlNode, err error) { + emptyResult := &v1beta2.ControlNode{} obj, err := c.Fake. - Invokes(testing.NewRootCreateAction(controlnodesResource, controlNode), &v1beta2.ControlNode{}) + Invokes(testing.NewRootCreateActionWithOptions(controlnodesResource, controlNode, opts), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } return obj.(*v1beta2.ControlNode), err } // Update takes the representation of a controlNode and updates it. Returns the server's representation of the controlNode, and an error, if there is any. func (c *FakeControlNodes) Update(ctx context.Context, controlNode *v1beta2.ControlNode, opts v1.UpdateOptions) (result *v1beta2.ControlNode, err error) { + emptyResult := &v1beta2.ControlNode{} obj, err := c.Fake. - Invokes(testing.NewRootUpdateAction(controlnodesResource, controlNode), &v1beta2.ControlNode{}) + Invokes(testing.NewRootUpdateActionWithOptions(controlnodesResource, controlNode, opts), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } return obj.(*v1beta2.ControlNode), err } // UpdateStatus was generated because the type contains a Status member. // Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus(). -func (c *FakeControlNodes) UpdateStatus(ctx context.Context, controlNode *v1beta2.ControlNode, opts v1.UpdateOptions) (*v1beta2.ControlNode, error) { +func (c *FakeControlNodes) UpdateStatus(ctx context.Context, controlNode *v1beta2.ControlNode, opts v1.UpdateOptions) (result *v1beta2.ControlNode, err error) { + emptyResult := &v1beta2.ControlNode{} obj, err := c.Fake. - Invokes(testing.NewRootUpdateSubresourceAction(controlnodesResource, "status", controlNode), &v1beta2.ControlNode{}) + Invokes(testing.NewRootUpdateSubresourceActionWithOptions(controlnodesResource, "status", controlNode, opts), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } return obj.(*v1beta2.ControlNode), err } diff --git a/pkg/client/clientset/typed/autopilot/v1beta2/fake/fake_plan.go b/pkg/client/clientset/typed/autopilot/v1beta2/fake/fake_plan.go index 931dda86498c..d01bc1093ed8 100644 --- a/pkg/client/clientset/typed/autopilot/v1beta2/fake/fake_plan.go +++ b/pkg/client/clientset/typed/autopilot/v1beta2/fake/fake_plan.go @@ -39,20 +39,22 @@ var plansKind = v1beta2.SchemeGroupVersion.WithKind("Plan") // Get takes name of the plan, and returns the corresponding plan object, and an error if there is any. func (c *FakePlans) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1beta2.Plan, err error) { + emptyResult := &v1beta2.Plan{} obj, err := c.Fake. - Invokes(testing.NewRootGetAction(plansResource, name), &v1beta2.Plan{}) + Invokes(testing.NewRootGetActionWithOptions(plansResource, name, options), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } return obj.(*v1beta2.Plan), err } // List takes label and field selectors, and returns the list of Plans that match those selectors. func (c *FakePlans) List(ctx context.Context, opts v1.ListOptions) (result *v1beta2.PlanList, err error) { + emptyResult := &v1beta2.PlanList{} obj, err := c.Fake. - Invokes(testing.NewRootListAction(plansResource, plansKind, opts), &v1beta2.PlanList{}) + Invokes(testing.NewRootListActionWithOptions(plansResource, plansKind, opts), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } label, _, _ := testing.ExtractFromListOptions(opts) @@ -71,25 +73,27 @@ func (c *FakePlans) List(ctx context.Context, opts v1.ListOptions) (result *v1be // Watch returns a watch.Interface that watches the requested plans. func (c *FakePlans) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) { return c.Fake. - InvokesWatch(testing.NewRootWatchAction(plansResource, opts)) + InvokesWatch(testing.NewRootWatchActionWithOptions(plansResource, opts)) } // Create takes the representation of a plan and creates it. Returns the server's representation of the plan, and an error, if there is any. func (c *FakePlans) Create(ctx context.Context, plan *v1beta2.Plan, opts v1.CreateOptions) (result *v1beta2.Plan, err error) { + emptyResult := &v1beta2.Plan{} obj, err := c.Fake. - Invokes(testing.NewRootCreateAction(plansResource, plan), &v1beta2.Plan{}) + Invokes(testing.NewRootCreateActionWithOptions(plansResource, plan, opts), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } return obj.(*v1beta2.Plan), err } // Update takes the representation of a plan and updates it. Returns the server's representation of the plan, and an error, if there is any. func (c *FakePlans) Update(ctx context.Context, plan *v1beta2.Plan, opts v1.UpdateOptions) (result *v1beta2.Plan, err error) { + emptyResult := &v1beta2.Plan{} obj, err := c.Fake. - Invokes(testing.NewRootUpdateAction(plansResource, plan), &v1beta2.Plan{}) + Invokes(testing.NewRootUpdateActionWithOptions(plansResource, plan, opts), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } return obj.(*v1beta2.Plan), err } diff --git a/pkg/client/clientset/typed/autopilot/v1beta2/fake/fake_updateconfig.go b/pkg/client/clientset/typed/autopilot/v1beta2/fake/fake_updateconfig.go index b1161830b039..213a591cf7a4 100644 --- a/pkg/client/clientset/typed/autopilot/v1beta2/fake/fake_updateconfig.go +++ b/pkg/client/clientset/typed/autopilot/v1beta2/fake/fake_updateconfig.go @@ -39,20 +39,22 @@ var updateconfigsKind = v1beta2.SchemeGroupVersion.WithKind("UpdateConfig") // Get takes name of the updateConfig, and returns the corresponding updateConfig object, and an error if there is any. func (c *FakeUpdateConfigs) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1beta2.UpdateConfig, err error) { + emptyResult := &v1beta2.UpdateConfig{} obj, err := c.Fake. - Invokes(testing.NewRootGetAction(updateconfigsResource, name), &v1beta2.UpdateConfig{}) + Invokes(testing.NewRootGetActionWithOptions(updateconfigsResource, name, options), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } return obj.(*v1beta2.UpdateConfig), err } // List takes label and field selectors, and returns the list of UpdateConfigs that match those selectors. func (c *FakeUpdateConfigs) List(ctx context.Context, opts v1.ListOptions) (result *v1beta2.UpdateConfigList, err error) { + emptyResult := &v1beta2.UpdateConfigList{} obj, err := c.Fake. - Invokes(testing.NewRootListAction(updateconfigsResource, updateconfigsKind, opts), &v1beta2.UpdateConfigList{}) + Invokes(testing.NewRootListActionWithOptions(updateconfigsResource, updateconfigsKind, opts), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } label, _, _ := testing.ExtractFromListOptions(opts) @@ -71,25 +73,27 @@ func (c *FakeUpdateConfigs) List(ctx context.Context, opts v1.ListOptions) (resu // Watch returns a watch.Interface that watches the requested updateConfigs. func (c *FakeUpdateConfigs) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) { return c.Fake. - InvokesWatch(testing.NewRootWatchAction(updateconfigsResource, opts)) + InvokesWatch(testing.NewRootWatchActionWithOptions(updateconfigsResource, opts)) } // Create takes the representation of a updateConfig and creates it. Returns the server's representation of the updateConfig, and an error, if there is any. func (c *FakeUpdateConfigs) Create(ctx context.Context, updateConfig *v1beta2.UpdateConfig, opts v1.CreateOptions) (result *v1beta2.UpdateConfig, err error) { + emptyResult := &v1beta2.UpdateConfig{} obj, err := c.Fake. - Invokes(testing.NewRootCreateAction(updateconfigsResource, updateConfig), &v1beta2.UpdateConfig{}) + Invokes(testing.NewRootCreateActionWithOptions(updateconfigsResource, updateConfig, opts), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } return obj.(*v1beta2.UpdateConfig), err } // Update takes the representation of a updateConfig and updates it. Returns the server's representation of the updateConfig, and an error, if there is any. func (c *FakeUpdateConfigs) Update(ctx context.Context, updateConfig *v1beta2.UpdateConfig, opts v1.UpdateOptions) (result *v1beta2.UpdateConfig, err error) { + emptyResult := &v1beta2.UpdateConfig{} obj, err := c.Fake. - Invokes(testing.NewRootUpdateAction(updateconfigsResource, updateConfig), &v1beta2.UpdateConfig{}) + Invokes(testing.NewRootUpdateActionWithOptions(updateconfigsResource, updateConfig, opts), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } return obj.(*v1beta2.UpdateConfig), err } diff --git a/pkg/client/clientset/typed/autopilot/v1beta2/plan.go b/pkg/client/clientset/typed/autopilot/v1beta2/plan.go index 98e33cc4de2a..e6a4e74b1fb6 100644 --- a/pkg/client/clientset/typed/autopilot/v1beta2/plan.go +++ b/pkg/client/clientset/typed/autopilot/v1beta2/plan.go @@ -20,13 +20,12 @@ package v1beta2 import ( "context" - "time" v1beta2 "github.com/k0sproject/k0s/pkg/apis/autopilot/v1beta2" scheme "github.com/k0sproject/k0s/pkg/client/clientset/scheme" v1 "k8s.io/apimachinery/pkg/apis/meta/v1" watch "k8s.io/apimachinery/pkg/watch" - rest "k8s.io/client-go/rest" + gentype "k8s.io/client-go/gentype" ) // PlansGetter has a method to return a PlanInterface. @@ -48,89 +47,18 @@ type PlanInterface interface { // plans implements PlanInterface type plans struct { - client rest.Interface + *gentype.ClientWithList[*v1beta2.Plan, *v1beta2.PlanList] } // newPlans returns a Plans func newPlans(c *AutopilotV1beta2Client) *plans { return &plans{ - client: c.RESTClient(), + gentype.NewClientWithList[*v1beta2.Plan, *v1beta2.PlanList]( + "plans", + c.RESTClient(), + scheme.ParameterCodec, + "", + func() *v1beta2.Plan { return &v1beta2.Plan{} }, + func() *v1beta2.PlanList { return &v1beta2.PlanList{} }), } } - -// Get takes name of the plan, and returns the corresponding plan object, and an error if there is any. -func (c *plans) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1beta2.Plan, err error) { - result = &v1beta2.Plan{} - err = c.client.Get(). - Resource("plans"). - Name(name). - VersionedParams(&options, scheme.ParameterCodec). - Do(ctx). - Into(result) - return -} - -// List takes label and field selectors, and returns the list of Plans that match those selectors. -func (c *plans) List(ctx context.Context, opts v1.ListOptions) (result *v1beta2.PlanList, err error) { - var timeout time.Duration - if opts.TimeoutSeconds != nil { - timeout = time.Duration(*opts.TimeoutSeconds) * time.Second - } - result = &v1beta2.PlanList{} - err = c.client.Get(). - Resource("plans"). - VersionedParams(&opts, scheme.ParameterCodec). - Timeout(timeout). - Do(ctx). - Into(result) - return -} - -// Watch returns a watch.Interface that watches the requested plans. -func (c *plans) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) { - var timeout time.Duration - if opts.TimeoutSeconds != nil { - timeout = time.Duration(*opts.TimeoutSeconds) * time.Second - } - opts.Watch = true - return c.client.Get(). - Resource("plans"). - VersionedParams(&opts, scheme.ParameterCodec). - Timeout(timeout). - Watch(ctx) -} - -// Create takes the representation of a plan and creates it. Returns the server's representation of the plan, and an error, if there is any. -func (c *plans) Create(ctx context.Context, plan *v1beta2.Plan, opts v1.CreateOptions) (result *v1beta2.Plan, err error) { - result = &v1beta2.Plan{} - err = c.client.Post(). - Resource("plans"). - VersionedParams(&opts, scheme.ParameterCodec). - Body(plan). - Do(ctx). - Into(result) - return -} - -// Update takes the representation of a plan and updates it. Returns the server's representation of the plan, and an error, if there is any. -func (c *plans) Update(ctx context.Context, plan *v1beta2.Plan, opts v1.UpdateOptions) (result *v1beta2.Plan, err error) { - result = &v1beta2.Plan{} - err = c.client.Put(). - Resource("plans"). - Name(plan.Name). - VersionedParams(&opts, scheme.ParameterCodec). - Body(plan). - Do(ctx). - Into(result) - return -} - -// Delete takes name of the plan and deletes it. Returns an error if one occurs. -func (c *plans) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error { - return c.client.Delete(). - Resource("plans"). - Name(name). - Body(&opts). - Do(ctx). - Error() -} diff --git a/pkg/client/clientset/typed/autopilot/v1beta2/updateconfig.go b/pkg/client/clientset/typed/autopilot/v1beta2/updateconfig.go index 186b4cdb6303..96a58fc17cc6 100644 --- a/pkg/client/clientset/typed/autopilot/v1beta2/updateconfig.go +++ b/pkg/client/clientset/typed/autopilot/v1beta2/updateconfig.go @@ -20,13 +20,12 @@ package v1beta2 import ( "context" - "time" v1beta2 "github.com/k0sproject/k0s/pkg/apis/autopilot/v1beta2" scheme "github.com/k0sproject/k0s/pkg/client/clientset/scheme" v1 "k8s.io/apimachinery/pkg/apis/meta/v1" watch "k8s.io/apimachinery/pkg/watch" - rest "k8s.io/client-go/rest" + gentype "k8s.io/client-go/gentype" ) // UpdateConfigsGetter has a method to return a UpdateConfigInterface. @@ -48,89 +47,18 @@ type UpdateConfigInterface interface { // updateConfigs implements UpdateConfigInterface type updateConfigs struct { - client rest.Interface + *gentype.ClientWithList[*v1beta2.UpdateConfig, *v1beta2.UpdateConfigList] } // newUpdateConfigs returns a UpdateConfigs func newUpdateConfigs(c *AutopilotV1beta2Client) *updateConfigs { return &updateConfigs{ - client: c.RESTClient(), + gentype.NewClientWithList[*v1beta2.UpdateConfig, *v1beta2.UpdateConfigList]( + "updateconfigs", + c.RESTClient(), + scheme.ParameterCodec, + "", + func() *v1beta2.UpdateConfig { return &v1beta2.UpdateConfig{} }, + func() *v1beta2.UpdateConfigList { return &v1beta2.UpdateConfigList{} }), } } - -// Get takes name of the updateConfig, and returns the corresponding updateConfig object, and an error if there is any. -func (c *updateConfigs) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1beta2.UpdateConfig, err error) { - result = &v1beta2.UpdateConfig{} - err = c.client.Get(). - Resource("updateconfigs"). - Name(name). - VersionedParams(&options, scheme.ParameterCodec). - Do(ctx). - Into(result) - return -} - -// List takes label and field selectors, and returns the list of UpdateConfigs that match those selectors. -func (c *updateConfigs) List(ctx context.Context, opts v1.ListOptions) (result *v1beta2.UpdateConfigList, err error) { - var timeout time.Duration - if opts.TimeoutSeconds != nil { - timeout = time.Duration(*opts.TimeoutSeconds) * time.Second - } - result = &v1beta2.UpdateConfigList{} - err = c.client.Get(). - Resource("updateconfigs"). - VersionedParams(&opts, scheme.ParameterCodec). - Timeout(timeout). - Do(ctx). - Into(result) - return -} - -// Watch returns a watch.Interface that watches the requested updateConfigs. -func (c *updateConfigs) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) { - var timeout time.Duration - if opts.TimeoutSeconds != nil { - timeout = time.Duration(*opts.TimeoutSeconds) * time.Second - } - opts.Watch = true - return c.client.Get(). - Resource("updateconfigs"). - VersionedParams(&opts, scheme.ParameterCodec). - Timeout(timeout). - Watch(ctx) -} - -// Create takes the representation of a updateConfig and creates it. Returns the server's representation of the updateConfig, and an error, if there is any. -func (c *updateConfigs) Create(ctx context.Context, updateConfig *v1beta2.UpdateConfig, opts v1.CreateOptions) (result *v1beta2.UpdateConfig, err error) { - result = &v1beta2.UpdateConfig{} - err = c.client.Post(). - Resource("updateconfigs"). - VersionedParams(&opts, scheme.ParameterCodec). - Body(updateConfig). - Do(ctx). - Into(result) - return -} - -// Update takes the representation of a updateConfig and updates it. Returns the server's representation of the updateConfig, and an error, if there is any. -func (c *updateConfigs) Update(ctx context.Context, updateConfig *v1beta2.UpdateConfig, opts v1.UpdateOptions) (result *v1beta2.UpdateConfig, err error) { - result = &v1beta2.UpdateConfig{} - err = c.client.Put(). - Resource("updateconfigs"). - Name(updateConfig.Name). - VersionedParams(&opts, scheme.ParameterCodec). - Body(updateConfig). - Do(ctx). - Into(result) - return -} - -// Delete takes name of the updateConfig and deletes it. Returns an error if one occurs. -func (c *updateConfigs) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error { - return c.client.Delete(). - Resource("updateconfigs"). - Name(name). - Body(&opts). - Do(ctx). - Error() -} diff --git a/pkg/client/clientset/typed/etcd/v1beta1/etcdmember.go b/pkg/client/clientset/typed/etcd/v1beta1/etcdmember.go index bb80a3a2da84..95a3ab9b5304 100644 --- a/pkg/client/clientset/typed/etcd/v1beta1/etcdmember.go +++ b/pkg/client/clientset/typed/etcd/v1beta1/etcdmember.go @@ -20,14 +20,13 @@ package v1beta1 import ( "context" - "time" v1beta1 "github.com/k0sproject/k0s/pkg/apis/etcd/v1beta1" scheme "github.com/k0sproject/k0s/pkg/client/clientset/scheme" v1 "k8s.io/apimachinery/pkg/apis/meta/v1" types "k8s.io/apimachinery/pkg/types" watch "k8s.io/apimachinery/pkg/watch" - rest "k8s.io/client-go/rest" + gentype "k8s.io/client-go/gentype" ) // EtcdMembersGetter has a method to return a EtcdMemberInterface. @@ -40,6 +39,7 @@ type EtcdMembersGetter interface { type EtcdMemberInterface interface { Create(ctx context.Context, etcdMember *v1beta1.EtcdMember, opts v1.CreateOptions) (*v1beta1.EtcdMember, error) Update(ctx context.Context, etcdMember *v1beta1.EtcdMember, opts v1.UpdateOptions) (*v1beta1.EtcdMember, error) + // Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus(). UpdateStatus(ctx context.Context, etcdMember *v1beta1.EtcdMember, opts v1.UpdateOptions) (*v1beta1.EtcdMember, error) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error Get(ctx context.Context, name string, opts v1.GetOptions) (*v1beta1.EtcdMember, error) @@ -51,118 +51,18 @@ type EtcdMemberInterface interface { // etcdMembers implements EtcdMemberInterface type etcdMembers struct { - client rest.Interface + *gentype.ClientWithList[*v1beta1.EtcdMember, *v1beta1.EtcdMemberList] } // newEtcdMembers returns a EtcdMembers func newEtcdMembers(c *EtcdV1beta1Client) *etcdMembers { return &etcdMembers{ - client: c.RESTClient(), + gentype.NewClientWithList[*v1beta1.EtcdMember, *v1beta1.EtcdMemberList]( + "etcdmembers", + c.RESTClient(), + scheme.ParameterCodec, + "", + func() *v1beta1.EtcdMember { return &v1beta1.EtcdMember{} }, + func() *v1beta1.EtcdMemberList { return &v1beta1.EtcdMemberList{} }), } } - -// Get takes name of the etcdMember, and returns the corresponding etcdMember object, and an error if there is any. -func (c *etcdMembers) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1beta1.EtcdMember, err error) { - result = &v1beta1.EtcdMember{} - err = c.client.Get(). - Resource("etcdmembers"). - Name(name). - VersionedParams(&options, scheme.ParameterCodec). - Do(ctx). - Into(result) - return -} - -// List takes label and field selectors, and returns the list of EtcdMembers that match those selectors. -func (c *etcdMembers) List(ctx context.Context, opts v1.ListOptions) (result *v1beta1.EtcdMemberList, err error) { - var timeout time.Duration - if opts.TimeoutSeconds != nil { - timeout = time.Duration(*opts.TimeoutSeconds) * time.Second - } - result = &v1beta1.EtcdMemberList{} - err = c.client.Get(). - Resource("etcdmembers"). - VersionedParams(&opts, scheme.ParameterCodec). - Timeout(timeout). - Do(ctx). - Into(result) - return -} - -// Watch returns a watch.Interface that watches the requested etcdMembers. -func (c *etcdMembers) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) { - var timeout time.Duration - if opts.TimeoutSeconds != nil { - timeout = time.Duration(*opts.TimeoutSeconds) * time.Second - } - opts.Watch = true - return c.client.Get(). - Resource("etcdmembers"). - VersionedParams(&opts, scheme.ParameterCodec). - Timeout(timeout). - Watch(ctx) -} - -// Create takes the representation of a etcdMember and creates it. Returns the server's representation of the etcdMember, and an error, if there is any. -func (c *etcdMembers) Create(ctx context.Context, etcdMember *v1beta1.EtcdMember, opts v1.CreateOptions) (result *v1beta1.EtcdMember, err error) { - result = &v1beta1.EtcdMember{} - err = c.client.Post(). - Resource("etcdmembers"). - VersionedParams(&opts, scheme.ParameterCodec). - Body(etcdMember). - Do(ctx). - Into(result) - return -} - -// Update takes the representation of a etcdMember and updates it. Returns the server's representation of the etcdMember, and an error, if there is any. -func (c *etcdMembers) Update(ctx context.Context, etcdMember *v1beta1.EtcdMember, opts v1.UpdateOptions) (result *v1beta1.EtcdMember, err error) { - result = &v1beta1.EtcdMember{} - err = c.client.Put(). - Resource("etcdmembers"). - Name(etcdMember.Name). - VersionedParams(&opts, scheme.ParameterCodec). - Body(etcdMember). - Do(ctx). - Into(result) - return -} - -// UpdateStatus was generated because the type contains a Status member. -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus(). -func (c *etcdMembers) UpdateStatus(ctx context.Context, etcdMember *v1beta1.EtcdMember, opts v1.UpdateOptions) (result *v1beta1.EtcdMember, err error) { - result = &v1beta1.EtcdMember{} - err = c.client.Put(). - Resource("etcdmembers"). - Name(etcdMember.Name). - SubResource("status"). - VersionedParams(&opts, scheme.ParameterCodec). - Body(etcdMember). - Do(ctx). - Into(result) - return -} - -// Delete takes name of the etcdMember and deletes it. Returns an error if one occurs. -func (c *etcdMembers) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error { - return c.client.Delete(). - Resource("etcdmembers"). - Name(name). - Body(&opts). - Do(ctx). - Error() -} - -// Patch applies the patch and returns the patched etcdMember. -func (c *etcdMembers) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta1.EtcdMember, err error) { - result = &v1beta1.EtcdMember{} - err = c.client.Patch(pt). - Resource("etcdmembers"). - Name(name). - SubResource(subresources...). - VersionedParams(&opts, scheme.ParameterCodec). - Body(data). - Do(ctx). - Into(result) - return -} diff --git a/pkg/client/clientset/typed/etcd/v1beta1/fake/fake_etcdmember.go b/pkg/client/clientset/typed/etcd/v1beta1/fake/fake_etcdmember.go index e097aafe64a6..c122bbf0da12 100644 --- a/pkg/client/clientset/typed/etcd/v1beta1/fake/fake_etcdmember.go +++ b/pkg/client/clientset/typed/etcd/v1beta1/fake/fake_etcdmember.go @@ -40,20 +40,22 @@ var etcdmembersKind = v1beta1.SchemeGroupVersion.WithKind("EtcdMember") // Get takes name of the etcdMember, and returns the corresponding etcdMember object, and an error if there is any. func (c *FakeEtcdMembers) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1beta1.EtcdMember, err error) { + emptyResult := &v1beta1.EtcdMember{} obj, err := c.Fake. - Invokes(testing.NewRootGetAction(etcdmembersResource, name), &v1beta1.EtcdMember{}) + Invokes(testing.NewRootGetActionWithOptions(etcdmembersResource, name, options), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } return obj.(*v1beta1.EtcdMember), err } // List takes label and field selectors, and returns the list of EtcdMembers that match those selectors. func (c *FakeEtcdMembers) List(ctx context.Context, opts v1.ListOptions) (result *v1beta1.EtcdMemberList, err error) { + emptyResult := &v1beta1.EtcdMemberList{} obj, err := c.Fake. - Invokes(testing.NewRootListAction(etcdmembersResource, etcdmembersKind, opts), &v1beta1.EtcdMemberList{}) + Invokes(testing.NewRootListActionWithOptions(etcdmembersResource, etcdmembersKind, opts), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } label, _, _ := testing.ExtractFromListOptions(opts) @@ -72,36 +74,39 @@ func (c *FakeEtcdMembers) List(ctx context.Context, opts v1.ListOptions) (result // Watch returns a watch.Interface that watches the requested etcdMembers. func (c *FakeEtcdMembers) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) { return c.Fake. - InvokesWatch(testing.NewRootWatchAction(etcdmembersResource, opts)) + InvokesWatch(testing.NewRootWatchActionWithOptions(etcdmembersResource, opts)) } // Create takes the representation of a etcdMember and creates it. Returns the server's representation of the etcdMember, and an error, if there is any. func (c *FakeEtcdMembers) Create(ctx context.Context, etcdMember *v1beta1.EtcdMember, opts v1.CreateOptions) (result *v1beta1.EtcdMember, err error) { + emptyResult := &v1beta1.EtcdMember{} obj, err := c.Fake. - Invokes(testing.NewRootCreateAction(etcdmembersResource, etcdMember), &v1beta1.EtcdMember{}) + Invokes(testing.NewRootCreateActionWithOptions(etcdmembersResource, etcdMember, opts), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } return obj.(*v1beta1.EtcdMember), err } // Update takes the representation of a etcdMember and updates it. Returns the server's representation of the etcdMember, and an error, if there is any. func (c *FakeEtcdMembers) Update(ctx context.Context, etcdMember *v1beta1.EtcdMember, opts v1.UpdateOptions) (result *v1beta1.EtcdMember, err error) { + emptyResult := &v1beta1.EtcdMember{} obj, err := c.Fake. - Invokes(testing.NewRootUpdateAction(etcdmembersResource, etcdMember), &v1beta1.EtcdMember{}) + Invokes(testing.NewRootUpdateActionWithOptions(etcdmembersResource, etcdMember, opts), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } return obj.(*v1beta1.EtcdMember), err } // UpdateStatus was generated because the type contains a Status member. // Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus(). -func (c *FakeEtcdMembers) UpdateStatus(ctx context.Context, etcdMember *v1beta1.EtcdMember, opts v1.UpdateOptions) (*v1beta1.EtcdMember, error) { +func (c *FakeEtcdMembers) UpdateStatus(ctx context.Context, etcdMember *v1beta1.EtcdMember, opts v1.UpdateOptions) (result *v1beta1.EtcdMember, err error) { + emptyResult := &v1beta1.EtcdMember{} obj, err := c.Fake. - Invokes(testing.NewRootUpdateSubresourceAction(etcdmembersResource, "status", etcdMember), &v1beta1.EtcdMember{}) + Invokes(testing.NewRootUpdateSubresourceActionWithOptions(etcdmembersResource, "status", etcdMember, opts), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } return obj.(*v1beta1.EtcdMember), err } @@ -115,10 +120,11 @@ func (c *FakeEtcdMembers) Delete(ctx context.Context, name string, opts v1.Delet // Patch applies the patch and returns the patched etcdMember. func (c *FakeEtcdMembers) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta1.EtcdMember, err error) { + emptyResult := &v1beta1.EtcdMember{} obj, err := c.Fake. - Invokes(testing.NewRootPatchSubresourceAction(etcdmembersResource, name, pt, data, subresources...), &v1beta1.EtcdMember{}) + Invokes(testing.NewRootPatchSubresourceActionWithOptions(etcdmembersResource, name, pt, data, opts, subresources...), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } return obj.(*v1beta1.EtcdMember), err } diff --git a/pkg/client/clientset/typed/helm/v1beta1/chart.go b/pkg/client/clientset/typed/helm/v1beta1/chart.go index fd42e40a8478..659d55d2a835 100644 --- a/pkg/client/clientset/typed/helm/v1beta1/chart.go +++ b/pkg/client/clientset/typed/helm/v1beta1/chart.go @@ -20,13 +20,12 @@ package v1beta1 import ( "context" - "time" v1beta1 "github.com/k0sproject/k0s/pkg/apis/helm/v1beta1" scheme "github.com/k0sproject/k0s/pkg/client/clientset/scheme" v1 "k8s.io/apimachinery/pkg/apis/meta/v1" watch "k8s.io/apimachinery/pkg/watch" - rest "k8s.io/client-go/rest" + gentype "k8s.io/client-go/gentype" ) // ChartsGetter has a method to return a ChartInterface. @@ -48,97 +47,18 @@ type ChartInterface interface { // charts implements ChartInterface type charts struct { - client rest.Interface - ns string + *gentype.ClientWithList[*v1beta1.Chart, *v1beta1.ChartList] } // newCharts returns a Charts func newCharts(c *HelmV1beta1Client, namespace string) *charts { return &charts{ - client: c.RESTClient(), - ns: namespace, + gentype.NewClientWithList[*v1beta1.Chart, *v1beta1.ChartList]( + "charts", + c.RESTClient(), + scheme.ParameterCodec, + namespace, + func() *v1beta1.Chart { return &v1beta1.Chart{} }, + func() *v1beta1.ChartList { return &v1beta1.ChartList{} }), } } - -// Get takes name of the chart, and returns the corresponding chart object, and an error if there is any. -func (c *charts) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1beta1.Chart, err error) { - result = &v1beta1.Chart{} - err = c.client.Get(). - Namespace(c.ns). - Resource("charts"). - Name(name). - VersionedParams(&options, scheme.ParameterCodec). - Do(ctx). - Into(result) - return -} - -// List takes label and field selectors, and returns the list of Charts that match those selectors. -func (c *charts) List(ctx context.Context, opts v1.ListOptions) (result *v1beta1.ChartList, err error) { - var timeout time.Duration - if opts.TimeoutSeconds != nil { - timeout = time.Duration(*opts.TimeoutSeconds) * time.Second - } - result = &v1beta1.ChartList{} - err = c.client.Get(). - Namespace(c.ns). - Resource("charts"). - VersionedParams(&opts, scheme.ParameterCodec). - Timeout(timeout). - Do(ctx). - Into(result) - return -} - -// Watch returns a watch.Interface that watches the requested charts. -func (c *charts) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) { - var timeout time.Duration - if opts.TimeoutSeconds != nil { - timeout = time.Duration(*opts.TimeoutSeconds) * time.Second - } - opts.Watch = true - return c.client.Get(). - Namespace(c.ns). - Resource("charts"). - VersionedParams(&opts, scheme.ParameterCodec). - Timeout(timeout). - Watch(ctx) -} - -// Create takes the representation of a chart and creates it. Returns the server's representation of the chart, and an error, if there is any. -func (c *charts) Create(ctx context.Context, chart *v1beta1.Chart, opts v1.CreateOptions) (result *v1beta1.Chart, err error) { - result = &v1beta1.Chart{} - err = c.client.Post(). - Namespace(c.ns). - Resource("charts"). - VersionedParams(&opts, scheme.ParameterCodec). - Body(chart). - Do(ctx). - Into(result) - return -} - -// Update takes the representation of a chart and updates it. Returns the server's representation of the chart, and an error, if there is any. -func (c *charts) Update(ctx context.Context, chart *v1beta1.Chart, opts v1.UpdateOptions) (result *v1beta1.Chart, err error) { - result = &v1beta1.Chart{} - err = c.client.Put(). - Namespace(c.ns). - Resource("charts"). - Name(chart.Name). - VersionedParams(&opts, scheme.ParameterCodec). - Body(chart). - Do(ctx). - Into(result) - return -} - -// Delete takes name of the chart and deletes it. Returns an error if one occurs. -func (c *charts) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error { - return c.client.Delete(). - Namespace(c.ns). - Resource("charts"). - Name(name). - Body(&opts). - Do(ctx). - Error() -} diff --git a/pkg/client/clientset/typed/helm/v1beta1/fake/fake_chart.go b/pkg/client/clientset/typed/helm/v1beta1/fake/fake_chart.go index 04a9a2d08bb3..dd6dd953c912 100644 --- a/pkg/client/clientset/typed/helm/v1beta1/fake/fake_chart.go +++ b/pkg/client/clientset/typed/helm/v1beta1/fake/fake_chart.go @@ -40,22 +40,24 @@ var chartsKind = v1beta1.SchemeGroupVersion.WithKind("Chart") // Get takes name of the chart, and returns the corresponding chart object, and an error if there is any. func (c *FakeCharts) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1beta1.Chart, err error) { + emptyResult := &v1beta1.Chart{} obj, err := c.Fake. - Invokes(testing.NewGetAction(chartsResource, c.ns, name), &v1beta1.Chart{}) + Invokes(testing.NewGetActionWithOptions(chartsResource, c.ns, name, options), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } return obj.(*v1beta1.Chart), err } // List takes label and field selectors, and returns the list of Charts that match those selectors. func (c *FakeCharts) List(ctx context.Context, opts v1.ListOptions) (result *v1beta1.ChartList, err error) { + emptyResult := &v1beta1.ChartList{} obj, err := c.Fake. - Invokes(testing.NewListAction(chartsResource, chartsKind, c.ns, opts), &v1beta1.ChartList{}) + Invokes(testing.NewListActionWithOptions(chartsResource, chartsKind, c.ns, opts), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } label, _, _ := testing.ExtractFromListOptions(opts) @@ -74,28 +76,30 @@ func (c *FakeCharts) List(ctx context.Context, opts v1.ListOptions) (result *v1b // Watch returns a watch.Interface that watches the requested charts. func (c *FakeCharts) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) { return c.Fake. - InvokesWatch(testing.NewWatchAction(chartsResource, c.ns, opts)) + InvokesWatch(testing.NewWatchActionWithOptions(chartsResource, c.ns, opts)) } // Create takes the representation of a chart and creates it. Returns the server's representation of the chart, and an error, if there is any. func (c *FakeCharts) Create(ctx context.Context, chart *v1beta1.Chart, opts v1.CreateOptions) (result *v1beta1.Chart, err error) { + emptyResult := &v1beta1.Chart{} obj, err := c.Fake. - Invokes(testing.NewCreateAction(chartsResource, c.ns, chart), &v1beta1.Chart{}) + Invokes(testing.NewCreateActionWithOptions(chartsResource, c.ns, chart, opts), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } return obj.(*v1beta1.Chart), err } // Update takes the representation of a chart and updates it. Returns the server's representation of the chart, and an error, if there is any. func (c *FakeCharts) Update(ctx context.Context, chart *v1beta1.Chart, opts v1.UpdateOptions) (result *v1beta1.Chart, err error) { + emptyResult := &v1beta1.Chart{} obj, err := c.Fake. - Invokes(testing.NewUpdateAction(chartsResource, c.ns, chart), &v1beta1.Chart{}) + Invokes(testing.NewUpdateActionWithOptions(chartsResource, c.ns, chart, opts), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } return obj.(*v1beta1.Chart), err } diff --git a/pkg/client/clientset/typed/k0s/v1beta1/clusterconfig.go b/pkg/client/clientset/typed/k0s/v1beta1/clusterconfig.go index 022b99f6286d..8471381a31b9 100644 --- a/pkg/client/clientset/typed/k0s/v1beta1/clusterconfig.go +++ b/pkg/client/clientset/typed/k0s/v1beta1/clusterconfig.go @@ -20,13 +20,12 @@ package v1beta1 import ( "context" - "time" v1beta1 "github.com/k0sproject/k0s/pkg/apis/k0s/v1beta1" scheme "github.com/k0sproject/k0s/pkg/client/clientset/scheme" v1 "k8s.io/apimachinery/pkg/apis/meta/v1" watch "k8s.io/apimachinery/pkg/watch" - rest "k8s.io/client-go/rest" + gentype "k8s.io/client-go/gentype" ) // ClusterConfigsGetter has a method to return a ClusterConfigInterface. @@ -48,97 +47,18 @@ type ClusterConfigInterface interface { // clusterConfigs implements ClusterConfigInterface type clusterConfigs struct { - client rest.Interface - ns string + *gentype.ClientWithList[*v1beta1.ClusterConfig, *v1beta1.ClusterConfigList] } // newClusterConfigs returns a ClusterConfigs func newClusterConfigs(c *K0sV1beta1Client, namespace string) *clusterConfigs { return &clusterConfigs{ - client: c.RESTClient(), - ns: namespace, + gentype.NewClientWithList[*v1beta1.ClusterConfig, *v1beta1.ClusterConfigList]( + "clusterconfigs", + c.RESTClient(), + scheme.ParameterCodec, + namespace, + func() *v1beta1.ClusterConfig { return &v1beta1.ClusterConfig{} }, + func() *v1beta1.ClusterConfigList { return &v1beta1.ClusterConfigList{} }), } } - -// Get takes name of the clusterConfig, and returns the corresponding clusterConfig object, and an error if there is any. -func (c *clusterConfigs) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1beta1.ClusterConfig, err error) { - result = &v1beta1.ClusterConfig{} - err = c.client.Get(). - Namespace(c.ns). - Resource("clusterconfigs"). - Name(name). - VersionedParams(&options, scheme.ParameterCodec). - Do(ctx). - Into(result) - return -} - -// List takes label and field selectors, and returns the list of ClusterConfigs that match those selectors. -func (c *clusterConfigs) List(ctx context.Context, opts v1.ListOptions) (result *v1beta1.ClusterConfigList, err error) { - var timeout time.Duration - if opts.TimeoutSeconds != nil { - timeout = time.Duration(*opts.TimeoutSeconds) * time.Second - } - result = &v1beta1.ClusterConfigList{} - err = c.client.Get(). - Namespace(c.ns). - Resource("clusterconfigs"). - VersionedParams(&opts, scheme.ParameterCodec). - Timeout(timeout). - Do(ctx). - Into(result) - return -} - -// Watch returns a watch.Interface that watches the requested clusterConfigs. -func (c *clusterConfigs) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) { - var timeout time.Duration - if opts.TimeoutSeconds != nil { - timeout = time.Duration(*opts.TimeoutSeconds) * time.Second - } - opts.Watch = true - return c.client.Get(). - Namespace(c.ns). - Resource("clusterconfigs"). - VersionedParams(&opts, scheme.ParameterCodec). - Timeout(timeout). - Watch(ctx) -} - -// Create takes the representation of a clusterConfig and creates it. Returns the server's representation of the clusterConfig, and an error, if there is any. -func (c *clusterConfigs) Create(ctx context.Context, clusterConfig *v1beta1.ClusterConfig, opts v1.CreateOptions) (result *v1beta1.ClusterConfig, err error) { - result = &v1beta1.ClusterConfig{} - err = c.client.Post(). - Namespace(c.ns). - Resource("clusterconfigs"). - VersionedParams(&opts, scheme.ParameterCodec). - Body(clusterConfig). - Do(ctx). - Into(result) - return -} - -// Update takes the representation of a clusterConfig and updates it. Returns the server's representation of the clusterConfig, and an error, if there is any. -func (c *clusterConfigs) Update(ctx context.Context, clusterConfig *v1beta1.ClusterConfig, opts v1.UpdateOptions) (result *v1beta1.ClusterConfig, err error) { - result = &v1beta1.ClusterConfig{} - err = c.client.Put(). - Namespace(c.ns). - Resource("clusterconfigs"). - Name(clusterConfig.Name). - VersionedParams(&opts, scheme.ParameterCodec). - Body(clusterConfig). - Do(ctx). - Into(result) - return -} - -// Delete takes name of the clusterConfig and deletes it. Returns an error if one occurs. -func (c *clusterConfigs) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error { - return c.client.Delete(). - Namespace(c.ns). - Resource("clusterconfigs"). - Name(name). - Body(&opts). - Do(ctx). - Error() -} diff --git a/pkg/client/clientset/typed/k0s/v1beta1/fake/fake_clusterconfig.go b/pkg/client/clientset/typed/k0s/v1beta1/fake/fake_clusterconfig.go index 216024411317..bd66aadc3834 100644 --- a/pkg/client/clientset/typed/k0s/v1beta1/fake/fake_clusterconfig.go +++ b/pkg/client/clientset/typed/k0s/v1beta1/fake/fake_clusterconfig.go @@ -40,22 +40,24 @@ var clusterconfigsKind = v1beta1.SchemeGroupVersion.WithKind("ClusterConfig") // Get takes name of the clusterConfig, and returns the corresponding clusterConfig object, and an error if there is any. func (c *FakeClusterConfigs) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1beta1.ClusterConfig, err error) { + emptyResult := &v1beta1.ClusterConfig{} obj, err := c.Fake. - Invokes(testing.NewGetAction(clusterconfigsResource, c.ns, name), &v1beta1.ClusterConfig{}) + Invokes(testing.NewGetActionWithOptions(clusterconfigsResource, c.ns, name, options), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } return obj.(*v1beta1.ClusterConfig), err } // List takes label and field selectors, and returns the list of ClusterConfigs that match those selectors. func (c *FakeClusterConfigs) List(ctx context.Context, opts v1.ListOptions) (result *v1beta1.ClusterConfigList, err error) { + emptyResult := &v1beta1.ClusterConfigList{} obj, err := c.Fake. - Invokes(testing.NewListAction(clusterconfigsResource, clusterconfigsKind, c.ns, opts), &v1beta1.ClusterConfigList{}) + Invokes(testing.NewListActionWithOptions(clusterconfigsResource, clusterconfigsKind, c.ns, opts), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } label, _, _ := testing.ExtractFromListOptions(opts) @@ -74,28 +76,30 @@ func (c *FakeClusterConfigs) List(ctx context.Context, opts v1.ListOptions) (res // Watch returns a watch.Interface that watches the requested clusterConfigs. func (c *FakeClusterConfigs) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) { return c.Fake. - InvokesWatch(testing.NewWatchAction(clusterconfigsResource, c.ns, opts)) + InvokesWatch(testing.NewWatchActionWithOptions(clusterconfigsResource, c.ns, opts)) } // Create takes the representation of a clusterConfig and creates it. Returns the server's representation of the clusterConfig, and an error, if there is any. func (c *FakeClusterConfigs) Create(ctx context.Context, clusterConfig *v1beta1.ClusterConfig, opts v1.CreateOptions) (result *v1beta1.ClusterConfig, err error) { + emptyResult := &v1beta1.ClusterConfig{} obj, err := c.Fake. - Invokes(testing.NewCreateAction(clusterconfigsResource, c.ns, clusterConfig), &v1beta1.ClusterConfig{}) + Invokes(testing.NewCreateActionWithOptions(clusterconfigsResource, c.ns, clusterConfig, opts), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } return obj.(*v1beta1.ClusterConfig), err } // Update takes the representation of a clusterConfig and updates it. Returns the server's representation of the clusterConfig, and an error, if there is any. func (c *FakeClusterConfigs) Update(ctx context.Context, clusterConfig *v1beta1.ClusterConfig, opts v1.UpdateOptions) (result *v1beta1.ClusterConfig, err error) { + emptyResult := &v1beta1.ClusterConfig{} obj, err := c.Fake. - Invokes(testing.NewUpdateAction(clusterconfigsResource, c.ns, clusterConfig), &v1beta1.ClusterConfig{}) + Invokes(testing.NewUpdateActionWithOptions(clusterconfigsResource, c.ns, clusterConfig, opts), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } return obj.(*v1beta1.ClusterConfig), err } diff --git a/pkg/component/controller/workerconfig/reconciler_test.go b/pkg/component/controller/workerconfig/reconciler_test.go index 75e60b114f8a..e6018deae1bb 100644 --- a/pkg/component/controller/workerconfig/reconciler_test.go +++ b/pkg/component/controller/workerconfig/reconciler_test.go @@ -374,22 +374,22 @@ func TestReconciler_ResourceGeneration(t *testing.T) { })) configMaps := map[string]func(t *testing.T, expected *kubeletConfig){ - "worker-config-default-1.30": func(t *testing.T, expected *kubeletConfig) { + "worker-config-default-1.31": func(t *testing.T, expected *kubeletConfig) { expected.CgroupsPerQOS = ptr.To(true) expected.FeatureGates = map[string]bool{"kubelet-feature": true} }, - "worker-config-default-windows-1.30": func(t *testing.T, expected *kubeletConfig) { + "worker-config-default-windows-1.31": func(t *testing.T, expected *kubeletConfig) { expected.CgroupsPerQOS = ptr.To(false) expected.FeatureGates = map[string]bool{"kubelet-feature": true} }, - "worker-config-profile_XXX-1.30": func(t *testing.T, expected *kubeletConfig) { + "worker-config-profile_XXX-1.31": func(t *testing.T, expected *kubeletConfig) { expected.Authentication.Anonymous.Enabled = ptr.To(true) expected.FeatureGates = map[string]bool{"kubelet-feature": true} }, - "worker-config-profile_YYY-1.30": func(t *testing.T, expected *kubeletConfig) { + "worker-config-profile_YYY-1.31": func(t *testing.T, expected *kubeletConfig) { expected.Authentication.Webhook.CacheTTL = metav1.Duration{Duration: 15 * time.Second} expected.FeatureGates = map[string]bool{"kubelet-feature": true} }, diff --git a/pkg/constant/constant.go b/pkg/constant/constant.go index 73daddb81f72..e8744c903647 100644 --- a/pkg/constant/constant.go +++ b/pkg/constant/constant.go @@ -71,7 +71,7 @@ const ( KeepalivedUser = "keepalived" // KubernetesMajorMinorVersion defines the current embedded major.minor version info - KubernetesMajorMinorVersion = "1.30" + KubernetesMajorMinorVersion = "1.31" // Indicates if k0s is using a Kubernetes pre-release or a GA version. KubernetesPreRelease = false @@ -86,7 +86,7 @@ const ( KubePauseContainerImage = "registry.k8s.io/pause" KubePauseContainerImageVersion = "3.9" KubeProxyImage = "quay.io/k0sproject/kube-proxy" - KubeProxyImageVersion = "v1.30.4" + KubeProxyImageVersion = "v1.31.0" CoreDNSImage = "quay.io/k0sproject/coredns" CoreDNSImageVersion = "1.11.3" EnvoyProxyImage = "quay.io/k0sproject/envoy-distroless" diff --git a/pkg/constant/constant_test.go b/pkg/constant/constant_test.go index 9aa1abb7b7de..ee952eab498e 100644 --- a/pkg/constant/constant_test.go +++ b/pkg/constant/constant_test.go @@ -22,6 +22,7 @@ import ( "os/exec" "path/filepath" "regexp" + "runtime" "slices" "strings" "testing" @@ -67,7 +68,7 @@ func TestTLSCipherSuites(t *testing.T) { func TestKubernetesModuleVersions(t *testing.T) { kubernetesVersion := getVersion(t, "kubernetes") - checkPackageModules(t, + assertPackageModules(t, func(modulePath string) bool { switch modulePath { // Don't report any version mismatches on the following modules. @@ -99,7 +100,7 @@ func TestEtcdModuleVersions(t *testing.T) { etcdVersionParts := strings.Split(etcdVersion, ".") require.GreaterOrEqual(t, len(etcdVersionParts), 1, "failed to spilt etcd version %q", etcdVersion) - checkPackageModules(t, + assertPackageModules(t, func(modulePath string) bool { return strings.HasPrefix(modulePath, "go.etcd.io/etcd/") && strings.HasSuffix(modulePath, "/v"+etcdVersionParts[0]) @@ -115,7 +116,7 @@ func TestEtcdModuleVersions(t *testing.T) { func TestContainerdModuleVersions(t *testing.T) { containerdVersion := getVersion(t, "containerd") - checkPackageModules(t, + assertPackageModules(t, func(modulePath string) bool { return modulePath == "github.com/containerd/containerd" }, @@ -128,6 +129,29 @@ func TestContainerdModuleVersions(t *testing.T) { ) } +func TestRuncModuleVersions(t *testing.T) { + runcVersion := getVersion(t, "runc") + + numMatched := checkPackageModules(t, + func(modulePath string) bool { + return modulePath == "github.com/opencontainers/runc" + }, + func(t *testing.T, pkgPath string, module *packages.Module) bool { + return !assert.Equal(t, "v"+runcVersion, module.Version, + "Module version for package %s doesn't match: %+#v", + pkgPath, module, + ) + }, + ) + + if runtime.GOOS == "windows" { + // The runc dependency is only a thing on Linux. + assert.Zero(t, numMatched, "Expected no packages to to pass the filter on Windows.") + } else { + assert.NotZero(t, numMatched, "Not a single package passed the filter.") + } +} + func getVersion(t *testing.T, component string) string { cmd := exec.Command("sh", "./vars.sh", component+"_version") cmd.Dir = filepath.Join("..", "..") @@ -140,7 +164,12 @@ func getVersion(t *testing.T, component string) string { return string(trailingNewlines.ReplaceAll(out, []byte{})) } -func checkPackageModules(t *testing.T, filter func(modulePath string) bool, check func(t *testing.T, pkgPath string, module *packages.Module) bool) { +func assertPackageModules(t *testing.T, filter func(modulePath string) bool, check func(t *testing.T, pkgPath string, module *packages.Module) bool) { + numMatched := checkPackageModules(t, filter, check) + assert.NotZero(t, numMatched, "Not a single package passed the filter.") +} + +func checkPackageModules(t *testing.T, filter func(modulePath string) bool, check func(t *testing.T, pkgPath string, module *packages.Module) bool) (numMatched uint) { pkgs, err := packages.Load(&packages.Config{ Mode: packages.NeedName | packages.NeedModule | packages.NeedImports | packages.NeedDeps, Logf: t.Logf, @@ -148,7 +177,6 @@ func checkPackageModules(t *testing.T, filter func(modulePath string) bool, chec require.NoError(t, err) failedModules := make(map[string]bool) - checkCalledAtLeastOnce := false packages.Visit(pkgs, func(p *packages.Package) bool { if p.Module != nil && filter(p.Module.Path) { @@ -158,7 +186,7 @@ func checkPackageModules(t *testing.T, filter func(modulePath string) bool, chec } if !failedModules[actual.Path] { - checkCalledAtLeastOnce = true + numMatched++ if !check(t, p.PkgPath, actual) { failedModules[actual.Path] = true } @@ -168,5 +196,5 @@ func checkPackageModules(t *testing.T, filter func(modulePath string) bool, chec return true }, nil) - assert.True(t, checkCalledAtLeastOnce, "Not a single package passed the filter.") + return } diff --git a/static/_crds/k0s/k0s.k0sproject.io_clusterconfigs.yaml b/static/_crds/k0s/k0s.k0sproject.io_clusterconfigs.yaml index 64c3a744dbd7..f7d8d89717e7 100644 --- a/static/_crds/k0s/k0s.k0sproject.io_clusterconfigs.yaml +++ b/static/_crds/k0s/k0s.k0sproject.io_clusterconfigs.yaml @@ -652,7 +652,7 @@ spec: iptables: description: |- KubeProxyIPTablesConfiguration contains iptables-related kube-proxy configuration - @see https://github.com/kubernetes/kube-proxy/blob/v0.30.4/config/v1alpha1/types.go#L27-L48 + @see https://github.com/kubernetes/kube-proxy/blob/v0.31.0/config/v1alpha1/types.go#L27-L48 properties: localhostNodePorts: type: boolean @@ -669,7 +669,7 @@ spec: ipvs: description: |- KubeProxyIPVSConfiguration contains ipvs-related kube-proxy configuration - @see https://github.com/kubernetes/kube-proxy/blob/v0.30.4/config/v1alpha1/types.go#L52-L78 + @see https://github.com/kubernetes/kube-proxy/blob/v0.31.0/config/v1alpha1/types.go#L52-L78 properties: excludeCIDRs: items: