From a3ebfd39460422af16ac786832fd53ef7d453963 Mon Sep 17 00:00:00 2001 From: zhangzujian Date: Thu, 15 Aug 2024 07:19:23 +0000 Subject: [PATCH 1/3] bump k8s to v1.31.0 Signed-off-by: zhangzujian --- dist/images/Dockerfile.base | 2 +- go.mod | 150 +- go.sum | 1619 ++--------------- hack/update-codegen-docker.sh | 2 +- .../versioned/fake/clientset_generated.go | 6 +- .../typed/kubeovn/v1/fake/fake_ip.go | 29 +- .../typed/kubeovn/v1/fake/fake_ippool.go | 36 +- .../kubeovn/v1/fake/fake_iptablesdnatrule.go | 36 +- .../typed/kubeovn/v1/fake/fake_iptableseip.go | 36 +- .../kubeovn/v1/fake/fake_iptablesfiprule.go | 36 +- .../kubeovn/v1/fake/fake_iptablessnatrule.go | 36 +- .../typed/kubeovn/v1/fake/fake_ovndnatrule.go | 36 +- .../typed/kubeovn/v1/fake/fake_ovneip.go | 36 +- .../typed/kubeovn/v1/fake/fake_ovnfip.go | 36 +- .../typed/kubeovn/v1/fake/fake_ovnsnatrule.go | 36 +- .../kubeovn/v1/fake/fake_providernetwork.go | 36 +- .../typed/kubeovn/v1/fake/fake_qospolicy.go | 36 +- .../kubeovn/v1/fake/fake_securitygroup.go | 36 +- .../typed/kubeovn/v1/fake/fake_subnet.go | 36 +- .../kubeovn/v1/fake/fake_switchlbrule.go | 36 +- .../typed/kubeovn/v1/fake/fake_vip.go | 36 +- .../typed/kubeovn/v1/fake/fake_vlan.go | 36 +- .../typed/kubeovn/v1/fake/fake_vpc.go | 36 +- .../typed/kubeovn/v1/fake/fake_vpcdns.go | 36 +- .../kubeovn/v1/fake/fake_vpcnatgateway.go | 36 +- .../versioned/typed/kubeovn/v1/ip.go | 119 +- .../versioned/typed/kubeovn/v1/ippool.go | 135 +- .../typed/kubeovn/v1/iptablesdnatrule.go | 135 +- .../versioned/typed/kubeovn/v1/iptableseip.go | 135 +- .../typed/kubeovn/v1/iptablesfiprule.go | 135 +- .../typed/kubeovn/v1/iptablessnatrule.go | 135 +- .../versioned/typed/kubeovn/v1/ovndnatrule.go | 135 +- .../versioned/typed/kubeovn/v1/ovneip.go | 135 +- .../versioned/typed/kubeovn/v1/ovnfip.go | 135 +- .../versioned/typed/kubeovn/v1/ovnsnatrule.go | 135 +- .../typed/kubeovn/v1/providernetwork.go | 135 +- .../versioned/typed/kubeovn/v1/qospolicy.go | 135 +- .../typed/kubeovn/v1/securitygroup.go | 135 +- .../versioned/typed/kubeovn/v1/subnet.go | 135 +- .../typed/kubeovn/v1/switchlbrule.go | 135 +- .../versioned/typed/kubeovn/v1/vip.go | 135 +- .../versioned/typed/kubeovn/v1/vlan.go | 135 +- .../versioned/typed/kubeovn/v1/vpc.go | 135 +- .../versioned/typed/kubeovn/v1/vpcdns.go | 135 +- .../typed/kubeovn/v1/vpcnatgateway.go | 135 +- .../informers/externalversions/factory.go | 1 + pkg/client/listers/kubeovn/v1/ip.go | 26 +- pkg/client/listers/kubeovn/v1/ippool.go | 26 +- .../listers/kubeovn/v1/iptablesdnatrule.go | 26 +- pkg/client/listers/kubeovn/v1/iptableseip.go | 26 +- .../listers/kubeovn/v1/iptablesfiprule.go | 26 +- .../listers/kubeovn/v1/iptablessnatrule.go | 26 +- pkg/client/listers/kubeovn/v1/ovndnatrule.go | 26 +- pkg/client/listers/kubeovn/v1/ovneip.go | 26 +- pkg/client/listers/kubeovn/v1/ovnfip.go | 26 +- pkg/client/listers/kubeovn/v1/ovnsnatrule.go | 26 +- .../listers/kubeovn/v1/providernetwork.go | 26 +- pkg/client/listers/kubeovn/v1/qospolicy.go | 26 +- .../listers/kubeovn/v1/securitygroup.go | 26 +- pkg/client/listers/kubeovn/v1/subnet.go | 26 +- pkg/client/listers/kubeovn/v1/switchlbrule.go | 26 +- pkg/client/listers/kubeovn/v1/vip.go | 26 +- pkg/client/listers/kubeovn/v1/vlan.go | 26 +- pkg/client/listers/kubeovn/v1/vpc.go | 26 +- pkg/client/listers/kubeovn/v1/vpcdns.go | 26 +- .../listers/kubeovn/v1/vpcnatgateway.go | 26 +- test/e2e/kube-ovn/ipam/ipam.go | 2 +- yamls/kind.yaml.j2 | 2 +- 68 files changed, 894 insertions(+), 4807 deletions(-) diff --git a/dist/images/Dockerfile.base b/dist/images/Dockerfile.base index 0eb57a74252..fb45c1cc9aa 100644 --- a/dist/images/Dockerfile.base +++ b/dist/images/Dockerfile.base @@ -126,7 +126,7 @@ ARG ARCH ARG CNI_VERSION=v1.5.1 RUN curl -sSf -L --retry 5 https://github.com/containernetworking/plugins/releases/download/${CNI_VERSION}/cni-plugins-linux-${ARCH}-${CNI_VERSION}.tgz | tar -xz -C . ./loopback ./portmap ./macvlan -ARG KUBE_VERSION="v1.30.3" +ARG KUBE_VERSION="v1.31.0" RUN curl -L https://dl.k8s.io/${KUBE_VERSION}/kubernetes-client-linux-${ARCH}.tar.gz | tar -xz -C . && cp ./kubernetes/client/bin/kubectl /usr/bin/kubectl \ && chmod +x /usr/bin/kubectl && rm -rf ./kubernetes diff --git a/go.mod b/go.mod index 765e5426879..4d4e99b5a23 100644 --- a/go.mod +++ b/go.mod @@ -30,7 +30,7 @@ require ( github.com/ovn-org/libovsdb v0.7.0 github.com/parnurzeal/gorequest v0.3.0 github.com/prometheus-community/pro-bing v0.4.1 - github.com/prometheus/client_golang v1.18.0 + github.com/prometheus/client_golang v1.20.0 github.com/scylladb/go-set v1.0.2 github.com/sirupsen/logrus v1.9.3 github.com/spf13/pflag v1.0.5 @@ -43,31 +43,27 @@ require ( google.golang.org/grpc v1.65.0 google.golang.org/protobuf v1.34.2 gopkg.in/k8snetworkplumbingwg/multus-cni.v4 v4.1.0 - k8s.io/api v0.30.3 - k8s.io/apimachinery v0.30.3 + k8s.io/api v0.31.0 + k8s.io/apimachinery v0.31.0 k8s.io/client-go v12.0.0+incompatible k8s.io/klog/v2 v2.130.1 - k8s.io/kubectl v0.30.3 - k8s.io/kubernetes v1.30.3 - k8s.io/pod-security-admission v0.30.3 + k8s.io/kubectl v0.31.0 + k8s.io/kubernetes v1.31.0 + k8s.io/pod-security-admission v0.31.0 k8s.io/utils v0.0.0-20240711033017-18e509b52bc8 kernel.org/pub/linux/libs/security/libcap/cap v1.2.70 kubevirt.io/api v1.3.0 kubevirt.io/client-go v1.3.0 - sigs.k8s.io/controller-runtime v0.18.5 + sigs.k8s.io/controller-runtime v0.19.0 sigs.k8s.io/network-policy-api v0.1.5 ) require ( - cloud.google.com/go/auth v0.7.3 // indirect - cloud.google.com/go/auth/oauth2adapt v0.2.3 // indirect - cloud.google.com/go/compute/metadata v0.5.0 // indirect github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161 // indirect - github.com/GoogleCloudPlatform/k8s-cloud-provider v1.20.0 // indirect github.com/JeffAshton/win_pdh v0.0.0-20161109143554-76bb4ee9f0ab // indirect github.com/MakeNowJust/heredoc v1.0.0 // 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/armon/circbuf v0.0.0-20190214190532-5111143e8da2 // indirect github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 // indirect github.com/beorn7/perks v1.0.1 // indirect @@ -90,7 +86,7 @@ require ( github.com/containerd/ttrpc v1.2.5 // indirect github.com/coreos/go-semver v0.3.1 // indirect github.com/coreos/go-systemd/v22 v22.5.0 // indirect - github.com/cyphar/filepath-securejoin v0.2.5 // indirect + github.com/cyphar/filepath-securejoin v0.3.1 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 // indirect github.com/distribution/reference v0.6.0 // indirect @@ -105,6 +101,7 @@ require ( github.com/fatih/camelcase v1.0.0 // indirect github.com/felixge/httpsnoop v1.0.4 // indirect github.com/fsnotify/fsnotify v1.7.0 // indirect + github.com/fxamacker/cbor/v2 v2.7.0 // indirect github.com/go-errors/errors v1.5.1 // indirect github.com/go-ini/ini v1.67.0 // indirect github.com/go-kit/kit v0.13.0 // indirect @@ -122,16 +119,12 @@ require ( github.com/golang/protobuf v1.5.4 // indirect github.com/google/btree v1.1.2 // indirect github.com/google/cadvisor v0.50.0 // indirect - github.com/google/cel-go v0.17.8 // indirect + github.com/google/cel-go v0.21.0 // indirect github.com/google/gnostic-models v0.6.9-0.20230804172637-c7be7c783f49 // indirect github.com/google/go-cmp v0.6.0 // indirect github.com/google/gofuzz v1.2.0 // indirect github.com/google/pprof v0.0.0-20240727154555-813a5fbdbec8 // indirect - github.com/google/s2a-go v0.1.8 // indirect github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 // indirect - github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect - github.com/googleapis/gax-go/v2 v2.13.0 // indirect - github.com/gopherjs/gopherjs v1.17.2 // indirect github.com/gorilla/websocket v1.5.3 // indirect github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79 // indirect github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 // indirect @@ -149,7 +142,9 @@ require ( github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0 // indirect github.com/karrick/godirwalk v1.17.0 // indirect github.com/kelseyhightower/envconfig v1.4.0 // indirect + github.com/klauspost/compress v1.17.9 // indirect github.com/kubernetes-csi/external-snapshotter/client/v4 v4.2.0 // indirect + github.com/kylelemons/godebug v1.1.0 // indirect github.com/libopenstorage/openstorage v1.0.0 // indirect github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de // indirect github.com/magiconair/properties v1.8.7 // indirect @@ -187,25 +182,26 @@ require ( github.com/projectcalico/go-json v0.0.0-20161128004156-6219dc7339ba // indirect github.com/projectcalico/go-yaml-wrapper v0.0.0-20191112210931-090425220c54 // indirect github.com/projectcalico/libcalico-go v0.0.0-20190305235709-3d935c3b8b86 // indirect - github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring v0.68.0 // indirect + github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring v0.76.0 // indirect github.com/prometheus/client_model v0.6.1 // indirect - github.com/prometheus/common v0.47.0 // indirect - github.com/prometheus/procfs v0.12.0 // indirect + github.com/prometheus/common v0.55.0 // indirect + github.com/prometheus/procfs v0.15.1 // indirect github.com/russross/blackfriday/v2 v2.1.0 // indirect github.com/sagikazarmark/locafero v0.6.0 // indirect github.com/sagikazarmark/slog-shim v0.1.0 // indirect github.com/seccomp/libseccomp-golang v0.10.0 // indirect - github.com/smartystreets/assertions v1.13.0 // indirect - github.com/smartystreets/goconvey v1.6.4 // indirect + github.com/smartystreets/goconvey v1.8.1 // indirect github.com/sourcegraph/conc v0.3.0 // indirect github.com/spf13/afero v1.11.0 // indirect github.com/spf13/cast v1.7.0 // indirect github.com/spf13/cobra v1.8.1 // indirect github.com/spf13/viper v1.19.0 // indirect github.com/stoewer/go-strcase v1.3.0 // indirect + github.com/stretchr/objx v0.5.2 // indirect github.com/subosito/gotenv v1.6.0 // indirect github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635 // indirect github.com/vishvananda/netns v0.0.4 // indirect + github.com/x448/float16 v0.8.4 // indirect github.com/xlab/treeprint v1.2.0 // indirect go.etcd.io/etcd/api/v3 v3.5.15 // indirect go.etcd.io/etcd/client/pkg/v3 v3.5.15 // indirect @@ -226,7 +222,7 @@ require ( go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.27.0 // indirect golang.org/x/crypto v0.26.0 // indirect - golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 // indirect + golang.org/x/exp v0.0.0-20240808152545-0cdaa3abc0fa // indirect golang.org/x/net v0.28.0 // indirect golang.org/x/oauth2 v0.22.0 // indirect golang.org/x/sync v0.8.0 // indirect @@ -234,42 +230,39 @@ require ( golang.org/x/text v0.17.0 // indirect golang.org/x/tools v0.24.0 // indirect gomodules.xyz/jsonpatch/v2 v2.4.0 // indirect - google.golang.org/api v0.190.0 // indirect - google.golang.org/genproto v0.0.0-20240805194559-2c9e96a0b5d4 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20240805194559-2c9e96a0b5d4 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240805194559-2c9e96a0b5d4 // indirect - gopkg.in/evanphx/json-patch.v5 v5.9.0 // indirect - gopkg.in/gcfg.v1 v1.2.3 // indirect + google.golang.org/genproto v0.0.0-20240812133136-8ffd90a71988 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20240812133136-8ffd90a71988 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240812133136-8ffd90a71988 // indirect + gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect - gopkg.in/warnings.v0 v0.1.2 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect - k8s.io/apiextensions-apiserver v0.30.3 // indirect - k8s.io/apiserver v0.30.3 // indirect - k8s.io/cli-runtime v0.30.3 // indirect - k8s.io/cloud-provider v0.30.3 // indirect - k8s.io/cluster-bootstrap v0.30.3 // indirect - k8s.io/component-base v0.30.3 // indirect - k8s.io/component-helpers v0.30.3 // indirect - k8s.io/controller-manager v0.30.3 // indirect - k8s.io/cri-api v0.30.3 // indirect - k8s.io/csi-translation-lib v0.30.3 // indirect + k8s.io/apiextensions-apiserver v0.31.0 // indirect + k8s.io/apiserver v0.31.0 // indirect + k8s.io/cli-runtime v0.31.0 // indirect + k8s.io/cloud-provider v0.31.0 // indirect + k8s.io/cluster-bootstrap v0.31.0 // indirect + k8s.io/component-base v0.31.0 // indirect + k8s.io/component-helpers v0.31.0 // indirect + k8s.io/controller-manager v0.31.0 // indirect + k8s.io/cri-api v0.31.0 // indirect + k8s.io/cri-client v0.0.0 // indirect + k8s.io/csi-translation-lib v0.31.0 // indirect k8s.io/dynamic-resource-allocation v0.0.0 // indirect - k8s.io/kms v0.30.3 // indirect - k8s.io/kube-openapi v0.30.0 // indirect + k8s.io/kms v0.31.0 // indirect + k8s.io/kube-openapi v0.31.0 // indirect k8s.io/kube-scheduler v0.0.0 // indirect - k8s.io/kubelet v0.30.3 // indirect - k8s.io/legacy-cloud-providers v0.0.0 // indirect + k8s.io/kubelet v0.31.0 // indirect k8s.io/mount-utils v0.0.0 // indirect kernel.org/pub/linux/libs/security/libcap/psx v1.2.70 // indirect kubevirt.io/containerized-data-importer-api v1.58.1 // indirect kubevirt.io/controller-lifecycle-operator-sdk/api v0.0.0-20220329064328-f3cc58c6ed90 // 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.16.0 // indirect - sigs.k8s.io/kustomize/kyaml v0.16.0 // indirect + sigs.k8s.io/kustomize/api v0.17.2 // indirect + sigs.k8s.io/kustomize/kyaml v0.17.1 // indirect sigs.k8s.io/structured-merge-diff/v4 v4.4.1 // indirect sigs.k8s.io/yaml v1.4.0 // indirect ) @@ -277,34 +270,35 @@ require ( replace ( github.com/mdlayher/arp => github.com/kubeovn/arp v0.0.0-20240218024213-d9612a263f68 github.com/openshift/client-go => github.com/openshift/client-go v0.0.1 - github.com/ovn-org/libovsdb => github.com/kubeovn/libovsdb v0.0.0-20240218023647-f0bc3ce57fcd - k8s.io/api => k8s.io/api v0.30.3 - k8s.io/apiextensions-apiserver => k8s.io/apiextensions-apiserver v0.30.3 - k8s.io/apimachinery => k8s.io/apimachinery v0.30.3 - k8s.io/apiserver => k8s.io/apiserver v0.30.3 - k8s.io/cli-runtime => k8s.io/cli-runtime v0.30.3 - k8s.io/client-go => k8s.io/client-go v0.30.3 - k8s.io/cloud-provider => k8s.io/cloud-provider v0.30.3 - k8s.io/cluster-bootstrap => k8s.io/cluster-bootstrap v0.30.3 - k8s.io/code-generator => k8s.io/code-generator v0.30.3 - k8s.io/component-base => k8s.io/component-base v0.30.3 - k8s.io/component-helpers => k8s.io/component-helpers v0.30.3 - k8s.io/controller-manager => k8s.io/controller-manager v0.30.3 - k8s.io/cri-api => k8s.io/cri-api v0.30.3 - k8s.io/csi-translation-lib => k8s.io/csi-translation-lib v0.30.3 - k8s.io/dynamic-resource-allocation => k8s.io/dynamic-resource-allocation v0.30.3 - k8s.io/endpointslice => k8s.io/endpointslice v0.30.3 - k8s.io/kube-aggregator => k8s.io/kube-aggregator v0.30.3 - k8s.io/kube-controller-manager => k8s.io/kube-controller-manager v0.30.3 - k8s.io/kube-openapi => k8s.io/kube-openapi v0.0.0-20240430033511-f0e62f92d13f - k8s.io/kube-proxy => k8s.io/kube-proxy v0.30.3 - k8s.io/kube-scheduler => k8s.io/kube-scheduler v0.30.3 - k8s.io/kubectl => k8s.io/kubectl v0.30.3 - k8s.io/kubelet => k8s.io/kubelet v0.30.3 - k8s.io/legacy-cloud-providers => k8s.io/legacy-cloud-providers v0.30.3 - k8s.io/metrics => k8s.io/metrics v0.30.3 - k8s.io/mount-utils => k8s.io/mount-utils v0.30.3 - k8s.io/pod-security-admission => k8s.io/pod-security-admission v0.30.3 - k8s.io/sample-apiserver => k8s.io/sample-apiserver v0.30.3 - kubevirt.io/client-go => github.com/kubeovn/kubevirt-client-go v0.0.0-20240719051923-4613ee8d79ec + github.com/ovn-org/libovsdb => github.com/kubeovn/libovsdb v0.0.0-20240814054845-978196448fb2 + 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/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-openapi => k8s.io/kube-openapi v0.0.0-20240812233141-91dab695df6f + 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/legacy-cloud-providers => k8s.io/legacy-cloud-providers 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 + kubevirt.io/client-go => github.com/kubeovn/kubevirt-client-go v0.0.0-20240814055642-5a8ca1345f4a ) diff --git a/go.sum b/go.sum index f11e5e660de..36fbab93ea2 100644 --- a/go.sum +++ b/go.sum @@ -1,645 +1,27 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= -cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= -cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= -cloud.google.com/go v0.44.3/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= -cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= -cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= -cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= -cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4= -cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M= -cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc= -cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk= -cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs= -cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= -cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= -cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI= -cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk= -cloud.google.com/go v0.75.0/go.mod h1:VGuuCn7PG0dwsd5XPVm2Mm3wlh3EL55/79EKB6hlPTY= -cloud.google.com/go v0.78.0/go.mod h1:QjdrLG0uq+YwhjoVOLsS1t7TW8fs36kLs4XO5R5ECHg= -cloud.google.com/go v0.79.0/go.mod h1:3bzgcEeQlzbuEAYu4mrWhKqWjmpprinYgKJLgKHnbb8= -cloud.google.com/go v0.81.0/go.mod h1:mk/AM35KwGk/Nm2YSeZbxXdrNK3KZOYHmLkOqC2V6E0= -cloud.google.com/go v0.83.0/go.mod h1:Z7MJUsANfY0pYPdw0lbnivPx4/vhy/e2FEkSkF7vAVY= -cloud.google.com/go v0.84.0/go.mod h1:RazrYuxIK6Kb7YrzzhPoLmCVzl7Sup4NrbKPg8KHSUM= -cloud.google.com/go v0.87.0/go.mod h1:TpDYlFy7vuLzZMMZ+B6iRiELaY7z/gJPaqbMx6mlWcY= -cloud.google.com/go v0.90.0/go.mod h1:kRX0mNRHe0e2rC6oNakvwQqzyDmg57xJ+SZU1eT2aDQ= -cloud.google.com/go v0.93.3/go.mod h1:8utlLll2EF5XMAV15woO4lSbWQlk8rer9aLOfLh7+YI= -cloud.google.com/go v0.94.1/go.mod h1:qAlAugsXlC+JWO+Bke5vCtc9ONxjQT3drlTTnAplMW4= -cloud.google.com/go v0.97.0/go.mod h1:GF7l59pYBVlXQIBLx3a761cZ41F9bBH3JUlihCt2Udc= -cloud.google.com/go v0.99.0/go.mod h1:w0Xx2nLzqWJPuozYQX+hFfCSI8WioryfRDzkoI/Y2ZA= -cloud.google.com/go v0.100.1/go.mod h1:fs4QogzfH5n2pBXBP9vRiU+eCny7lD2vmFZy79Iuw1U= -cloud.google.com/go v0.100.2/go.mod h1:4Xra9TjzAeYHrl5+oeLlzbM2k3mjVhZh4UqTZ//w99A= -cloud.google.com/go v0.102.0/go.mod h1:oWcCzKlqJ5zgHQt9YsaeTY9KzIvjyy0ArmiBUgpQ+nc= -cloud.google.com/go v0.102.1/go.mod h1:XZ77E9qnTEnrgEOvr4xzfdX5TRo7fB4T2F4O6+34hIU= -cloud.google.com/go v0.104.0/go.mod h1:OO6xxXdJyvuJPcEPBLN9BJPD+jep5G1+2U5B5gkRYtA= -cloud.google.com/go v0.105.0/go.mod h1:PrLgOJNe5nfE9UMxKxgXj4mD3voiP+YQ6gdt6KMFOKM= -cloud.google.com/go v0.107.0/go.mod h1:wpc2eNrD7hXUTy8EKS10jkxpZBjASrORK7goS+3YX2I= -cloud.google.com/go v0.110.0/go.mod h1:SJnCLqQ0FCFGSZMUNUf84MV3Aia54kn7pi8st7tMzaY= -cloud.google.com/go v0.110.2/go.mod h1:k04UEeEtb6ZBRTv3dZz4CeJC3jKGxyhl0sAiVVquxiw= -cloud.google.com/go/accessapproval v1.4.0/go.mod h1:zybIuC3KpDOvotz59lFe5qxRZx6C75OtwbisN56xYB4= -cloud.google.com/go/accessapproval v1.5.0/go.mod h1:HFy3tuiGvMdcd/u+Cu5b9NkO1pEICJ46IR82PoUdplw= -cloud.google.com/go/accessapproval v1.6.0/go.mod h1:R0EiYnwV5fsRFiKZkPHr6mwyk2wxUJ30nL4j2pcFY2E= -cloud.google.com/go/accesscontextmanager v1.3.0/go.mod h1:TgCBehyr5gNMz7ZaH9xubp+CE8dkrszb4oK9CWyvD4o= -cloud.google.com/go/accesscontextmanager v1.4.0/go.mod h1:/Kjh7BBu/Gh83sv+K60vN9QE5NJcd80sU33vIe2IFPE= -cloud.google.com/go/accesscontextmanager v1.6.0/go.mod h1:8XCvZWfYw3K/ji0iVnp+6pu7huxoQTLmxAbVjbloTtM= -cloud.google.com/go/accesscontextmanager v1.7.0/go.mod h1:CEGLewx8dwa33aDAZQujl7Dx+uYhS0eay198wB/VumQ= -cloud.google.com/go/aiplatform v1.22.0/go.mod h1:ig5Nct50bZlzV6NvKaTwmplLLddFx0YReh9WfTO5jKw= -cloud.google.com/go/aiplatform v1.24.0/go.mod h1:67UUvRBKG6GTayHKV8DBv2RtR1t93YRu5B1P3x99mYY= -cloud.google.com/go/aiplatform v1.27.0/go.mod h1:Bvxqtl40l0WImSb04d0hXFU7gDOiq9jQmorivIiWcKg= -cloud.google.com/go/aiplatform v1.35.0/go.mod h1:7MFT/vCaOyZT/4IIFfxH4ErVg/4ku6lKv3w0+tFTgXQ= -cloud.google.com/go/aiplatform v1.36.1/go.mod h1:WTm12vJRPARNvJ+v6P52RDHCNe4AhvjcIZ/9/RRHy/k= -cloud.google.com/go/aiplatform v1.37.0/go.mod h1:IU2Cv29Lv9oCn/9LkFiiuKfwrRTq+QQMbW+hPCxJGZw= -cloud.google.com/go/analytics v0.11.0/go.mod h1:DjEWCu41bVbYcKyvlws9Er60YE4a//bK6mnhWvQeFNI= -cloud.google.com/go/analytics v0.12.0/go.mod h1:gkfj9h6XRf9+TS4bmuhPEShsh3hH8PAZzm/41OOhQd4= -cloud.google.com/go/analytics v0.17.0/go.mod h1:WXFa3WSym4IZ+JiKmavYdJwGG/CvpqiqczmL59bTD9M= -cloud.google.com/go/analytics v0.18.0/go.mod h1:ZkeHGQlcIPkw0R/GW+boWHhCOR43xz9RN/jn7WcqfIE= -cloud.google.com/go/analytics v0.19.0/go.mod h1:k8liqf5/HCnOUkbawNtrWWc+UAzyDlW89doe8TtoDsE= -cloud.google.com/go/apigateway v1.3.0/go.mod h1:89Z8Bhpmxu6AmUxuVRg/ECRGReEdiP3vQtk4Z1J9rJk= -cloud.google.com/go/apigateway v1.4.0/go.mod h1:pHVY9MKGaH9PQ3pJ4YLzoj6U5FUDeDFBllIz7WmzJoc= -cloud.google.com/go/apigateway v1.5.0/go.mod h1:GpnZR3Q4rR7LVu5951qfXPJCHquZt02jf7xQx7kpqN8= -cloud.google.com/go/apigeeconnect v1.3.0/go.mod h1:G/AwXFAKo0gIXkPTVfZDd2qA1TxBXJ3MgMRBQkIi9jc= -cloud.google.com/go/apigeeconnect v1.4.0/go.mod h1:kV4NwOKqjvt2JYR0AoIWo2QGfoRtn/pkS3QlHp0Ni04= -cloud.google.com/go/apigeeconnect v1.5.0/go.mod h1:KFaCqvBRU6idyhSNyn3vlHXc8VMDJdRmwDF6JyFRqZ8= -cloud.google.com/go/apigeeregistry v0.4.0/go.mod h1:EUG4PGcsZvxOXAdyEghIdXwAEi/4MEaoqLMLDMIwKXY= -cloud.google.com/go/apigeeregistry v0.5.0/go.mod h1:YR5+s0BVNZfVOUkMa5pAR2xGd0A473vA5M7j247o1wM= -cloud.google.com/go/apigeeregistry v0.6.0/go.mod h1:BFNzW7yQVLZ3yj0TKcwzb8n25CFBri51GVGOEUcgQsc= -cloud.google.com/go/apikeys v0.4.0/go.mod h1:XATS/yqZbaBK0HOssf+ALHp8jAlNHUgyfprvNcBIszU= -cloud.google.com/go/apikeys v0.5.0/go.mod h1:5aQfwY4D+ewMMWScd3hm2en3hCj+BROlyrt3ytS7KLI= -cloud.google.com/go/apikeys v0.6.0/go.mod h1:kbpXu5upyiAlGkKrJgQl8A0rKNNJ7dQ377pdroRSSi8= -cloud.google.com/go/appengine v1.4.0/go.mod h1:CS2NhuBuDXM9f+qscZ6V86m1MIIqPj3WC/UoEuR1Sno= -cloud.google.com/go/appengine v1.5.0/go.mod h1:TfasSozdkFI0zeoxW3PTBLiNqRmzraodCWatWI9Dmak= -cloud.google.com/go/appengine v1.6.0/go.mod h1:hg6i0J/BD2cKmDJbaFSYHFyZkgBEfQrDg/X0V5fJn84= -cloud.google.com/go/appengine v1.7.0/go.mod h1:eZqpbHFCqRGa2aCdope7eC0SWLV1j0neb/QnMJVWx6A= -cloud.google.com/go/appengine v1.7.1/go.mod h1:IHLToyb/3fKutRysUlFO0BPt5j7RiQ45nrzEJmKTo6E= -cloud.google.com/go/area120 v0.5.0/go.mod h1:DE/n4mp+iqVyvxHN41Vf1CR602GiHQjFPusMFW6bGR4= -cloud.google.com/go/area120 v0.6.0/go.mod h1:39yFJqWVgm0UZqWTOdqkLhjoC7uFfgXRC8g/ZegeAh0= -cloud.google.com/go/area120 v0.7.0/go.mod h1:a3+8EUD1SX5RUcCs3MY5YasiO1z6yLiNLRiFrykbynY= -cloud.google.com/go/area120 v0.7.1/go.mod h1:j84i4E1RboTWjKtZVWXPqvK5VHQFJRF2c1Nm69pWm9k= -cloud.google.com/go/artifactregistry v1.6.0/go.mod h1:IYt0oBPSAGYj/kprzsBjZ/4LnG/zOcHyFHjWPCi6SAQ= -cloud.google.com/go/artifactregistry v1.7.0/go.mod h1:mqTOFOnGZx8EtSqK/ZWcsm/4U8B77rbcLP6ruDU2Ixk= -cloud.google.com/go/artifactregistry v1.8.0/go.mod h1:w3GQXkJX8hiKN0v+at4b0qotwijQbYUqF2GWkZzAhC0= -cloud.google.com/go/artifactregistry v1.9.0/go.mod h1:2K2RqvA2CYvAeARHRkLDhMDJ3OXy26h3XW+3/Jh2uYc= -cloud.google.com/go/artifactregistry v1.11.1/go.mod h1:lLYghw+Itq9SONbCa1YWBoWs1nOucMH0pwXN1rOBZFI= -cloud.google.com/go/artifactregistry v1.11.2/go.mod h1:nLZns771ZGAwVLzTX/7Al6R9ehma4WUEhZGWV6CeQNQ= -cloud.google.com/go/artifactregistry v1.12.0/go.mod h1:o6P3MIvtzTOnmvGagO9v/rOjjA0HmhJ+/6KAXrmYDCI= -cloud.google.com/go/artifactregistry v1.13.0/go.mod h1:uy/LNfoOIivepGhooAUpL1i30Hgee3Cu0l4VTWHUC08= -cloud.google.com/go/asset v1.5.0/go.mod h1:5mfs8UvcM5wHhqtSv8J1CtxxaQq3AdBxxQi2jGW/K4o= -cloud.google.com/go/asset v1.7.0/go.mod h1:YbENsRK4+xTiL+Ofoj5Ckf+O17kJtgp3Y3nn4uzZz5s= -cloud.google.com/go/asset v1.8.0/go.mod h1:mUNGKhiqIdbr8X7KNayoYvyc4HbbFO9URsjbytpUaW0= -cloud.google.com/go/asset v1.9.0/go.mod h1:83MOE6jEJBMqFKadM9NLRcs80Gdw76qGuHn8m3h8oHQ= -cloud.google.com/go/asset v1.10.0/go.mod h1:pLz7uokL80qKhzKr4xXGvBQXnzHn5evJAEAtZiIb0wY= -cloud.google.com/go/asset v1.11.1/go.mod h1:fSwLhbRvC9p9CXQHJ3BgFeQNM4c9x10lqlrdEUYXlJo= -cloud.google.com/go/asset v1.12.0/go.mod h1:h9/sFOa4eDIyKmH6QMpm4eUK3pDojWnUhTgJlk762Hg= -cloud.google.com/go/asset v1.13.0/go.mod h1:WQAMyYek/b7NBpYq/K4KJWcRqzoalEsxz/t/dTk4THw= -cloud.google.com/go/assuredworkloads v1.5.0/go.mod h1:n8HOZ6pff6re5KYfBXcFvSViQjDwxFkAkmUFffJRbbY= -cloud.google.com/go/assuredworkloads v1.6.0/go.mod h1:yo2YOk37Yc89Rsd5QMVECvjaMKymF9OP+QXWlKXUkXw= -cloud.google.com/go/assuredworkloads v1.7.0/go.mod h1:z/736/oNmtGAyU47reJgGN+KVoYoxeLBoj4XkKYscNI= -cloud.google.com/go/assuredworkloads v1.8.0/go.mod h1:AsX2cqyNCOvEQC8RMPnoc0yEarXQk6WEKkxYfL6kGIo= -cloud.google.com/go/assuredworkloads v1.9.0/go.mod h1:kFuI1P78bplYtT77Tb1hi0FMxM0vVpRC7VVoJC3ZoT0= -cloud.google.com/go/assuredworkloads v1.10.0/go.mod h1:kwdUQuXcedVdsIaKgKTp9t0UJkE5+PAVNhdQm4ZVq2E= -cloud.google.com/go/auth v0.7.3 h1:98Vr+5jMaCZ5NZk6e/uBgf60phTk/XN84r8QEWB9yjY= -cloud.google.com/go/auth v0.7.3/go.mod h1:HJtWUx1P5eqjy/f6Iq5KeytNpbAcGolPhOgyop2LlzA= -cloud.google.com/go/auth/oauth2adapt v0.2.3 h1:MlxF+Pd3OmSudg/b1yZ5lJwoXCEaeedAguodky1PcKI= -cloud.google.com/go/auth/oauth2adapt v0.2.3/go.mod h1:tMQXOfZzFuNuUxOypHlQEXgdfX5cuhwU+ffUuXRJE8I= -cloud.google.com/go/automl v1.5.0/go.mod h1:34EjfoFGMZ5sgJ9EoLsRtdPSNZLcfflJR39VbVNS2M0= -cloud.google.com/go/automl v1.6.0/go.mod h1:ugf8a6Fx+zP0D59WLhqgTDsQI9w07o64uf/Is3Nh5p8= -cloud.google.com/go/automl v1.7.0/go.mod h1:RL9MYCCsJEOmt0Wf3z9uzG0a7adTT1fe+aObgSpkCt8= -cloud.google.com/go/automl v1.8.0/go.mod h1:xWx7G/aPEe/NP+qzYXktoBSDfjO+vnKMGgsApGJJquM= -cloud.google.com/go/automl v1.12.0/go.mod h1:tWDcHDp86aMIuHmyvjuKeeHEGq76lD7ZqfGLN6B0NuU= -cloud.google.com/go/baremetalsolution v0.3.0/go.mod h1:XOrocE+pvK1xFfleEnShBlNAXf+j5blPPxrhjKgnIFc= -cloud.google.com/go/baremetalsolution v0.4.0/go.mod h1:BymplhAadOO/eBa7KewQ0Ppg4A4Wplbn+PsFKRLo0uI= -cloud.google.com/go/baremetalsolution v0.5.0/go.mod h1:dXGxEkmR9BMwxhzBhV0AioD0ULBmuLZI8CdwalUxuss= -cloud.google.com/go/batch v0.3.0/go.mod h1:TR18ZoAekj1GuirsUsR1ZTKN3FC/4UDnScjT8NXImFE= -cloud.google.com/go/batch v0.4.0/go.mod h1:WZkHnP43R/QCGQsZ+0JyG4i79ranE2u8xvjq/9+STPE= -cloud.google.com/go/batch v0.7.0/go.mod h1:vLZN95s6teRUqRQ4s3RLDsH8PvboqBK+rn1oevL159g= -cloud.google.com/go/beyondcorp v0.2.0/go.mod h1:TB7Bd+EEtcw9PCPQhCJtJGjk/7TC6ckmnSFS+xwTfm4= -cloud.google.com/go/beyondcorp v0.3.0/go.mod h1:E5U5lcrcXMsCuoDNyGrpyTm/hn7ne941Jz2vmksAxW8= -cloud.google.com/go/beyondcorp v0.4.0/go.mod h1:3ApA0mbhHx6YImmuubf5pyW8srKnCEPON32/5hj+RmM= -cloud.google.com/go/beyondcorp v0.5.0/go.mod h1:uFqj9X+dSfrheVp7ssLTaRHd2EHqSL4QZmH4e8WXGGU= -cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= -cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= -cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= -cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= -cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= -cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= -cloud.google.com/go/bigquery v1.42.0/go.mod h1:8dRTJxhtG+vwBKzE5OseQn/hiydoQN3EedCaOdYmxRA= -cloud.google.com/go/bigquery v1.43.0/go.mod h1:ZMQcXHsl+xmU1z36G2jNGZmKp9zNY5BUua5wDgmNCfw= -cloud.google.com/go/bigquery v1.44.0/go.mod h1:0Y33VqXTEsbamHJvJHdFmtqHvMIY28aK1+dFsvaChGc= -cloud.google.com/go/bigquery v1.47.0/go.mod h1:sA9XOgy0A8vQK9+MWhEQTY6Tix87M/ZurWFIxmF9I/E= -cloud.google.com/go/bigquery v1.48.0/go.mod h1:QAwSz+ipNgfL5jxiaK7weyOhzdoAy1zFm0Nf1fysJac= -cloud.google.com/go/bigquery v1.49.0/go.mod h1:Sv8hMmTFFYBlt/ftw2uN6dFdQPzBlREY9yBh7Oy7/4Q= -cloud.google.com/go/bigquery v1.50.0/go.mod h1:YrleYEh2pSEbgTBZYMJ5SuSr0ML3ypjRB1zgf7pvQLU= -cloud.google.com/go/billing v1.4.0/go.mod h1:g9IdKBEFlItS8bTtlrZdVLWSSdSyFUZKXNS02zKMOZY= -cloud.google.com/go/billing v1.5.0/go.mod h1:mztb1tBc3QekhjSgmpf/CV4LzWXLzCArwpLmP2Gm88s= -cloud.google.com/go/billing v1.6.0/go.mod h1:WoXzguj+BeHXPbKfNWkqVtDdzORazmCjraY+vrxcyvI= -cloud.google.com/go/billing v1.7.0/go.mod h1:q457N3Hbj9lYwwRbnlD7vUpyjq6u5U1RAOArInEiD5Y= -cloud.google.com/go/billing v1.12.0/go.mod h1:yKrZio/eu+okO/2McZEbch17O5CB5NpZhhXG6Z766ss= -cloud.google.com/go/billing v1.13.0/go.mod h1:7kB2W9Xf98hP9Sr12KfECgfGclsH3CQR0R08tnRlRbc= -cloud.google.com/go/binaryauthorization v1.1.0/go.mod h1:xwnoWu3Y84jbuHa0zd526MJYmtnVXn0syOjaJgy4+dM= -cloud.google.com/go/binaryauthorization v1.2.0/go.mod h1:86WKkJHtRcv5ViNABtYMhhNWRrD1Vpi//uKEy7aYEfI= -cloud.google.com/go/binaryauthorization v1.3.0/go.mod h1:lRZbKgjDIIQvzYQS1p99A7/U1JqvqeZg0wiI5tp6tg0= -cloud.google.com/go/binaryauthorization v1.4.0/go.mod h1:tsSPQrBd77VLplV70GUhBf/Zm3FsKmgSqgm4UmiDItk= -cloud.google.com/go/binaryauthorization v1.5.0/go.mod h1:OSe4OU1nN/VswXKRBmciKpo9LulY41gch5c68htf3/Q= -cloud.google.com/go/certificatemanager v1.3.0/go.mod h1:n6twGDvcUBFu9uBgt4eYvvf3sQ6My8jADcOVwHmzadg= -cloud.google.com/go/certificatemanager v1.4.0/go.mod h1:vowpercVFyqs8ABSmrdV+GiFf2H/ch3KyudYQEMM590= -cloud.google.com/go/certificatemanager v1.6.0/go.mod h1:3Hh64rCKjRAX8dXgRAyOcY5vQ/fE1sh8o+Mdd6KPgY8= -cloud.google.com/go/channel v1.8.0/go.mod h1:W5SwCXDJsq/rg3tn3oG0LOxpAo6IMxNa09ngphpSlnk= -cloud.google.com/go/channel v1.9.0/go.mod h1:jcu05W0my9Vx4mt3/rEHpfxc9eKi9XwsdDL8yBMbKUk= -cloud.google.com/go/channel v1.11.0/go.mod h1:IdtI0uWGqhEeatSB62VOoJ8FSUhJ9/+iGkJVqp74CGE= -cloud.google.com/go/channel v1.12.0/go.mod h1:VkxCGKASi4Cq7TbXxlaBezonAYpp1GCnKMY6tnMQnLU= -cloud.google.com/go/cloudbuild v1.3.0/go.mod h1:WequR4ULxlqvMsjDEEEFnOG5ZSRSgWOywXYDb1vPE6U= -cloud.google.com/go/cloudbuild v1.4.0/go.mod h1:5Qwa40LHiOXmz3386FrjrYM93rM/hdRr7b53sySrTqA= -cloud.google.com/go/cloudbuild v1.6.0/go.mod h1:UIbc/w9QCbH12xX+ezUsgblrWv+Cv4Tw83GiSMHOn9M= -cloud.google.com/go/cloudbuild v1.7.0/go.mod h1:zb5tWh2XI6lR9zQmsm1VRA+7OCuve5d8S+zJUul8KTg= -cloud.google.com/go/cloudbuild v1.9.0/go.mod h1:qK1d7s4QlO0VwfYn5YuClDGg2hfmLZEb4wQGAbIgL1s= -cloud.google.com/go/clouddms v1.3.0/go.mod h1:oK6XsCDdW4Ib3jCCBugx+gVjevp2TMXFtgxvPSee3OM= -cloud.google.com/go/clouddms v1.4.0/go.mod h1:Eh7sUGCC+aKry14O1NRljhjyrr0NFC0G2cjwX0cByRk= -cloud.google.com/go/clouddms v1.5.0/go.mod h1:QSxQnhikCLUw13iAbffF2CZxAER3xDGNHjsTAkQJcQA= -cloud.google.com/go/cloudtasks v1.5.0/go.mod h1:fD92REy1x5woxkKEkLdvavGnPJGEn8Uic9nWuLzqCpY= -cloud.google.com/go/cloudtasks v1.6.0/go.mod h1:C6Io+sxuke9/KNRkbQpihnW93SWDU3uXt92nu85HkYI= -cloud.google.com/go/cloudtasks v1.7.0/go.mod h1:ImsfdYWwlWNJbdgPIIGJWC+gemEGTBK/SunNQQNCAb4= -cloud.google.com/go/cloudtasks v1.8.0/go.mod h1:gQXUIwCSOI4yPVK7DgTVFiiP0ZW/eQkydWzwVMdHxrI= -cloud.google.com/go/cloudtasks v1.9.0/go.mod h1:w+EyLsVkLWHcOaqNEyvcKAsWp9p29dL6uL9Nst1cI7Y= -cloud.google.com/go/cloudtasks v1.10.0/go.mod h1:NDSoTLkZ3+vExFEWu2UJV1arUyzVDAiZtdWcsUyNwBs= -cloud.google.com/go/compute v0.1.0/go.mod h1:GAesmwr110a34z04OlxYkATPBEfVhkymfTBXtfbBFow= -cloud.google.com/go/compute v1.3.0/go.mod h1:cCZiE1NHEtai4wiufUhW8I8S1JKkAnhnQJWM7YD99wM= -cloud.google.com/go/compute v1.5.0/go.mod h1:9SMHyhJlzhlkJqrPAc839t2BZFTSk6Jdj6mkzQJeu0M= -cloud.google.com/go/compute v1.6.0/go.mod h1:T29tfhtVbq1wvAPo0E3+7vhgmkOYeXjhFvz/FMzPu0s= -cloud.google.com/go/compute v1.6.1/go.mod h1:g85FgpzFvNULZ+S8AYq87axRKuf2Kh7deLqV/jJ3thU= -cloud.google.com/go/compute v1.7.0/go.mod h1:435lt8av5oL9P3fv1OEzSbSUe+ybHXGMPQHHZWZxy9U= -cloud.google.com/go/compute v1.10.0/go.mod h1:ER5CLbMxl90o2jtNbGSbtfOpQKR0t15FOtRsugnLrlU= -cloud.google.com/go/compute v1.12.0/go.mod h1:e8yNOBcBONZU1vJKCvCoDw/4JQsA0dpM4x/6PIIOocU= -cloud.google.com/go/compute v1.12.1/go.mod h1:e8yNOBcBONZU1vJKCvCoDw/4JQsA0dpM4x/6PIIOocU= -cloud.google.com/go/compute v1.13.0/go.mod h1:5aPTS0cUNMIc1CE546K+Th6weJUNQErARyZtRXDJ8GE= -cloud.google.com/go/compute v1.14.0/go.mod h1:YfLtxrj9sU4Yxv+sXzZkyPjEyPBZfXHUvjxega5vAdo= -cloud.google.com/go/compute v1.15.1/go.mod h1:bjjoF/NtFUrkD/urWfdHaKuOPDR5nWIs63rR+SXhcpA= -cloud.google.com/go/compute v1.18.0/go.mod h1:1X7yHxec2Ga+Ss6jPyjxRxpu2uu7PLgsOVXvgU0yacs= -cloud.google.com/go/compute v1.19.0/go.mod h1:rikpw2y+UMidAe9tISo04EHNOIf42RLYF/q8Bs93scU= -cloud.google.com/go/compute v1.19.3/go.mod h1:qxvISKp/gYnXkSAD1ppcSOveRAmzxicEv/JlizULFrI= -cloud.google.com/go/compute v1.20.1/go.mod h1:4tCnrn48xsqlwSAiLf1HXMQk8CONslYbdiEZc9FEIbM= -cloud.google.com/go/compute/metadata v0.1.0/go.mod h1:Z1VN+bulIf6bt4P/C37K4DyZYZEXYonfTBHHFPO/4UU= -cloud.google.com/go/compute/metadata v0.2.0/go.mod h1:zFmK7XCadkQkj6TtorcaGlCW1hT1fIilQDwofLpJ20k= -cloud.google.com/go/compute/metadata v0.2.1/go.mod h1:jgHgmJd2RKBGzXqF5LR2EZMGxBkeanZ9wwa75XHJgOM= -cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA= -cloud.google.com/go/compute/metadata v0.5.0 h1:Zr0eK8JbFv6+Wi4ilXAR8FJ3wyNdpxHKJNPos6LTZOY= -cloud.google.com/go/compute/metadata v0.5.0/go.mod h1:aHnloV2TPI38yx4s9+wAZhHykWvVCfu7hQbF+9CWoiY= -cloud.google.com/go/contactcenterinsights v1.3.0/go.mod h1:Eu2oemoePuEFc/xKFPjbTuPSj0fYJcPls9TFlPNnHHY= -cloud.google.com/go/contactcenterinsights v1.4.0/go.mod h1:L2YzkGbPsv+vMQMCADxJoT9YiTTnSEd6fEvCeHTYVck= -cloud.google.com/go/contactcenterinsights v1.6.0/go.mod h1:IIDlT6CLcDoyv79kDv8iWxMSTZhLxSCofVV5W6YFM/w= -cloud.google.com/go/container v1.6.0/go.mod h1:Xazp7GjJSeUYo688S+6J5V+n/t+G5sKBTFkKNudGRxg= -cloud.google.com/go/container v1.7.0/go.mod h1:Dp5AHtmothHGX3DwwIHPgq45Y8KmNsgN3amoYfxVkLo= -cloud.google.com/go/container v1.13.1/go.mod h1:6wgbMPeQRw9rSnKBCAJXnds3Pzj03C4JHamr8asWKy4= -cloud.google.com/go/container v1.14.0/go.mod h1:3AoJMPhHfLDxLvrlVWaK57IXzaPnLaZq63WX59aQBfM= -cloud.google.com/go/container v1.15.0/go.mod h1:ft+9S0WGjAyjDggg5S06DXj+fHJICWg8L7isCQe9pQA= -cloud.google.com/go/containeranalysis v0.5.1/go.mod h1:1D92jd8gRR/c0fGMlymRgxWD3Qw9C1ff6/T7mLgVL8I= -cloud.google.com/go/containeranalysis v0.6.0/go.mod h1:HEJoiEIu+lEXM+k7+qLCci0h33lX3ZqoYFdmPcoO7s4= -cloud.google.com/go/containeranalysis v0.7.0/go.mod h1:9aUL+/vZ55P2CXfuZjS4UjQ9AgXoSw8Ts6lemfmxBxI= -cloud.google.com/go/containeranalysis v0.9.0/go.mod h1:orbOANbwk5Ejoom+s+DUCTTJ7IBdBQJDcSylAx/on9s= -cloud.google.com/go/datacatalog v1.3.0/go.mod h1:g9svFY6tuR+j+hrTw3J2dNcmI0dzmSiyOzm8kpLq0a0= -cloud.google.com/go/datacatalog v1.5.0/go.mod h1:M7GPLNQeLfWqeIm3iuiruhPzkt65+Bx8dAKvScX8jvs= -cloud.google.com/go/datacatalog v1.6.0/go.mod h1:+aEyF8JKg+uXcIdAmmaMUmZ3q1b/lKLtXCmXdnc0lbc= -cloud.google.com/go/datacatalog v1.7.0/go.mod h1:9mEl4AuDYWw81UGc41HonIHH7/sn52H0/tc8f8ZbZIE= -cloud.google.com/go/datacatalog v1.8.0/go.mod h1:KYuoVOv9BM8EYz/4eMFxrr4DUKhGIOXxZoKYF5wdISM= -cloud.google.com/go/datacatalog v1.8.1/go.mod h1:RJ58z4rMp3gvETA465Vg+ag8BGgBdnRPEMMSTr5Uv+M= -cloud.google.com/go/datacatalog v1.12.0/go.mod h1:CWae8rFkfp6LzLumKOnmVh4+Zle4A3NXLzVJ1d1mRm0= -cloud.google.com/go/datacatalog v1.13.0/go.mod h1:E4Rj9a5ZtAxcQJlEBTLgMTphfP11/lNaAshpoBgemX8= -cloud.google.com/go/dataflow v0.6.0/go.mod h1:9QwV89cGoxjjSR9/r7eFDqqjtvbKxAK2BaYU6PVk9UM= -cloud.google.com/go/dataflow v0.7.0/go.mod h1:PX526vb4ijFMesO1o202EaUmouZKBpjHsTlCtB4parQ= -cloud.google.com/go/dataflow v0.8.0/go.mod h1:Rcf5YgTKPtQyYz8bLYhFoIV/vP39eL7fWNcSOyFfLJE= -cloud.google.com/go/dataform v0.3.0/go.mod h1:cj8uNliRlHpa6L3yVhDOBrUXH+BPAO1+KFMQQNSThKo= -cloud.google.com/go/dataform v0.4.0/go.mod h1:fwV6Y4Ty2yIFL89huYlEkwUPtS7YZinZbzzj5S9FzCE= -cloud.google.com/go/dataform v0.5.0/go.mod h1:GFUYRe8IBa2hcomWplodVmUx/iTL0FrsauObOM3Ipr0= -cloud.google.com/go/dataform v0.6.0/go.mod h1:QPflImQy33e29VuapFdf19oPbE4aYTJxr31OAPV+ulA= -cloud.google.com/go/dataform v0.7.0/go.mod h1:7NulqnVozfHvWUBpMDfKMUESr+85aJsC/2O0o3jWPDE= -cloud.google.com/go/datafusion v1.4.0/go.mod h1:1Zb6VN+W6ALo85cXnM1IKiPw+yQMKMhB9TsTSRDo/38= -cloud.google.com/go/datafusion v1.5.0/go.mod h1:Kz+l1FGHB0J+4XF2fud96WMmRiq/wj8N9u007vyXZ2w= -cloud.google.com/go/datafusion v1.6.0/go.mod h1:WBsMF8F1RhSXvVM8rCV3AeyWVxcC2xY6vith3iw3S+8= -cloud.google.com/go/datalabeling v0.5.0/go.mod h1:TGcJ0G2NzcsXSE/97yWjIZO0bXj0KbVlINXMG9ud42I= -cloud.google.com/go/datalabeling v0.6.0/go.mod h1:WqdISuk/+WIGeMkpw/1q7bK/tFEZxsrFJOJdY2bXvTQ= -cloud.google.com/go/datalabeling v0.7.0/go.mod h1:WPQb1y08RJbmpM3ww0CSUAGweL0SxByuW2E+FU+wXcM= -cloud.google.com/go/dataplex v1.3.0/go.mod h1:hQuRtDg+fCiFgC8j0zV222HvzFQdRd+SVX8gdmFcZzA= -cloud.google.com/go/dataplex v1.4.0/go.mod h1:X51GfLXEMVJ6UN47ESVqvlsRplbLhcsAt0kZCCKsU0A= -cloud.google.com/go/dataplex v1.5.2/go.mod h1:cVMgQHsmfRoI5KFYq4JtIBEUbYwc3c7tXmIDhRmNNVQ= -cloud.google.com/go/dataplex v1.6.0/go.mod h1:bMsomC/aEJOSpHXdFKFGQ1b0TDPIeL28nJObeO1ppRs= -cloud.google.com/go/dataproc v1.7.0/go.mod h1:CKAlMjII9H90RXaMpSxQ8EU6dQx6iAYNPcYPOkSbi8s= -cloud.google.com/go/dataproc v1.8.0/go.mod h1:5OW+zNAH0pMpw14JVrPONsxMQYMBqJuzORhIBfBn9uI= -cloud.google.com/go/dataproc v1.12.0/go.mod h1:zrF3aX0uV3ikkMz6z4uBbIKyhRITnxvr4i3IjKsKrw4= -cloud.google.com/go/dataqna v0.5.0/go.mod h1:90Hyk596ft3zUQ8NkFfvICSIfHFh1Bc7C4cK3vbhkeo= -cloud.google.com/go/dataqna v0.6.0/go.mod h1:1lqNpM7rqNLVgWBJyk5NF6Uen2PHym0jtVJonplVsDA= -cloud.google.com/go/dataqna v0.7.0/go.mod h1:Lx9OcIIeqCrw1a6KdO3/5KMP1wAmTc0slZWwP12Qq3c= -cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= -cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= -cloud.google.com/go/datastore v1.10.0/go.mod h1:PC5UzAmDEkAmkfaknstTYbNpgE49HAgW2J1gcgUfmdM= -cloud.google.com/go/datastore v1.11.0/go.mod h1:TvGxBIHCS50u8jzG+AW/ppf87v1of8nwzFNgEZU1D3c= -cloud.google.com/go/datastream v1.2.0/go.mod h1:i/uTP8/fZwgATHS/XFu0TcNUhuA0twZxxQ3EyCUQMwo= -cloud.google.com/go/datastream v1.3.0/go.mod h1:cqlOX8xlyYF/uxhiKn6Hbv6WjwPPuI9W2M9SAXwaLLQ= -cloud.google.com/go/datastream v1.4.0/go.mod h1:h9dpzScPhDTs5noEMQVWP8Wx8AFBRyS0s8KWPx/9r0g= -cloud.google.com/go/datastream v1.5.0/go.mod h1:6TZMMNPwjUqZHBKPQ1wwXpb0d5VDVPl2/XoS5yi88q4= -cloud.google.com/go/datastream v1.6.0/go.mod h1:6LQSuswqLa7S4rPAOZFVjHIG3wJIjZcZrw8JDEDJuIs= -cloud.google.com/go/datastream v1.7.0/go.mod h1:uxVRMm2elUSPuh65IbZpzJNMbuzkcvu5CjMqVIUHrww= -cloud.google.com/go/deploy v1.4.0/go.mod h1:5Xghikd4VrmMLNaF6FiRFDlHb59VM59YoDQnOUdsH/c= -cloud.google.com/go/deploy v1.5.0/go.mod h1:ffgdD0B89tToyW/U/D2eL0jN2+IEV/3EMuXHA0l4r+s= -cloud.google.com/go/deploy v1.6.0/go.mod h1:f9PTHehG/DjCom3QH0cntOVRm93uGBDt2vKzAPwpXQI= -cloud.google.com/go/deploy v1.8.0/go.mod h1:z3myEJnA/2wnB4sgjqdMfgxCA0EqC3RBTNcVPs93mtQ= -cloud.google.com/go/dialogflow v1.15.0/go.mod h1:HbHDWs33WOGJgn6rfzBW1Kv807BE3O1+xGbn59zZWI4= -cloud.google.com/go/dialogflow v1.16.1/go.mod h1:po6LlzGfK+smoSmTBnbkIZY2w8ffjz/RcGSS+sh1el0= -cloud.google.com/go/dialogflow v1.17.0/go.mod h1:YNP09C/kXA1aZdBgC/VtXX74G/TKn7XVCcVumTflA+8= -cloud.google.com/go/dialogflow v1.18.0/go.mod h1:trO7Zu5YdyEuR+BhSNOqJezyFQ3aUzz0njv7sMx/iek= -cloud.google.com/go/dialogflow v1.19.0/go.mod h1:JVmlG1TwykZDtxtTXujec4tQ+D8SBFMoosgy+6Gn0s0= -cloud.google.com/go/dialogflow v1.29.0/go.mod h1:b+2bzMe+k1s9V+F2jbJwpHPzrnIyHihAdRFMtn2WXuM= -cloud.google.com/go/dialogflow v1.31.0/go.mod h1:cuoUccuL1Z+HADhyIA7dci3N5zUssgpBJmCzI6fNRB4= -cloud.google.com/go/dialogflow v1.32.0/go.mod h1:jG9TRJl8CKrDhMEcvfcfFkkpp8ZhgPz3sBGmAUYJ2qE= -cloud.google.com/go/dlp v1.6.0/go.mod h1:9eyB2xIhpU0sVwUixfBubDoRwP+GjeUoxxeueZmqvmM= -cloud.google.com/go/dlp v1.7.0/go.mod h1:68ak9vCiMBjbasxeVD17hVPxDEck+ExiHavX8kiHG+Q= -cloud.google.com/go/dlp v1.9.0/go.mod h1:qdgmqgTyReTz5/YNSSuueR8pl7hO0o9bQ39ZhtgkWp4= -cloud.google.com/go/documentai v1.7.0/go.mod h1:lJvftZB5NRiFSX4moiye1SMxHx0Bc3x1+p9e/RfXYiU= -cloud.google.com/go/documentai v1.8.0/go.mod h1:xGHNEB7CtsnySCNrCFdCyyMz44RhFEEX2Q7UD0c5IhU= -cloud.google.com/go/documentai v1.9.0/go.mod h1:FS5485S8R00U10GhgBC0aNGrJxBP8ZVpEeJ7PQDZd6k= -cloud.google.com/go/documentai v1.10.0/go.mod h1:vod47hKQIPeCfN2QS/jULIvQTugbmdc0ZvxxfQY1bg4= -cloud.google.com/go/documentai v1.16.0/go.mod h1:o0o0DLTEZ+YnJZ+J4wNfTxmDVyrkzFvttBXXtYRMHkM= -cloud.google.com/go/documentai v1.18.0/go.mod h1:F6CK6iUH8J81FehpskRmhLq/3VlwQvb7TvwOceQ2tbs= -cloud.google.com/go/domains v0.6.0/go.mod h1:T9Rz3GasrpYk6mEGHh4rymIhjlnIuB4ofT1wTxDeT4Y= -cloud.google.com/go/domains v0.7.0/go.mod h1:PtZeqS1xjnXuRPKE/88Iru/LdfoRyEHYA9nFQf4UKpg= -cloud.google.com/go/domains v0.8.0/go.mod h1:M9i3MMDzGFXsydri9/vW+EWz9sWb4I6WyHqdlAk0idE= -cloud.google.com/go/edgecontainer v0.1.0/go.mod h1:WgkZ9tp10bFxqO8BLPqv2LlfmQF1X8lZqwW4r1BTajk= -cloud.google.com/go/edgecontainer v0.2.0/go.mod h1:RTmLijy+lGpQ7BXuTDa4C4ssxyXT34NIuHIgKuP4s5w= -cloud.google.com/go/edgecontainer v0.3.0/go.mod h1:FLDpP4nykgwwIfcLt6zInhprzw0lEi2P1fjO6Ie0qbc= -cloud.google.com/go/edgecontainer v1.0.0/go.mod h1:cttArqZpBB2q58W/upSG++ooo6EsblxDIolxa3jSjbY= -cloud.google.com/go/errorreporting v0.3.0/go.mod h1:xsP2yaAp+OAW4OIm60An2bbLpqIhKXdWR/tawvl7QzU= -cloud.google.com/go/essentialcontacts v1.3.0/go.mod h1:r+OnHa5jfj90qIfZDO/VztSFqbQan7HV75p8sA+mdGI= -cloud.google.com/go/essentialcontacts v1.4.0/go.mod h1:8tRldvHYsmnBCHdFpvU+GL75oWiBKl80BiqlFh9tp+8= -cloud.google.com/go/essentialcontacts v1.5.0/go.mod h1:ay29Z4zODTuwliK7SnX8E86aUF2CTzdNtvv42niCX0M= -cloud.google.com/go/eventarc v1.7.0/go.mod h1:6ctpF3zTnaQCxUjHUdcfgcA1A2T309+omHZth7gDfmc= -cloud.google.com/go/eventarc v1.8.0/go.mod h1:imbzxkyAU4ubfsaKYdQg04WS1NvncblHEup4kvF+4gw= -cloud.google.com/go/eventarc v1.10.0/go.mod h1:u3R35tmZ9HvswGRBnF48IlYgYeBcPUCjkr4BTdem2Kw= -cloud.google.com/go/eventarc v1.11.0/go.mod h1:PyUjsUKPWoRBCHeOxZd/lbOOjahV41icXyUY5kSTvVY= -cloud.google.com/go/filestore v1.3.0/go.mod h1:+qbvHGvXU1HaKX2nD0WEPo92TP/8AQuCVEBXNY9z0+w= -cloud.google.com/go/filestore v1.4.0/go.mod h1:PaG5oDfo9r224f8OYXURtAsY+Fbyq/bLYoINEK8XQAI= -cloud.google.com/go/filestore v1.5.0/go.mod h1:FqBXDWBp4YLHqRnVGveOkHDf8svj9r5+mUDLupOWEDs= -cloud.google.com/go/filestore v1.6.0/go.mod h1:di5unNuss/qfZTw2U9nhFqo8/ZDSc466dre85Kydllg= -cloud.google.com/go/firestore v1.9.0/go.mod h1:HMkjKHNTtRyZNiMzu7YAsLr9K3X2udY2AMwDaMEQiiE= -cloud.google.com/go/functions v1.6.0/go.mod h1:3H1UA3qiIPRWD7PeZKLvHZ9SaQhR26XIJcC0A5GbvAk= -cloud.google.com/go/functions v1.7.0/go.mod h1:+d+QBcWM+RsrgZfV9xo6KfA1GlzJfxcfZcRPEhDDfzg= -cloud.google.com/go/functions v1.8.0/go.mod h1:RTZ4/HsQjIqIYP9a9YPbU+QFoQsAlYgrwOXJWHn1POY= -cloud.google.com/go/functions v1.9.0/go.mod h1:Y+Dz8yGguzO3PpIjhLTbnqV1CWmgQ5UwtlpzoyquQ08= -cloud.google.com/go/functions v1.10.0/go.mod h1:0D3hEOe3DbEvCXtYOZHQZmD+SzYsi1YbI7dGvHfldXw= -cloud.google.com/go/functions v1.12.0/go.mod h1:AXWGrF3e2C/5ehvwYo/GH6O5s09tOPksiKhz+hH8WkA= -cloud.google.com/go/functions v1.13.0/go.mod h1:EU4O007sQm6Ef/PwRsI8N2umygGqPBS/IZQKBQBcJ3c= -cloud.google.com/go/gaming v1.5.0/go.mod h1:ol7rGcxP/qHTRQE/RO4bxkXq+Fix0j6D4LFPzYTIrDM= -cloud.google.com/go/gaming v1.6.0/go.mod h1:YMU1GEvA39Qt3zWGyAVA9bpYz/yAhTvaQ1t2sK4KPUA= -cloud.google.com/go/gaming v1.7.0/go.mod h1:LrB8U7MHdGgFG851iHAfqUdLcKBdQ55hzXy9xBJz0+w= -cloud.google.com/go/gaming v1.8.0/go.mod h1:xAqjS8b7jAVW0KFYeRUxngo9My3f33kFmua++Pi+ggM= -cloud.google.com/go/gaming v1.9.0/go.mod h1:Fc7kEmCObylSWLO334NcO+O9QMDyz+TKC4v1D7X+Bc0= -cloud.google.com/go/gkebackup v0.2.0/go.mod h1:XKvv/4LfG829/B8B7xRkk8zRrOEbKtEam6yNfuQNH60= -cloud.google.com/go/gkebackup v0.3.0/go.mod h1:n/E671i1aOQvUxT541aTkCwExO/bTer2HDlj4TsBRAo= -cloud.google.com/go/gkebackup v0.4.0/go.mod h1:byAyBGUwYGEEww7xsbnUTBHIYcOPy/PgUWUtOeRm9Vg= -cloud.google.com/go/gkeconnect v0.5.0/go.mod h1:c5lsNAg5EwAy7fkqX/+goqFsU1Da/jQFqArp+wGNr/o= -cloud.google.com/go/gkeconnect v0.6.0/go.mod h1:Mln67KyU/sHJEBY8kFZ0xTeyPtzbq9StAVvEULYK16A= -cloud.google.com/go/gkeconnect v0.7.0/go.mod h1:SNfmVqPkaEi3bF/B3CNZOAYPYdg7sU+obZ+QTky2Myw= -cloud.google.com/go/gkehub v0.9.0/go.mod h1:WYHN6WG8w9bXU0hqNxt8rm5uxnk8IH+lPY9J2TV7BK0= -cloud.google.com/go/gkehub v0.10.0/go.mod h1:UIPwxI0DsrpsVoWpLB0stwKCP+WFVG9+y977wO+hBH0= -cloud.google.com/go/gkehub v0.11.0/go.mod h1:JOWHlmN+GHyIbuWQPl47/C2RFhnFKH38jH9Ascu3n0E= -cloud.google.com/go/gkehub v0.12.0/go.mod h1:djiIwwzTTBrF5NaXCGv3mf7klpEMcST17VBTVVDcuaw= -cloud.google.com/go/gkemulticloud v0.3.0/go.mod h1:7orzy7O0S+5kq95e4Hpn7RysVA7dPs8W/GgfUtsPbrA= -cloud.google.com/go/gkemulticloud v0.4.0/go.mod h1:E9gxVBnseLWCk24ch+P9+B2CoDFJZTyIgLKSalC7tuI= -cloud.google.com/go/gkemulticloud v0.5.0/go.mod h1:W0JDkiyi3Tqh0TJr//y19wyb1yf8llHVto2Htf2Ja3Y= -cloud.google.com/go/grafeas v0.2.0/go.mod h1:KhxgtF2hb0P191HlY5besjYm6MqTSTj3LSI+M+ByZHc= -cloud.google.com/go/gsuiteaddons v1.3.0/go.mod h1:EUNK/J1lZEZO8yPtykKxLXI6JSVN2rg9bN8SXOa0bgM= -cloud.google.com/go/gsuiteaddons v1.4.0/go.mod h1:rZK5I8hht7u7HxFQcFei0+AtfS9uSushomRlg+3ua1o= -cloud.google.com/go/gsuiteaddons v1.5.0/go.mod h1:TFCClYLd64Eaa12sFVmUyG62tk4mdIsI7pAnSXRkcFo= -cloud.google.com/go/iam v0.1.0/go.mod h1:vcUNEa0pEm0qRVpmWepWaFMIAI8/hjB9mO8rNCJtF6c= -cloud.google.com/go/iam v0.3.0/go.mod h1:XzJPvDayI+9zsASAFO68Hk07u3z+f+JrT2xXNdp4bnY= -cloud.google.com/go/iam v0.5.0/go.mod h1:wPU9Vt0P4UmCux7mqtRu6jcpPAb74cP1fh50J3QpkUc= -cloud.google.com/go/iam v0.6.0/go.mod h1:+1AH33ueBne5MzYccyMHtEKqLE4/kJOibtffMHDMFMc= -cloud.google.com/go/iam v0.7.0/go.mod h1:H5Br8wRaDGNc8XP3keLc4unfUUZeyH3Sfl9XpQEYOeg= -cloud.google.com/go/iam v0.8.0/go.mod h1:lga0/y3iH6CX7sYqypWJ33hf7kkfXJag67naqGESjkE= -cloud.google.com/go/iam v0.11.0/go.mod h1:9PiLDanza5D+oWFZiH1uG+RnRCfEGKoyl6yo4cgWZGY= -cloud.google.com/go/iam v0.12.0/go.mod h1:knyHGviacl11zrtZUoDuYpDgLjvr28sLQaG0YB2GYAY= -cloud.google.com/go/iam v0.13.0/go.mod h1:ljOg+rcNfzZ5d6f1nAUJ8ZIxOaZUVoS14bKCtaLZ/D0= -cloud.google.com/go/iap v1.4.0/go.mod h1:RGFwRJdihTINIe4wZ2iCP0zF/qu18ZwyKxrhMhygBEc= -cloud.google.com/go/iap v1.5.0/go.mod h1:UH/CGgKd4KyohZL5Pt0jSKE4m3FR51qg6FKQ/z/Ix9A= -cloud.google.com/go/iap v1.6.0/go.mod h1:NSuvI9C/j7UdjGjIde7t7HBz+QTwBcapPE07+sSRcLk= -cloud.google.com/go/iap v1.7.0/go.mod h1:beqQx56T9O1G1yNPph+spKpNibDlYIiIixiqsQXxLIo= -cloud.google.com/go/iap v1.7.1/go.mod h1:WapEwPc7ZxGt2jFGB/C/bm+hP0Y6NXzOYGjpPnmMS74= -cloud.google.com/go/ids v1.1.0/go.mod h1:WIuwCaYVOzHIj2OhN9HAwvW+DBdmUAdcWlFxRl+KubM= -cloud.google.com/go/ids v1.2.0/go.mod h1:5WXvp4n25S0rA/mQWAg1YEEBBq6/s+7ml1RDCW1IrcY= -cloud.google.com/go/ids v1.3.0/go.mod h1:JBdTYwANikFKaDP6LtW5JAi4gubs57SVNQjemdt6xV4= -cloud.google.com/go/iot v1.3.0/go.mod h1:r7RGh2B61+B8oz0AGE+J72AhA0G7tdXItODWsaA2oLs= -cloud.google.com/go/iot v1.4.0/go.mod h1:dIDxPOn0UvNDUMD8Ger7FIaTuvMkj+aGk94RPP0iV+g= -cloud.google.com/go/iot v1.5.0/go.mod h1:mpz5259PDl3XJthEmh9+ap0affn/MqNSP4My77Qql9o= -cloud.google.com/go/iot v1.6.0/go.mod h1:IqdAsmE2cTYYNO1Fvjfzo9po179rAtJeVGUvkLN3rLE= -cloud.google.com/go/kms v1.4.0/go.mod h1:fajBHndQ+6ubNw6Ss2sSd+SWvjL26RNo/dr7uxsnnOA= -cloud.google.com/go/kms v1.5.0/go.mod h1:QJS2YY0eJGBg3mnDfuaCyLauWwBJiHRboYxJ++1xJNg= -cloud.google.com/go/kms v1.6.0/go.mod h1:Jjy850yySiasBUDi6KFUwUv2n1+o7QZFyuUJg6OgjA0= -cloud.google.com/go/kms v1.8.0/go.mod h1:4xFEhYFqvW+4VMELtZyxomGSYtSQKzM178ylFW4jMAg= -cloud.google.com/go/kms v1.9.0/go.mod h1:qb1tPTgfF9RQP8e1wq4cLFErVuTJv7UsSC915J8dh3w= -cloud.google.com/go/kms v1.10.0/go.mod h1:ng3KTUtQQU9bPX3+QGLsflZIHlkbn8amFAMY63m8d24= -cloud.google.com/go/kms v1.10.1/go.mod h1:rIWk/TryCkR59GMC3YtHtXeLzd634lBbKenvyySAyYI= -cloud.google.com/go/language v1.4.0/go.mod h1:F9dRpNFQmJbkaop6g0JhSBXCNlO90e1KWx5iDdxbWic= -cloud.google.com/go/language v1.6.0/go.mod h1:6dJ8t3B+lUYfStgls25GusK04NLh3eDLQnWM3mdEbhI= -cloud.google.com/go/language v1.7.0/go.mod h1:DJ6dYN/W+SQOjF8e1hLQXMF21AkH2w9wiPzPCJa2MIE= -cloud.google.com/go/language v1.8.0/go.mod h1:qYPVHf7SPoNNiCL2Dr0FfEFNil1qi3pQEyygwpgVKB8= -cloud.google.com/go/language v1.9.0/go.mod h1:Ns15WooPM5Ad/5no/0n81yUetis74g3zrbeJBE+ptUY= -cloud.google.com/go/lifesciences v0.5.0/go.mod h1:3oIKy8ycWGPUyZDR/8RNnTOYevhaMLqh5vLUXs9zvT8= -cloud.google.com/go/lifesciences v0.6.0/go.mod h1:ddj6tSX/7BOnhxCSd3ZcETvtNr8NZ6t/iPhY2Tyfu08= -cloud.google.com/go/lifesciences v0.8.0/go.mod h1:lFxiEOMqII6XggGbOnKiyZ7IBwoIqA84ClvoezaA/bo= -cloud.google.com/go/logging v1.6.1/go.mod h1:5ZO0mHHbvm8gEmeEUHrmDlTDSu5imF6MUP9OfilNXBw= -cloud.google.com/go/logging v1.7.0/go.mod h1:3xjP2CjkM3ZkO73aj4ASA5wRPGGCRrPIAeNqVNkzY8M= -cloud.google.com/go/longrunning v0.1.1/go.mod h1:UUFxuDWkv22EuY93jjmDMFT5GPQKeFVJBIF6QlTqdsE= -cloud.google.com/go/longrunning v0.3.0/go.mod h1:qth9Y41RRSUE69rDcOn6DdK3HfQfsUI0YSmW3iIlLJc= -cloud.google.com/go/longrunning v0.4.1/go.mod h1:4iWDqhBZ70CvZ6BfETbvam3T8FMvLK+eFj0E6AaRQTo= -cloud.google.com/go/managedidentities v1.3.0/go.mod h1:UzlW3cBOiPrzucO5qWkNkh0w33KFtBJU281hacNvsdE= -cloud.google.com/go/managedidentities v1.4.0/go.mod h1:NWSBYbEMgqmbZsLIyKvxrYbtqOsxY1ZrGM+9RgDqInM= -cloud.google.com/go/managedidentities v1.5.0/go.mod h1:+dWcZ0JlUmpuxpIDfyP5pP5y0bLdRwOS4Lp7gMni/LA= -cloud.google.com/go/maps v0.1.0/go.mod h1:BQM97WGyfw9FWEmQMpZ5T6cpovXXSd1cGmFma94eubI= -cloud.google.com/go/maps v0.6.0/go.mod h1:o6DAMMfb+aINHz/p/jbcY+mYeXBoZoxTfdSQ8VAJaCw= -cloud.google.com/go/maps v0.7.0/go.mod h1:3GnvVl3cqeSvgMcpRlQidXsPYuDGQ8naBis7MVzpXsY= -cloud.google.com/go/mediatranslation v0.5.0/go.mod h1:jGPUhGTybqsPQn91pNXw0xVHfuJ3leR1wj37oU3y1f4= -cloud.google.com/go/mediatranslation v0.6.0/go.mod h1:hHdBCTYNigsBxshbznuIMFNe5QXEowAuNmmC7h8pu5w= -cloud.google.com/go/mediatranslation v0.7.0/go.mod h1:LCnB/gZr90ONOIQLgSXagp8XUW1ODs2UmUMvcgMfI2I= -cloud.google.com/go/memcache v1.4.0/go.mod h1:rTOfiGZtJX1AaFUrOgsMHX5kAzaTQ8azHiuDoTPzNsE= -cloud.google.com/go/memcache v1.5.0/go.mod h1:dk3fCK7dVo0cUU2c36jKb4VqKPS22BTkf81Xq617aWM= -cloud.google.com/go/memcache v1.6.0/go.mod h1:XS5xB0eQZdHtTuTF9Hf8eJkKtR3pVRCcvJwtm68T3rA= -cloud.google.com/go/memcache v1.7.0/go.mod h1:ywMKfjWhNtkQTxrWxCkCFkoPjLHPW6A7WOTVI8xy3LY= -cloud.google.com/go/memcache v1.9.0/go.mod h1:8oEyzXCu+zo9RzlEaEjHl4KkgjlNDaXbCQeQWlzNFJM= -cloud.google.com/go/metastore v1.5.0/go.mod h1:2ZNrDcQwghfdtCwJ33nM0+GrBGlVuh8rakL3vdPY3XY= -cloud.google.com/go/metastore v1.6.0/go.mod h1:6cyQTls8CWXzk45G55x57DVQ9gWg7RiH65+YgPsNh9s= -cloud.google.com/go/metastore v1.7.0/go.mod h1:s45D0B4IlsINu87/AsWiEVYbLaIMeUSoxlKKDqBGFS8= -cloud.google.com/go/metastore v1.8.0/go.mod h1:zHiMc4ZUpBiM7twCIFQmJ9JMEkDSyZS9U12uf7wHqSI= -cloud.google.com/go/metastore v1.10.0/go.mod h1:fPEnH3g4JJAk+gMRnrAnoqyv2lpUCqJPWOodSaf45Eo= -cloud.google.com/go/monitoring v1.7.0/go.mod h1:HpYse6kkGo//7p6sT0wsIC6IBDET0RhIsnmlA53dvEk= -cloud.google.com/go/monitoring v1.8.0/go.mod h1:E7PtoMJ1kQXWxPjB6mv2fhC5/15jInuulFdYYtlcvT4= -cloud.google.com/go/monitoring v1.12.0/go.mod h1:yx8Jj2fZNEkL/GYZyTLS4ZtZEZN8WtDEiEqG4kLK50w= -cloud.google.com/go/monitoring v1.13.0/go.mod h1:k2yMBAB1H9JT/QETjNkgdCGD9bPF712XiLTVr+cBrpw= -cloud.google.com/go/networkconnectivity v1.4.0/go.mod h1:nOl7YL8odKyAOtzNX73/M5/mGZgqqMeryi6UPZTk/rA= -cloud.google.com/go/networkconnectivity v1.5.0/go.mod h1:3GzqJx7uhtlM3kln0+x5wyFvuVH1pIBJjhCpjzSt75o= -cloud.google.com/go/networkconnectivity v1.6.0/go.mod h1:OJOoEXW+0LAxHh89nXd64uGG+FbQoeH8DtxCHVOMlaM= -cloud.google.com/go/networkconnectivity v1.7.0/go.mod h1:RMuSbkdbPwNMQjB5HBWD5MpTBnNm39iAVpC3TmsExt8= -cloud.google.com/go/networkconnectivity v1.10.0/go.mod h1:UP4O4sWXJG13AqrTdQCD9TnLGEbtNRqjuaaA7bNjF5E= -cloud.google.com/go/networkconnectivity v1.11.0/go.mod h1:iWmDD4QF16VCDLXUqvyspJjIEtBR/4zq5hwnY2X3scM= -cloud.google.com/go/networkmanagement v1.4.0/go.mod h1:Q9mdLLRn60AsOrPc8rs8iNV6OHXaGcDdsIQe1ohekq8= -cloud.google.com/go/networkmanagement v1.5.0/go.mod h1:ZnOeZ/evzUdUsnvRt792H0uYEnHQEMaz+REhhzJRcf4= -cloud.google.com/go/networkmanagement v1.6.0/go.mod h1:5pKPqyXjB/sgtvB5xqOemumoQNB7y95Q7S+4rjSOPYY= -cloud.google.com/go/networksecurity v0.5.0/go.mod h1:xS6fOCoqpVC5zx15Z/MqkfDwH4+m/61A3ODiDV1xmiQ= -cloud.google.com/go/networksecurity v0.6.0/go.mod h1:Q5fjhTr9WMI5mbpRYEbiexTzROf7ZbDzvzCrNl14nyU= -cloud.google.com/go/networksecurity v0.7.0/go.mod h1:mAnzoxx/8TBSyXEeESMy9OOYwo1v+gZ5eMRnsT5bC8k= -cloud.google.com/go/networksecurity v0.8.0/go.mod h1:B78DkqsxFG5zRSVuwYFRZ9Xz8IcQ5iECsNrPn74hKHU= -cloud.google.com/go/notebooks v1.2.0/go.mod h1:9+wtppMfVPUeJ8fIWPOq1UnATHISkGXGqTkxeieQ6UY= -cloud.google.com/go/notebooks v1.3.0/go.mod h1:bFR5lj07DtCPC7YAAJ//vHskFBxA5JzYlH68kXVdk34= -cloud.google.com/go/notebooks v1.4.0/go.mod h1:4QPMngcwmgb6uw7Po99B2xv5ufVoIQ7nOGDyL4P8AgA= -cloud.google.com/go/notebooks v1.5.0/go.mod h1:q8mwhnP9aR8Hpfnrc5iN5IBhrXUy8S2vuYs+kBJ/gu0= -cloud.google.com/go/notebooks v1.7.0/go.mod h1:PVlaDGfJgj1fl1S3dUwhFMXFgfYGhYQt2164xOMONmE= -cloud.google.com/go/notebooks v1.8.0/go.mod h1:Lq6dYKOYOWUCTvw5t2q1gp1lAp0zxAxRycayS0iJcqQ= -cloud.google.com/go/optimization v1.1.0/go.mod h1:5po+wfvX5AQlPznyVEZjGJTMr4+CAkJf2XSTQOOl9l4= -cloud.google.com/go/optimization v1.2.0/go.mod h1:Lr7SOHdRDENsh+WXVmQhQTrzdu9ybg0NecjHidBq6xs= -cloud.google.com/go/optimization v1.3.1/go.mod h1:IvUSefKiwd1a5p0RgHDbWCIbDFgKuEdB+fPPuP0IDLI= -cloud.google.com/go/orchestration v1.3.0/go.mod h1:Sj5tq/JpWiB//X/q3Ngwdl5K7B7Y0KZ7bfv0wL6fqVA= -cloud.google.com/go/orchestration v1.4.0/go.mod h1:6W5NLFWs2TlniBphAViZEVhrXRSMgUGDfW7vrWKvsBk= -cloud.google.com/go/orchestration v1.6.0/go.mod h1:M62Bevp7pkxStDfFfTuCOaXgaaqRAga1yKyoMtEoWPQ= -cloud.google.com/go/orgpolicy v1.4.0/go.mod h1:xrSLIV4RePWmP9P3tBl8S93lTmlAxjm06NSm2UTmKvE= -cloud.google.com/go/orgpolicy v1.5.0/go.mod h1:hZEc5q3wzwXJaKrsx5+Ewg0u1LxJ51nNFlext7Tanwc= -cloud.google.com/go/orgpolicy v1.10.0/go.mod h1:w1fo8b7rRqlXlIJbVhOMPrwVljyuW5mqssvBtU18ONc= -cloud.google.com/go/osconfig v1.7.0/go.mod h1:oVHeCeZELfJP7XLxcBGTMBvRO+1nQ5tFG9VQTmYS2Fs= -cloud.google.com/go/osconfig v1.8.0/go.mod h1:EQqZLu5w5XA7eKizepumcvWx+m8mJUhEwiPqWiZeEdg= -cloud.google.com/go/osconfig v1.9.0/go.mod h1:Yx+IeIZJ3bdWmzbQU4fxNl8xsZ4amB+dygAwFPlvnNo= -cloud.google.com/go/osconfig v1.10.0/go.mod h1:uMhCzqC5I8zfD9zDEAfvgVhDS8oIjySWh+l4WK6GnWw= -cloud.google.com/go/osconfig v1.11.0/go.mod h1:aDICxrur2ogRd9zY5ytBLV89KEgT2MKB2L/n6x1ooPw= -cloud.google.com/go/oslogin v1.4.0/go.mod h1:YdgMXWRaElXz/lDk1Na6Fh5orF7gvmJ0FGLIs9LId4E= -cloud.google.com/go/oslogin v1.5.0/go.mod h1:D260Qj11W2qx/HVF29zBg+0fd6YCSjSqLUkY/qEenQU= -cloud.google.com/go/oslogin v1.6.0/go.mod h1:zOJ1O3+dTU8WPlGEkFSh7qeHPPSoxrcMbbK1Nm2iX70= -cloud.google.com/go/oslogin v1.7.0/go.mod h1:e04SN0xO1UNJ1M5GP0vzVBFicIe4O53FOfcixIqTyXo= -cloud.google.com/go/oslogin v1.9.0/go.mod h1:HNavntnH8nzrn8JCTT5fj18FuJLFJc4NaZJtBnQtKFs= -cloud.google.com/go/phishingprotection v0.5.0/go.mod h1:Y3HZknsK9bc9dMi+oE8Bim0lczMU6hrX0UpADuMefr0= -cloud.google.com/go/phishingprotection v0.6.0/go.mod h1:9Y3LBLgy0kDTcYET8ZH3bq/7qni15yVUoAxiFxnlSUA= -cloud.google.com/go/phishingprotection v0.7.0/go.mod h1:8qJI4QKHoda/sb/7/YmMQ2omRLSLYSu9bU0EKCNI+Lk= -cloud.google.com/go/policytroubleshooter v1.3.0/go.mod h1:qy0+VwANja+kKrjlQuOzmlvscn4RNsAc0e15GGqfMxg= -cloud.google.com/go/policytroubleshooter v1.4.0/go.mod h1:DZT4BcRw3QoO8ota9xw/LKtPa8lKeCByYeKTIf/vxdE= -cloud.google.com/go/policytroubleshooter v1.5.0/go.mod h1:Rz1WfV+1oIpPdN2VvvuboLVRsB1Hclg3CKQ53j9l8vw= -cloud.google.com/go/policytroubleshooter v1.6.0/go.mod h1:zYqaPTsmfvpjm5ULxAyD/lINQxJ0DDsnWOP/GZ7xzBc= -cloud.google.com/go/privatecatalog v0.5.0/go.mod h1:XgosMUvvPyxDjAVNDYxJ7wBW8//hLDDYmnsNcMGq1K0= -cloud.google.com/go/privatecatalog v0.6.0/go.mod h1:i/fbkZR0hLN29eEWiiwue8Pb+GforiEIBnV9yrRUOKI= -cloud.google.com/go/privatecatalog v0.7.0/go.mod h1:2s5ssIFO69F5csTXcwBP7NPFTZvps26xGzvQ2PQaBYg= -cloud.google.com/go/privatecatalog v0.8.0/go.mod h1:nQ6pfaegeDAq/Q5lrfCQzQLhubPiZhSaNhIgfJlnIXs= -cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= -cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= -cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= -cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= -cloud.google.com/go/pubsub v1.26.0/go.mod h1:QgBH3U/jdJy/ftjPhTkyXNj543Tin1pRYcdcPRnFIRI= -cloud.google.com/go/pubsub v1.27.1/go.mod h1:hQN39ymbV9geqBnfQq6Xf63yNhUAhv9CZhzp5O6qsW0= -cloud.google.com/go/pubsub v1.28.0/go.mod h1:vuXFpwaVoIPQMGXqRyUQigu/AX1S3IWugR9xznmcXX8= -cloud.google.com/go/pubsub v1.30.0/go.mod h1:qWi1OPS0B+b5L+Sg6Gmc9zD1Y+HaM0MdUr7LsupY1P4= -cloud.google.com/go/pubsublite v1.5.0/go.mod h1:xapqNQ1CuLfGi23Yda/9l4bBCKz/wC3KIJ5gKcxveZg= -cloud.google.com/go/pubsublite v1.6.0/go.mod h1:1eFCS0U11xlOuMFV/0iBqw3zP12kddMeCbj/F3FSj9k= -cloud.google.com/go/pubsublite v1.7.0/go.mod h1:8hVMwRXfDfvGm3fahVbtDbiLePT3gpoiJYJY+vxWxVM= -cloud.google.com/go/recaptchaenterprise v1.3.1/go.mod h1:OdD+q+y4XGeAlxRaMn1Y7/GveP6zmq76byL6tjPE7d4= -cloud.google.com/go/recaptchaenterprise/v2 v2.1.0/go.mod h1:w9yVqajwroDNTfGuhmOjPDN//rZGySaf6PtFVcSCa7o= -cloud.google.com/go/recaptchaenterprise/v2 v2.2.0/go.mod h1:/Zu5jisWGeERrd5HnlS3EUGb/D335f9k51B/FVil0jk= -cloud.google.com/go/recaptchaenterprise/v2 v2.3.0/go.mod h1:O9LwGCjrhGHBQET5CA7dd5NwwNQUErSgEDit1DLNTdo= -cloud.google.com/go/recaptchaenterprise/v2 v2.4.0/go.mod h1:Am3LHfOuBstrLrNCBrlI5sbwx9LBg3te2N6hGvHn2mE= -cloud.google.com/go/recaptchaenterprise/v2 v2.5.0/go.mod h1:O8LzcHXN3rz0j+LBC91jrwI3R+1ZSZEWrfL7XHgNo9U= -cloud.google.com/go/recaptchaenterprise/v2 v2.6.0/go.mod h1:RPauz9jeLtB3JVzg6nCbe12qNoaa8pXc4d/YukAmcnA= -cloud.google.com/go/recaptchaenterprise/v2 v2.7.0/go.mod h1:19wVj/fs5RtYtynAPJdDTb69oW0vNHYDBTbB4NvMD9c= -cloud.google.com/go/recommendationengine v0.5.0/go.mod h1:E5756pJcVFeVgaQv3WNpImkFP8a+RptV6dDLGPILjvg= -cloud.google.com/go/recommendationengine v0.6.0/go.mod h1:08mq2umu9oIqc7tDy8sx+MNJdLG0fUi3vaSVbztHgJ4= -cloud.google.com/go/recommendationengine v0.7.0/go.mod h1:1reUcE3GIu6MeBz/h5xZJqNLuuVjNg1lmWMPyjatzac= -cloud.google.com/go/recommender v1.5.0/go.mod h1:jdoeiBIVrJe9gQjwd759ecLJbxCDED4A6p+mqoqDvTg= -cloud.google.com/go/recommender v1.6.0/go.mod h1:+yETpm25mcoiECKh9DEScGzIRyDKpZ0cEhWGo+8bo+c= -cloud.google.com/go/recommender v1.7.0/go.mod h1:XLHs/W+T8olwlGOgfQenXBTbIseGclClff6lhFVe9Bs= -cloud.google.com/go/recommender v1.8.0/go.mod h1:PkjXrTT05BFKwxaUxQmtIlrtj0kph108r02ZZQ5FE70= -cloud.google.com/go/recommender v1.9.0/go.mod h1:PnSsnZY7q+VL1uax2JWkt/UegHssxjUVVCrX52CuEmQ= -cloud.google.com/go/redis v1.7.0/go.mod h1:V3x5Jq1jzUcg+UNsRvdmsfuFnit1cfe3Z/PGyq/lm4Y= -cloud.google.com/go/redis v1.8.0/go.mod h1:Fm2szCDavWzBk2cDKxrkmWBqoCiL1+Ctwq7EyqBCA/A= -cloud.google.com/go/redis v1.9.0/go.mod h1:HMYQuajvb2D0LvMgZmLDZW8V5aOC/WxstZHiy4g8OiA= -cloud.google.com/go/redis v1.10.0/go.mod h1:ThJf3mMBQtW18JzGgh41/Wld6vnDDc/F/F35UolRZPM= -cloud.google.com/go/redis v1.11.0/go.mod h1:/X6eicana+BWcUda5PpwZC48o37SiFVTFSs0fWAJ7uQ= -cloud.google.com/go/resourcemanager v1.3.0/go.mod h1:bAtrTjZQFJkiWTPDb1WBjzvc6/kifjj4QBYuKCCoqKA= -cloud.google.com/go/resourcemanager v1.4.0/go.mod h1:MwxuzkumyTX7/a3n37gmsT3py7LIXwrShilPh3P1tR0= -cloud.google.com/go/resourcemanager v1.5.0/go.mod h1:eQoXNAiAvCf5PXxWxXjhKQoTMaUSNrEfg+6qdf/wots= -cloud.google.com/go/resourcemanager v1.6.0/go.mod h1:YcpXGRs8fDzcUl1Xw8uOVmI8JEadvhRIkoXXUNVYcVo= -cloud.google.com/go/resourcemanager v1.7.0/go.mod h1:HlD3m6+bwhzj9XCouqmeiGuni95NTrExfhoSrkC/3EI= -cloud.google.com/go/resourcesettings v1.3.0/go.mod h1:lzew8VfESA5DQ8gdlHwMrqZs1S9V87v3oCnKCWoOuQU= -cloud.google.com/go/resourcesettings v1.4.0/go.mod h1:ldiH9IJpcrlC3VSuCGvjR5of/ezRrOxFtpJoJo5SmXg= -cloud.google.com/go/resourcesettings v1.5.0/go.mod h1:+xJF7QSG6undsQDfsCJyqWXyBwUoJLhetkRMDRnIoXA= -cloud.google.com/go/retail v1.8.0/go.mod h1:QblKS8waDmNUhghY2TI9O3JLlFk8jybHeV4BF19FrE4= -cloud.google.com/go/retail v1.9.0/go.mod h1:g6jb6mKuCS1QKnH/dpu7isX253absFl6iE92nHwlBUY= -cloud.google.com/go/retail v1.10.0/go.mod h1:2gDk9HsL4HMS4oZwz6daui2/jmKvqShXKQuB2RZ+cCc= -cloud.google.com/go/retail v1.11.0/go.mod h1:MBLk1NaWPmh6iVFSz9MeKG/Psyd7TAgm6y/9L2B4x9Y= -cloud.google.com/go/retail v1.12.0/go.mod h1:UMkelN/0Z8XvKymXFbD4EhFJlYKRx1FGhQkVPU5kF14= -cloud.google.com/go/run v0.2.0/go.mod h1:CNtKsTA1sDcnqqIFR3Pb5Tq0usWxJJvsWOCPldRU3Do= -cloud.google.com/go/run v0.3.0/go.mod h1:TuyY1+taHxTjrD0ZFk2iAR+xyOXEA0ztb7U3UNA0zBo= -cloud.google.com/go/run v0.8.0/go.mod h1:VniEnuBwqjigv0A7ONfQUaEItaiCRVujlMqerPPiktM= -cloud.google.com/go/run v0.9.0/go.mod h1:Wwu+/vvg8Y+JUApMwEDfVfhetv30hCG4ZwDR/IXl2Qg= -cloud.google.com/go/scheduler v1.4.0/go.mod h1:drcJBmxF3aqZJRhmkHQ9b3uSSpQoltBPGPxGAWROx6s= -cloud.google.com/go/scheduler v1.5.0/go.mod h1:ri073ym49NW3AfT6DZi21vLZrG07GXr5p3H1KxN5QlI= -cloud.google.com/go/scheduler v1.6.0/go.mod h1:SgeKVM7MIwPn3BqtcBntpLyrIJftQISRrYB5ZtT+KOk= -cloud.google.com/go/scheduler v1.7.0/go.mod h1:jyCiBqWW956uBjjPMMuX09n3x37mtyPJegEWKxRsn44= -cloud.google.com/go/scheduler v1.8.0/go.mod h1:TCET+Y5Gp1YgHT8py4nlg2Sew8nUHMqcpousDgXJVQc= -cloud.google.com/go/scheduler v1.9.0/go.mod h1:yexg5t+KSmqu+njTIh3b7oYPheFtBWGcbVUYF1GGMIc= -cloud.google.com/go/secretmanager v1.6.0/go.mod h1:awVa/OXF6IiyaU1wQ34inzQNc4ISIDIrId8qE5QGgKA= -cloud.google.com/go/secretmanager v1.8.0/go.mod h1:hnVgi/bN5MYHd3Gt0SPuTPPp5ENina1/LxM+2W9U9J4= -cloud.google.com/go/secretmanager v1.9.0/go.mod h1:b71qH2l1yHmWQHt9LC80akm86mX8AL6X1MA01dW8ht4= -cloud.google.com/go/secretmanager v1.10.0/go.mod h1:MfnrdvKMPNra9aZtQFvBcvRU54hbPD8/HayQdlUgJpU= -cloud.google.com/go/security v1.5.0/go.mod h1:lgxGdyOKKjHL4YG3/YwIL2zLqMFCKs0UbQwgyZmfJl4= -cloud.google.com/go/security v1.7.0/go.mod h1:mZklORHl6Bg7CNnnjLH//0UlAlaXqiG7Lb9PsPXLfD0= -cloud.google.com/go/security v1.8.0/go.mod h1:hAQOwgmaHhztFhiQ41CjDODdWP0+AE1B3sX4OFlq+GU= -cloud.google.com/go/security v1.9.0/go.mod h1:6Ta1bO8LXI89nZnmnsZGp9lVoVWXqsVbIq/t9dzI+2Q= -cloud.google.com/go/security v1.10.0/go.mod h1:QtOMZByJVlibUT2h9afNDWRZ1G96gVywH8T5GUSb9IA= -cloud.google.com/go/security v1.12.0/go.mod h1:rV6EhrpbNHrrxqlvW0BWAIawFWq3X90SduMJdFwtLB8= -cloud.google.com/go/security v1.13.0/go.mod h1:Q1Nvxl1PAgmeW0y3HTt54JYIvUdtcpYKVfIB8AOMZ+0= -cloud.google.com/go/securitycenter v1.13.0/go.mod h1:cv5qNAqjY84FCN6Y9z28WlkKXyWsgLO832YiWwkCWcU= -cloud.google.com/go/securitycenter v1.14.0/go.mod h1:gZLAhtyKv85n52XYWt6RmeBdydyxfPeTrpToDPw4Auc= -cloud.google.com/go/securitycenter v1.15.0/go.mod h1:PeKJ0t8MoFmmXLXWm41JidyzI3PJjd8sXWaVqg43WWk= -cloud.google.com/go/securitycenter v1.16.0/go.mod h1:Q9GMaLQFUD+5ZTabrbujNWLtSLZIZF7SAR0wWECrjdk= -cloud.google.com/go/securitycenter v1.18.1/go.mod h1:0/25gAzCM/9OL9vVx4ChPeM/+DlfGQJDwBy/UC8AKK0= -cloud.google.com/go/securitycenter v1.19.0/go.mod h1:LVLmSg8ZkkyaNy4u7HCIshAngSQ8EcIRREP3xBnyfag= -cloud.google.com/go/servicecontrol v1.4.0/go.mod h1:o0hUSJ1TXJAmi/7fLJAedOovnujSEvjKCAFNXPQ1RaU= -cloud.google.com/go/servicecontrol v1.5.0/go.mod h1:qM0CnXHhyqKVuiZnGKrIurvVImCs8gmqWsDoqe9sU1s= -cloud.google.com/go/servicecontrol v1.10.0/go.mod h1:pQvyvSRh7YzUF2efw7H87V92mxU8FnFDawMClGCNuAA= -cloud.google.com/go/servicecontrol v1.11.0/go.mod h1:kFmTzYzTUIuZs0ycVqRHNaNhgR+UMUpw9n02l/pY+mc= -cloud.google.com/go/servicecontrol v1.11.1/go.mod h1:aSnNNlwEFBY+PWGQ2DoM0JJ/QUXqV5/ZD9DOLB7SnUk= -cloud.google.com/go/servicedirectory v1.4.0/go.mod h1:gH1MUaZCgtP7qQiI+F+A+OpeKF/HQWgtAddhTbhL2bs= -cloud.google.com/go/servicedirectory v1.5.0/go.mod h1:QMKFL0NUySbpZJ1UZs3oFAmdvVxhhxB6eJ/Vlp73dfg= -cloud.google.com/go/servicedirectory v1.6.0/go.mod h1:pUlbnWsLH9c13yGkxCmfumWEPjsRs1RlmJ4pqiNjVL4= -cloud.google.com/go/servicedirectory v1.7.0/go.mod h1:5p/U5oyvgYGYejufvxhgwjL8UVXjkuw7q5XcG10wx1U= -cloud.google.com/go/servicedirectory v1.8.0/go.mod h1:srXodfhY1GFIPvltunswqXpVxFPpZjf8nkKQT7XcXaY= -cloud.google.com/go/servicedirectory v1.9.0/go.mod h1:29je5JjiygNYlmsGz8k6o+OZ8vd4f//bQLtvzkPPT/s= -cloud.google.com/go/servicemanagement v1.4.0/go.mod h1:d8t8MDbezI7Z2R1O/wu8oTggo3BI2GKYbdG4y/SJTco= -cloud.google.com/go/servicemanagement v1.5.0/go.mod h1:XGaCRe57kfqu4+lRxaFEAuqmjzF0r+gWHjWqKqBvKFo= -cloud.google.com/go/servicemanagement v1.6.0/go.mod h1:aWns7EeeCOtGEX4OvZUWCCJONRZeFKiptqKf1D0l/Jc= -cloud.google.com/go/servicemanagement v1.8.0/go.mod h1:MSS2TDlIEQD/fzsSGfCdJItQveu9NXnUniTrq/L8LK4= -cloud.google.com/go/serviceusage v1.3.0/go.mod h1:Hya1cozXM4SeSKTAgGXgj97GlqUvF5JaoXacR1JTP/E= -cloud.google.com/go/serviceusage v1.4.0/go.mod h1:SB4yxXSaYVuUBYUml6qklyONXNLt83U0Rb+CXyhjEeU= -cloud.google.com/go/serviceusage v1.5.0/go.mod h1:w8U1JvqUqwJNPEOTQjrMHkw3IaIFLoLsPLvsE3xueec= -cloud.google.com/go/serviceusage v1.6.0/go.mod h1:R5wwQcbOWsyuOfbP9tGdAnCAc6B9DRwPG1xtWMDeuPA= -cloud.google.com/go/shell v1.3.0/go.mod h1:VZ9HmRjZBsjLGXusm7K5Q5lzzByZmJHf1d0IWHEN5X4= -cloud.google.com/go/shell v1.4.0/go.mod h1:HDxPzZf3GkDdhExzD/gs8Grqk+dmYcEjGShZgYa9URw= -cloud.google.com/go/shell v1.6.0/go.mod h1:oHO8QACS90luWgxP3N9iZVuEiSF84zNyLytb+qE2f9A= -cloud.google.com/go/spanner v1.41.0/go.mod h1:MLYDBJR/dY4Wt7ZaMIQ7rXOTLjYrmxLE/5ve9vFfWos= -cloud.google.com/go/spanner v1.44.0/go.mod h1:G8XIgYdOK+Fbcpbs7p2fiprDw4CaZX63whnSMLVBxjk= -cloud.google.com/go/spanner v1.45.0/go.mod h1:FIws5LowYz8YAE1J8fOS7DJup8ff7xJeetWEo5REA2M= -cloud.google.com/go/speech v1.6.0/go.mod h1:79tcr4FHCimOp56lwC01xnt/WPJZc4v3gzyT7FoBkCM= -cloud.google.com/go/speech v1.7.0/go.mod h1:KptqL+BAQIhMsj1kOP2la5DSEEerPDuOP/2mmkhHhZQ= -cloud.google.com/go/speech v1.8.0/go.mod h1:9bYIl1/tjsAnMgKGHKmBZzXKEkGgtU+MpdDPTE9f7y0= -cloud.google.com/go/speech v1.9.0/go.mod h1:xQ0jTcmnRFFM2RfX/U+rk6FQNUF6DQlydUSyoooSpco= -cloud.google.com/go/speech v1.14.1/go.mod h1:gEosVRPJ9waG7zqqnsHpYTOoAS4KouMRLDFMekpJ0J0= -cloud.google.com/go/speech v1.15.0/go.mod h1:y6oH7GhqCaZANH7+Oe0BhgIogsNInLlz542tg3VqeYI= -cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= -cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= -cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= -cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= -cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= -cloud.google.com/go/storage v1.14.0/go.mod h1:GrKmX003DSIwi9o29oFT7YDnHYwZoctc3fOKtUw0Xmo= -cloud.google.com/go/storage v1.22.1/go.mod h1:S8N1cAStu7BOeFfE8KAQzmyyLkK8p/vmRq6kuBTW58Y= -cloud.google.com/go/storage v1.23.0/go.mod h1:vOEEDNFnciUMhBeT6hsJIn3ieU5cFRmzeLgDvXzfIXc= -cloud.google.com/go/storage v1.27.0/go.mod h1:x9DOL8TK/ygDUMieqwfhdpQryTeEkhGKMi80i/iqR2s= -cloud.google.com/go/storage v1.28.1/go.mod h1:Qnisd4CqDdo6BGs2AD5LLnEsmSQ80wQ5ogcBBKhU86Y= -cloud.google.com/go/storage v1.29.0/go.mod h1:4puEjyTKnku6gfKoTfNOU/W+a9JyuVNxjpS5GBrB8h4= -cloud.google.com/go/storagetransfer v1.5.0/go.mod h1:dxNzUopWy7RQevYFHewchb29POFv3/AaBgnhqzqiK0w= -cloud.google.com/go/storagetransfer v1.6.0/go.mod h1:y77xm4CQV/ZhFZH75PLEXY0ROiS7Gh6pSKrM8dJyg6I= -cloud.google.com/go/storagetransfer v1.7.0/go.mod h1:8Giuj1QNb1kfLAiWM1bN6dHzfdlDAVC9rv9abHot2W4= -cloud.google.com/go/storagetransfer v1.8.0/go.mod h1:JpegsHHU1eXg7lMHkvf+KE5XDJ7EQu0GwNJbbVGanEw= -cloud.google.com/go/talent v1.1.0/go.mod h1:Vl4pt9jiHKvOgF9KoZo6Kob9oV4lwd/ZD5Cto54zDRw= -cloud.google.com/go/talent v1.2.0/go.mod h1:MoNF9bhFQbiJ6eFD3uSsg0uBALw4n4gaCaEjBw9zo8g= -cloud.google.com/go/talent v1.3.0/go.mod h1:CmcxwJ/PKfRgd1pBjQgU6W3YBwiewmUzQYH5HHmSCmM= -cloud.google.com/go/talent v1.4.0/go.mod h1:ezFtAgVuRf8jRsvyE6EwmbTK5LKciD4KVnHuDEFmOOA= -cloud.google.com/go/talent v1.5.0/go.mod h1:G+ODMj9bsasAEJkQSzO2uHQWXHHXUomArjWQQYkqK6c= -cloud.google.com/go/texttospeech v1.4.0/go.mod h1:FX8HQHA6sEpJ7rCMSfXuzBcysDAuWusNNNvN9FELDd8= -cloud.google.com/go/texttospeech v1.5.0/go.mod h1:oKPLhR4n4ZdQqWKURdwxMy0uiTS1xU161C8W57Wkea4= -cloud.google.com/go/texttospeech v1.6.0/go.mod h1:YmwmFT8pj1aBblQOI3TfKmwibnsfvhIBzPXcW4EBovc= -cloud.google.com/go/tpu v1.3.0/go.mod h1:aJIManG0o20tfDQlRIej44FcwGGl/cD0oiRyMKG19IQ= -cloud.google.com/go/tpu v1.4.0/go.mod h1:mjZaX8p0VBgllCzF6wcU2ovUXN9TONFLd7iz227X2Xg= -cloud.google.com/go/tpu v1.5.0/go.mod h1:8zVo1rYDFuW2l4yZVY0R0fb/v44xLh3llq7RuV61fPM= -cloud.google.com/go/trace v1.3.0/go.mod h1:FFUE83d9Ca57C+K8rDl/Ih8LwOzWIV1krKgxg6N0G28= -cloud.google.com/go/trace v1.4.0/go.mod h1:UG0v8UBqzusp+z63o7FK74SdFE+AXpCLdFb1rshXG+Y= -cloud.google.com/go/trace v1.8.0/go.mod h1:zH7vcsbAhklH8hWFig58HvxcxyQbaIqMarMg9hn5ECA= -cloud.google.com/go/trace v1.9.0/go.mod h1:lOQqpE5IaWY0Ixg7/r2SjixMuc6lfTFeO4QGM4dQWOk= -cloud.google.com/go/translate v1.3.0/go.mod h1:gzMUwRjvOqj5i69y/LYLd8RrNQk+hOmIXTi9+nb3Djs= -cloud.google.com/go/translate v1.4.0/go.mod h1:06Dn/ppvLD6WvA5Rhdp029IX2Mi3Mn7fpMRLPvXT5Wg= -cloud.google.com/go/translate v1.5.0/go.mod h1:29YDSYveqqpA1CQFD7NQuP49xymq17RXNaUDdc0mNu0= -cloud.google.com/go/translate v1.6.0/go.mod h1:lMGRudH1pu7I3n3PETiOB2507gf3HnfLV8qlkHZEyos= -cloud.google.com/go/translate v1.7.0/go.mod h1:lMGRudH1pu7I3n3PETiOB2507gf3HnfLV8qlkHZEyos= -cloud.google.com/go/video v1.8.0/go.mod h1:sTzKFc0bUSByE8Yoh8X0mn8bMymItVGPfTuUBUyRgxk= -cloud.google.com/go/video v1.9.0/go.mod h1:0RhNKFRF5v92f8dQt0yhaHrEuH95m068JYOvLZYnJSw= -cloud.google.com/go/video v1.12.0/go.mod h1:MLQew95eTuaNDEGriQdcYn0dTwf9oWiA4uYebxM5kdg= -cloud.google.com/go/video v1.13.0/go.mod h1:ulzkYlYgCp15N2AokzKjy7MQ9ejuynOJdf1tR5lGthk= -cloud.google.com/go/video v1.14.0/go.mod h1:SkgaXwT+lIIAKqWAJfktHT/RbgjSuY6DobxEp0C5yTQ= -cloud.google.com/go/video v1.15.0/go.mod h1:SkgaXwT+lIIAKqWAJfktHT/RbgjSuY6DobxEp0C5yTQ= -cloud.google.com/go/videointelligence v1.6.0/go.mod h1:w0DIDlVRKtwPCn/C4iwZIJdvC69yInhW0cfi+p546uU= -cloud.google.com/go/videointelligence v1.7.0/go.mod h1:k8pI/1wAhjznARtVT9U1llUaFNPh7muw8QyOUpavru4= -cloud.google.com/go/videointelligence v1.8.0/go.mod h1:dIcCn4gVDdS7yte/w+koiXn5dWVplOZkE+xwG9FgK+M= -cloud.google.com/go/videointelligence v1.9.0/go.mod h1:29lVRMPDYHikk3v8EdPSaL8Ku+eMzDljjuvRs105XoU= -cloud.google.com/go/videointelligence v1.10.0/go.mod h1:LHZngX1liVtUhZvi2uNS0VQuOzNi2TkY1OakiuoUOjU= -cloud.google.com/go/vision v1.2.0/go.mod h1:SmNwgObm5DpFBme2xpyOyasvBc1aPdjvMk2bBk0tKD0= -cloud.google.com/go/vision/v2 v2.2.0/go.mod h1:uCdV4PpN1S0jyCyq8sIM42v2Y6zOLkZs+4R9LrGYwFo= -cloud.google.com/go/vision/v2 v2.3.0/go.mod h1:UO61abBx9QRMFkNBbf1D8B1LXdS2cGiiCRx0vSpZoUo= -cloud.google.com/go/vision/v2 v2.4.0/go.mod h1:VtI579ll9RpVTrdKdkMzckdnwMyX2JILb+MhPqRbPsY= -cloud.google.com/go/vision/v2 v2.5.0/go.mod h1:MmaezXOOE+IWa+cS7OhRRLK2cNv1ZL98zhqFFZaaH2E= -cloud.google.com/go/vision/v2 v2.6.0/go.mod h1:158Hes0MvOS9Z/bDMSFpjwsUrZ5fPrdwuyyvKSGAGMY= -cloud.google.com/go/vision/v2 v2.7.0/go.mod h1:H89VysHy21avemp6xcf9b9JvZHVehWbET0uT/bcuY/0= -cloud.google.com/go/vmmigration v1.2.0/go.mod h1:IRf0o7myyWFSmVR1ItrBSFLFD/rJkfDCUTO4vLlJvsE= -cloud.google.com/go/vmmigration v1.3.0/go.mod h1:oGJ6ZgGPQOFdjHuocGcLqX4lc98YQ7Ygq8YQwHh9A7g= -cloud.google.com/go/vmmigration v1.5.0/go.mod h1:E4YQ8q7/4W9gobHjQg4JJSgXXSgY21nA5r8swQV+Xxc= -cloud.google.com/go/vmmigration v1.6.0/go.mod h1:bopQ/g4z+8qXzichC7GW1w2MjbErL54rk3/C843CjfY= -cloud.google.com/go/vmwareengine v0.1.0/go.mod h1:RsdNEf/8UDvKllXhMz5J40XxDrNJNN4sagiox+OI208= -cloud.google.com/go/vmwareengine v0.2.2/go.mod h1:sKdctNJxb3KLZkE/6Oui94iw/xs9PRNC2wnNLXsHvH8= -cloud.google.com/go/vmwareengine v0.3.0/go.mod h1:wvoyMvNWdIzxMYSpH/R7y2h5h3WFkx6d+1TIsP39WGY= -cloud.google.com/go/vpcaccess v1.4.0/go.mod h1:aQHVbTWDYUR1EbTApSVvMq1EnT57ppDmQzZ3imqIk4w= -cloud.google.com/go/vpcaccess v1.5.0/go.mod h1:drmg4HLk9NkZpGfCmZ3Tz0Bwnm2+DKqViEpeEpOq0m8= -cloud.google.com/go/vpcaccess v1.6.0/go.mod h1:wX2ILaNhe7TlVa4vC5xce1bCnqE3AeH27RV31lnmZes= -cloud.google.com/go/webrisk v1.4.0/go.mod h1:Hn8X6Zr+ziE2aNd8SliSDWpEnSS1u4R9+xXZmFiHmGE= -cloud.google.com/go/webrisk v1.5.0/go.mod h1:iPG6fr52Tv7sGk0H6qUFzmL3HHZev1htXuWDEEsqMTg= -cloud.google.com/go/webrisk v1.6.0/go.mod h1:65sW9V9rOosnc9ZY7A7jsy1zoHS5W9IAXv6dGqhMQMc= -cloud.google.com/go/webrisk v1.7.0/go.mod h1:mVMHgEYH0r337nmt1JyLthzMr6YxwN1aAIEc2fTcq7A= -cloud.google.com/go/webrisk v1.8.0/go.mod h1:oJPDuamzHXgUc+b8SiHRcVInZQuybnvEW72PqTc7sSg= -cloud.google.com/go/websecurityscanner v1.3.0/go.mod h1:uImdKm2wyeXQevQJXeh8Uun/Ym1VqworNDlBXQevGMo= -cloud.google.com/go/websecurityscanner v1.4.0/go.mod h1:ebit/Fp0a+FWu5j4JOmJEV8S8CzdTkAS77oDsiSqYWQ= -cloud.google.com/go/websecurityscanner v1.5.0/go.mod h1:Y6xdCPy81yi0SQnDY1xdNTNpfY1oAgXUlcfN3B3eSng= -cloud.google.com/go/workflows v1.6.0/go.mod h1:6t9F5h/unJz41YqfBmqSASJSXccBLtD1Vwf+KmJENM0= -cloud.google.com/go/workflows v1.7.0/go.mod h1:JhSrZuVZWuiDfKEFxU0/F1PQjmpnpcoISEXH2bcHC3M= -cloud.google.com/go/workflows v1.8.0/go.mod h1:ysGhmEajwZxGn1OhGOGKsTXc5PyxOc0vfKf5Af+to4M= -cloud.google.com/go/workflows v1.9.0/go.mod h1:ZGkj1aFIOd9c8Gerkjjq7OW7I5+l6cSvT3ujaO/WwSA= -cloud.google.com/go/workflows v1.10.0/go.mod h1:fZ8LmRmZQWacon9UCX1r/g/DfAXx5VcPALq2CxzdePw= -dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= -gioui.org v0.0.0-20210308172011-57750fc8a0a6/go.mod h1:RSH6KIUZ0p2xy5zHDxgAM4zumjgTw83q2ge/PI+yyw8= -git.sr.ht/~sbinet/gg v0.3.1/go.mod h1:KGYtlADtqsqANL9ueOFkWymvzUvLMQllU5Ixo+8v3pc= +cloud.google.com/go/compute/metadata v0.3.0/go.mod h1:zFmK7XCadkQkj6TtorcaGlCW1hT1fIilQDwofLpJ20k= github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161 h1:L/gRVlceqvL25UVaW/CKtUDjefjrs0SPonmDGUVOYP0= github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= -github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= -github.com/GoogleCloudPlatform/k8s-cloud-provider v1.20.0 h1:YzfIwJKTQrEfI01GNmniOXvbTNb4orp/2FkQR3SOV7Q= -github.com/GoogleCloudPlatform/k8s-cloud-provider v1.20.0/go.mod h1:udfkkDrxEo+LR3PoOyZI93UA0+yj9tETL2b+oucu1Gc= github.com/JeffAshton/win_pdh v0.0.0-20161109143554-76bb4ee9f0ab h1:UKkYhof1njT1/xq4SEg5z+VpTgjmNeHwPGRQl7takDI= github.com/JeffAshton/win_pdh v0.0.0-20161109143554-76bb4ee9f0ab/go.mod h1:3VYc5hodBMJ5+l/7J4xAyMeuM2PNuepvHlGs8yilUCA= -github.com/JohnCGriffin/overflow v0.0.0-20211019200055-46fa312c352c/go.mod h1:X0CRv0ky0k6m906ixxpzmDRLvX58TFUKS2eePweuyxk= github.com/MakeNowJust/heredoc v1.0.0 h1:cXCdzVdstXyiTqTvfqk9SDHpKNjxuom+DOlyEeQ4pzQ= github.com/MakeNowJust/heredoc v1.0.0/go.mod h1:mG5amYoWBHf8vpLOuehzbGGw0EHxpZZ6lCpQ4fNJ8LE= github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= github.com/Microsoft/hcsshim v0.12.5 h1:bpTInLlDy/nDRWFVcefDZZ1+U8tS+rz3MxjKgu9boo0= github.com/Microsoft/hcsshim v0.12.5/go.mod h1:tIUGego4G1EN5Hb6KC90aDYiUI2dqLSTTOCjVNpOgZ8= -github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ= github.com/NYTimes/gziphandler v1.1.1 h1:ZUDjpQae29j0ryrS0u/B8HZfJBtBQHjqw2rQ2cqUQ3I= github.com/NYTimes/gziphandler v1.1.1/go.mod h1:n/CVRwUEOgIxrgPvAQhUUr9oeUtvrhMomdKFjzJNB0c= -github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= -github.com/ajstarks/deck v0.0.0-20200831202436-30c9fc6549a9/go.mod h1:JynElWSGnm/4RlzPXRlREEwqTHAN3T56Bv2ITsFT3gY= -github.com/ajstarks/deck/generate v0.0.0-20210309230005-c3f852c02e19/go.mod h1:T13YZdzov6OU0A1+RfKZiZN9ca6VeKdBdyDV+BY97Tk= -github.com/ajstarks/svgo v0.0.0-20180226025133-644b8db467af/go.mod h1:K08gAheRH3/J6wwsYMMT4xOr94bZjxIelGM0+d/wbFw= -github.com/ajstarks/svgo v0.0.0-20211024235047-1546f124cd8b/go.mod h1:1KcenG0jGWcpt8ov532z81sp/kMMUG485J2InIOyADM= -github.com/andybalholm/brotli v1.0.4/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig= -github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= -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/apache/arrow/go/v10 v10.0.1/go.mod h1:YvhnlEePVnBS4+0z3fhPfUy7W1Ikj0Ih0vcRo/gZ1M0= -github.com/apache/arrow/go/v11 v11.0.0/go.mod h1:Eg5OsL5H+e299f7u5ssuXsuHQVEGC4xei5aX110hRiI= -github.com/apache/thrift v0.16.0/go.mod h1:PHK3hniurgQaNMZYaCLEqXKsYK8upmhPbmdP2FXSqgU= +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/circbuf v0.0.0-20190214190532-5111143e8da2 h1:7Ip0wMmLHLRJdrloDxZfhMm0xrLXZS8+COSu2bXmEQs= github.com/armon/circbuf v0.0.0-20190214190532-5111143e8da2/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= 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-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 h1:DklsrG3dyBCFEj5IhUbnKptjxatkF07cF2ak3yi77so= github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw= github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= @@ -649,8 +31,6 @@ github.com/bhendo/go-powershell v0.0.0-20190719160123-219e7fb4e41e h1:KCjb01YiNo github.com/bhendo/go-powershell v0.0.0-20190719160123-219e7fb4e41e/go.mod h1:f7vw6ObmmNcyFQLhZX9eUGBJGpnwTJFDvVjqZxIxHWY= github.com/blang/semver/v4 v4.0.0 h1:1PFHFE6yCCTv8C1TeyNNarDzntLi7wMI5i/pzqYIsAM= github.com/blang/semver/v4 v4.0.0/go.mod h1:IbckMUScFkM3pff0VJDNKRiT6TG/YpiHIM2yvyW5YoQ= -github.com/boombuler/barcode v1.0.0/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= -github.com/boombuler/barcode v1.0.1/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= github.com/buger/jsonparser v1.1.1 h1:2PnMjfWD7wBILjqQbt530v576A/cAbQvEW9gGIpYMUs= github.com/buger/jsonparser v1.1.1/go.mod h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx27UK13J/0= github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8= @@ -660,11 +40,6 @@ github.com/cenkalti/hub v1.0.2/go.mod h1:8LAFAZcCasb83vfxatMUnZHRoQcffho2ELpHb+k github.com/cenkalti/rpc2 v1.0.0 h1:QeWEpRUka5aNdcgJeGw9asi34aflySgr3xD3qcL/dx8= github.com/cenkalti/rpc2 v1.0.0/go.mod h1:2yfU5b86vOr16+iY1jN3MvT6Kxc9Nf8j5iZWwUf7iaw= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -github.com/census-instrumentation/opencensus-proto v0.3.0/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -github.com/census-instrumentation/opencensus-proto v0.4.1/go.mod h1:4T9NM4+4Vw91VeyqjLS6ao50K5bOcLKN6Q42XnYaRYw= -github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= -github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/chai2010/gettext-go v1.0.2 h1:1Lwwip6Q2QGsAdl/ZKPCwTe9fe0CjlUbqj5bFNSjIRk= @@ -684,18 +59,6 @@ github.com/cilium/ebpf v0.12.3 h1:8ht6F9MquybnY97at+VDZb3eQQr8ev79RueWeVaEcG4= github.com/cilium/ebpf v0.12.3/go.mod h1:TctK1ivibvI3znr66ljgi4hqOT8EYQjz1KWBfb1UVgM= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= -github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= -github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= -github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI= -github.com/cncf/udpa/go v0.0.0-20220112060539-c52dc94e7fbe/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI= -github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20220314180256-7f1daf1720fc/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20230105202645-06c439db220b/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20230310173818-32f1caf87195/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cnf/structhash v0.0.0-20201127153200-e1b16c1ebc08 h1:ox2F0PSMlrAAiAdknSRMDrAr8mfxPCfSZolH+/qQnyQ= github.com/cnf/structhash v0.0.0-20201127153200-e1b16c1ebc08/go.mod h1:pCxVEbcm3AMg7ejXyorUXi6HQCzOIBf7zEDVPtw0/U4= github.com/container-storage-interface/spec v1.9.0 h1:zKtX4STsq31Knz3gciCYCi1SXtO2HJDecIjDVboYavY= @@ -733,8 +96,8 @@ github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46t github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= -github.com/cyphar/filepath-securejoin v0.2.5 h1:6iR5tXJ/e6tJZzzdMc1km3Sa7RRIVBKAK32O2s7AYfo= -github.com/cyphar/filepath-securejoin v0.2.5/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4= +github.com/cyphar/filepath-securejoin v0.3.1 h1:1V7cHiaW+C+39wEfpH6XlLBQo3j/PciWFrgfCLS8XrE= +github.com/cyphar/filepath-securejoin v0.3.1/go.mod h1:F7i41x/9cBF7lzCrVsYs9fuzwRZm4NQsGTBdpp6mETc= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= 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= @@ -749,8 +112,6 @@ github.com/docker/go-connections v0.5.0 h1:USnMq7hx7gwdVZq1L49hLXaFtUdTADjXGp+uj github.com/docker/go-connections v0.5.0/go.mod h1:ov60Kzw0kKElRwhNs9UlUHAE/F9Fe6GLaXnqyDdmEXc= github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= -github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE= -github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY= github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= github.com/eapache/channels v1.1.0 h1:F1taHcn7/F0i8DYqKXJnyhJcVpp2kgFcNePxXtnyu4k= @@ -761,28 +122,15 @@ github.com/elazarl/goproxy v0.0.0-20231117061959-7cc037d33fb5 h1:m62nsMU279qRD9P github.com/elazarl/goproxy v0.0.0-20231117061959-7cc037d33fb5/go.mod h1:Ro8st/ElPeALwNFlcTpWmkr6IoMFfkjXAvTHpevnDsM= github.com/elazarl/goproxy/ext v0.0.0-20190711103511-473e67f1d7d2/go.mod h1:gNh8nYJoAm43RfaxurUnxr+N1PwuFV3ZMl/efxlIlY8= github.com/emicklei/go-restful v2.15.0+incompatible/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= -github.com/emicklei/go-restful/v3 v3.8.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= github.com/emicklei/go-restful/v3 v3.11.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= github.com/emicklei/go-restful/v3 v3.12.1 h1:PJMDIM/ak7btuL8Ex0iYET9hxM3CI2sjZtzpL63nKAU= github.com/emicklei/go-restful/v3 v3.12.1/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= 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/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po= -github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= -github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= -github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= -github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= -github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.mod h1:KJwIaB5Mv44NWtYuAOFCVOjcI94vtpEz2JU/D2v6IjE= -github.com/envoyproxy/go-control-plane v0.10.3/go.mod h1:fJJn/j26vwOu972OllsvAgJJM//w9BV6Fxbg2LuVd34= -github.com/envoyproxy/go-control-plane v0.11.0/go.mod h1:VnHyVMpzcLvCFt9yUz1UnCwHLhwx1WguiVDV7pTG/tI= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/envoyproxy/protoc-gen-validate v0.6.7/go.mod h1:dyJXwwfPK2VSqiB9Klm1J6romD608Ba7Hij42vrOBCo= -github.com/envoyproxy/protoc-gen-validate v0.9.1/go.mod h1:OKNgG7TCp5pF4d6XftA0++PMirau2/yoOwVac3AbF2w= -github.com/envoyproxy/protoc-gen-validate v0.10.0/go.mod h1:DRjgyB0I43LtJapqN6NiRwroiAU2PaFuvk/vjgh61ss= github.com/euank/go-kmsg-parser v2.0.0+incompatible h1:cHD53+PLQuuQyLZeriD1V/esuG4MuU0Pjs5y6iknohY= github.com/euank/go-kmsg-parser v2.0.0+incompatible/go.mod h1:MhmAMZ8V4CYH4ybgdRwPr2TU5ThnS43puaKEMpja1uw= -github.com/evanphx/json-patch v4.12.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= 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= @@ -795,26 +143,16 @@ github.com/fatih/set v0.2.1 h1:nn2CaJyknWE/6txyUDGwysr3G5QC6xWB/PtVjPBbeaA= github.com/fatih/set v0.2.1/go.mod h1:+RKtMCH+favT2+3YecHGxcc0b4KyVWA1QWWJUs4E0CI= github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= -github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= -github.com/fogleman/gg v1.3.0/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8= github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= 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/fxamacker/cbor/v2 v2.6.0/go.mod h1:pxXPTn3joSm21Gbwsv0w9OSA2y1HFR9qXEeXQVeNoDQ= -github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/fxamacker/cbor/v2 v2.7.0 h1:iM5WgngdRBanHcxugY4JySA0nk1wZorNOpTgCMedv5E= +github.com/fxamacker/cbor/v2 v2.7.0/go.mod h1:pxXPTn3joSm21Gbwsv0w9OSA2y1HFR9qXEeXQVeNoDQ= github.com/go-errors/errors v1.5.1 h1:ZwEMSLRCapFLflTpT7NKaAc7ukJ8ZPEjzlxt8rPN8bk= github.com/go-errors/errors v1.5.1/go.mod h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3BopGUQ5a5Og= -github.com/go-fonts/dejavu v0.1.0/go.mod h1:4Wt4I4OU2Nq9asgDCteaAaWZOV24E+0/Pwo0gppep4g= -github.com/go-fonts/latin-modern v0.2.0/go.mod h1:rQVLdDMK+mK1xscDwsqM5J8U2jrRa3T0ecnM9pNujks= -github.com/go-fonts/liberation v0.1.1/go.mod h1:K6qoJYypsmfVjWg8KOVDQhLc8UDgIK2HYqyqAO9z7GY= -github.com/go-fonts/liberation v0.2.0/go.mod h1:K6qoJYypsmfVjWg8KOVDQhLc8UDgIK2HYqyqAO9z7GY= -github.com/go-fonts/stix v0.1.0/go.mod h1:w/c1f0ldAUlJmLBvlbkvVXLAD+tAMqobIIQpmnUIzUY= -github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= -github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= -github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-ini/ini v1.67.0 h1:z6ZrTEZqSWOTyH2FlglNbNgARyHG8oLW9gMELqKr06A= github.com/go-ini/ini v1.67.0/go.mod h1:ByCAeIL28uOIIG0E3PJtZPDL8WnHpFKFOtgjp+3Ies8= github.com/go-kit/kit v0.13.0 h1:OoneCcHKHQ03LfBpoQCUfCluwd2Vt3ohz+kvbJneZAU= @@ -822,18 +160,14 @@ github.com/go-kit/kit v0.13.0/go.mod h1:phqEHMMUbyrCFCTgH48JueqrM3md2HcAZ8N3XE4F github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= github.com/go-kit/log v0.2.1 h1:MRVx0/zhvdseW+Gza6N9rVzU/IVzaeE1SFI4raAhmBU= github.com/go-kit/log v0.2.1/go.mod h1:NwTd00d/i8cPZ3xOwwiv2PO5MOcx78fFErGNcVmBjv0= -github.com/go-latex/latex v0.0.0-20210118124228-b3d85cf34e07/go.mod h1:CO1AlKB2CSIqUrmQPqA0gdRIlnLEY0gK5JGjh37zN5U= -github.com/go-latex/latex v0.0.0-20210823091927-c0d11ff05a81/go.mod h1:SX0U8uGpxhq9o2S/CELCSUxEWWAuoCUcVCQWv7G2OCk= github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= github.com/go-logfmt/logfmt v0.6.0 h1:wGYYu3uicYdqXVgoYbvnkrPVXkuLM1p1ifugDMEdRi4= github.com/go-logfmt/logfmt v0.6.0/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs= -github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas= github.com/go-logr/logr v0.2.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= github.com/go-logr/logr v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.2.3/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.2.4/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.3.0/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY= github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= @@ -846,17 +180,15 @@ github.com/go-openapi/jsonpointer v0.19.6/go.mod h1:osyAmYz/mB/C3I+WsTTSgw1ONzaL github.com/go-openapi/jsonpointer v0.21.0 h1:YgdVicSA9vH5RiHs9TZW5oyafXZFc6+2Vc1rr/O9oNQ= github.com/go-openapi/jsonpointer v0.21.0/go.mod h1:IUyH9l/+uyhIYQ/PXVA41Rexl+kOkAPDdXEYns6fzUY= github.com/go-openapi/jsonreference v0.19.6/go.mod h1:diGHMEHg2IqXZGKxqyvWdfWU/aim5Dprw5bqpKkTvns= -github.com/go-openapi/jsonreference v0.20.1/go.mod h1:Bl1zwGIM8/wsvqjsOQLJ/SH+En5Ap4rVB5KVcIDZG2k= github.com/go-openapi/jsonreference v0.20.2/go.mod h1:Bl1zwGIM8/wsvqjsOQLJ/SH+En5Ap4rVB5KVcIDZG2k= github.com/go-openapi/jsonreference v0.21.0 h1:Rs+Y7hSXT83Jacb7kFyjn4ijOuVGSvOdF2+tg1TRrwQ= github.com/go-openapi/jsonreference v0.21.0/go.mod h1:LmZmgsrTkVg9LG4EaHeY8cBDslNPMo06cago5JNLkm4= github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= github.com/go-openapi/swag v0.21.1/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ= github.com/go-openapi/swag v0.22.3/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14= +github.com/go-openapi/swag v0.22.4/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14= github.com/go-openapi/swag v0.23.0 h1:vsEVJDUo2hPJ2tu0/Xc+4noaxyEffXNIs3cOULZ+GrE= github.com/go-openapi/swag v0.23.0/go.mod h1:esZ8ITTYEsH1V2trKHjAN8Ai7xHb8RV+YSZ577vPjgQ= -github.com/go-pdf/fpdf v0.5.0/go.mod h1:HzcnA+A23uwogo0tp9yU+l3V+KXhiESpt1PMayhOh5M= -github.com/go-pdf/fpdf v0.6.0/go.mod h1:HzcnA+A23uwogo0tp9yU+l3V+KXhiESpt1PMayhOh5M= 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/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls= @@ -867,7 +199,6 @@ github.com/go-test/deep v1.1.0/go.mod h1:5C2ZWiW0ErCdrYzpqxLbTX7MG14M9iiw8DgHncV github.com/gobwas/httphead v0.1.0/go.mod h1:O/RXo79gxV8G+RqlR/otEwx4Q36zl9rqC5u12GKvMCM= github.com/gobwas/pool v0.2.1/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw= github.com/gobwas/ws v1.2.1/go.mod h1:hRKAFb8wOxFROYNsT1bqfWnhX+b5MFeJM9r2ZSwg/KY= -github.com/goccy/go-json v0.9.11/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/godbus/dbus/v5 v5.1.0 h1:4KLkAxT3aOY8Li4FRJe/KvhoNFFxo0m6fNuFUO8QJUk= github.com/godbus/dbus/v5 v5.1.0/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= @@ -875,31 +206,16 @@ github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= 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/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/glog v1.0.0/go.mod h1:EWib/APOK0SL3dFbYqvxE3UYd8E6s1ouQ7iEp/0LWV4= -github.com/golang/glog v1.1.0/go.mod h1:pfYeQZ3JWZoXTV5sFc986z3HTpwQs9At6P4ImfuP3NQ= -github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= 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= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= -github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= -github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= -github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= -github.com/golang/mock v1.5.0/go.mod h1:CWnOUgYIOo4TcNZ0wHX3YZCqsaM1I1Jvs6v3mP3KVu8= github.com/golang/mock v1.6.0 h1:ErTB+efbowRARo13NNdxyJji2egdxLGQhRaY+DUumQc= github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= -github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= -github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= @@ -909,23 +225,17 @@ github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QD github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= -github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM= github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= -github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.1/go.mod h1:xXMiIv4Fb/0kKde4SpL7qlzvu5cMJDRkFDxJfI9uaxA= 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/cadvisor v0.50.0 h1:7w/hKIbJKBWqQsRTy+Hpj2vj+fnxrLXcEXFy+LW0Bsg= github.com/google/cadvisor v0.50.0/go.mod h1:VxCDwZalpFyENvmfabFqaIGsqNKLtDzE62a19rfVTB8= -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/flatbuffers v2.0.8+incompatible/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= +github.com/google/cel-go v0.21.0 h1:cl6uW/gxN+Hy50tNYvI691+sXxioCnstFzLp2WO4GCI= +github.com/google/cel-go v0.21.0/go.mod h1:rHUlWCcBKgyEk+eV03RPdZUekPp6YcJwV0FxuUksYxc= github.com/google/gnostic-models v0.6.8/go.mod h1:5n7qKqH0f5wFt+aWF8CW6pZLLNOfYuF5OpfBSENuI8U= github.com/google/gnostic-models v0.6.9-0.20230804172637-c7be7c783f49 h1:0VpGH+cDhbDtdcweoyCVsF3fhN8kejK6rFe/2FFX2nU= github.com/google/gnostic-models v0.6.9-0.20230804172637-c7be7c783f49/go.mod h1:BkkQ4L1KS1xMt2aWSPStnn55ChGC0DPOn2FQYj+f25M= @@ -933,12 +243,8 @@ github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5a github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE= @@ -950,71 +256,18 @@ github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/ github.com/google/gofuzz v1.1.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/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= -github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= -github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= -github.com/google/martian/v3 v3.2.1/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= -github.com/google/martian/v3 v3.3.2/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= -github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= -github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= -github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20201218002935-b9804c9f04c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20240424215950-a892ee059fd6/go.mod h1:kf6iHlnVGwgKolg33glAes7Yg/8iWP8ukqeldJSO7jw= +github.com/google/pprof v0.0.0-20240525223248-4bfdf5a9a2af/go.mod h1:K1liHPHnj73Fdn/EKuT8nrFqBihUSKXoLYU0BuatOYo= github.com/google/pprof v0.0.0-20240727154555-813a5fbdbec8 h1:FKHo8hFI3A+7w0aUQuYXQ+6EN5stWmeY/AZqtM8xk9k= github.com/google/pprof v0.0.0-20240727154555-813a5fbdbec8/go.mod h1:K1liHPHnj73Fdn/EKuT8nrFqBihUSKXoLYU0BuatOYo= -github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= -github.com/google/s2a-go v0.1.0/go.mod h1:OJpEgntRZo8ugHpF9hkoLJbS5dSI20XZeXJ9JVywLlM= -github.com/google/s2a-go v0.1.3/go.mod h1:Ej+mSEMGRnqRzjc7VtF+jdBwYG5fuJfiZ8ELkjEwM0A= -github.com/google/s2a-go v0.1.4/go.mod h1:Ej+mSEMGRnqRzjc7VtF+jdBwYG5fuJfiZ8ELkjEwM0A= -github.com/google/s2a-go v0.1.8 h1:zZDs9gcbt9ZPLV0ndSyQk6Kacx2g/X+SKYovpnz3SMM= -github.com/google/s2a-go v0.1.8/go.mod h1:6iNWHTpQ+nfNRN5E00MSdfDwVesa8hhS32PhPO8deJA= github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 h1:El6M4kTTCOh6aBiKaUGG7oYTSPP8MxqL4YI3kZKwcP4= github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -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/googleapis/enterprise-certificate-proxy v0.0.0-20220520183353-fd19c99a87aa/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= -github.com/googleapis/enterprise-certificate-proxy v0.1.0/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= -github.com/googleapis/enterprise-certificate-proxy v0.2.0/go.mod h1:8C0jb7/mgJe/9KK8Lm7X9ctZC2t60YyIpYEI16jx0Qg= -github.com/googleapis/enterprise-certificate-proxy v0.2.1/go.mod h1:AwSRAtLfXpU5Nm3pW+v7rGDHp09LsPtGY9MduiEsR9k= -github.com/googleapis/enterprise-certificate-proxy v0.2.3/go.mod h1:AwSRAtLfXpU5Nm3pW+v7rGDHp09LsPtGY9MduiEsR9k= -github.com/googleapis/enterprise-certificate-proxy v0.3.2 h1:Vie5ybvEvT75RniqhfFxPRy3Bf7vr3h0cechB90XaQs= -github.com/googleapis/enterprise-certificate-proxy v0.3.2/go.mod h1:VLSiSSBs/ksPL8kq3OBOQ6WRI2QnaFynd1DCjZ62+V0= -github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= -github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= -github.com/googleapis/gax-go/v2 v2.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pfu6SK+H1/DsU0= -github.com/googleapis/gax-go/v2 v2.1.1/go.mod h1:hddJymUZASv3XPyGkUpKj8pPO47Rmb0eJc8R6ouapiM= -github.com/googleapis/gax-go/v2 v2.2.0/go.mod h1:as02EH8zWkzwUoLbBaFeQ+arQaj/OthfcblKl4IGNaM= -github.com/googleapis/gax-go/v2 v2.3.0/go.mod h1:b8LNqSzNabLiUpXKkY7HAR5jr6bIT99EXz9pXxye9YM= -github.com/googleapis/gax-go/v2 v2.4.0/go.mod h1:XOTVJ59hdnfJLIP/dh8n5CGryZR2LxK9wbMD5+iXC6c= -github.com/googleapis/gax-go/v2 v2.5.1/go.mod h1:h6B0KMMFNtI2ddbGJn3T3ZbwkeT6yqEF02fYlzkUCyo= -github.com/googleapis/gax-go/v2 v2.6.0/go.mod h1:1mjbznJAPHFpesgE5ucqfYEscaz5kMdcIDwU/6+DDoY= -github.com/googleapis/gax-go/v2 v2.7.0/go.mod h1:TEop28CZZQ2y+c0VxMUmu1lV+fQx57QpBWsYpwqHJx8= -github.com/googleapis/gax-go/v2 v2.7.1/go.mod h1:4orTrqY6hXxxaUL4LHIPl6lGo8vAE38/qKbhSAKP6QI= -github.com/googleapis/gax-go/v2 v2.8.0/go.mod h1:4orTrqY6hXxxaUL4LHIPl6lGo8vAE38/qKbhSAKP6QI= -github.com/googleapis/gax-go/v2 v2.10.0/go.mod h1:4UOEnMCrxsSqQ940WnTiD6qJ63le2ev3xfyagutxiPw= -github.com/googleapis/gax-go/v2 v2.11.0/go.mod h1:DxmR61SGKkGLa2xigwuZIQpkCI2S5iydzRfb3peWZJI= -github.com/googleapis/gax-go/v2 v2.13.0 h1:yitjD5f7jQHhyDsnhKEBU52NdvvdSeGzlAnDPT0hH1s= -github.com/googleapis/gax-go/v2 v2.13.0/go.mod h1:Z/fvTZXF8/uw7Xu5GuslPw+bplx6SS338j1Is2S+B7A= -github.com/googleapis/go-type-adapters v1.0.0/go.mod h1:zHW75FOG2aur7gAO2B+MLby+cLsWGBF62rFAi7WjWO4= -github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= -github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gopherjs/gopherjs v1.17.2 h1:fQnZVsXk8uxXIStYb0N4bGk7jeyTalG/wsZjQ25dO0g= github.com/gopherjs/gopherjs v1.17.2/go.mod h1:pRRIvn/QzFLrKfvEz3qUuEhtE/zLCWfreZ6J5gM2i+k= -github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/gorilla/websocket v1.5.3 h1:saDtZ6Pbx/0u+bgYQ3q96pZgCzfhKXGPqt7kZ72aNNg= github.com/gorilla/websocket v1.5.3/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= @@ -1027,19 +280,13 @@ 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.7.0/go.mod h1:hgWBS7lorOAVIJEQMi4ZsPv9hVvWI6+ch50m39Pf2Ks= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.11.3/go.mod h1:o//XUCC/F+yRGJoPO/VU0GSB0f8Nhgmxx0VIRUvaC0w= github.com/grpc-ecosystem/grpc-gateway/v2 v2.21.0 h1:CWyXh/jylQWp2dtiV33mY4iSSp6yf4lmn+c7/tN+ObI= github.com/grpc-ecosystem/grpc-gateway/v2 v2.21.0/go.mod h1:nCLIt0w3Ept2NwF8ThLmrppXsfT07oC8k0XNDxd8sVU= github.com/hashicorp/go-version v1.7.0 h1:5tqGy27NaOTB8yJKUZELlFAS/LTKJkrmONwQKeRZfjY= github.com/hashicorp/go-version v1.7.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= -github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= -github.com/iancoleman/strcase v0.2.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= -github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ianlancetaylor/demangle v0.0.0-20240312041847-bd984b5ce465/go.mod h1:gx7rwoVhcfuVKG5uya9Hs3Sxj7EIvldVofAWIUtGouw= github.com/imdario/mergo v0.3.6/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= @@ -1056,14 +303,10 @@ github.com/josharian/native v1.1.0 h1:uuaP0hAbW7Y4l0ZRQ6C9zfb7Mg1mbFKry/xzDAfmtL github.com/josharian/native v1.1.0/go.mod h1:7X/raswPFr05uY3HiLlYeyQntB6OO7E/d2Cu7qoaN2w= github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= -github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= -github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo= github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= github.com/juju/errors v1.0.0 h1:yiq7kjCLll1BiaRuNY53MGI0+EQ3rF6GB+wvboZDefM= github.com/juju/errors v1.0.0/go.mod h1:B5x9thDqx0wIMH3+aLIMP9HjItInYWObRovoCFM5Qe8= -github.com/jung-kurt/gofpdf v1.0.0/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes= -github.com/jung-kurt/gofpdf v1.0.3-0.20190309125859-24315acbbda5/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes= github.com/k-sone/critbitgo v1.4.0 h1:l71cTyBGeh6X5ATh6Fibgw3+rtNT80BA0uNNWgkPrbE= github.com/k-sone/critbitgo v1.4.0/go.mod h1:7E6pyoyADnFxlUBEKcnfS49b7SUAQGMK+OAp/UQvo0s= github.com/k8snetworkplumbingwg/network-attachment-definition-client v1.7.1 h1:n4FpoJ6aGDx8ULfya/C4ycrMDuPZlf7AtPyrT4+rIP4= @@ -1074,20 +317,16 @@ github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0 h1:iQTw/8FWTuc7uia github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0/go.mod h1:1NbS8ALrpOvjt0rHPNLyCIeMtbizbir8U//inJ+zuB8= github.com/karrick/godirwalk v1.17.0 h1:b4kY7nqDdioR/6qnbHQyDvmA17u5G1cZ6J+CZXwSWoI= github.com/karrick/godirwalk v1.17.0/go.mod h1:j4mkqPuvaLI8mp1DroR3P6ad7cyYd4c1qeJ3RV7ULlk= -github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8= github.com/kelseyhightower/envconfig v1.4.0 h1:Im6hONhd3pLkfDFsbRgu68RDNkGF1r3dvMUtDTo2cv8= github.com/kelseyhightower/envconfig v1.4.0/go.mod h1:cccZRl6mQpaq41TPp5QxidR+Sa3axMbJDNb//FQX6Gg= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/klauspost/asmfmt v1.3.2/go.mod h1:AG8TuvYojzulgDAMCnYn50l/5QV3Bs/tp6j0HLHbNSE= -github.com/klauspost/compress v1.15.9/go.mod h1:PhcZ0MbTNciWF3rruxRgKxI5NkcHHrHUDtV4Yw2GlzU= -github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= +github.com/klauspost/compress v1.17.9 h1:6KIumPrER1LHsvBVuDa0r5xaG0Es51mhhB9BQB2qeMA= +github.com/klauspost/compress v1.17.9/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= -github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= @@ -1102,14 +341,16 @@ github.com/kubeovn/go-iptables v0.0.0-20230322103850-8619a8ab3dca h1:fTMjoho2et9 github.com/kubeovn/go-iptables v0.0.0-20230322103850-8619a8ab3dca/go.mod h1:jY1XeGzkx8ASNJ+SqQSxTESNXARkjvt+I6IJOTnzIjw= github.com/kubeovn/gonetworkmanager/v2 v2.0.0-20230905082151-e28c4d73a589 h1:y9exo1hjCsq7jsGUzt11kxhTiEGrGSQ0ZqibAiZk2PQ= github.com/kubeovn/gonetworkmanager/v2 v2.0.0-20230905082151-e28c4d73a589/go.mod h1:49upX+/hUyppWIqu58cumojyIwXdkA8k6reA/mQlKuI= -github.com/kubeovn/kubevirt-client-go v0.0.0-20240719051923-4613ee8d79ec h1:oYLM++miLoT1lLRV+KVmCi3NqSzBihBKIORNT6fYyKo= -github.com/kubeovn/kubevirt-client-go v0.0.0-20240719051923-4613ee8d79ec/go.mod h1:7bSgPDhnVXzMiSrSEagZnxKdMn3YxdIU8mvlj8wICtQ= -github.com/kubeovn/libovsdb v0.0.0-20240218023647-f0bc3ce57fcd h1:GhgvSBFKEkVNgDq8IslC04NVuoznreZH/Imz/cr6bhs= -github.com/kubeovn/libovsdb v0.0.0-20240218023647-f0bc3ce57fcd/go.mod h1:pTnlGt1JZrncr6pJn/Fhnp3FFTMQRaTVxiSKBLVGa5s= +github.com/kubeovn/kubevirt-client-go v0.0.0-20240814055642-5a8ca1345f4a h1:KHAk2PZ53dR1FX7435wlIks9NIc5GrpsTSlXZSaFL38= +github.com/kubeovn/kubevirt-client-go v0.0.0-20240814055642-5a8ca1345f4a/go.mod h1:Rfh1OHje8XZhjGGzzRys7dSopk4uYduT/ZWZe0ailto= +github.com/kubeovn/libovsdb v0.0.0-20240814054845-978196448fb2 h1:jH4yKIJLu2ZBy6fLMrlVa27ccgjzc53rsGDzNvddh0E= +github.com/kubeovn/libovsdb v0.0.0-20240814054845-978196448fb2/go.mod h1:od3agzU0e50RPBxap7mMvBWZ+u37kqX0W849BYufdHI= github.com/kubeovn/ovsdb v0.0.0-20240410091831-5dd26006c475 h1:KZba2Kj9TXCUdUSqOR3eiy4VvkkIyhDVImYmYs6GQWU= github.com/kubeovn/ovsdb v0.0.0-20240410091831-5dd26006c475/go.mod h1:LAd0qoeAAm/QyZcpxN2BnpndM2/dhZt+/kokPvcxKcE= github.com/kubernetes-csi/external-snapshotter/client/v4 v4.2.0 h1:nHHjmvjitIiyPlUHk/ofpgvBcNcawJLtf4PYHORLjAA= github.com/kubernetes-csi/external-snapshotter/client/v4 v4.2.0/go.mod h1:YBCo4DoEeDndqvAn6eeu0vWM7QdXmHEeI9cFWplmBys= +github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= +github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= github.com/ledongthuc/pdf v0.0.0-20220302134840-0c2507a12d80/go.mod h1:imJHygn/1yfhB7XSJJKlFZKl/J+dCPAknuiaGOshXAs= github.com/libopenstorage/openstorage v1.0.0 h1:GLPam7/0mpdP8ZZtKjbfcXJBTIA/T1O6CBErVEFEyIM= github.com/libopenstorage/openstorage v1.0.0/go.mod h1:Sp1sIObHjat1BeXhfMqLZ14wnOzEhNx2YQedreMcUyc= @@ -1117,9 +358,6 @@ github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de h1:9TO3cAIGXtEhn github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de/go.mod h1:zAbeS9B/r2mtpb6U+EI2rYA5OAXxsYw6wTamcNW+zcE= github.com/lithammer/dedent v1.1.0 h1:VNzHMVCBNG1j0fh3OrsFRkVUwStdDArbgBWoPAffktY= github.com/lithammer/dedent v1.1.0/go.mod h1:jrXYCQtgg0nJiN+StA2KgR7w6CiQNv9Fd/Z9BP0jIOc= -github.com/lyft/protoc-gen-star v0.6.0/go.mod h1:TGAoBVkt8w7MPG72TrKIu85MIdXwDuzJYeZuUPFPNwA= -github.com/lyft/protoc-gen-star v0.6.1/go.mod h1:TGAoBVkt8w7MPG72TrKIu85MIdXwDuzJYeZuUPFPNwA= -github.com/lyft/protoc-gen-star/v2 v2.0.1/go.mod h1:RcCdONR2ScXaYnQC5tUzxzlpA3WVYF7/opLeUgcQs/o= github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= @@ -1127,9 +365,6 @@ github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN github.com/mailru/easyjson v0.7.6/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= -github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= -github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= -github.com/mattn/go-sqlite3 v1.14.14/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU= github.com/mdlayher/ethernet v0.0.0-20220221185849-529eae5b6118 h1:2oDp6OOhLxQ9JBoUuysVz9UZ9uI6oLUbvAZu0x8o+vE= github.com/mdlayher/ethernet v0.0.0-20220221185849-529eae5b6118/go.mod h1:ZFUnHIVchZ9lJoWoEGUg8Q3M4U8aNNWA3CVSUTkW4og= github.com/mdlayher/packet v1.0.0/go.mod h1:eE7/ctqDhoiRhQ44ko5JZU2zxB88g+JH/6jmnjzPjOU= @@ -1138,8 +373,6 @@ github.com/mdlayher/packet v1.1.2/go.mod h1:GEu1+n9sG5VtiRE4SydOmX5GTwyyYlteZiFU github.com/mdlayher/socket v0.2.1/go.mod h1:QLlNPkFR88mRUNQIzRBMfXxwKal8H7u1h3bL1CV+f0E= github.com/mdlayher/socket v0.5.1 h1:VZaqt6RkGkt2OE9l3GcC6nZkqD3xKeQLyfleW/uBcos= github.com/mdlayher/socket v0.5.1/go.mod h1:TjPLHI1UgwEv5J1B5q0zTZq12A/6H7nKmtTanQE37IQ= -github.com/minio/asm2plan9s v0.0.0-20200509001527-cdd76441f9d8/go.mod h1:mC1jAcsrzbxHt8iiaC+zU4b1ylILSosueou12R++wfY= -github.com/minio/c2goasm v0.0.0-20190812172519-36a3d3bbc4f3/go.mod h1:RagcQ7I8IeTMnF8JTXieKnO4Z6JCsikNEzj0DwauVzE= github.com/mistifyio/go-zfs v2.1.2-0.20190413222219-f784269be439+incompatible h1:aKW/4cBs+yK6gpqU3K/oIwk9Q/XICqd3zOX/UFuvqmk= github.com/mistifyio/go-zfs v2.1.2-0.20190413222219-f784269be439+incompatible/go.mod h1:8AuVvqP/mXw1px98n46wfvcGfQ4ci2FwoAjKYxuo3Z4= github.com/mitchellh/go-wordwrap v1.0.1 h1:TLuKupo69TCn6TQSyGxwI1EblZZEsQ0vMlAFQflz0v0= @@ -1148,7 +381,7 @@ github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyua github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/moby/docker-image-spec v1.3.1 h1:jMKff3w6PgbfSa69GfNg+zN/XLhfXJGnEx3Nl2EsFP0= github.com/moby/docker-image-spec v1.3.1/go.mod h1:eKmb5VW8vQEh/BAr2yvVNvuiJuY6UIocYsFu/DxxRpo= -github.com/moby/spdystream v0.2.0/go.mod h1:f7i0iNDQJ059oMTcWxx8MA/zKFIuD/lY+0GqbN2Wy8c= +github.com/moby/spdystream v0.4.0/go.mod h1:xBAYlnt/ay+11ShkdFKNAG7LsyK/tmNBVvVOwrfMgdI= github.com/moby/spdystream v0.5.0 h1:7r0J1Si3QO/kjRitvSLVVFUjxMEb/YLj6S9FF62JBCU= github.com/moby/spdystream v0.5.0/go.mod h1:xBAYlnt/ay+11ShkdFKNAG7LsyK/tmNBVvVOwrfMgdI= github.com/moby/sys/mountinfo v0.7.2 h1:1shs6aH5s4o5H2zQLn796ADW1wMrIwHsyJ2v9KouLrg= @@ -1172,7 +405,6 @@ github.com/moul/http2curl v1.0.0 h1:dRMWoAtb+ePxMlLkrCbAqh4TlPHXvoGUSQ323/9Zahs= github.com/moul/http2curl v1.0.0/go.mod h1:8UbvGypXm98wA/IqH45anm5Y2Z6ep6O31QGOAZ3H0fQ= github.com/mrunalp/fileutils v0.5.1 h1:F+S7ZlNKnrwHfSwdlgNSkKo67ReVf8o9fel6C3dkm/Q= github.com/mrunalp/fileutils v0.5.1/go.mod h1:M1WthSahJixYnrXQl/DFQuteStB1weuxD2QJNHXfbSQ= -github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f h1:y5//uYreIhSUg3J1GEMiLbxo1LJaP8RfCpH6pymGZus= @@ -1202,10 +434,9 @@ github.com/onsi/ginkgo/v2 v2.9.5/go.mod h1:tvAoo1QUJwNEU2ITftXTpR7R1RbCzoZUOs3Ro github.com/onsi/ginkgo/v2 v2.9.7/go.mod h1:cxrmXWykAwTwhQsJOPfdIDiJ+l2RYq7U8hFU+M/1uw0= github.com/onsi/ginkgo/v2 v2.11.0/go.mod h1:ZhrRA5XmEE3x3rhlzamx/JJvujdZoJ2uvgI7kR0iZvM= github.com/onsi/ginkgo/v2 v2.13.0/go.mod h1:TE309ZR8s5FsKKpuB1YAQYBzCaAfUgatB/xlT/ETL/o= -github.com/onsi/ginkgo/v2 v2.13.2/go.mod h1:XStQ8QcGwLyF4HdfcZB8SFOS/MWCgDuXMSBe6zrvLgM= -github.com/onsi/ginkgo/v2 v2.15.0/go.mod h1:HlxMHtYF57y6Dpf+mc5529KKmSq9h2FpCF+/ZkwUxKM= github.com/onsi/ginkgo/v2 v2.17.1/go.mod h1:llBI3WDLL9Z6taip6f33H76YcWtJv+7R3HigUjbIBOs= github.com/onsi/ginkgo/v2 v2.17.2/go.mod h1:nP2DPOQoNsQmsVyv5rDA8JkXQoCs6goXIvr/PRJ1eCc= +github.com/onsi/ginkgo/v2 v2.19.0/go.mod h1:rlwLi9PilAFJ8jCg9UE1QP6VBpd6/xj3SRC0d6TU0To= github.com/onsi/ginkgo/v2 v2.20.0 h1:PE84V2mHqoT1sglvHc8ZdQtPcwmvvt29WLEEO3xmdZw= github.com/onsi/ginkgo/v2 v2.20.0/go.mod h1:lG9ey2Z29hR41WMVthyJBGUBcBhGOtoPF2VFMvBXFCI= github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= @@ -1226,9 +457,7 @@ github.com/onsi/gomega v1.27.6/go.mod h1:PIQNjfQwkP3aQAH7lf7j87O/5FiNr+ZR8+ipb+q github.com/onsi/gomega v1.27.7/go.mod h1:1p8OOlwo2iUUDsHnOrjE5UKYJ+e3W8eQ3qSlRahPmr4= github.com/onsi/gomega v1.27.8/go.mod h1:2J8vzI/s+2shY9XHRApDkdgPo1TKT7P2u6fXeJKFnNQ= github.com/onsi/gomega v1.27.10/go.mod h1:RsS8tutOdbdgzbPtzzATp12yT7kM5I5aElG3evPbQ0M= -github.com/onsi/gomega v1.29.0/go.mod h1:9sxs+SwGrKI0+PWe4Fxa9tFQQBG5xSsSbMXOI8PPpoQ= github.com/onsi/gomega v1.30.0/go.mod h1:9sxs+SwGrKI0+PWe4Fxa9tFQQBG5xSsSbMXOI8PPpoQ= -github.com/onsi/gomega v1.31.0/go.mod h1:DW9aCi7U6Yi40wNVAvT6kzFnEVEI5n3DloYBiKiT6zk= github.com/onsi/gomega v1.33.0/go.mod h1:+925n5YtiFsLzzafLUHzVMBpvvRAzrydIBiSIxjX3wY= github.com/onsi/gomega v1.33.1/go.mod h1:U4R44UsT+9eLIaYRB2a5qajjtQYn0hauxvRm16AVYg0= github.com/onsi/gomega v1.34.1 h1:EUMJIKUjM8sKjYbtxQI9A4z2o+rruxnzNvpknOXie6k= @@ -1259,16 +488,10 @@ github.com/pelletier/go-toml/v2 v2.2.2 h1:aYUidT7k73Pcl9nb2gScu7NSrKCSHIDE89b3+6 github.com/pelletier/go-toml/v2 v2.2.2/go.mod h1:1t835xjRzz80PqgE6HHgN2JOsmgYu/h4qDAS4n929Rs= github.com/peterbourgon/diskv v2.0.1+incompatible h1:UBdAOUP5p4RWqPBg048CAvpKN+vxiaj6gdUUzhl4XmI= github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU= -github.com/phpdave11/gofpdf v1.4.2/go.mod h1:zpO6xFn9yxo3YLyMvW8HcKWVdbNqgIfOOp2dXMnm1mY= -github.com/phpdave11/gofpdi v1.0.12/go.mod h1:vBmVV0Do6hSBHC8uKUQ71JGW+ZGQq74llk/7bXwjDoI= -github.com/phpdave11/gofpdi v1.0.13/go.mod h1:vBmVV0Do6hSBHC8uKUQ71JGW+ZGQq74llk/7bXwjDoI= -github.com/pierrec/lz4/v4 v4.1.15/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= github.com/pkg/errors v0.8.1/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/pkg/sftp v1.10.1/go.mod h1:lYOWFsE0bwd1+KfKJaKeuokY15vzFx25BLbzYYoAxZI= -github.com/pkg/sftp v1.13.1/go.mod h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qRg= 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= @@ -1280,32 +503,24 @@ github.com/projectcalico/libcalico-go v0.0.0-20190305235709-3d935c3b8b86 h1:YOg4 github.com/projectcalico/libcalico-go v0.0.0-20190305235709-3d935c3b8b86/go.mod h1:0b/n/rPzNXjhn4ywFcEJuQdA/5olt9UxFIATz57xkbc= github.com/prometheus-community/pro-bing v0.4.1 h1:aMaJwyifHZO0y+h8+icUz0xbToHbia0wdmzdVZ+Kl3w= github.com/prometheus-community/pro-bing v0.4.1/go.mod h1:aLsw+zqCaDoa2RLVVSX3+UiCkBBXTMtZC3c7EkfWnAE= -github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring v0.68.0 h1:yl9ceUSUBo9woQIO+8eoWpcxZkdZgm89g+rVvu37TUw= -github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring v0.68.0/go.mod h1:9Uuu3pEU2jB8PwuqkHvegQ0HV/BlZRJUyfTYAqfdVF8= -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-operator/prometheus-operator/pkg/apis/monitoring v0.76.0 h1:tRwEFYFg+To2TGnibGl8dHBCh8Z/BVNKnXj2O5Za/2M= +github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring v0.76.0/go.mod h1:Rd8YnCqz+2FYsiGmE2DMlaLjQRB4v2jFNnzCt9YY4IM= +github.com/prometheus/client_golang v1.20.0 h1:jBzTZ7B099Rg24tny+qngoynol8LtVYlA2bqx3vEloI= +github.com/prometheus/client_golang v1.20.0/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.3.0/go.mod h1:LDGWKZIo7rky3hgvBe+caln+Dr3dPggB5dvjtD7w9+w= 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.47.0 h1:p5Cz0FNHo7SnWOmWmoRozVcjEp0bIVU8cV7OShpjL1k= -github.com/prometheus/common v0.47.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc= -github.com/prometheus/procfs v0.12.0 h1:jluTpSng7V9hY0O2R9DzzJHYb2xULk9VTR1V1R/k6Bo= -github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo= -github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= -github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= +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.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= +github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= github.com/rogpeppe/go-charset v0.0.0-20180617210344-2471d30d28b4/go.mod h1:qgYeAmZ5ZIpBWTGllZSQnw97Dj+woV0toclVaRGI8pc= -github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= -github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= -github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= +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/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/ruudk/golang-pdf417 v0.0.0-20181029194003-1af4ab5afa58/go.mod h1:6lfFZQK844Gfx8o5WFuvpxWRwnSoipWe/p622j1v06w= -github.com/ruudk/golang-pdf417 v0.0.0-20201230142125-a7e3863a1245/go.mod h1:pQAZKsJ8yyVxGRWYNEm9oFB8ieLgKFnamEyDmSA0BRk= github.com/sagikazarmark/locafero v0.6.0 h1:ON7AQg37yzcRPU69mt7gwhFEBwxI6P9T4Qu3N51bwOk= github.com/sagikazarmark/locafero v0.6.0/go.mod h1:77OmuIc6VTraTXKXIs/uvUxKGUXjE1GbemJYHqdNjX0= github.com/sagikazarmark/slog-shim v0.1.0 h1:diDBnUNK9N/354PgrxMywXnAwEr1QZcOr6gto+ugjYE= @@ -1314,24 +529,19 @@ github.com/scylladb/go-set v1.0.2 h1:SkvlMCKhP0wyyct6j+0IHJkBkSZL+TDzZ4E7f7BCcRE github.com/scylladb/go-set v1.0.2/go.mod h1:DkpGd78rljTxKAnTDPFqXSGxvETQnJyuSOQwsHycqfs= github.com/seccomp/libseccomp-golang v0.10.0 h1:aA4bp+/Zzi0BnWZ2F1wgNBs5gTpm+na2rWM6M9YjLpY= github.com/seccomp/libseccomp-golang v0.10.0/go.mod h1:JA8cRccbGaA1s33RQf7Y1+q9gHmZX1yB/z9WDN1C6fg= -github.com/sergi/go-diff v1.1.0 h1:we8PVUC3FE2uYfodKH/nBHMSetSfHDR6scGdBi+erh0= -github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= +github.com/sergi/go-diff v1.2.0 h1:XU+rvMAioB0UC3q1MFrIQy4Vo5/4VsRDQQXHsEya6xQ= +github.com/sergi/go-diff v1.2.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= -github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= -github.com/smartystreets/assertions v1.13.0 h1:Dx1kYM01xsSqKPno3aqLnrwac2LetPvN23diwyr69Qs= -github.com/smartystreets/assertions v1.13.0/go.mod h1:wDmR7qL282YbGsPy6H/yAsesrxfxaaSlJazyFLYVFx8= -github.com/smartystreets/goconvey v1.6.4 h1:fv0U8FUIMPNf1L9lnHLvLhgicrIVChEkdzIKYqbNC9s= -github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= +github.com/smarty/assertions v1.15.0 h1:cR//PqUBUiQRakZWqBiFFQ9wb8emQGDb0HeGdqGByCY= +github.com/smarty/assertions v1.15.0/go.mod h1:yABtdzeQs6l1brC900WlRNwj6ZR55d7B+E8C6HtKdec= +github.com/smartystreets/goconvey v1.8.1 h1:qGjIddxOk4grTu9JPOU31tVfq3cNdBlNa5sSznIX1xY= +github.com/smartystreets/goconvey v1.8.1/go.mod h1:+/u4qLyY6x1jReYOp7GOM2FSt8aP9CzCZL03bI28W60= github.com/soheilhy/cmux v0.1.5 h1:jjzc5WVemNEDTLwv9tlmemhC73tI08BNOIGwBOo10Js= github.com/soheilhy/cmux v0.1.5/go.mod h1:T7TcVDs9LWfQgPlPsdngu6I6QIoyIFZDDC6sNE1GqG0= github.com/sourcegraph/conc v0.3.0 h1:OQTbbt6P72L20UqAkXXuLOj79LfEanQ+YQFNpLA9ySo= github.com/sourcegraph/conc v0.3.0/go.mod h1:Sdozi7LEKbFPqYX2/J+iBAM6HpqSLTASQIKqDmF7Mt0= -github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= -github.com/spf13/afero v1.3.3/go.mod h1:5KUK8ByomD5Ti5Artl0RtHeI5pTF7MIDuXL3yY520V4= -github.com/spf13/afero v1.6.0/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I= -github.com/spf13/afero v1.9.2/go.mod h1:iUV7ddyEEZPO5gA3zD4fJt6iStLlL+Lg4m2cihcDf8Y= github.com/spf13/afero v1.11.0 h1:WJQKhtpdm3v2IzqG8VMqrr6Rf3UYpEF239Jy9wNepM8= github.com/spf13/afero v1.11.0/go.mod h1:GH9Y3pIexgf1MTIWtNGyogA5MwRIDXGUr+hbWNoBjkY= github.com/spf13/cast v1.7.0 h1:ntdiHjuueXFgm5nzDRdOS4yfT43P5Fnud6DH50rz/7w= @@ -1372,43 +582,33 @@ github.com/vishvananda/netlink v1.2.1-beta.2.0.20240713210050-d13535d71ed3 h1:z7 github.com/vishvananda/netlink v1.2.1-beta.2.0.20240713210050-d13535d71ed3/go.mod h1:i6NetklAujEcC6fK0JPjT8qSwWyO0HLn4UKG+hGqeJs= github.com/vishvananda/netns v0.0.4 h1:Oeaw1EM2JMxD51g9uhtC0D7erkIjgmj8+JZc26m1YX8= github.com/vishvananda/netns v0.0.4/go.mod h1:SpkAiCQRtJ6TvvxPnOSyH3BMl6unz3xZlaprSwhNNJM= +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/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 h1:eY9dn8+vbi4tKz5Qo6v2eYzo7kUS51QINcR5jNpbZS8= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= github.com/xlab/treeprint v1.2.0 h1:HzHnuAF1plUN2zGlAFHbSQP2qJ0ZAD3XF5XD7OesXRQ= github.com/xlab/treeprint v1.2.0/go.mod h1:gj5Gd3gPdKtR1ikdDK6fnFLdmIS0X30kTTuNd/WEJu0= -github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= -github.com/zeebo/assert v1.3.0/go.mod h1:Pq9JiuJQpG8JLJdtkwrJESF0Foym2/D9XMU5ciN/wJ0= -github.com/zeebo/xxh3 v1.0.2/go.mod h1:5NWz9Sef7zIDm2JHfFlcQvNekmcEl9ekUZQQKCYaDcA= go.etcd.io/bbolt v1.3.10 h1:+BqfJTcCzTItrop8mq/lbzL8wSGtj94UO/3U31shqG0= go.etcd.io/bbolt v1.3.10/go.mod h1:bK3UQLPJZly7IlNmV7uVHJDxfe5aK9Ll93e/74Y9oEQ= go.etcd.io/etcd/api/v3 v3.5.15 h1:3KpLJir1ZEBrYuV2v+Twaa/e2MdDCEZ/70H+lzEiwsk= go.etcd.io/etcd/api/v3 v3.5.15/go.mod h1:N9EhGzXq58WuMllgH9ZvnEr7SI9pS0k0+DHZezGp7jM= go.etcd.io/etcd/client/pkg/v3 v3.5.15 h1:fo0HpWz/KlHGMCC+YejpiCmyWDEuIpnTDzpJLB5fWlA= go.etcd.io/etcd/client/pkg/v3 v3.5.15/go.mod h1:mXDI4NAOwEiszrHCb0aqfAYNCrZP4e9hRca3d1YK8EU= -go.etcd.io/etcd/client/v2 v2.305.12 h1:0m4ovXYo1CHaA/Mp3X/Fak5sRNIWf01wk/X1/G3sGKI= -go.etcd.io/etcd/client/v2 v2.305.12/go.mod h1:aQ/yhsxMu+Oht1FOupSr60oBvcS9cKXHrzBpDsPTf9E= +go.etcd.io/etcd/client/v2 v2.305.13 h1:RWfV1SX5jTU0lbCvpVQe3iPQeAHETWdOTb6pxhd77C8= +go.etcd.io/etcd/client/v2 v2.305.13/go.mod h1:iQnL7fepbiomdXMb3om1rHq96htNNGv2sJkEcZGDRRg= go.etcd.io/etcd/client/v3 v3.5.15 h1:23M0eY4Fd/inNv1ZfU3AxrbbOdW79r9V9Rl62Nm6ip4= go.etcd.io/etcd/client/v3 v3.5.15/go.mod h1:CLSJxrYjvLtHsrPKsy7LmZEE+DK2ktfd2bN4RhBMwlU= -go.etcd.io/etcd/pkg/v3 v3.5.10 h1:WPR8K0e9kWl1gAhB5A7gEa5ZBTNkT9NdNWrR8Qpo1CM= -go.etcd.io/etcd/pkg/v3 v3.5.10/go.mod h1:TKTuCKKcF1zxmfKWDkfz5qqYaE3JncKKZPFf8c1nFUs= -go.etcd.io/etcd/raft/v3 v3.5.10 h1:cgNAYe7xrsrn/5kXMSaH8kM/Ky8mAdMqGOxyYwpP0LA= -go.etcd.io/etcd/raft/v3 v3.5.10/go.mod h1:odD6kr8XQXTy9oQnyMPBOr0TVe+gT0neQhElQ6jbGRc= -go.etcd.io/etcd/server/v3 v3.5.10 h1:4NOGyOwD5sUZ22PiWYKmfxqoeh72z6EhYjNosKGLmZg= -go.etcd.io/etcd/server/v3 v3.5.10/go.mod h1:gBplPHfs6YI0L+RpGkTQO7buDbHv5HJGG/Bst0/zIPo= -go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= -go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= -go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= -go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= +go.etcd.io/etcd/pkg/v3 v3.5.13 h1:st9bDWNsKkBNpP4PR1MvM/9NqUPfvYZx/YXegsYEH8M= +go.etcd.io/etcd/pkg/v3 v3.5.13/go.mod h1:N+4PLrp7agI/Viy+dUYpX7iRtSPvKq+w8Y14d1vX+m0= +go.etcd.io/etcd/raft/v3 v3.5.13 h1:7r/NKAOups1YnKcfro2RvGGo2PTuizF/xh26Z2CTAzA= +go.etcd.io/etcd/raft/v3 v3.5.13/go.mod h1:uUFibGLn2Ksm2URMxN1fICGhk8Wu96EfDQyuLhAcAmw= +go.etcd.io/etcd/server/v3 v3.5.13 h1:V6KG+yMfMSqWt+lGnhFpP5z5dRUj1BDRJ5k1fQ9DFok= +go.etcd.io/etcd/server/v3 v3.5.13/go.mod h1:K/8nbsGupHqmr5MkgaZpLlH1QdX1pcNQLAkODy44XcQ= 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/github.com/emicklei/go-restful/otelrestful v0.53.0 h1:wwtQnRJbaVShQGjKomYYjvNoAvgXftwMIPxfY0LwWKY= @@ -1433,9 +633,6 @@ go.opentelemetry.io/otel/sdk v1.28.0 h1:b9d7hIry8yZsgtbmM0DKyPWMMUMlK9NEKuIG4aBq 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 v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= -go.opentelemetry.io/proto/otlp v0.15.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= -go.opentelemetry.io/proto/otlp v0.19.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= 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-20231121155337-90ade8b19d09 h1:hzy3LFnSN8kuQK8h9tHl4ndF6UruMj47OqwqsS+/Ai4= @@ -1453,18 +650,10 @@ go.uber.org/zap v1.18.1/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI= go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.0.0-20220314234659-1baeb1ce4c0b/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw= -golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= -golang.org/x/crypto v0.9.0/go.mod h1:yrmDGqONDYtNj3tH8X9dzUun2m2lzPa9ngI6/RUPGR0= golang.org/x/crypto v0.11.0/go.mod h1:xgJhtzW8F9jGdVFWZESrid1U1bjeNy4zgy5cRr/CIio= golang.org/x/crypto v0.12.0/go.mod h1:NF0Gs7EO5K4qLn+Ylc+fih8BSTeIjAP05siRnAh98yw= golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc= @@ -1474,62 +663,22 @@ golang.org/x/crypto v0.18.0/go.mod h1:R0j02AL6hcrfOiy9T4ZYp/rcWeMxM3L6QYxlOuEG1m golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs= golang.org/x/crypto v0.22.0/go.mod h1:vr6Su+7cTlO45qkww3VDJlzDn0ctJvRgYbC2NvXHt+M= +golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= +golang.org/x/crypto v0.24.0/go.mod h1:Z1PMYSOR5nyMcyAVAIQSKCDwalqy85Aqn1x3Ws4L5DM= +golang.org/x/crypto v0.25.0/go.mod h1:T+wALwcMOSE0kXgUAnPAHqTLW+XHgcELELW8VaDgm/M= golang.org/x/crypto v0.26.0 h1:RrRspgV4mU+YwB4FYnuBoKsUapNIL5cohGAmSH3azsw= golang.org/x/crypto v0.26.0/go.mod h1:GY7jblb9wI+FOo5y8/S2oY4zWP07AkOJ4+jxCqdqn54= -golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190125153040-c74c464bbbf2/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= -golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= -golang.org/x/exp v0.0.0-20191002040644-a1355ae1e2c3/go.mod h1:NOZ3BPKG0ec/BKJQgnvsSFpcKLM5xXVWnvZS97DWHgE= -golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= -golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= -golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= -golang.org/x/exp v0.0.0-20220827204233-334a2380cb91/go.mod h1:cyybsKvd6eL0RnXn6p/Grxp8F5bW7iYuBgsNCOHpMYE= -golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 h1:2dVuKD2vS7b0QIHQbpyTISPd0LeHDbnYEryqj5Q1ug8= golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56/go.mod h1:M4RDyNAINzryxdtnbRXRL/OHtkFuWGRjvuhBJpk2IlY= -golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs= -golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= -golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= -golang.org/x/image v0.0.0-20190910094157-69e4b8554b2a/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= -golang.org/x/image v0.0.0-20200119044424-58c23975cae1/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= -golang.org/x/image v0.0.0-20200430140353-33d19683fad8/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= -golang.org/x/image v0.0.0-20200618115811-c13761719519/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= -golang.org/x/image v0.0.0-20201208152932-35266b937fa6/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= -golang.org/x/image v0.0.0-20210216034530-4410531fe030/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= -golang.org/x/image v0.0.0-20210607152325-775e3b0c77b9/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM= -golang.org/x/image v0.0.0-20210628002857-a66eb6448b8d/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM= -golang.org/x/image v0.0.0-20211028202545-6944b10bf410/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM= -golang.org/x/image v0.0.0-20220302094943-723b81ca9867/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM= +golang.org/x/exp v0.0.0-20240808152545-0cdaa3abc0fa h1:ELnwvuAXPNtPk1TJRuGkI9fDTwym6AYBu0qzT8AcHdI= +golang.org/x/exp v0.0.0-20240808152545-0cdaa3abc0fa/go.mod h1:akd2r19cwCdwSwWeIdzYQGa/EZZyqcOdwWiwj5L5eKQ= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= -golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= -golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= -golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= -golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= -golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= -golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= -golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.5.0/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= golang.org/x/mod v0.5.1/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3/go.mod h1:3p9vT2HGsQu2K1YbXdKPJLVgG5VJdoTa1poYQBtP1AY= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= @@ -1539,10 +688,10 @@ golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.10.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= -golang.org/x/mod v0.13.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/mod v0.14.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.19.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/mod v0.20.0 h1:utOm6MM3R3dnawAiJgn0y+xvuYRsm1RKM/4giyfDgV0= golang.org/x/mod v0.20.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -1552,128 +701,60 @@ golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73r golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= golang.org/x/net v0.0.0-20210421230115-4e50805a0758/go.mod h1:72T/g9IO56b78aLF+1Kcs5dz7/ng1VjMUvfKvpfy+jM= golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= -golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20210813160813-60bc85c4be6d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.0.0-20220325170049-de3da57026de/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.0.0-20220412020605-290c469a71a5/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220425223048-2871e0cb64e4/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.0.0-20220617184016-355a448f1bc9/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.0.0-20220624214902-1bab6f366d9e/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.0.0-20220909164309-bea034e7d591/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= -golang.org/x/net v0.0.0-20221012135044-0b7e1fb9d458/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= -golang.org/x/net v0.0.0-20221014081412-f15817d10f9b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= golang.org/x/net v0.3.0/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE= -golang.org/x/net v0.4.0/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE= golang.org/x/net v0.5.0/go.mod h1:DivGGAXEgPSlEBzxGzZI+ZLohi+xUj054jfeKui00ws= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= -golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns= golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= golang.org/x/net v0.12.0/go.mod h1:zEVYFnQC7m/vmpQFELhcD1EWkZlX69l4oqgmer6hfKA= golang.org/x/net v0.14.0/go.mod h1:PpSgVXXLK0OxS0F31C1/tv6XNguvCrnXIDrFMspZIUI= golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= -golang.org/x/net v0.16.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= golang.org/x/net v0.19.0/go.mod h1:CfAk/cbD4CthTvqiEl8NpboMuiuOYsAr/7NOjZJtv1U= golang.org/x/net v0.20.0/go.mod h1:z8BVo6PvndSri0LbOE3hAn0apkU+1YvI6E70E9jsnvY= golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg= golang.org/x/net v0.24.0/go.mod h1:2Q7sJY5mzlzWjKtYUEXSlBWCdyaioyXzRB2RtU8KVE8= +golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= +golang.org/x/net v0.26.0/go.mod h1:5YKkiSynbBIh3p6iOc/vibscux0x38BZDkn8sCUPxHE= +golang.org/x/net v0.27.0/go.mod h1:dDi0PyhWNoiUOrAS8uXv/vnScO4wnHQO4mj9fn/RytE= golang.org/x/net v0.28.0 h1:a9JDOJc5GMUJ0+UDqmLT86WiEy7iWyIhz8gz8E4e5hE= golang.org/x/net v0.28.0/go.mod h1:yqtgsTWOOnlGLG9GFRrK3++bGOUEkNBoHZc8MEDWPNg= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= -golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210628180205-a41e5a781914/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210805134026-6f1e6394065a/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= -golang.org/x/oauth2 v0.0.0-20220309155454-6242fa91716a/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= -golang.org/x/oauth2 v0.0.0-20220411215720-9780585627b5/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= -golang.org/x/oauth2 v0.0.0-20220608161450-d0670ef3b1eb/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE= -golang.org/x/oauth2 v0.0.0-20220622183110-fd043fe589d2/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE= -golang.org/x/oauth2 v0.0.0-20220822191816-0ebed06d0094/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= -golang.org/x/oauth2 v0.0.0-20220909003341-f21342109be1/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= -golang.org/x/oauth2 v0.0.0-20221006150949-b44042a4b9c1/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= -golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= -golang.org/x/oauth2 v0.4.0/go.mod h1:RznEsdpjGAINPTOF0UH/t+xJ75L18YO3Ho6Pyn+uRec= -golang.org/x/oauth2 v0.5.0/go.mod h1:9/XBHVqLaWO3/BRHs5jbpYCnOZVjj5V0ndyaAM7KB4I= -golang.org/x/oauth2 v0.6.0/go.mod h1:ycmewcwgD4Rpr3eZJLSB4Kyyljb3qDh40vJ8STE5HKw= -golang.org/x/oauth2 v0.7.0/go.mod h1:hPLQkd9LyjfXTiRohC/41GhcFqxisoUQ99sCUOHO9x4= -golang.org/x/oauth2 v0.8.0/go.mod h1:yr7u4HXZRm1R1kBWqr/xKNqewf0plRYoB7sla+BCIXE= -golang.org/x/oauth2 v0.10.0/go.mod h1:kTpgurOux7LqtuxjuyZa4Gj2gdezIt/jQtGnNFfypQI= +golang.org/x/oauth2 v0.21.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= golang.org/x/oauth2 v0.22.0 h1:BzDx2FehcG7jJwgWLELCdmLuxk2i+x9UDpSiss2u0ZA= golang.org/x/oauth2 v0.22.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20220819030929-7fc1605a5dde/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20220929204114-8fcdb60fdcc0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.2.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= -golang.org/x/sync v0.4.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= golang.org/x/sync v0.5.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= @@ -1682,111 +763,59 @@ golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210304124612-50617c2ba197/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210420072515-93ed5bcd2bfe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210514084401-e8d321eab015/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210603125802-9665404d3644/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210816183151-1e6c022a8912/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210908233432-aa78b53d3365/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211007075335-d3039528d8ac/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211124211545-fe61309f8881/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211210111614-af8b64212486/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220128215802-99c3d69c2c27/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220209214540-3681064d5158/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220227234510-4e6760a101f9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220310020820-b874c991c1a5/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220319134239-a9b59b0215f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220328115105-d36c6a25d886/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220422013727-9388b58f7150/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220502124256-b6088ccd6cba/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220610221304-9f5ed59c137d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220615213510-4f61da869c0c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220624220833-87e55d714810/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220829200755-d48e67d00261/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.4.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.9.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.10.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.14.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.19.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.22.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.23.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.24.0 h1:Twjiwq9dn6R1fQcyiK+wQyHWfaz/BJB+YIpzU/Cv3Xg= golang.org/x/sys v0.24.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/telemetry v0.0.0-20240208230135-b75ee8823808/go.mod h1:KG1lNk5ZFNssSZLrpVb4sMXKMpGwGXOxSG3rnu2gZQQ= golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2/go.mod h1:TeRTkGYfJXctD9OcfyVLyj2J3IxLnKwHJR8f4D8a3YE= +golang.org/x/telemetry v0.0.0-20240521205824-bda55230c457/go.mod h1:pRgIJT+bRLFKnoM1ldnzKoxTIn14Yxz928LQRYYgIN0= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= @@ -1795,7 +824,6 @@ golang.org/x/term v0.3.0/go.mod h1:q750SLmJuPmVoN1blW3UFBPREJfb1KmY3vwxfr+nFDA= golang.org/x/term v0.4.0/go.mod h1:9P2UbLfCdcvo3p/nzKvsmas4TnlujnuoV9hGgYzW1lQ= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= -golang.org/x/term v0.7.0/go.mod h1:P32HKFT3hSsZrRxla30E9HqToFYAQPCMs/zFMBUFqPY= golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= golang.org/x/term v0.10.0/go.mod h1:lpqdcUyK/oCiQxvxVrppt5ggO2KCZ5QblwqPnfZ6d5o= golang.org/x/term v0.11.0/go.mod h1:zC9APTIj3jG3FdV/Ons+XE1riIZXG4aZ4GTHiPZJPIU= @@ -1806,18 +834,15 @@ golang.org/x/term v0.16.0/go.mod h1:yn7UURbUtPyrVJPGPq404EukNFxcm/foM+bV/bfcDsY= golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= golang.org/x/term v0.18.0/go.mod h1:ILwASektA3OnRv7amZ1xhE/KTR+u50pbXfZ03+6Nx58= golang.org/x/term v0.19.0/go.mod h1:2CuTdWZ7KHSQwUzKva0cbMg6q2DMI3Mmxp+gKJbskEk= +golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY= +golang.org/x/term v0.21.0/go.mod h1:ooXLefLobQVslOqselCNF4SxFAaoS6KujMbsGzSDmX0= +golang.org/x/term v0.22.0/go.mod h1:F3qCibpT5AMpCRfhfT53vVJwhLtIVHhB9XDjfFvnMI4= golang.org/x/term v0.23.0 h1:F6D4vR+EHoL9/sWAWgAR1H2DcHr4PareCbAaCo1RpuU= golang.org/x/term v0.23.0/go.mod h1:DgV24QBUrK6jhZXl+20l6UWznPlwAHm1Q1mGHtydmSk= -golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.5.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.6.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= @@ -1828,84 +853,30 @@ golang.org/x/text v0.11.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.12.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI= golang.org/x/text v0.17.0 h1:XtiM5bkSOt+ewxlOE/aE/AKEHibwj/6gvWMl9Rsh0Qc= golang.org/x/text v0.17.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= -golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20200416051211-89c76fbcd5d1/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20220922220347-f3bd1da661af/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.1.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.6.0 h1:eTDhh4ZXt5Qf0augr54TN6suAUudPcawVZeIAPU7D4U= golang.org/x/time v0.6.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= -golang.org/x/tools v0.0.0-20180525024113-a5b4c53f6e8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190206041539-40960b6deb8e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20190927191325-030b2cf1153e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= -golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= -golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= -golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200505023115-26f46d2f7ef8/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= -golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201124115921-2c860bdd6e78/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20210108195828-e2f9c7f1fc8e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.9/go.mod h1:nABZi5QlRsZVlzPpHl034qft6wpY4eDcsTt5AaioBiU= golang.org/x/tools v0.1.10/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.2.0/go.mod h1:y4OqIKeOV/fWJetJ8bXPU1sEVniLMIyDAZWeHdV+NTA= -golang.org/x/tools v0.3.0/go.mod h1:/rWhSS2+zyEVwoJf8YAX6L2f0ntZ7Kn/mGgAWcipA5k= golang.org/x/tools v0.4.0/go.mod h1:UE5sM2OK9E/d67R0ANs2xJizIymRP5gJU295PvKXxjQ= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s= @@ -1913,297 +884,40 @@ golang.org/x/tools v0.9.1/go.mod h1:owI94Op576fPu3cIGQeHs3joujW/2Oc6MtlxbF5dfNc= golang.org/x/tools v0.9.3/go.mod h1:owI94Op576fPu3cIGQeHs3joujW/2Oc6MtlxbF5dfNc= golang.org/x/tools v0.12.0/go.mod h1:Sc0INKfu04TlqNoRA1hgpFZbhYXHPr4V5DzpSBTPqQM= golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= -golang.org/x/tools v0.14.0/go.mod h1:uYBEerGOWcJyEORxN+Ek8+TT266gXkNlHdJBwexUsBg= golang.org/x/tools v0.16.1/go.mod h1:kYVVN6I1mBNoB1OX+noeBjbRk4IUEPa7JJ+TJMEooJ0= golang.org/x/tools v0.17.0/go.mod h1:xsh6VxdV005rRVaS6SSAf9oiAqljS7UZUacMZ8Bnsps= -golang.org/x/tools v0.18.0/go.mod h1:GL7B4CwcLLeo59yx/9UWWuNOW1n3VZ4f5axWfML7Lcg= golang.org/x/tools v0.20.0/go.mod h1:WvitBU7JJf6A4jOdg4S1tviW9bhUxkgeCui/0JHctQg= +golang.org/x/tools v0.21.0/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= +golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= +golang.org/x/tools v0.23.0/go.mod h1:pnu6ufv6vQkll6szChhK3C3L/ruaIv5eBeztNG8wtsI= golang.org/x/tools v0.24.0 h1:J1shsA93PJUEVaUSaay7UXAyE8aimq3GW0pjlolpa24= golang.org/x/tools v0.24.0/go.mod h1:YhNqVBIfWHdzvTLs0d8LCuMhkKUgSUKldakyV7W/WDQ= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= -golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= -golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= gomodules.xyz/jsonpatch/v2 v2.4.0 h1:Ci3iUJyx9UeRx7CeFN8ARgGbkESwJK+KB9lLcWxY/Zw= gomodules.xyz/jsonpatch/v2 v2.4.0/go.mod h1:AH3dM2RI6uoBZxn3LVrfvJ3E0/9dG4cSrbuBJT4moAY= -gonum.org/v1/gonum v0.0.0-20180816165407-929014505bf4/go.mod h1:Y+Yx5eoAFn32cQvJDxZx5Dpnq+c3wtXuadVZAcxbbBo= -gonum.org/v1/gonum v0.8.2/go.mod h1:oe/vMfY3deqTw+1EZJhuvEW2iwGF1bW9wwu7XCu0+v0= -gonum.org/v1/gonum v0.9.3/go.mod h1:TZumC3NeyVQskjXqmyWt4S3bINhy7B4eYwW69EbyX+0= -gonum.org/v1/gonum v0.11.0/go.mod h1:fSG4YDCxxUZQJ7rKsQrj0gMOg00Il0Z96/qMA4bVQhA= -gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw= -gonum.org/v1/plot v0.0.0-20190515093506-e2840ee46a6b/go.mod h1:Wt8AAjI+ypCyYX3nZBvf6cAIx93T+c/OS2HFAYskSZc= -gonum.org/v1/plot v0.9.0/go.mod h1:3Pcqqmp6RHvJI72kgb8fThyUnav364FOsdDo2aGW5lY= -gonum.org/v1/plot v0.10.1/go.mod h1:VZW5OlhkL1mysU9vaqNHnsy86inf6Ot+jB3r+BczCEo= -google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= -google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= -google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= -google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= -google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= -google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= -google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= -google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= -google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= -google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE= -google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8= -google.golang.org/api v0.41.0/go.mod h1:RkxM5lITDfTzmyKFPt+wGrCJbVfniCr2ool8kTBzRTU= -google.golang.org/api v0.43.0/go.mod h1:nQsDGjRXMo4lvh5hP0TKqF244gqhGcr/YSIykhUk/94= -google.golang.org/api v0.47.0/go.mod h1:Wbvgpq1HddcWVtzsVLyfLp8lDg6AA241LmgIL59tHXo= -google.golang.org/api v0.48.0/go.mod h1:71Pr1vy+TAZRPkPs/xlCf5SsU8WjuAWv1Pfjbtukyy4= -google.golang.org/api v0.50.0/go.mod h1:4bNT5pAuq5ji4SRZm+5QIkjny9JAyVD/3gaSihNefaw= -google.golang.org/api v0.51.0/go.mod h1:t4HdrdoNgyN5cbEfm7Lum0lcLDLiise1F8qDKX00sOU= -google.golang.org/api v0.54.0/go.mod h1:7C4bFFOvVDGXjfDTAsgGwDgAxRDeQ4X8NvUedIt6z3k= -google.golang.org/api v0.55.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= -google.golang.org/api v0.56.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= -google.golang.org/api v0.57.0/go.mod h1:dVPlbZyBo2/OjBpmvNdpn2GRm6rPy75jyU7bmhdrMgI= -google.golang.org/api v0.61.0/go.mod h1:xQRti5UdCmoCEqFxcz93fTl338AVqDgyaDRuOZ3hg9I= -google.golang.org/api v0.63.0/go.mod h1:gs4ij2ffTRXwuzzgJl/56BdwJaA194ijkfn++9tDuPo= -google.golang.org/api v0.67.0/go.mod h1:ShHKP8E60yPsKNw/w8w+VYaj9H6buA5UqDp8dhbQZ6g= -google.golang.org/api v0.70.0/go.mod h1:Bs4ZM2HGifEvXwd50TtW70ovgJffJYw2oRCOFU/SkfA= -google.golang.org/api v0.71.0/go.mod h1:4PyU6e6JogV1f9eA4voyrTY2batOLdgZ5qZ5HOCc4j8= -google.golang.org/api v0.74.0/go.mod h1:ZpfMZOVRMywNyvJFeqL9HRWBgAuRfSjJFpe9QtRRyDs= -google.golang.org/api v0.75.0/go.mod h1:pU9QmyHLnzlpar1Mjt4IbapUCy8J+6HD6GeELN69ljA= -google.golang.org/api v0.77.0/go.mod h1:pU9QmyHLnzlpar1Mjt4IbapUCy8J+6HD6GeELN69ljA= -google.golang.org/api v0.78.0/go.mod h1:1Sg78yoMLOhlQTeF+ARBoytAcH1NNyyl390YMy6rKmw= -google.golang.org/api v0.80.0/go.mod h1:xY3nI94gbvBrE0J6NHXhxOmW97HG7Khjkku6AFB3Hyg= -google.golang.org/api v0.84.0/go.mod h1:NTsGnUFJMYROtiquksZHBWtHfeMC7iYthki7Eq3pa8o= -google.golang.org/api v0.85.0/go.mod h1:AqZf8Ep9uZ2pyTvgL+x0D3Zt0eoT9b5E8fmzfu6FO2g= -google.golang.org/api v0.89.0/go.mod h1:+Sem1dnrKlrXMR/X0bPnMWyluQe4RsNoYfmNLhOIkzw= -google.golang.org/api v0.90.0/go.mod h1:+Sem1dnrKlrXMR/X0bPnMWyluQe4RsNoYfmNLhOIkzw= -google.golang.org/api v0.93.0/go.mod h1:+Sem1dnrKlrXMR/X0bPnMWyluQe4RsNoYfmNLhOIkzw= -google.golang.org/api v0.95.0/go.mod h1:eADj+UBuxkh5zlrSntJghuNeg8HwQ1w5lTKkuqaETEI= -google.golang.org/api v0.96.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= -google.golang.org/api v0.97.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= -google.golang.org/api v0.98.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= -google.golang.org/api v0.99.0/go.mod h1:1YOf74vkVndF7pG6hIHuINsM7eWwpVTAfNMNiL91A08= -google.golang.org/api v0.100.0/go.mod h1:ZE3Z2+ZOr87Rx7dqFsdRQkRBk36kDtp/h+QpHbB7a70= -google.golang.org/api v0.102.0/go.mod h1:3VFl6/fzoA+qNuS1N1/VfXY4LjoXN/wzeIp7TweWwGo= -google.golang.org/api v0.103.0/go.mod h1:hGtW6nK1AC+d9si/UBhw8Xli+QMOf6xyNAyJw4qU9w0= -google.golang.org/api v0.106.0/go.mod h1:2Ts0XTHNVWxypznxWOYUeI4g3WdP9Pk2Qk58+a/O9MY= -google.golang.org/api v0.107.0/go.mod h1:2Ts0XTHNVWxypznxWOYUeI4g3WdP9Pk2Qk58+a/O9MY= -google.golang.org/api v0.108.0/go.mod h1:2Ts0XTHNVWxypznxWOYUeI4g3WdP9Pk2Qk58+a/O9MY= -google.golang.org/api v0.110.0/go.mod h1:7FC4Vvx1Mooxh8C5HWjzZHcavuS2f6pmJpZx60ca7iI= -google.golang.org/api v0.111.0/go.mod h1:qtFHvU9mhgTJegR31csQ+rwxyUTHOKFqCKWp1J0fdw0= -google.golang.org/api v0.114.0/go.mod h1:ifYI2ZsFK6/uGddGfAD5BMxlnkBqCmqHSDUVi45N5Yg= -google.golang.org/api v0.118.0/go.mod h1:76TtD3vkgmZ66zZzp72bUUklpmQmKlhh6sYtIjYK+5E= -google.golang.org/api v0.122.0/go.mod h1:gcitW0lvnyWjSp9nKxAbdHKIZ6vF4aajGueeslZOyms= -google.golang.org/api v0.124.0/go.mod h1:xu2HQurE5gi/3t1aFCvhPD781p0a3p11sdunTJ2BlP4= -google.golang.org/api v0.126.0/go.mod h1:mBwVAtz+87bEN6CbA1GtZPDOqY2R5ONPqJeIlvyo4Aw= -google.golang.org/api v0.190.0 h1:ASM+IhLY1zljNdLu19W1jTmU6A+gMk6M46Wlur61s+Q= -google.golang.org/api v0.190.0/go.mod h1:QIr6I9iedBLnfqoD6L6Vze1UvS5Hzj5r2aUBOaZnLHo= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= -google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= -google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= -google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= -google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA= -google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= -google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210108203827-ffc7fda8c3d7/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210222152913-aa3ee6e6a81c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210226172003-ab064af71705/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210303154014-9728d6b83eeb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210329143202-679c6ae281ee/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= -google.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= -google.golang.org/genproto v0.0.0-20210513213006-bf773b8c8384/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A= -google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= -google.golang.org/genproto v0.0.0-20210604141403-392c879c8b08/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= -google.golang.org/genproto v0.0.0-20210608205507-b6d2f5bf0d7d/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= -google.golang.org/genproto v0.0.0-20210624195500-8bfb893ecb84/go.mod h1:SzzZ/N+nwJDaO1kznhnlzqS8ocJICar6hYhVyhi++24= -google.golang.org/genproto v0.0.0-20210713002101-d411969a0d9a/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= -google.golang.org/genproto v0.0.0-20210716133855-ce7ef5c701ea/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= -google.golang.org/genproto v0.0.0-20210728212813-7823e685a01f/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= -google.golang.org/genproto v0.0.0-20210805201207-89edb61ffb67/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= -google.golang.org/genproto v0.0.0-20210813162853-db860fec028c/go.mod h1:cFeNkxwySK631ADgubI+/XFU/xp8FD5KIVV4rj8UC5w= -google.golang.org/genproto v0.0.0-20210821163610-241b8fcbd6c8/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210828152312-66f60bf46e71/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210831024726-fe130286e0e2/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210903162649-d08c68adba83/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210909211513-a8c4777a87af/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210924002016-3dee208752a0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211118181313-81c1377c94b1/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211206160659-862468c7d6e0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211208223120-3a66f561d7aa/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211221195035-429b39de9b1c/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20220126215142-9970aeb2e350/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20220207164111-0872dc986b00/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20220218161850-94dd64e39d7c/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= -google.golang.org/genproto v0.0.0-20220222213610-43724f9ea8cf/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= -google.golang.org/genproto v0.0.0-20220304144024-325a89244dc8/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= -google.golang.org/genproto v0.0.0-20220310185008-1973136f34c6/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= -google.golang.org/genproto v0.0.0-20220324131243-acbaeb5b85eb/go.mod h1:hAL49I2IFola2sVEjAn7MEwsja0xp51I0tlGAf9hz4E= -google.golang.org/genproto v0.0.0-20220329172620-7be39ac1afc7/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= -google.golang.org/genproto v0.0.0-20220407144326-9054f6ed7bac/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= -google.golang.org/genproto v0.0.0-20220413183235-5e96e2839df9/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= -google.golang.org/genproto v0.0.0-20220414192740-2d67ff6cf2b4/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= -google.golang.org/genproto v0.0.0-20220421151946-72621c1f0bd3/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= -google.golang.org/genproto v0.0.0-20220429170224-98d788798c3e/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= -google.golang.org/genproto v0.0.0-20220502173005-c8bf987b8c21/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= -google.golang.org/genproto v0.0.0-20220505152158-f39f71e6c8f3/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= -google.golang.org/genproto v0.0.0-20220518221133-4f43b3371335/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= -google.golang.org/genproto v0.0.0-20220523171625-347a074981d8/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= -google.golang.org/genproto v0.0.0-20220608133413-ed9918b62aac/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= -google.golang.org/genproto v0.0.0-20220616135557-88e70c0c3a90/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= -google.golang.org/genproto v0.0.0-20220617124728-180714bec0ad/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= -google.golang.org/genproto v0.0.0-20220624142145-8cd45d7dbd1f/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= -google.golang.org/genproto v0.0.0-20220628213854-d9e0b6570c03/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= -google.golang.org/genproto v0.0.0-20220722212130-b98a9ff5e252/go.mod h1:GkXuJDJ6aQ7lnJcRF+SJVgFdQhypqgl3LB1C9vabdRE= -google.golang.org/genproto v0.0.0-20220801145646-83ce21fca29f/go.mod h1:iHe1svFLAZg9VWz891+QbRMwUv9O/1Ww+/mngYeThbc= -google.golang.org/genproto v0.0.0-20220815135757-37a418bb8959/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= -google.golang.org/genproto v0.0.0-20220817144833-d7fd3f11b9b1/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= -google.golang.org/genproto v0.0.0-20220822174746-9e6da59bd2fc/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= -google.golang.org/genproto v0.0.0-20220829144015-23454907ede3/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= -google.golang.org/genproto v0.0.0-20220829175752-36a9c930ecbf/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= -google.golang.org/genproto v0.0.0-20220913154956-18f8339a66a5/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= -google.golang.org/genproto v0.0.0-20220914142337-ca0e39ece12f/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= -google.golang.org/genproto v0.0.0-20220915135415-7fd63a7952de/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= -google.golang.org/genproto v0.0.0-20220916172020-2692e8806bfa/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= -google.golang.org/genproto v0.0.0-20220919141832-68c03719ef51/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= -google.golang.org/genproto v0.0.0-20220920201722-2b89144ce006/go.mod h1:ht8XFiar2npT/g4vkk7O0WYS1sHOHbdujxbEp7CJWbw= -google.golang.org/genproto v0.0.0-20220926165614-551eb538f295/go.mod h1:woMGP53BroOrRY3xTxlbr8Y3eB/nzAvvFM83q7kG2OI= -google.golang.org/genproto v0.0.0-20220926220553-6981cbe3cfce/go.mod h1:woMGP53BroOrRY3xTxlbr8Y3eB/nzAvvFM83q7kG2OI= -google.golang.org/genproto v0.0.0-20221010155953-15ba04fc1c0e/go.mod h1:3526vdqwhZAwq4wsRUaVG555sVgsNmIjRtO7t/JH29U= -google.golang.org/genproto v0.0.0-20221014173430-6e2ab493f96b/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= -google.golang.org/genproto v0.0.0-20221014213838-99cd37c6964a/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= -google.golang.org/genproto v0.0.0-20221024153911-1573dae28c9c/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s= -google.golang.org/genproto v0.0.0-20221024183307-1bc688fe9f3e/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s= -google.golang.org/genproto v0.0.0-20221027153422-115e99e71e1c/go.mod h1:CGI5F/G+E5bKwmfYo09AXuVN4dD894kIKUFmVbP2/Fo= -google.golang.org/genproto v0.0.0-20221109142239-94d6d90a7d66/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg= -google.golang.org/genproto v0.0.0-20221114212237-e4508ebdbee1/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg= -google.golang.org/genproto v0.0.0-20221117204609-8f9c96812029/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg= -google.golang.org/genproto v0.0.0-20221118155620-16455021b5e6/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg= -google.golang.org/genproto v0.0.0-20221201164419-0e50fba7f41c/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg= -google.golang.org/genproto v0.0.0-20221201204527-e3fa12d562f3/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg= -google.golang.org/genproto v0.0.0-20221202195650-67e5cbc046fd/go.mod h1:cTsE614GARnxrLsqKREzmNYJACSWWpAWdNMwnD7c2BE= -google.golang.org/genproto v0.0.0-20221227171554-f9683d7f8bef/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= -google.golang.org/genproto v0.0.0-20230110181048-76db0878b65f/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= -google.golang.org/genproto v0.0.0-20230112194545-e10362b5ecf9/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= -google.golang.org/genproto v0.0.0-20230113154510-dbe35b8444a5/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= -google.golang.org/genproto v0.0.0-20230123190316-2c411cf9d197/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= -google.golang.org/genproto v0.0.0-20230124163310-31e0e69b6fc2/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= -google.golang.org/genproto v0.0.0-20230125152338-dcaf20b6aeaa/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= -google.golang.org/genproto v0.0.0-20230127162408-596548ed4efa/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= -google.golang.org/genproto v0.0.0-20230209215440-0dfe4f8abfcc/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= -google.golang.org/genproto v0.0.0-20230216225411-c8e22ba71e44/go.mod h1:8B0gmkoRebU8ukX6HP+4wrVQUY1+6PkQ44BSyIlflHA= -google.golang.org/genproto v0.0.0-20230222225845-10f96fb3dbec/go.mod h1:3Dl5ZL0q0isWJt+FVcfpQyirqemEuLAK/iFvg1UP1Hw= -google.golang.org/genproto v0.0.0-20230223222841-637eb2293923/go.mod h1:3Dl5ZL0q0isWJt+FVcfpQyirqemEuLAK/iFvg1UP1Hw= -google.golang.org/genproto v0.0.0-20230303212802-e74f57abe488/go.mod h1:TvhZT5f700eVlTNwND1xoEZQeWTB2RY/65kplwl/bFA= -google.golang.org/genproto v0.0.0-20230306155012-7f2fa6fef1f4/go.mod h1:NWraEVixdDnqcqQ30jipen1STv2r/n24Wb7twVTGR4s= -google.golang.org/genproto v0.0.0-20230320184635-7606e756e683/go.mod h1:NWraEVixdDnqcqQ30jipen1STv2r/n24Wb7twVTGR4s= -google.golang.org/genproto v0.0.0-20230323212658-478b75c54725/go.mod h1:UUQDJDOlWu4KYeJZffbWgBkS1YFobzKbLVfK69pe0Ak= -google.golang.org/genproto v0.0.0-20230330154414-c0448cd141ea/go.mod h1:UUQDJDOlWu4KYeJZffbWgBkS1YFobzKbLVfK69pe0Ak= -google.golang.org/genproto v0.0.0-20230331144136-dcfb400f0633/go.mod h1:UUQDJDOlWu4KYeJZffbWgBkS1YFobzKbLVfK69pe0Ak= -google.golang.org/genproto v0.0.0-20230403163135-c38d8f061ccd/go.mod h1:UUQDJDOlWu4KYeJZffbWgBkS1YFobzKbLVfK69pe0Ak= -google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1/go.mod h1:nKE/iIaLqn2bQwXBg8f1g2Ylh6r5MN5CmZvuzZCgsCU= -google.golang.org/genproto v0.0.0-20230525234025-438c736192d0/go.mod h1:9ExIQyXL5hZrHzQceCwuSYwZZ5QZBazOcprJ5rgs3lY= -google.golang.org/genproto v0.0.0-20230530153820-e85fd2cbaebc/go.mod h1:xZnkP7mREFX5MORlOPEzLMr+90PPZQ2QWzrVTWfAq64= -google.golang.org/genproto v0.0.0-20240805194559-2c9e96a0b5d4 h1:g+rQ3aqOyXK/0qwnC5TGUXnyIeipstP5SsniB9uPJ2c= -google.golang.org/genproto v0.0.0-20240805194559-2c9e96a0b5d4/go.mod h1:7uvplUBj4RjHAxIZ//98LzOvrQ04JBkaixRmCMI29hc= -google.golang.org/genproto/googleapis/api v0.0.0-20230525234020-1aefcd67740a/go.mod h1:ts19tUU+Z0ZShN1y3aPyq2+O3d5FUNNgT6FtOzmrNn8= -google.golang.org/genproto/googleapis/api v0.0.0-20230525234035-dd9d682886f9/go.mod h1:vHYtlOoi6TsQ3Uk2yxR7NI5z8uoV+3pZtR4jmHIkRig= -google.golang.org/genproto/googleapis/api v0.0.0-20230526203410-71b5a4ffd15e/go.mod h1:vHYtlOoi6TsQ3Uk2yxR7NI5z8uoV+3pZtR4jmHIkRig= -google.golang.org/genproto/googleapis/api v0.0.0-20230530153820-e85fd2cbaebc/go.mod h1:vHYtlOoi6TsQ3Uk2yxR7NI5z8uoV+3pZtR4jmHIkRig= -google.golang.org/genproto/googleapis/api v0.0.0-20240805194559-2c9e96a0b5d4 h1:ABEBT/sZ7We8zd7A5f3KO6zMQe+s3901H7l8Whhijt0= -google.golang.org/genproto/googleapis/api v0.0.0-20240805194559-2c9e96a0b5d4/go.mod h1:4+X6GvPs+25wZKbQq9qyAXrwIRExv7w0Ea6MgZLZiDM= -google.golang.org/genproto/googleapis/bytestream v0.0.0-20230530153820-e85fd2cbaebc/go.mod h1:ylj+BE99M198VPbBh6A8d9n3w8fChvyLK3wwBOjXBFA= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230525234015-3fc162c6f38a/go.mod h1:xURIpW9ES5+/GZhnV6beoEtxQrnkRGIfP5VQG2tCBLc= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230525234030-28d5490b6b19/go.mod h1:66JfowdXAEgad5O9NnYcsNPLCPZJD++2L9X0PCMODrA= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230526203410-71b5a4ffd15e/go.mod h1:66JfowdXAEgad5O9NnYcsNPLCPZJD++2L9X0PCMODrA= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230530153820-e85fd2cbaebc/go.mod h1:66JfowdXAEgad5O9NnYcsNPLCPZJD++2L9X0PCMODrA= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240805194559-2c9e96a0b5d4 h1:OsSGQeIIsyOEOimVxLEIL4rwGcnrjOydQaiA2bOnZUM= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240805194559-2c9e96a0b5d4/go.mod h1:Ue6ibwXGpU+dqIcODieyLOcgj7z8+IcskoNIgZxtrFY= +google.golang.org/genproto v0.0.0-20240812133136-8ffd90a71988 h1:CT2Thj5AuPV9phrYMtzX11k+XkzMGfRAet42PmoTATM= +google.golang.org/genproto v0.0.0-20240812133136-8ffd90a71988/go.mod h1:7uvplUBj4RjHAxIZ//98LzOvrQ04JBkaixRmCMI29hc= +google.golang.org/genproto/googleapis/api v0.0.0-20240812133136-8ffd90a71988 h1:+/tmTy5zAieooKIXfzDm9KiA3Bv6JBwriRN9LY+yayk= +google.golang.org/genproto/googleapis/api v0.0.0-20240812133136-8ffd90a71988/go.mod h1:4+X6GvPs+25wZKbQq9qyAXrwIRExv7w0Ea6MgZLZiDM= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240812133136-8ffd90a71988 h1:V71AcdLZr2p8dC9dbOIMCpqi4EmRl8wUwnJzXXLmbmc= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240812133136-8ffd90a71988/go.mod h1:Ue6ibwXGpU+dqIcODieyLOcgj7z8+IcskoNIgZxtrFY= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= -google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= -google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= -google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= -google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= -google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8= -google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.36.1/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.37.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= -google.golang.org/grpc v1.37.1/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= -google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= -google.golang.org/grpc v1.39.0/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= -google.golang.org/grpc v1.39.1/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= -google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= -google.golang.org/grpc v1.40.1/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= -google.golang.org/grpc v1.42.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= -google.golang.org/grpc v1.44.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= -google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= -google.golang.org/grpc v1.46.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= -google.golang.org/grpc v1.46.2/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= -google.golang.org/grpc v1.47.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= -google.golang.org/grpc v1.48.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= -google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= -google.golang.org/grpc v1.50.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= -google.golang.org/grpc v1.50.1/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= -google.golang.org/grpc v1.51.0/go.mod h1:wgNDFcnuBGmxLKI/qn4T+m5BtEBYXJPvibbUPsAIPww= -google.golang.org/grpc v1.52.0/go.mod h1:pu6fVzoFb+NBYNAvQL08ic+lvB2IojljRYuun5vorUY= -google.golang.org/grpc v1.53.0/go.mod h1:OnIrk0ipVdj4N5d9IUoFUx72/VlD7+jUsHwZgwSMQpw= -google.golang.org/grpc v1.54.0/go.mod h1:PUSEXI6iWghWaB6lXM4knEgpJNu2qUcKfDtNci3EC2g= -google.golang.org/grpc v1.55.0/go.mod h1:iYEXKGkEBhg1PjZQvoYEVPTDkHo1/bjTnfwTeGONTY8= google.golang.org/grpc v1.65.0 h1:bs/cUb4lp1G5iImFFd3u5ixQzweKizoZJAwBNLR42lc= google.golang.org/grpc v1.65.0/go.mod h1:WgYC2ypjlB0EiQi6wdKixMqukr6lBc0Vo+oOgjrM5ZQ= -google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= @@ -2212,17 +926,13 @@ google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzi google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= 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.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -google.golang.org/protobuf v1.29.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= +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/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= @@ -2231,12 +941,9 @@ gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8 gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/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/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= -gopkg.in/evanphx/json-patch.v5 v5.9.0 h1:hx1VU2SGj4F8r9b8GUwJLdc8DNO8sy79ZGui0G05GLo= -gopkg.in/evanphx/json-patch.v5 v5.9.0/go.mod h1:/kvTRh1TVm5wuM6OkHxqXtE/1nUZZpihg29RtuIyfvk= +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/gcfg.v1 v1.2.3 h1:m8OOJ4ccYHnx2f4gQwpno8nAX5OGOh7RLaaz0pj3Ogs= -gopkg.in/gcfg.v1 v1.2.3/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o= gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= @@ -2249,10 +956,7 @@ gopkg.in/square/go-jose.v2 v2.6.0 h1:NGk74WTnPKBNUhNzQX7PYcTLUjoq7mzKk2OKbvwk2iI gopkg.in/square/go-jose.v2 v2.6.0/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= -gopkg.in/warnings.v0 v0.1.2 h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME= -gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= @@ -2266,76 +970,66 @@ gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gotest.tools/v3 v3.0.2 h1:kG1BFyqVHuQoVQiR1bWGnfz/fmHvvuiSPIV7rvl360E= gotest.tools/v3 v3.0.2/go.mod h1:3SzNCllyD9/Y+b5r9JIKQ474KzkZyqLqEfYqMsX94Bk= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= -honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -honnef.co/go/tools v0.1.3/go.mod h1:NgwopIslSNH47DimFoV78dnkksY2EFtX0ajyb3K/las= -k8s.io/api v0.30.3 h1:ImHwK9DCsPA9uoU3rVh4QHAHHK5dTSv1nxJUapx8hoQ= -k8s.io/api v0.30.3/go.mod h1:GPc8jlzoe5JG3pb0KJCSLX5oAFIW3/qNJITlDj8BH04= -k8s.io/apiextensions-apiserver v0.30.3 h1:oChu5li2vsZHx2IvnGP3ah8Nj3KyqG3kRSaKmijhB9U= -k8s.io/apiextensions-apiserver v0.30.3/go.mod h1:uhXxYDkMAvl6CJw4lrDN4CPbONkF3+XL9cacCT44kV4= -k8s.io/apimachinery v0.30.3 h1:q1laaWCmrszyQuSQCfNB8cFgCuDAoPszKY4ucAjDwHc= -k8s.io/apimachinery v0.30.3/go.mod h1:iexa2somDaxdnj7bha06bhb43Zpa6eWH8N8dbqVjTUc= -k8s.io/apiserver v0.30.3 h1:QZJndA9k2MjFqpnyYv/PH+9PE0SHhx3hBho4X0vE65g= -k8s.io/apiserver v0.30.3/go.mod h1:6Oa88y1CZqnzetd2JdepO0UXzQX4ZnOekx2/PtEjrOg= -k8s.io/cli-runtime v0.30.3 h1:aG69oRzJuP2Q4o8dm+f5WJIX4ZBEwrvdID0+MXyUY6k= -k8s.io/cli-runtime v0.30.3/go.mod h1:hwrrRdd9P84CXSKzhHxrOivAR9BRnkMt0OeP5mj7X30= -k8s.io/client-go v0.30.3 h1:bHrJu3xQZNXIi8/MoxYtZBBWQQXwy16zqJwloXXfD3k= -k8s.io/client-go v0.30.3/go.mod h1:8d4pf8vYu665/kUbsxWAQ/JDBNWqfFeZnvFiVdmx89U= -k8s.io/cloud-provider v0.30.3 h1:SNWZmllTymOTzIPJuhtZH6il/qVi75dQARRQAm9k6VY= -k8s.io/cloud-provider v0.30.3/go.mod h1:Ax0AVdHnM7tMYnJH1Ycy4SMBD98+4zA+tboUR9eYsY8= -k8s.io/cluster-bootstrap v0.30.3 h1:MgxyxMkpaC6mu0BKWJ8985XCOnKU+eH3Iy+biwtDXRk= -k8s.io/cluster-bootstrap v0.30.3/go.mod h1:h8BoLDfdD7XEEIXy7Bx9FcMzxHwz29jsYYi34bM5DKU= -k8s.io/code-generator v0.30.3/go.mod h1:PFgBiv+miFV7TZYp+RXgROkhA+sWYZ+mtpbMLofMke8= -k8s.io/component-base v0.30.3 h1:Ci0UqKWf4oiwy8hr1+E3dsnliKnkMLZMVbWzeorlk7s= -k8s.io/component-base v0.30.3/go.mod h1:C1SshT3rGPCuNtBs14RmVD2xW0EhRSeLvBh7AGk1quA= -k8s.io/component-helpers v0.30.3 h1:KPc8l0eGx9Wg2OcKc58k9ozNcVcOInAi3NGiuS2xJ/c= -k8s.io/component-helpers v0.30.3/go.mod h1:VOQ7g3q+YbKWwKeACG2BwPv4ftaN8jXYJ5U3xpzuYAE= -k8s.io/controller-manager v0.30.3 h1:QRFGkWWD5gi/KCSU0qxyUoZRbt+BKgiCUXiTD1RO95w= -k8s.io/controller-manager v0.30.3/go.mod h1:F95rjHCOH2WwV9XlVxRo71CtddKLhF3FzE+s1lc7E/0= -k8s.io/cri-api v0.30.3 h1:o7AAGb3645Ik44WkHI0eqUc7JbQVmstlINLlLAtU/rI= -k8s.io/cri-api v0.30.3/go.mod h1://4/umPJSW1ISNSNng4OwjpkvswJOQwU8rnkvO8P+xg= -k8s.io/csi-translation-lib v0.30.3 h1:wBaPWnOi14/vANRIrp8pmbdx/Pgz2QRcroH7wkodezc= -k8s.io/csi-translation-lib v0.30.3/go.mod h1:3AizNZbDttVDH1RO0x1yGEQP74e9Xbfb60IBP1oWO1o= -k8s.io/dynamic-resource-allocation v0.30.3 h1:49aLgEhknKF8gPVhsquJ3ylOnfC8ddxnqVP6y3T+hkM= -k8s.io/dynamic-resource-allocation v0.30.3/go.mod h1:Dj7OzA3pYT/OfN9PvuYt9CH5e5KcjKBRAik8XeG0nB8= +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/cluster-bootstrap v0.31.0 h1:jj5t1PArBPddvDypdNpzqnZQ/+qnGxpJuTF7SX05h1Y= +k8s.io/cluster-bootstrap v0.31.0/go.mod h1:6ujqWFrBV4amKe1ii/6BXgrd57bF/Q3gXebLJdmfSK4= +k8s.io/code-generator v0.31.0/go.mod h1:84y4w3es8rOJOUUP1rLsIiGlO1JuEaPFXQPA9e/K6U0= +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/cri-client v0.31.0 h1:lu+Fq1h9GYIJO0PiWX1tH5KEhbD4H52grWss4CVMlqc= +k8s.io/cri-client v0.31.0/go.mod h1:rAZ0wx1Yqq4XwfL89Hvzl6rCbnkK0k/rm4DuW48O1+I= +k8s.io/csi-translation-lib v0.31.0 h1:5aCBPyFScdhfcWCUj0KDMAi/lDhxK99DF4XcfSnmH1A= +k8s.io/csi-translation-lib v0.31.0/go.mod h1:CM3U0vDm4jfuQpjKkqlJdRDqmAEcLQPm7aoJFjYf668= +k8s.io/dynamic-resource-allocation v0.31.0 h1:zUzbI2d1uUZNleW77L5KQlPWVqHmX6hBsoJvx8AIHUg= +k8s.io/dynamic-resource-allocation v0.31.0/go.mod h1:eDK+MyEeE2m6vihsw7S75lPYr1NkDV3NP6ixm7WvO/0= k8s.io/gengo v0.0.0-20211129171323-c02415ce4185/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= k8s.io/gengo/v2 v2.0.0-20240228010128-51d4e06bde70/go.mod h1:VH3AT8AaQOqiGjMF9p0/IM1Dj+82ZwjfxUP1IxaHE+8= -k8s.io/klog/v2 v2.0.0/go.mod h1:PBfzABfn139FHAV07az/IF9Wp1bkk3vpT2XSJ76fSDE= +k8s.io/gengo/v2 v2.0.0-20240812201722-3b05ca7b6e59/go.mod h1:VH3AT8AaQOqiGjMF9p0/IM1Dj+82ZwjfxUP1IxaHE+8= k8s.io/klog/v2 v2.2.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y= k8s.io/klog/v2 v2.40.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= k8s.io/klog/v2 v2.80.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= -k8s.io/klog/v2 v2.120.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE= 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.30.3 h1:NLg+oN45S2Y3U0WiLRzbS61AY/XrS5JBMZp531Z+Pho= -k8s.io/kms v0.30.3/go.mod h1:GrMurD0qk3G4yNgGcsCEmepqf9KyyIrTXYR2lyUOJC4= -k8s.io/kube-aggregator v0.30.3 h1:hy5zfQ7p6BuJgc/XtGp3GBh2MPfOj6b1n3raKKMHOQE= -k8s.io/kube-aggregator v0.30.3/go.mod h1:2SP0IckvQoOwwZN8lmtWUnTZTgIpwOWvidWtxyqLwuk= -k8s.io/kube-openapi v0.0.0-20240430033511-f0e62f92d13f h1:0LQagt0gDpKqvIkAMPaRGcXawNMouPECM1+F9BVxEaM= -k8s.io/kube-openapi v0.0.0-20240430033511-f0e62f92d13f/go.mod h1:S9tOR0FxgyusSNR+MboCuiDpVWkAifZvaYI1Q2ubgro= -k8s.io/kube-scheduler v0.30.3 h1:Fn2sX+tOvOMkRG6W2kntNAQStIZlr3/X6DfpMcy/rik= -k8s.io/kube-scheduler v0.30.3/go.mod h1:wzEWmB9+4/e+x96n1d1BHuETHHrOxb22ESAtVS/fJts= -k8s.io/kubectl v0.30.3 h1:YIBBvMdTW0xcDpmrOBzcpUVsn+zOgjMYIu7kAq+yqiI= -k8s.io/kubectl v0.30.3/go.mod h1:IcR0I9RN2+zzTRUa1BzZCm4oM0NLOawE6RzlDvd1Fpo= -k8s.io/kubelet v0.30.3 h1:KvGWDdhzD0vEyDyGTCjsDc8D+0+lwRMw3fJbfQgF7ys= -k8s.io/kubelet v0.30.3/go.mod h1:D9or45Vkzcqg55CEiqZ8dVbwP3Ksj7DruEVRS9oq3Ys= -k8s.io/kubernetes v1.30.3 h1:A0qoXI1YQNzrQZiff33y5zWxYHFT/HeZRK98/sRDJI0= -k8s.io/kubernetes v1.30.3/go.mod h1:yPbIk3MhmhGigX62FLJm+CphNtjxqCvAIFQXup6RKS0= -k8s.io/legacy-cloud-providers v0.30.3 h1:6C50kKmsdKNTsQqfy8V6MTbQKlEkR1oJoeh+WrilM4w= -k8s.io/legacy-cloud-providers v0.30.3/go.mod h1:VATC0a8MFqrTeVBCSYnMPhMP83bZA7vaMbE7eA8xSa8= -k8s.io/metrics v0.30.3 h1:gKCpte5zykrOmQhZ8qmsxyJslMdiLN+sqbBfIWNpbGM= -k8s.io/metrics v0.30.3/go.mod h1:W06L2nXRhOwPkFYDJYWdEIS3u6JcJy3ebIPYbndRs6A= -k8s.io/mount-utils v0.30.3 h1:8Z3wSW5+GSvGNtlDhtoZrBCKLMIf5z/9tf8pie+G06s= -k8s.io/mount-utils v0.30.3/go.mod h1:9sCVmwGLcV1MPvbZ+rToMDnl1QcGozy+jBPd0MsQLIo= -k8s.io/pod-security-admission v0.30.3 h1:UDGZWR3ry/XrN/Ki/w7qrp49OwgQsKyh+6xWbexvJi8= -k8s.io/pod-security-admission v0.30.3/go.mod h1:T1EQSOLl9YyDMnXNJfsq2jeci6uoymY0mrRkkKihd98= -k8s.io/sample-apiserver v0.30.3 h1:SGlc1FvY+5CGolD0Qn1iGuhbhBWMUru/kcjQ9ki2iEs= -k8s.io/sample-apiserver v0.30.3/go.mod h1:P4g1Jw2lq2wtCiibqVX3KIRAfXtHpw6pOD/dzwmVG/w= -k8s.io/utils v0.0.0-20230726121419-3b25d923346b/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= +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-20240812233141-91dab695df6f h1:bnWtxXWdAl5bVOCEPoNdvMkyj6cTW3zxHuwKIakuV9w= +k8s.io/kube-openapi v0.0.0-20240812233141-91dab695df6f/go.mod h1:G0W3eI9gG219NHRq3h5uQaRBl4pj4ZpwzRP5ti8y770= +k8s.io/kube-scheduler v0.31.0 h1:5ij/3AwAWGIFgyOtNheZVvj6fl3wzQTHGpnr6s2Ub/w= +k8s.io/kube-scheduler v0.31.0/go.mod h1:QEUZLddwPemiI+No23wF35D7pjkL++mS4ZhBPyG55KU= +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/mount-utils v0.31.0 h1:o+a+n6gyZ7MGc6bIERU3LeFTHbLDBiVReaDpWlJotUE= +k8s.io/mount-utils v0.31.0/go.mod h1:HV/VYBUGqYUj4vt82YltzpWvgv8FPg0G9ItyInT3NPU= +k8s.io/pod-security-admission v0.31.0 h1:z8lTQ1+EZ8aX+xTrDTT2Udt1b9mzci2o2L2O4TUWSUU= +k8s.io/pod-security-admission v0.31.0/go.mod h1:672PutRBAIEOJJljOHDYhXiXrQDDFdB3z7hddN3Pv5c= +k8s.io/sample-apiserver v0.31.0 h1:k7eKJYSeeJxoicDH4JTeHYyeatmK2wrGBgXu8EeUFU8= +k8s.io/sample-apiserver v0.31.0/go.mod h1:3ys3rV1N08ayiT3nfIuwpgwb45q9m3RiX8akyFHyUqg= k8s.io/utils v0.0.0-20240711033017-18e509b52bc8 h1:pUdcCO1Lk/tbT5ztQWOBi5HBgbBP1J8+AsQnQCKsi8A= k8s.io/utils v0.0.0-20240711033017-18e509b52bc8/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= kernel.org/pub/linux/libs/security/libcap/cap v1.2.70 h1:QnLPkuDWWbD5C+3DUA2IUXai5TK6w2zff+MAGccqdsw= @@ -2348,57 +1042,18 @@ kubevirt.io/containerized-data-importer-api v1.58.1 h1:Zbf0pCvxb4fBvtMR6uI2OIJZ4 kubevirt.io/containerized-data-importer-api v1.58.1/go.mod h1:Y/8ETgHS1GjO89bl682DPtQOYEU/1ctPFBz6Sjxm4DM= kubevirt.io/controller-lifecycle-operator-sdk/api v0.0.0-20220329064328-f3cc58c6ed90 h1:QMrd0nKP0BGbnxTqakhDZAUhGKxPiPiN5gSDqKUmGGc= kubevirt.io/controller-lifecycle-operator-sdk/api v0.0.0-20220329064328-f3cc58c6ed90/go.mod h1:018lASpFYBsYN6XwmA2TIrPCx6e0gviTd/ZNtSitKgc= -lukechampine.com/uint128 v1.1.1/go.mod h1:c4eWIwlEGaxC/+H1VguhU4PHXNWDCDMUlWdIWl2j1gk= -lukechampine.com/uint128 v1.2.0/go.mod h1:c4eWIwlEGaxC/+H1VguhU4PHXNWDCDMUlWdIWl2j1gk= -modernc.org/cc/v3 v3.36.0/go.mod h1:NFUHyPn4ekoC/JHeZFfZurN6ixxawE1BnVonP/oahEI= -modernc.org/cc/v3 v3.36.2/go.mod h1:NFUHyPn4ekoC/JHeZFfZurN6ixxawE1BnVonP/oahEI= -modernc.org/cc/v3 v3.36.3/go.mod h1:NFUHyPn4ekoC/JHeZFfZurN6ixxawE1BnVonP/oahEI= -modernc.org/ccgo/v3 v3.0.0-20220428102840-41399a37e894/go.mod h1:eI31LL8EwEBKPpNpA4bU1/i+sKOwOrQy8D87zWUcRZc= -modernc.org/ccgo/v3 v3.0.0-20220430103911-bc99d88307be/go.mod h1:bwdAnOoaIt8Ax9YdWGjxWsdkPcZyRPHqrOvJxaKAKGw= -modernc.org/ccgo/v3 v3.16.4/go.mod h1:tGtX0gE9Jn7hdZFeU88slbTh1UtCYKusWOoCJuvkWsQ= -modernc.org/ccgo/v3 v3.16.6/go.mod h1:tGtX0gE9Jn7hdZFeU88slbTh1UtCYKusWOoCJuvkWsQ= -modernc.org/ccgo/v3 v3.16.8/go.mod h1:zNjwkizS+fIFDrDjIAgBSCLkWbJuHF+ar3QRn+Z9aws= -modernc.org/ccgo/v3 v3.16.9/go.mod h1:zNMzC9A9xeNUepy6KuZBbugn3c0Mc9TeiJO4lgvkJDo= -modernc.org/ccorpus v1.11.6/go.mod h1:2gEUTrWqdpH2pXsmTM1ZkjeSrUWDpjMu2T6m29L/ErQ= -modernc.org/httpfs v1.0.6/go.mod h1:7dosgurJGp0sPaRanU53W4xZYKh14wfzX420oZADeHM= -modernc.org/libc v0.0.0-20220428101251-2d5f3daf273b/go.mod h1:p7Mg4+koNjc8jkqwcoFBJx7tXkpj00G77X7A72jXPXA= -modernc.org/libc v1.16.0/go.mod h1:N4LD6DBE9cf+Dzf9buBlzVJndKr/iJHG97vGLHYnb5A= -modernc.org/libc v1.16.1/go.mod h1:JjJE0eu4yeK7tab2n4S1w8tlWd9MxXLRzheaRnAKymU= -modernc.org/libc v1.16.17/go.mod h1:hYIV5VZczAmGZAnG15Vdngn5HSF5cSkbvfz2B7GRuVU= -modernc.org/libc v1.16.19/go.mod h1:p7Mg4+koNjc8jkqwcoFBJx7tXkpj00G77X7A72jXPXA= -modernc.org/libc v1.17.0/go.mod h1:XsgLldpP4aWlPlsjqKRdHPqCxCjISdHfM/yeWC5GyW0= -modernc.org/libc v1.17.1/go.mod h1:FZ23b+8LjxZs7XtFMbSzL/EhPxNbfZbErxEHc7cbD9s= -modernc.org/mathutil v1.2.2/go.mod h1:mZW8CKdRPY1v87qxC/wUdX5O1qDzXMP5TH3wjfpga6E= -modernc.org/mathutil v1.4.1/go.mod h1:mZW8CKdRPY1v87qxC/wUdX5O1qDzXMP5TH3wjfpga6E= -modernc.org/mathutil v1.5.0/go.mod h1:mZW8CKdRPY1v87qxC/wUdX5O1qDzXMP5TH3wjfpga6E= -modernc.org/memory v1.1.1/go.mod h1:/0wo5ibyrQiaoUoH7f9D8dnglAmILJ5/cxZlRECf+Nw= -modernc.org/memory v1.2.0/go.mod h1:/0wo5ibyrQiaoUoH7f9D8dnglAmILJ5/cxZlRECf+Nw= -modernc.org/memory v1.2.1/go.mod h1:PkUhL0Mugw21sHPeskwZW4D6VscE/GQJOnIpCnW6pSU= -modernc.org/opt v0.1.1/go.mod h1:WdSiB5evDcignE70guQKxYUl14mgWtbClRi5wmkkTX0= -modernc.org/opt v0.1.3/go.mod h1:WdSiB5evDcignE70guQKxYUl14mgWtbClRi5wmkkTX0= -modernc.org/sqlite v1.18.1/go.mod h1:6ho+Gow7oX5V+OiOQ6Tr4xeqbx13UZ6t+Fw9IRUG4d4= -modernc.org/strutil v1.1.1/go.mod h1:DE+MQQ/hjKBZS2zNInV5hhcipt5rLPWkmpbGeW5mmdw= -modernc.org/strutil v1.1.3/go.mod h1:MEHNA7PdEnEwLvspRMtWTNnp2nnyvMfkimT1NKNAGbw= -modernc.org/tcl v1.13.1/go.mod h1:XOLfOwzhkljL4itZkK6T72ckMgvj0BDsnKNdZVUOecw= -modernc.org/token v1.0.0/go.mod h1:UGzOrNV1mAFSEB63lOFHIpNRUVMvYTc6yu1SMY/XTDM= -modernc.org/z v1.5.1/go.mod h1:eWFB510QWW5Th9YGZT81s+LwvaAs3Q2yr4sP0rmLkv8= -rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= -rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4= -rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= -rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= -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.16.0 h1:/zAR4FOQDCkgSDmVzV2uiFbuy9bhu3jEzthrHCuvm1g= -sigs.k8s.io/kustomize/api v0.16.0/go.mod h1:MnFZ7IP2YqVyVwMWoRxPtgl/5hpA+eCCrQR/866cm5c= -sigs.k8s.io/kustomize/kyaml v0.16.0 h1:6J33uKSoATlKZH16unr2XOhDI+otoe2sR3M8PDzW3K0= -sigs.k8s.io/kustomize/kyaml v0.16.0/go.mod h1:xOK/7i+vmE14N2FdFyugIshB8eF6ALpy7jI87Q2nRh4= +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/kyaml v0.17.1 h1:TnxYQxFXzbmNG6gOINgGWQt09GghzgTP6mIurOgrLCQ= +sigs.k8s.io/kustomize/kyaml v0.17.1/go.mod h1:9V0mCjIEYjlXuCdYsSXvyoy2BTsLESH7TlGV81S282U= sigs.k8s.io/network-policy-api v0.1.5 h1:xyS7VAaM9EfyB428oFk7WjWaCK6B129i+ILUF4C8l6E= sigs.k8s.io/network-policy-api v0.1.5/go.mod h1:D7Nkr43VLNd7iYryemnj8qf0N/WjBzTZDxYA+g4u1/Y= -sigs.k8s.io/structured-merge-diff/v4 v4.2.3/go.mod h1:qjx8mGObPmV2aSZepjQjbmb2ihdVs8cGKBraizNC69E= 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.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc= diff --git a/hack/update-codegen-docker.sh b/hack/update-codegen-docker.sh index 8748ae8b9f3..8e97f09e3eb 100755 --- a/hack/update-codegen-docker.sh +++ b/hack/update-codegen-docker.sh @@ -7,7 +7,7 @@ GOPROXY=${GOPROXY:-"https://goproxy.cn"} docker run -it --rm \ -v ${PWD}:/app \ -e GOPROXY=${GOPROXY} \ - ghcr.io/zhangzujian/kube-code-generator:v0.2.2 \ + ghcr.io/zhangzujian/kube-code-generator:v0.2.3 \ --boilerplate-path ./hack/boilerplate.go.txt \ --apis-in ./pkg/apis \ --go-gen-out ./pkg/client diff --git a/pkg/client/clientset/versioned/fake/clientset_generated.go b/pkg/client/clientset/versioned/fake/clientset_generated.go index 164d4abfa66..79e27b9c312 100644 --- a/pkg/client/clientset/versioned/fake/clientset_generated.go +++ b/pkg/client/clientset/versioned/fake/clientset_generated.go @@ -31,8 +31,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/versioned/typed/kubeovn/v1/fake/fake_ip.go b/pkg/client/clientset/versioned/typed/kubeovn/v1/fake/fake_ip.go index 25a7ec10775..7c00d8df67d 100644 --- a/pkg/client/clientset/versioned/typed/kubeovn/v1/fake/fake_ip.go +++ b/pkg/client/clientset/versioned/typed/kubeovn/v1/fake/fake_ip.go @@ -40,20 +40,22 @@ var ipsKind = v1.SchemeGroupVersion.WithKind("IP") // Get takes name of the iP, and returns the corresponding iP object, and an error if there is any. func (c *FakeIPs) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.IP, err error) { + emptyResult := &v1.IP{} obj, err := c.Fake. - Invokes(testing.NewRootGetAction(ipsResource, name), &v1.IP{}) + Invokes(testing.NewRootGetActionWithOptions(ipsResource, name, options), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } return obj.(*v1.IP), err } // List takes label and field selectors, and returns the list of IPs that match those selectors. func (c *FakeIPs) List(ctx context.Context, opts metav1.ListOptions) (result *v1.IPList, err error) { + emptyResult := &v1.IPList{} obj, err := c.Fake. - Invokes(testing.NewRootListAction(ipsResource, ipsKind, opts), &v1.IPList{}) + Invokes(testing.NewRootListActionWithOptions(ipsResource, ipsKind, opts), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } label, _, _ := testing.ExtractFromListOptions(opts) @@ -72,25 +74,27 @@ func (c *FakeIPs) List(ctx context.Context, opts metav1.ListOptions) (result *v1 // Watch returns a watch.Interface that watches the requested iPs. func (c *FakeIPs) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) { return c.Fake. - InvokesWatch(testing.NewRootWatchAction(ipsResource, opts)) + InvokesWatch(testing.NewRootWatchActionWithOptions(ipsResource, opts)) } // Create takes the representation of a iP and creates it. Returns the server's representation of the iP, and an error, if there is any. func (c *FakeIPs) Create(ctx context.Context, iP *v1.IP, opts metav1.CreateOptions) (result *v1.IP, err error) { + emptyResult := &v1.IP{} obj, err := c.Fake. - Invokes(testing.NewRootCreateAction(ipsResource, iP), &v1.IP{}) + Invokes(testing.NewRootCreateActionWithOptions(ipsResource, iP, opts), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } return obj.(*v1.IP), err } // Update takes the representation of a iP and updates it. Returns the server's representation of the iP, and an error, if there is any. func (c *FakeIPs) Update(ctx context.Context, iP *v1.IP, opts metav1.UpdateOptions) (result *v1.IP, err error) { + emptyResult := &v1.IP{} obj, err := c.Fake. - Invokes(testing.NewRootUpdateAction(ipsResource, iP), &v1.IP{}) + Invokes(testing.NewRootUpdateActionWithOptions(ipsResource, iP, opts), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } return obj.(*v1.IP), err } @@ -104,7 +108,7 @@ func (c *FakeIPs) Delete(ctx context.Context, name string, opts metav1.DeleteOpt // DeleteCollection deletes a collection of objects. func (c *FakeIPs) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error { - action := testing.NewRootDeleteCollectionAction(ipsResource, listOpts) + action := testing.NewRootDeleteCollectionActionWithOptions(ipsResource, opts, listOpts) _, err := c.Fake.Invokes(action, &v1.IPList{}) return err @@ -112,10 +116,11 @@ func (c *FakeIPs) DeleteCollection(ctx context.Context, opts metav1.DeleteOption // Patch applies the patch and returns the patched iP. func (c *FakeIPs) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.IP, err error) { + emptyResult := &v1.IP{} obj, err := c.Fake. - Invokes(testing.NewRootPatchSubresourceAction(ipsResource, name, pt, data, subresources...), &v1.IP{}) + Invokes(testing.NewRootPatchSubresourceActionWithOptions(ipsResource, name, pt, data, opts, subresources...), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } return obj.(*v1.IP), err } diff --git a/pkg/client/clientset/versioned/typed/kubeovn/v1/fake/fake_ippool.go b/pkg/client/clientset/versioned/typed/kubeovn/v1/fake/fake_ippool.go index eccc9af7bae..5579395e76b 100644 --- a/pkg/client/clientset/versioned/typed/kubeovn/v1/fake/fake_ippool.go +++ b/pkg/client/clientset/versioned/typed/kubeovn/v1/fake/fake_ippool.go @@ -40,20 +40,22 @@ var ippoolsKind = v1.SchemeGroupVersion.WithKind("IPPool") // Get takes name of the iPPool, and returns the corresponding iPPool object, and an error if there is any. func (c *FakeIPPools) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.IPPool, err error) { + emptyResult := &v1.IPPool{} obj, err := c.Fake. - Invokes(testing.NewRootGetAction(ippoolsResource, name), &v1.IPPool{}) + Invokes(testing.NewRootGetActionWithOptions(ippoolsResource, name, options), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } return obj.(*v1.IPPool), err } // List takes label and field selectors, and returns the list of IPPools that match those selectors. func (c *FakeIPPools) List(ctx context.Context, opts metav1.ListOptions) (result *v1.IPPoolList, err error) { + emptyResult := &v1.IPPoolList{} obj, err := c.Fake. - Invokes(testing.NewRootListAction(ippoolsResource, ippoolsKind, opts), &v1.IPPoolList{}) + Invokes(testing.NewRootListActionWithOptions(ippoolsResource, ippoolsKind, opts), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } label, _, _ := testing.ExtractFromListOptions(opts) @@ -72,36 +74,39 @@ func (c *FakeIPPools) List(ctx context.Context, opts metav1.ListOptions) (result // Watch returns a watch.Interface that watches the requested iPPools. func (c *FakeIPPools) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) { return c.Fake. - InvokesWatch(testing.NewRootWatchAction(ippoolsResource, opts)) + InvokesWatch(testing.NewRootWatchActionWithOptions(ippoolsResource, opts)) } // Create takes the representation of a iPPool and creates it. Returns the server's representation of the iPPool, and an error, if there is any. func (c *FakeIPPools) Create(ctx context.Context, iPPool *v1.IPPool, opts metav1.CreateOptions) (result *v1.IPPool, err error) { + emptyResult := &v1.IPPool{} obj, err := c.Fake. - Invokes(testing.NewRootCreateAction(ippoolsResource, iPPool), &v1.IPPool{}) + Invokes(testing.NewRootCreateActionWithOptions(ippoolsResource, iPPool, opts), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } return obj.(*v1.IPPool), err } // Update takes the representation of a iPPool and updates it. Returns the server's representation of the iPPool, and an error, if there is any. func (c *FakeIPPools) Update(ctx context.Context, iPPool *v1.IPPool, opts metav1.UpdateOptions) (result *v1.IPPool, err error) { + emptyResult := &v1.IPPool{} obj, err := c.Fake. - Invokes(testing.NewRootUpdateAction(ippoolsResource, iPPool), &v1.IPPool{}) + Invokes(testing.NewRootUpdateActionWithOptions(ippoolsResource, iPPool, opts), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } return obj.(*v1.IPPool), 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 *FakeIPPools) UpdateStatus(ctx context.Context, iPPool *v1.IPPool, opts metav1.UpdateOptions) (*v1.IPPool, error) { +func (c *FakeIPPools) UpdateStatus(ctx context.Context, iPPool *v1.IPPool, opts metav1.UpdateOptions) (result *v1.IPPool, err error) { + emptyResult := &v1.IPPool{} obj, err := c.Fake. - Invokes(testing.NewRootUpdateSubresourceAction(ippoolsResource, "status", iPPool), &v1.IPPool{}) + Invokes(testing.NewRootUpdateSubresourceActionWithOptions(ippoolsResource, "status", iPPool, opts), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } return obj.(*v1.IPPool), err } @@ -115,7 +120,7 @@ func (c *FakeIPPools) Delete(ctx context.Context, name string, opts metav1.Delet // DeleteCollection deletes a collection of objects. func (c *FakeIPPools) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error { - action := testing.NewRootDeleteCollectionAction(ippoolsResource, listOpts) + action := testing.NewRootDeleteCollectionActionWithOptions(ippoolsResource, opts, listOpts) _, err := c.Fake.Invokes(action, &v1.IPPoolList{}) return err @@ -123,10 +128,11 @@ func (c *FakeIPPools) DeleteCollection(ctx context.Context, opts metav1.DeleteOp // Patch applies the patch and returns the patched iPPool. func (c *FakeIPPools) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.IPPool, err error) { + emptyResult := &v1.IPPool{} obj, err := c.Fake. - Invokes(testing.NewRootPatchSubresourceAction(ippoolsResource, name, pt, data, subresources...), &v1.IPPool{}) + Invokes(testing.NewRootPatchSubresourceActionWithOptions(ippoolsResource, name, pt, data, opts, subresources...), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } return obj.(*v1.IPPool), err } diff --git a/pkg/client/clientset/versioned/typed/kubeovn/v1/fake/fake_iptablesdnatrule.go b/pkg/client/clientset/versioned/typed/kubeovn/v1/fake/fake_iptablesdnatrule.go index 7b3d275edb3..d7ecd393144 100644 --- a/pkg/client/clientset/versioned/typed/kubeovn/v1/fake/fake_iptablesdnatrule.go +++ b/pkg/client/clientset/versioned/typed/kubeovn/v1/fake/fake_iptablesdnatrule.go @@ -40,20 +40,22 @@ var iptablesdnatrulesKind = v1.SchemeGroupVersion.WithKind("IptablesDnatRule") // Get takes name of the iptablesDnatRule, and returns the corresponding iptablesDnatRule object, and an error if there is any. func (c *FakeIptablesDnatRules) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.IptablesDnatRule, err error) { + emptyResult := &v1.IptablesDnatRule{} obj, err := c.Fake. - Invokes(testing.NewRootGetAction(iptablesdnatrulesResource, name), &v1.IptablesDnatRule{}) + Invokes(testing.NewRootGetActionWithOptions(iptablesdnatrulesResource, name, options), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } return obj.(*v1.IptablesDnatRule), err } // List takes label and field selectors, and returns the list of IptablesDnatRules that match those selectors. func (c *FakeIptablesDnatRules) List(ctx context.Context, opts metav1.ListOptions) (result *v1.IptablesDnatRuleList, err error) { + emptyResult := &v1.IptablesDnatRuleList{} obj, err := c.Fake. - Invokes(testing.NewRootListAction(iptablesdnatrulesResource, iptablesdnatrulesKind, opts), &v1.IptablesDnatRuleList{}) + Invokes(testing.NewRootListActionWithOptions(iptablesdnatrulesResource, iptablesdnatrulesKind, opts), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } label, _, _ := testing.ExtractFromListOptions(opts) @@ -72,36 +74,39 @@ func (c *FakeIptablesDnatRules) List(ctx context.Context, opts metav1.ListOption // Watch returns a watch.Interface that watches the requested iptablesDnatRules. func (c *FakeIptablesDnatRules) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) { return c.Fake. - InvokesWatch(testing.NewRootWatchAction(iptablesdnatrulesResource, opts)) + InvokesWatch(testing.NewRootWatchActionWithOptions(iptablesdnatrulesResource, opts)) } // Create takes the representation of a iptablesDnatRule and creates it. Returns the server's representation of the iptablesDnatRule, and an error, if there is any. func (c *FakeIptablesDnatRules) Create(ctx context.Context, iptablesDnatRule *v1.IptablesDnatRule, opts metav1.CreateOptions) (result *v1.IptablesDnatRule, err error) { + emptyResult := &v1.IptablesDnatRule{} obj, err := c.Fake. - Invokes(testing.NewRootCreateAction(iptablesdnatrulesResource, iptablesDnatRule), &v1.IptablesDnatRule{}) + Invokes(testing.NewRootCreateActionWithOptions(iptablesdnatrulesResource, iptablesDnatRule, opts), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } return obj.(*v1.IptablesDnatRule), err } // Update takes the representation of a iptablesDnatRule and updates it. Returns the server's representation of the iptablesDnatRule, and an error, if there is any. func (c *FakeIptablesDnatRules) Update(ctx context.Context, iptablesDnatRule *v1.IptablesDnatRule, opts metav1.UpdateOptions) (result *v1.IptablesDnatRule, err error) { + emptyResult := &v1.IptablesDnatRule{} obj, err := c.Fake. - Invokes(testing.NewRootUpdateAction(iptablesdnatrulesResource, iptablesDnatRule), &v1.IptablesDnatRule{}) + Invokes(testing.NewRootUpdateActionWithOptions(iptablesdnatrulesResource, iptablesDnatRule, opts), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } return obj.(*v1.IptablesDnatRule), 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 *FakeIptablesDnatRules) UpdateStatus(ctx context.Context, iptablesDnatRule *v1.IptablesDnatRule, opts metav1.UpdateOptions) (*v1.IptablesDnatRule, error) { +func (c *FakeIptablesDnatRules) UpdateStatus(ctx context.Context, iptablesDnatRule *v1.IptablesDnatRule, opts metav1.UpdateOptions) (result *v1.IptablesDnatRule, err error) { + emptyResult := &v1.IptablesDnatRule{} obj, err := c.Fake. - Invokes(testing.NewRootUpdateSubresourceAction(iptablesdnatrulesResource, "status", iptablesDnatRule), &v1.IptablesDnatRule{}) + Invokes(testing.NewRootUpdateSubresourceActionWithOptions(iptablesdnatrulesResource, "status", iptablesDnatRule, opts), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } return obj.(*v1.IptablesDnatRule), err } @@ -115,7 +120,7 @@ func (c *FakeIptablesDnatRules) Delete(ctx context.Context, name string, opts me // DeleteCollection deletes a collection of objects. func (c *FakeIptablesDnatRules) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error { - action := testing.NewRootDeleteCollectionAction(iptablesdnatrulesResource, listOpts) + action := testing.NewRootDeleteCollectionActionWithOptions(iptablesdnatrulesResource, opts, listOpts) _, err := c.Fake.Invokes(action, &v1.IptablesDnatRuleList{}) return err @@ -123,10 +128,11 @@ func (c *FakeIptablesDnatRules) DeleteCollection(ctx context.Context, opts metav // Patch applies the patch and returns the patched iptablesDnatRule. func (c *FakeIptablesDnatRules) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.IptablesDnatRule, err error) { + emptyResult := &v1.IptablesDnatRule{} obj, err := c.Fake. - Invokes(testing.NewRootPatchSubresourceAction(iptablesdnatrulesResource, name, pt, data, subresources...), &v1.IptablesDnatRule{}) + Invokes(testing.NewRootPatchSubresourceActionWithOptions(iptablesdnatrulesResource, name, pt, data, opts, subresources...), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } return obj.(*v1.IptablesDnatRule), err } diff --git a/pkg/client/clientset/versioned/typed/kubeovn/v1/fake/fake_iptableseip.go b/pkg/client/clientset/versioned/typed/kubeovn/v1/fake/fake_iptableseip.go index 4072757ea1b..8457a12e801 100644 --- a/pkg/client/clientset/versioned/typed/kubeovn/v1/fake/fake_iptableseip.go +++ b/pkg/client/clientset/versioned/typed/kubeovn/v1/fake/fake_iptableseip.go @@ -40,20 +40,22 @@ var iptableseipsKind = v1.SchemeGroupVersion.WithKind("IptablesEIP") // Get takes name of the iptablesEIP, and returns the corresponding iptablesEIP object, and an error if there is any. func (c *FakeIptablesEIPs) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.IptablesEIP, err error) { + emptyResult := &v1.IptablesEIP{} obj, err := c.Fake. - Invokes(testing.NewRootGetAction(iptableseipsResource, name), &v1.IptablesEIP{}) + Invokes(testing.NewRootGetActionWithOptions(iptableseipsResource, name, options), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } return obj.(*v1.IptablesEIP), err } // List takes label and field selectors, and returns the list of IptablesEIPs that match those selectors. func (c *FakeIptablesEIPs) List(ctx context.Context, opts metav1.ListOptions) (result *v1.IptablesEIPList, err error) { + emptyResult := &v1.IptablesEIPList{} obj, err := c.Fake. - Invokes(testing.NewRootListAction(iptableseipsResource, iptableseipsKind, opts), &v1.IptablesEIPList{}) + Invokes(testing.NewRootListActionWithOptions(iptableseipsResource, iptableseipsKind, opts), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } label, _, _ := testing.ExtractFromListOptions(opts) @@ -72,36 +74,39 @@ func (c *FakeIptablesEIPs) List(ctx context.Context, opts metav1.ListOptions) (r // Watch returns a watch.Interface that watches the requested iptablesEIPs. func (c *FakeIptablesEIPs) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) { return c.Fake. - InvokesWatch(testing.NewRootWatchAction(iptableseipsResource, opts)) + InvokesWatch(testing.NewRootWatchActionWithOptions(iptableseipsResource, opts)) } // Create takes the representation of a iptablesEIP and creates it. Returns the server's representation of the iptablesEIP, and an error, if there is any. func (c *FakeIptablesEIPs) Create(ctx context.Context, iptablesEIP *v1.IptablesEIP, opts metav1.CreateOptions) (result *v1.IptablesEIP, err error) { + emptyResult := &v1.IptablesEIP{} obj, err := c.Fake. - Invokes(testing.NewRootCreateAction(iptableseipsResource, iptablesEIP), &v1.IptablesEIP{}) + Invokes(testing.NewRootCreateActionWithOptions(iptableseipsResource, iptablesEIP, opts), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } return obj.(*v1.IptablesEIP), err } // Update takes the representation of a iptablesEIP and updates it. Returns the server's representation of the iptablesEIP, and an error, if there is any. func (c *FakeIptablesEIPs) Update(ctx context.Context, iptablesEIP *v1.IptablesEIP, opts metav1.UpdateOptions) (result *v1.IptablesEIP, err error) { + emptyResult := &v1.IptablesEIP{} obj, err := c.Fake. - Invokes(testing.NewRootUpdateAction(iptableseipsResource, iptablesEIP), &v1.IptablesEIP{}) + Invokes(testing.NewRootUpdateActionWithOptions(iptableseipsResource, iptablesEIP, opts), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } return obj.(*v1.IptablesEIP), 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 *FakeIptablesEIPs) UpdateStatus(ctx context.Context, iptablesEIP *v1.IptablesEIP, opts metav1.UpdateOptions) (*v1.IptablesEIP, error) { +func (c *FakeIptablesEIPs) UpdateStatus(ctx context.Context, iptablesEIP *v1.IptablesEIP, opts metav1.UpdateOptions) (result *v1.IptablesEIP, err error) { + emptyResult := &v1.IptablesEIP{} obj, err := c.Fake. - Invokes(testing.NewRootUpdateSubresourceAction(iptableseipsResource, "status", iptablesEIP), &v1.IptablesEIP{}) + Invokes(testing.NewRootUpdateSubresourceActionWithOptions(iptableseipsResource, "status", iptablesEIP, opts), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } return obj.(*v1.IptablesEIP), err } @@ -115,7 +120,7 @@ func (c *FakeIptablesEIPs) Delete(ctx context.Context, name string, opts metav1. // DeleteCollection deletes a collection of objects. func (c *FakeIptablesEIPs) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error { - action := testing.NewRootDeleteCollectionAction(iptableseipsResource, listOpts) + action := testing.NewRootDeleteCollectionActionWithOptions(iptableseipsResource, opts, listOpts) _, err := c.Fake.Invokes(action, &v1.IptablesEIPList{}) return err @@ -123,10 +128,11 @@ func (c *FakeIptablesEIPs) DeleteCollection(ctx context.Context, opts metav1.Del // Patch applies the patch and returns the patched iptablesEIP. func (c *FakeIptablesEIPs) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.IptablesEIP, err error) { + emptyResult := &v1.IptablesEIP{} obj, err := c.Fake. - Invokes(testing.NewRootPatchSubresourceAction(iptableseipsResource, name, pt, data, subresources...), &v1.IptablesEIP{}) + Invokes(testing.NewRootPatchSubresourceActionWithOptions(iptableseipsResource, name, pt, data, opts, subresources...), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } return obj.(*v1.IptablesEIP), err } diff --git a/pkg/client/clientset/versioned/typed/kubeovn/v1/fake/fake_iptablesfiprule.go b/pkg/client/clientset/versioned/typed/kubeovn/v1/fake/fake_iptablesfiprule.go index 47167cb2009..9414c9aecf0 100644 --- a/pkg/client/clientset/versioned/typed/kubeovn/v1/fake/fake_iptablesfiprule.go +++ b/pkg/client/clientset/versioned/typed/kubeovn/v1/fake/fake_iptablesfiprule.go @@ -40,20 +40,22 @@ var iptablesfiprulesKind = v1.SchemeGroupVersion.WithKind("IptablesFIPRule") // Get takes name of the iptablesFIPRule, and returns the corresponding iptablesFIPRule object, and an error if there is any. func (c *FakeIptablesFIPRules) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.IptablesFIPRule, err error) { + emptyResult := &v1.IptablesFIPRule{} obj, err := c.Fake. - Invokes(testing.NewRootGetAction(iptablesfiprulesResource, name), &v1.IptablesFIPRule{}) + Invokes(testing.NewRootGetActionWithOptions(iptablesfiprulesResource, name, options), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } return obj.(*v1.IptablesFIPRule), err } // List takes label and field selectors, and returns the list of IptablesFIPRules that match those selectors. func (c *FakeIptablesFIPRules) List(ctx context.Context, opts metav1.ListOptions) (result *v1.IptablesFIPRuleList, err error) { + emptyResult := &v1.IptablesFIPRuleList{} obj, err := c.Fake. - Invokes(testing.NewRootListAction(iptablesfiprulesResource, iptablesfiprulesKind, opts), &v1.IptablesFIPRuleList{}) + Invokes(testing.NewRootListActionWithOptions(iptablesfiprulesResource, iptablesfiprulesKind, opts), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } label, _, _ := testing.ExtractFromListOptions(opts) @@ -72,36 +74,39 @@ func (c *FakeIptablesFIPRules) List(ctx context.Context, opts metav1.ListOptions // Watch returns a watch.Interface that watches the requested iptablesFIPRules. func (c *FakeIptablesFIPRules) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) { return c.Fake. - InvokesWatch(testing.NewRootWatchAction(iptablesfiprulesResource, opts)) + InvokesWatch(testing.NewRootWatchActionWithOptions(iptablesfiprulesResource, opts)) } // Create takes the representation of a iptablesFIPRule and creates it. Returns the server's representation of the iptablesFIPRule, and an error, if there is any. func (c *FakeIptablesFIPRules) Create(ctx context.Context, iptablesFIPRule *v1.IptablesFIPRule, opts metav1.CreateOptions) (result *v1.IptablesFIPRule, err error) { + emptyResult := &v1.IptablesFIPRule{} obj, err := c.Fake. - Invokes(testing.NewRootCreateAction(iptablesfiprulesResource, iptablesFIPRule), &v1.IptablesFIPRule{}) + Invokes(testing.NewRootCreateActionWithOptions(iptablesfiprulesResource, iptablesFIPRule, opts), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } return obj.(*v1.IptablesFIPRule), err } // Update takes the representation of a iptablesFIPRule and updates it. Returns the server's representation of the iptablesFIPRule, and an error, if there is any. func (c *FakeIptablesFIPRules) Update(ctx context.Context, iptablesFIPRule *v1.IptablesFIPRule, opts metav1.UpdateOptions) (result *v1.IptablesFIPRule, err error) { + emptyResult := &v1.IptablesFIPRule{} obj, err := c.Fake. - Invokes(testing.NewRootUpdateAction(iptablesfiprulesResource, iptablesFIPRule), &v1.IptablesFIPRule{}) + Invokes(testing.NewRootUpdateActionWithOptions(iptablesfiprulesResource, iptablesFIPRule, opts), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } return obj.(*v1.IptablesFIPRule), 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 *FakeIptablesFIPRules) UpdateStatus(ctx context.Context, iptablesFIPRule *v1.IptablesFIPRule, opts metav1.UpdateOptions) (*v1.IptablesFIPRule, error) { +func (c *FakeIptablesFIPRules) UpdateStatus(ctx context.Context, iptablesFIPRule *v1.IptablesFIPRule, opts metav1.UpdateOptions) (result *v1.IptablesFIPRule, err error) { + emptyResult := &v1.IptablesFIPRule{} obj, err := c.Fake. - Invokes(testing.NewRootUpdateSubresourceAction(iptablesfiprulesResource, "status", iptablesFIPRule), &v1.IptablesFIPRule{}) + Invokes(testing.NewRootUpdateSubresourceActionWithOptions(iptablesfiprulesResource, "status", iptablesFIPRule, opts), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } return obj.(*v1.IptablesFIPRule), err } @@ -115,7 +120,7 @@ func (c *FakeIptablesFIPRules) Delete(ctx context.Context, name string, opts met // DeleteCollection deletes a collection of objects. func (c *FakeIptablesFIPRules) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error { - action := testing.NewRootDeleteCollectionAction(iptablesfiprulesResource, listOpts) + action := testing.NewRootDeleteCollectionActionWithOptions(iptablesfiprulesResource, opts, listOpts) _, err := c.Fake.Invokes(action, &v1.IptablesFIPRuleList{}) return err @@ -123,10 +128,11 @@ func (c *FakeIptablesFIPRules) DeleteCollection(ctx context.Context, opts metav1 // Patch applies the patch and returns the patched iptablesFIPRule. func (c *FakeIptablesFIPRules) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.IptablesFIPRule, err error) { + emptyResult := &v1.IptablesFIPRule{} obj, err := c.Fake. - Invokes(testing.NewRootPatchSubresourceAction(iptablesfiprulesResource, name, pt, data, subresources...), &v1.IptablesFIPRule{}) + Invokes(testing.NewRootPatchSubresourceActionWithOptions(iptablesfiprulesResource, name, pt, data, opts, subresources...), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } return obj.(*v1.IptablesFIPRule), err } diff --git a/pkg/client/clientset/versioned/typed/kubeovn/v1/fake/fake_iptablessnatrule.go b/pkg/client/clientset/versioned/typed/kubeovn/v1/fake/fake_iptablessnatrule.go index dd12fb75817..97a2db2601b 100644 --- a/pkg/client/clientset/versioned/typed/kubeovn/v1/fake/fake_iptablessnatrule.go +++ b/pkg/client/clientset/versioned/typed/kubeovn/v1/fake/fake_iptablessnatrule.go @@ -40,20 +40,22 @@ var iptablessnatrulesKind = v1.SchemeGroupVersion.WithKind("IptablesSnatRule") // Get takes name of the iptablesSnatRule, and returns the corresponding iptablesSnatRule object, and an error if there is any. func (c *FakeIptablesSnatRules) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.IptablesSnatRule, err error) { + emptyResult := &v1.IptablesSnatRule{} obj, err := c.Fake. - Invokes(testing.NewRootGetAction(iptablessnatrulesResource, name), &v1.IptablesSnatRule{}) + Invokes(testing.NewRootGetActionWithOptions(iptablessnatrulesResource, name, options), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } return obj.(*v1.IptablesSnatRule), err } // List takes label and field selectors, and returns the list of IptablesSnatRules that match those selectors. func (c *FakeIptablesSnatRules) List(ctx context.Context, opts metav1.ListOptions) (result *v1.IptablesSnatRuleList, err error) { + emptyResult := &v1.IptablesSnatRuleList{} obj, err := c.Fake. - Invokes(testing.NewRootListAction(iptablessnatrulesResource, iptablessnatrulesKind, opts), &v1.IptablesSnatRuleList{}) + Invokes(testing.NewRootListActionWithOptions(iptablessnatrulesResource, iptablessnatrulesKind, opts), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } label, _, _ := testing.ExtractFromListOptions(opts) @@ -72,36 +74,39 @@ func (c *FakeIptablesSnatRules) List(ctx context.Context, opts metav1.ListOption // Watch returns a watch.Interface that watches the requested iptablesSnatRules. func (c *FakeIptablesSnatRules) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) { return c.Fake. - InvokesWatch(testing.NewRootWatchAction(iptablessnatrulesResource, opts)) + InvokesWatch(testing.NewRootWatchActionWithOptions(iptablessnatrulesResource, opts)) } // Create takes the representation of a iptablesSnatRule and creates it. Returns the server's representation of the iptablesSnatRule, and an error, if there is any. func (c *FakeIptablesSnatRules) Create(ctx context.Context, iptablesSnatRule *v1.IptablesSnatRule, opts metav1.CreateOptions) (result *v1.IptablesSnatRule, err error) { + emptyResult := &v1.IptablesSnatRule{} obj, err := c.Fake. - Invokes(testing.NewRootCreateAction(iptablessnatrulesResource, iptablesSnatRule), &v1.IptablesSnatRule{}) + Invokes(testing.NewRootCreateActionWithOptions(iptablessnatrulesResource, iptablesSnatRule, opts), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } return obj.(*v1.IptablesSnatRule), err } // Update takes the representation of a iptablesSnatRule and updates it. Returns the server's representation of the iptablesSnatRule, and an error, if there is any. func (c *FakeIptablesSnatRules) Update(ctx context.Context, iptablesSnatRule *v1.IptablesSnatRule, opts metav1.UpdateOptions) (result *v1.IptablesSnatRule, err error) { + emptyResult := &v1.IptablesSnatRule{} obj, err := c.Fake. - Invokes(testing.NewRootUpdateAction(iptablessnatrulesResource, iptablesSnatRule), &v1.IptablesSnatRule{}) + Invokes(testing.NewRootUpdateActionWithOptions(iptablessnatrulesResource, iptablesSnatRule, opts), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } return obj.(*v1.IptablesSnatRule), 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 *FakeIptablesSnatRules) UpdateStatus(ctx context.Context, iptablesSnatRule *v1.IptablesSnatRule, opts metav1.UpdateOptions) (*v1.IptablesSnatRule, error) { +func (c *FakeIptablesSnatRules) UpdateStatus(ctx context.Context, iptablesSnatRule *v1.IptablesSnatRule, opts metav1.UpdateOptions) (result *v1.IptablesSnatRule, err error) { + emptyResult := &v1.IptablesSnatRule{} obj, err := c.Fake. - Invokes(testing.NewRootUpdateSubresourceAction(iptablessnatrulesResource, "status", iptablesSnatRule), &v1.IptablesSnatRule{}) + Invokes(testing.NewRootUpdateSubresourceActionWithOptions(iptablessnatrulesResource, "status", iptablesSnatRule, opts), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } return obj.(*v1.IptablesSnatRule), err } @@ -115,7 +120,7 @@ func (c *FakeIptablesSnatRules) Delete(ctx context.Context, name string, opts me // DeleteCollection deletes a collection of objects. func (c *FakeIptablesSnatRules) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error { - action := testing.NewRootDeleteCollectionAction(iptablessnatrulesResource, listOpts) + action := testing.NewRootDeleteCollectionActionWithOptions(iptablessnatrulesResource, opts, listOpts) _, err := c.Fake.Invokes(action, &v1.IptablesSnatRuleList{}) return err @@ -123,10 +128,11 @@ func (c *FakeIptablesSnatRules) DeleteCollection(ctx context.Context, opts metav // Patch applies the patch and returns the patched iptablesSnatRule. func (c *FakeIptablesSnatRules) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.IptablesSnatRule, err error) { + emptyResult := &v1.IptablesSnatRule{} obj, err := c.Fake. - Invokes(testing.NewRootPatchSubresourceAction(iptablessnatrulesResource, name, pt, data, subresources...), &v1.IptablesSnatRule{}) + Invokes(testing.NewRootPatchSubresourceActionWithOptions(iptablessnatrulesResource, name, pt, data, opts, subresources...), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } return obj.(*v1.IptablesSnatRule), err } diff --git a/pkg/client/clientset/versioned/typed/kubeovn/v1/fake/fake_ovndnatrule.go b/pkg/client/clientset/versioned/typed/kubeovn/v1/fake/fake_ovndnatrule.go index 4632e5e9378..bbb670fbae2 100644 --- a/pkg/client/clientset/versioned/typed/kubeovn/v1/fake/fake_ovndnatrule.go +++ b/pkg/client/clientset/versioned/typed/kubeovn/v1/fake/fake_ovndnatrule.go @@ -40,20 +40,22 @@ var ovndnatrulesKind = v1.SchemeGroupVersion.WithKind("OvnDnatRule") // Get takes name of the ovnDnatRule, and returns the corresponding ovnDnatRule object, and an error if there is any. func (c *FakeOvnDnatRules) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.OvnDnatRule, err error) { + emptyResult := &v1.OvnDnatRule{} obj, err := c.Fake. - Invokes(testing.NewRootGetAction(ovndnatrulesResource, name), &v1.OvnDnatRule{}) + Invokes(testing.NewRootGetActionWithOptions(ovndnatrulesResource, name, options), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } return obj.(*v1.OvnDnatRule), err } // List takes label and field selectors, and returns the list of OvnDnatRules that match those selectors. func (c *FakeOvnDnatRules) List(ctx context.Context, opts metav1.ListOptions) (result *v1.OvnDnatRuleList, err error) { + emptyResult := &v1.OvnDnatRuleList{} obj, err := c.Fake. - Invokes(testing.NewRootListAction(ovndnatrulesResource, ovndnatrulesKind, opts), &v1.OvnDnatRuleList{}) + Invokes(testing.NewRootListActionWithOptions(ovndnatrulesResource, ovndnatrulesKind, opts), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } label, _, _ := testing.ExtractFromListOptions(opts) @@ -72,36 +74,39 @@ func (c *FakeOvnDnatRules) List(ctx context.Context, opts metav1.ListOptions) (r // Watch returns a watch.Interface that watches the requested ovnDnatRules. func (c *FakeOvnDnatRules) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) { return c.Fake. - InvokesWatch(testing.NewRootWatchAction(ovndnatrulesResource, opts)) + InvokesWatch(testing.NewRootWatchActionWithOptions(ovndnatrulesResource, opts)) } // Create takes the representation of a ovnDnatRule and creates it. Returns the server's representation of the ovnDnatRule, and an error, if there is any. func (c *FakeOvnDnatRules) Create(ctx context.Context, ovnDnatRule *v1.OvnDnatRule, opts metav1.CreateOptions) (result *v1.OvnDnatRule, err error) { + emptyResult := &v1.OvnDnatRule{} obj, err := c.Fake. - Invokes(testing.NewRootCreateAction(ovndnatrulesResource, ovnDnatRule), &v1.OvnDnatRule{}) + Invokes(testing.NewRootCreateActionWithOptions(ovndnatrulesResource, ovnDnatRule, opts), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } return obj.(*v1.OvnDnatRule), err } // Update takes the representation of a ovnDnatRule and updates it. Returns the server's representation of the ovnDnatRule, and an error, if there is any. func (c *FakeOvnDnatRules) Update(ctx context.Context, ovnDnatRule *v1.OvnDnatRule, opts metav1.UpdateOptions) (result *v1.OvnDnatRule, err error) { + emptyResult := &v1.OvnDnatRule{} obj, err := c.Fake. - Invokes(testing.NewRootUpdateAction(ovndnatrulesResource, ovnDnatRule), &v1.OvnDnatRule{}) + Invokes(testing.NewRootUpdateActionWithOptions(ovndnatrulesResource, ovnDnatRule, opts), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } return obj.(*v1.OvnDnatRule), 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 *FakeOvnDnatRules) UpdateStatus(ctx context.Context, ovnDnatRule *v1.OvnDnatRule, opts metav1.UpdateOptions) (*v1.OvnDnatRule, error) { +func (c *FakeOvnDnatRules) UpdateStatus(ctx context.Context, ovnDnatRule *v1.OvnDnatRule, opts metav1.UpdateOptions) (result *v1.OvnDnatRule, err error) { + emptyResult := &v1.OvnDnatRule{} obj, err := c.Fake. - Invokes(testing.NewRootUpdateSubresourceAction(ovndnatrulesResource, "status", ovnDnatRule), &v1.OvnDnatRule{}) + Invokes(testing.NewRootUpdateSubresourceActionWithOptions(ovndnatrulesResource, "status", ovnDnatRule, opts), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } return obj.(*v1.OvnDnatRule), err } @@ -115,7 +120,7 @@ func (c *FakeOvnDnatRules) Delete(ctx context.Context, name string, opts metav1. // DeleteCollection deletes a collection of objects. func (c *FakeOvnDnatRules) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error { - action := testing.NewRootDeleteCollectionAction(ovndnatrulesResource, listOpts) + action := testing.NewRootDeleteCollectionActionWithOptions(ovndnatrulesResource, opts, listOpts) _, err := c.Fake.Invokes(action, &v1.OvnDnatRuleList{}) return err @@ -123,10 +128,11 @@ func (c *FakeOvnDnatRules) DeleteCollection(ctx context.Context, opts metav1.Del // Patch applies the patch and returns the patched ovnDnatRule. func (c *FakeOvnDnatRules) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.OvnDnatRule, err error) { + emptyResult := &v1.OvnDnatRule{} obj, err := c.Fake. - Invokes(testing.NewRootPatchSubresourceAction(ovndnatrulesResource, name, pt, data, subresources...), &v1.OvnDnatRule{}) + Invokes(testing.NewRootPatchSubresourceActionWithOptions(ovndnatrulesResource, name, pt, data, opts, subresources...), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } return obj.(*v1.OvnDnatRule), err } diff --git a/pkg/client/clientset/versioned/typed/kubeovn/v1/fake/fake_ovneip.go b/pkg/client/clientset/versioned/typed/kubeovn/v1/fake/fake_ovneip.go index b7a9d77b48d..e81a9bca8dc 100644 --- a/pkg/client/clientset/versioned/typed/kubeovn/v1/fake/fake_ovneip.go +++ b/pkg/client/clientset/versioned/typed/kubeovn/v1/fake/fake_ovneip.go @@ -40,20 +40,22 @@ var ovneipsKind = v1.SchemeGroupVersion.WithKind("OvnEip") // Get takes name of the ovnEip, and returns the corresponding ovnEip object, and an error if there is any. func (c *FakeOvnEips) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.OvnEip, err error) { + emptyResult := &v1.OvnEip{} obj, err := c.Fake. - Invokes(testing.NewRootGetAction(ovneipsResource, name), &v1.OvnEip{}) + Invokes(testing.NewRootGetActionWithOptions(ovneipsResource, name, options), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } return obj.(*v1.OvnEip), err } // List takes label and field selectors, and returns the list of OvnEips that match those selectors. func (c *FakeOvnEips) List(ctx context.Context, opts metav1.ListOptions) (result *v1.OvnEipList, err error) { + emptyResult := &v1.OvnEipList{} obj, err := c.Fake. - Invokes(testing.NewRootListAction(ovneipsResource, ovneipsKind, opts), &v1.OvnEipList{}) + Invokes(testing.NewRootListActionWithOptions(ovneipsResource, ovneipsKind, opts), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } label, _, _ := testing.ExtractFromListOptions(opts) @@ -72,36 +74,39 @@ func (c *FakeOvnEips) List(ctx context.Context, opts metav1.ListOptions) (result // Watch returns a watch.Interface that watches the requested ovnEips. func (c *FakeOvnEips) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) { return c.Fake. - InvokesWatch(testing.NewRootWatchAction(ovneipsResource, opts)) + InvokesWatch(testing.NewRootWatchActionWithOptions(ovneipsResource, opts)) } // Create takes the representation of a ovnEip and creates it. Returns the server's representation of the ovnEip, and an error, if there is any. func (c *FakeOvnEips) Create(ctx context.Context, ovnEip *v1.OvnEip, opts metav1.CreateOptions) (result *v1.OvnEip, err error) { + emptyResult := &v1.OvnEip{} obj, err := c.Fake. - Invokes(testing.NewRootCreateAction(ovneipsResource, ovnEip), &v1.OvnEip{}) + Invokes(testing.NewRootCreateActionWithOptions(ovneipsResource, ovnEip, opts), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } return obj.(*v1.OvnEip), err } // Update takes the representation of a ovnEip and updates it. Returns the server's representation of the ovnEip, and an error, if there is any. func (c *FakeOvnEips) Update(ctx context.Context, ovnEip *v1.OvnEip, opts metav1.UpdateOptions) (result *v1.OvnEip, err error) { + emptyResult := &v1.OvnEip{} obj, err := c.Fake. - Invokes(testing.NewRootUpdateAction(ovneipsResource, ovnEip), &v1.OvnEip{}) + Invokes(testing.NewRootUpdateActionWithOptions(ovneipsResource, ovnEip, opts), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } return obj.(*v1.OvnEip), 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 *FakeOvnEips) UpdateStatus(ctx context.Context, ovnEip *v1.OvnEip, opts metav1.UpdateOptions) (*v1.OvnEip, error) { +func (c *FakeOvnEips) UpdateStatus(ctx context.Context, ovnEip *v1.OvnEip, opts metav1.UpdateOptions) (result *v1.OvnEip, err error) { + emptyResult := &v1.OvnEip{} obj, err := c.Fake. - Invokes(testing.NewRootUpdateSubresourceAction(ovneipsResource, "status", ovnEip), &v1.OvnEip{}) + Invokes(testing.NewRootUpdateSubresourceActionWithOptions(ovneipsResource, "status", ovnEip, opts), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } return obj.(*v1.OvnEip), err } @@ -115,7 +120,7 @@ func (c *FakeOvnEips) Delete(ctx context.Context, name string, opts metav1.Delet // DeleteCollection deletes a collection of objects. func (c *FakeOvnEips) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error { - action := testing.NewRootDeleteCollectionAction(ovneipsResource, listOpts) + action := testing.NewRootDeleteCollectionActionWithOptions(ovneipsResource, opts, listOpts) _, err := c.Fake.Invokes(action, &v1.OvnEipList{}) return err @@ -123,10 +128,11 @@ func (c *FakeOvnEips) DeleteCollection(ctx context.Context, opts metav1.DeleteOp // Patch applies the patch and returns the patched ovnEip. func (c *FakeOvnEips) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.OvnEip, err error) { + emptyResult := &v1.OvnEip{} obj, err := c.Fake. - Invokes(testing.NewRootPatchSubresourceAction(ovneipsResource, name, pt, data, subresources...), &v1.OvnEip{}) + Invokes(testing.NewRootPatchSubresourceActionWithOptions(ovneipsResource, name, pt, data, opts, subresources...), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } return obj.(*v1.OvnEip), err } diff --git a/pkg/client/clientset/versioned/typed/kubeovn/v1/fake/fake_ovnfip.go b/pkg/client/clientset/versioned/typed/kubeovn/v1/fake/fake_ovnfip.go index ae4c2ba955d..ae43f080952 100644 --- a/pkg/client/clientset/versioned/typed/kubeovn/v1/fake/fake_ovnfip.go +++ b/pkg/client/clientset/versioned/typed/kubeovn/v1/fake/fake_ovnfip.go @@ -40,20 +40,22 @@ var ovnfipsKind = v1.SchemeGroupVersion.WithKind("OvnFip") // Get takes name of the ovnFip, and returns the corresponding ovnFip object, and an error if there is any. func (c *FakeOvnFips) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.OvnFip, err error) { + emptyResult := &v1.OvnFip{} obj, err := c.Fake. - Invokes(testing.NewRootGetAction(ovnfipsResource, name), &v1.OvnFip{}) + Invokes(testing.NewRootGetActionWithOptions(ovnfipsResource, name, options), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } return obj.(*v1.OvnFip), err } // List takes label and field selectors, and returns the list of OvnFips that match those selectors. func (c *FakeOvnFips) List(ctx context.Context, opts metav1.ListOptions) (result *v1.OvnFipList, err error) { + emptyResult := &v1.OvnFipList{} obj, err := c.Fake. - Invokes(testing.NewRootListAction(ovnfipsResource, ovnfipsKind, opts), &v1.OvnFipList{}) + Invokes(testing.NewRootListActionWithOptions(ovnfipsResource, ovnfipsKind, opts), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } label, _, _ := testing.ExtractFromListOptions(opts) @@ -72,36 +74,39 @@ func (c *FakeOvnFips) List(ctx context.Context, opts metav1.ListOptions) (result // Watch returns a watch.Interface that watches the requested ovnFips. func (c *FakeOvnFips) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) { return c.Fake. - InvokesWatch(testing.NewRootWatchAction(ovnfipsResource, opts)) + InvokesWatch(testing.NewRootWatchActionWithOptions(ovnfipsResource, opts)) } // Create takes the representation of a ovnFip and creates it. Returns the server's representation of the ovnFip, and an error, if there is any. func (c *FakeOvnFips) Create(ctx context.Context, ovnFip *v1.OvnFip, opts metav1.CreateOptions) (result *v1.OvnFip, err error) { + emptyResult := &v1.OvnFip{} obj, err := c.Fake. - Invokes(testing.NewRootCreateAction(ovnfipsResource, ovnFip), &v1.OvnFip{}) + Invokes(testing.NewRootCreateActionWithOptions(ovnfipsResource, ovnFip, opts), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } return obj.(*v1.OvnFip), err } // Update takes the representation of a ovnFip and updates it. Returns the server's representation of the ovnFip, and an error, if there is any. func (c *FakeOvnFips) Update(ctx context.Context, ovnFip *v1.OvnFip, opts metav1.UpdateOptions) (result *v1.OvnFip, err error) { + emptyResult := &v1.OvnFip{} obj, err := c.Fake. - Invokes(testing.NewRootUpdateAction(ovnfipsResource, ovnFip), &v1.OvnFip{}) + Invokes(testing.NewRootUpdateActionWithOptions(ovnfipsResource, ovnFip, opts), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } return obj.(*v1.OvnFip), 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 *FakeOvnFips) UpdateStatus(ctx context.Context, ovnFip *v1.OvnFip, opts metav1.UpdateOptions) (*v1.OvnFip, error) { +func (c *FakeOvnFips) UpdateStatus(ctx context.Context, ovnFip *v1.OvnFip, opts metav1.UpdateOptions) (result *v1.OvnFip, err error) { + emptyResult := &v1.OvnFip{} obj, err := c.Fake. - Invokes(testing.NewRootUpdateSubresourceAction(ovnfipsResource, "status", ovnFip), &v1.OvnFip{}) + Invokes(testing.NewRootUpdateSubresourceActionWithOptions(ovnfipsResource, "status", ovnFip, opts), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } return obj.(*v1.OvnFip), err } @@ -115,7 +120,7 @@ func (c *FakeOvnFips) Delete(ctx context.Context, name string, opts metav1.Delet // DeleteCollection deletes a collection of objects. func (c *FakeOvnFips) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error { - action := testing.NewRootDeleteCollectionAction(ovnfipsResource, listOpts) + action := testing.NewRootDeleteCollectionActionWithOptions(ovnfipsResource, opts, listOpts) _, err := c.Fake.Invokes(action, &v1.OvnFipList{}) return err @@ -123,10 +128,11 @@ func (c *FakeOvnFips) DeleteCollection(ctx context.Context, opts metav1.DeleteOp // Patch applies the patch and returns the patched ovnFip. func (c *FakeOvnFips) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.OvnFip, err error) { + emptyResult := &v1.OvnFip{} obj, err := c.Fake. - Invokes(testing.NewRootPatchSubresourceAction(ovnfipsResource, name, pt, data, subresources...), &v1.OvnFip{}) + Invokes(testing.NewRootPatchSubresourceActionWithOptions(ovnfipsResource, name, pt, data, opts, subresources...), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } return obj.(*v1.OvnFip), err } diff --git a/pkg/client/clientset/versioned/typed/kubeovn/v1/fake/fake_ovnsnatrule.go b/pkg/client/clientset/versioned/typed/kubeovn/v1/fake/fake_ovnsnatrule.go index 6ffb725f5df..cab29ba95fe 100644 --- a/pkg/client/clientset/versioned/typed/kubeovn/v1/fake/fake_ovnsnatrule.go +++ b/pkg/client/clientset/versioned/typed/kubeovn/v1/fake/fake_ovnsnatrule.go @@ -40,20 +40,22 @@ var ovnsnatrulesKind = v1.SchemeGroupVersion.WithKind("OvnSnatRule") // Get takes name of the ovnSnatRule, and returns the corresponding ovnSnatRule object, and an error if there is any. func (c *FakeOvnSnatRules) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.OvnSnatRule, err error) { + emptyResult := &v1.OvnSnatRule{} obj, err := c.Fake. - Invokes(testing.NewRootGetAction(ovnsnatrulesResource, name), &v1.OvnSnatRule{}) + Invokes(testing.NewRootGetActionWithOptions(ovnsnatrulesResource, name, options), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } return obj.(*v1.OvnSnatRule), err } // List takes label and field selectors, and returns the list of OvnSnatRules that match those selectors. func (c *FakeOvnSnatRules) List(ctx context.Context, opts metav1.ListOptions) (result *v1.OvnSnatRuleList, err error) { + emptyResult := &v1.OvnSnatRuleList{} obj, err := c.Fake. - Invokes(testing.NewRootListAction(ovnsnatrulesResource, ovnsnatrulesKind, opts), &v1.OvnSnatRuleList{}) + Invokes(testing.NewRootListActionWithOptions(ovnsnatrulesResource, ovnsnatrulesKind, opts), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } label, _, _ := testing.ExtractFromListOptions(opts) @@ -72,36 +74,39 @@ func (c *FakeOvnSnatRules) List(ctx context.Context, opts metav1.ListOptions) (r // Watch returns a watch.Interface that watches the requested ovnSnatRules. func (c *FakeOvnSnatRules) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) { return c.Fake. - InvokesWatch(testing.NewRootWatchAction(ovnsnatrulesResource, opts)) + InvokesWatch(testing.NewRootWatchActionWithOptions(ovnsnatrulesResource, opts)) } // Create takes the representation of a ovnSnatRule and creates it. Returns the server's representation of the ovnSnatRule, and an error, if there is any. func (c *FakeOvnSnatRules) Create(ctx context.Context, ovnSnatRule *v1.OvnSnatRule, opts metav1.CreateOptions) (result *v1.OvnSnatRule, err error) { + emptyResult := &v1.OvnSnatRule{} obj, err := c.Fake. - Invokes(testing.NewRootCreateAction(ovnsnatrulesResource, ovnSnatRule), &v1.OvnSnatRule{}) + Invokes(testing.NewRootCreateActionWithOptions(ovnsnatrulesResource, ovnSnatRule, opts), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } return obj.(*v1.OvnSnatRule), err } // Update takes the representation of a ovnSnatRule and updates it. Returns the server's representation of the ovnSnatRule, and an error, if there is any. func (c *FakeOvnSnatRules) Update(ctx context.Context, ovnSnatRule *v1.OvnSnatRule, opts metav1.UpdateOptions) (result *v1.OvnSnatRule, err error) { + emptyResult := &v1.OvnSnatRule{} obj, err := c.Fake. - Invokes(testing.NewRootUpdateAction(ovnsnatrulesResource, ovnSnatRule), &v1.OvnSnatRule{}) + Invokes(testing.NewRootUpdateActionWithOptions(ovnsnatrulesResource, ovnSnatRule, opts), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } return obj.(*v1.OvnSnatRule), 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 *FakeOvnSnatRules) UpdateStatus(ctx context.Context, ovnSnatRule *v1.OvnSnatRule, opts metav1.UpdateOptions) (*v1.OvnSnatRule, error) { +func (c *FakeOvnSnatRules) UpdateStatus(ctx context.Context, ovnSnatRule *v1.OvnSnatRule, opts metav1.UpdateOptions) (result *v1.OvnSnatRule, err error) { + emptyResult := &v1.OvnSnatRule{} obj, err := c.Fake. - Invokes(testing.NewRootUpdateSubresourceAction(ovnsnatrulesResource, "status", ovnSnatRule), &v1.OvnSnatRule{}) + Invokes(testing.NewRootUpdateSubresourceActionWithOptions(ovnsnatrulesResource, "status", ovnSnatRule, opts), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } return obj.(*v1.OvnSnatRule), err } @@ -115,7 +120,7 @@ func (c *FakeOvnSnatRules) Delete(ctx context.Context, name string, opts metav1. // DeleteCollection deletes a collection of objects. func (c *FakeOvnSnatRules) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error { - action := testing.NewRootDeleteCollectionAction(ovnsnatrulesResource, listOpts) + action := testing.NewRootDeleteCollectionActionWithOptions(ovnsnatrulesResource, opts, listOpts) _, err := c.Fake.Invokes(action, &v1.OvnSnatRuleList{}) return err @@ -123,10 +128,11 @@ func (c *FakeOvnSnatRules) DeleteCollection(ctx context.Context, opts metav1.Del // Patch applies the patch and returns the patched ovnSnatRule. func (c *FakeOvnSnatRules) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.OvnSnatRule, err error) { + emptyResult := &v1.OvnSnatRule{} obj, err := c.Fake. - Invokes(testing.NewRootPatchSubresourceAction(ovnsnatrulesResource, name, pt, data, subresources...), &v1.OvnSnatRule{}) + Invokes(testing.NewRootPatchSubresourceActionWithOptions(ovnsnatrulesResource, name, pt, data, opts, subresources...), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } return obj.(*v1.OvnSnatRule), err } diff --git a/pkg/client/clientset/versioned/typed/kubeovn/v1/fake/fake_providernetwork.go b/pkg/client/clientset/versioned/typed/kubeovn/v1/fake/fake_providernetwork.go index f5b333341a1..d7c9a1a4af0 100644 --- a/pkg/client/clientset/versioned/typed/kubeovn/v1/fake/fake_providernetwork.go +++ b/pkg/client/clientset/versioned/typed/kubeovn/v1/fake/fake_providernetwork.go @@ -40,20 +40,22 @@ var providernetworksKind = v1.SchemeGroupVersion.WithKind("ProviderNetwork") // Get takes name of the providerNetwork, and returns the corresponding providerNetwork object, and an error if there is any. func (c *FakeProviderNetworks) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.ProviderNetwork, err error) { + emptyResult := &v1.ProviderNetwork{} obj, err := c.Fake. - Invokes(testing.NewRootGetAction(providernetworksResource, name), &v1.ProviderNetwork{}) + Invokes(testing.NewRootGetActionWithOptions(providernetworksResource, name, options), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } return obj.(*v1.ProviderNetwork), err } // List takes label and field selectors, and returns the list of ProviderNetworks that match those selectors. func (c *FakeProviderNetworks) List(ctx context.Context, opts metav1.ListOptions) (result *v1.ProviderNetworkList, err error) { + emptyResult := &v1.ProviderNetworkList{} obj, err := c.Fake. - Invokes(testing.NewRootListAction(providernetworksResource, providernetworksKind, opts), &v1.ProviderNetworkList{}) + Invokes(testing.NewRootListActionWithOptions(providernetworksResource, providernetworksKind, opts), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } label, _, _ := testing.ExtractFromListOptions(opts) @@ -72,36 +74,39 @@ func (c *FakeProviderNetworks) List(ctx context.Context, opts metav1.ListOptions // Watch returns a watch.Interface that watches the requested providerNetworks. func (c *FakeProviderNetworks) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) { return c.Fake. - InvokesWatch(testing.NewRootWatchAction(providernetworksResource, opts)) + InvokesWatch(testing.NewRootWatchActionWithOptions(providernetworksResource, opts)) } // Create takes the representation of a providerNetwork and creates it. Returns the server's representation of the providerNetwork, and an error, if there is any. func (c *FakeProviderNetworks) Create(ctx context.Context, providerNetwork *v1.ProviderNetwork, opts metav1.CreateOptions) (result *v1.ProviderNetwork, err error) { + emptyResult := &v1.ProviderNetwork{} obj, err := c.Fake. - Invokes(testing.NewRootCreateAction(providernetworksResource, providerNetwork), &v1.ProviderNetwork{}) + Invokes(testing.NewRootCreateActionWithOptions(providernetworksResource, providerNetwork, opts), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } return obj.(*v1.ProviderNetwork), err } // Update takes the representation of a providerNetwork and updates it. Returns the server's representation of the providerNetwork, and an error, if there is any. func (c *FakeProviderNetworks) Update(ctx context.Context, providerNetwork *v1.ProviderNetwork, opts metav1.UpdateOptions) (result *v1.ProviderNetwork, err error) { + emptyResult := &v1.ProviderNetwork{} obj, err := c.Fake. - Invokes(testing.NewRootUpdateAction(providernetworksResource, providerNetwork), &v1.ProviderNetwork{}) + Invokes(testing.NewRootUpdateActionWithOptions(providernetworksResource, providerNetwork, opts), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } return obj.(*v1.ProviderNetwork), 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 *FakeProviderNetworks) UpdateStatus(ctx context.Context, providerNetwork *v1.ProviderNetwork, opts metav1.UpdateOptions) (*v1.ProviderNetwork, error) { +func (c *FakeProviderNetworks) UpdateStatus(ctx context.Context, providerNetwork *v1.ProviderNetwork, opts metav1.UpdateOptions) (result *v1.ProviderNetwork, err error) { + emptyResult := &v1.ProviderNetwork{} obj, err := c.Fake. - Invokes(testing.NewRootUpdateSubresourceAction(providernetworksResource, "status", providerNetwork), &v1.ProviderNetwork{}) + Invokes(testing.NewRootUpdateSubresourceActionWithOptions(providernetworksResource, "status", providerNetwork, opts), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } return obj.(*v1.ProviderNetwork), err } @@ -115,7 +120,7 @@ func (c *FakeProviderNetworks) Delete(ctx context.Context, name string, opts met // DeleteCollection deletes a collection of objects. func (c *FakeProviderNetworks) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error { - action := testing.NewRootDeleteCollectionAction(providernetworksResource, listOpts) + action := testing.NewRootDeleteCollectionActionWithOptions(providernetworksResource, opts, listOpts) _, err := c.Fake.Invokes(action, &v1.ProviderNetworkList{}) return err @@ -123,10 +128,11 @@ func (c *FakeProviderNetworks) DeleteCollection(ctx context.Context, opts metav1 // Patch applies the patch and returns the patched providerNetwork. func (c *FakeProviderNetworks) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.ProviderNetwork, err error) { + emptyResult := &v1.ProviderNetwork{} obj, err := c.Fake. - Invokes(testing.NewRootPatchSubresourceAction(providernetworksResource, name, pt, data, subresources...), &v1.ProviderNetwork{}) + Invokes(testing.NewRootPatchSubresourceActionWithOptions(providernetworksResource, name, pt, data, opts, subresources...), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } return obj.(*v1.ProviderNetwork), err } diff --git a/pkg/client/clientset/versioned/typed/kubeovn/v1/fake/fake_qospolicy.go b/pkg/client/clientset/versioned/typed/kubeovn/v1/fake/fake_qospolicy.go index 03bb8ebfe3d..96b8ed1b023 100644 --- a/pkg/client/clientset/versioned/typed/kubeovn/v1/fake/fake_qospolicy.go +++ b/pkg/client/clientset/versioned/typed/kubeovn/v1/fake/fake_qospolicy.go @@ -40,20 +40,22 @@ var qospoliciesKind = v1.SchemeGroupVersion.WithKind("QoSPolicy") // Get takes name of the qoSPolicy, and returns the corresponding qoSPolicy object, and an error if there is any. func (c *FakeQoSPolicies) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.QoSPolicy, err error) { + emptyResult := &v1.QoSPolicy{} obj, err := c.Fake. - Invokes(testing.NewRootGetAction(qospoliciesResource, name), &v1.QoSPolicy{}) + Invokes(testing.NewRootGetActionWithOptions(qospoliciesResource, name, options), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } return obj.(*v1.QoSPolicy), err } // List takes label and field selectors, and returns the list of QoSPolicies that match those selectors. func (c *FakeQoSPolicies) List(ctx context.Context, opts metav1.ListOptions) (result *v1.QoSPolicyList, err error) { + emptyResult := &v1.QoSPolicyList{} obj, err := c.Fake. - Invokes(testing.NewRootListAction(qospoliciesResource, qospoliciesKind, opts), &v1.QoSPolicyList{}) + Invokes(testing.NewRootListActionWithOptions(qospoliciesResource, qospoliciesKind, opts), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } label, _, _ := testing.ExtractFromListOptions(opts) @@ -72,36 +74,39 @@ func (c *FakeQoSPolicies) List(ctx context.Context, opts metav1.ListOptions) (re // Watch returns a watch.Interface that watches the requested qoSPolicies. func (c *FakeQoSPolicies) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) { return c.Fake. - InvokesWatch(testing.NewRootWatchAction(qospoliciesResource, opts)) + InvokesWatch(testing.NewRootWatchActionWithOptions(qospoliciesResource, opts)) } // Create takes the representation of a qoSPolicy and creates it. Returns the server's representation of the qoSPolicy, and an error, if there is any. func (c *FakeQoSPolicies) Create(ctx context.Context, qoSPolicy *v1.QoSPolicy, opts metav1.CreateOptions) (result *v1.QoSPolicy, err error) { + emptyResult := &v1.QoSPolicy{} obj, err := c.Fake. - Invokes(testing.NewRootCreateAction(qospoliciesResource, qoSPolicy), &v1.QoSPolicy{}) + Invokes(testing.NewRootCreateActionWithOptions(qospoliciesResource, qoSPolicy, opts), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } return obj.(*v1.QoSPolicy), err } // Update takes the representation of a qoSPolicy and updates it. Returns the server's representation of the qoSPolicy, and an error, if there is any. func (c *FakeQoSPolicies) Update(ctx context.Context, qoSPolicy *v1.QoSPolicy, opts metav1.UpdateOptions) (result *v1.QoSPolicy, err error) { + emptyResult := &v1.QoSPolicy{} obj, err := c.Fake. - Invokes(testing.NewRootUpdateAction(qospoliciesResource, qoSPolicy), &v1.QoSPolicy{}) + Invokes(testing.NewRootUpdateActionWithOptions(qospoliciesResource, qoSPolicy, opts), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } return obj.(*v1.QoSPolicy), 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 *FakeQoSPolicies) UpdateStatus(ctx context.Context, qoSPolicy *v1.QoSPolicy, opts metav1.UpdateOptions) (*v1.QoSPolicy, error) { +func (c *FakeQoSPolicies) UpdateStatus(ctx context.Context, qoSPolicy *v1.QoSPolicy, opts metav1.UpdateOptions) (result *v1.QoSPolicy, err error) { + emptyResult := &v1.QoSPolicy{} obj, err := c.Fake. - Invokes(testing.NewRootUpdateSubresourceAction(qospoliciesResource, "status", qoSPolicy), &v1.QoSPolicy{}) + Invokes(testing.NewRootUpdateSubresourceActionWithOptions(qospoliciesResource, "status", qoSPolicy, opts), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } return obj.(*v1.QoSPolicy), err } @@ -115,7 +120,7 @@ func (c *FakeQoSPolicies) Delete(ctx context.Context, name string, opts metav1.D // DeleteCollection deletes a collection of objects. func (c *FakeQoSPolicies) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error { - action := testing.NewRootDeleteCollectionAction(qospoliciesResource, listOpts) + action := testing.NewRootDeleteCollectionActionWithOptions(qospoliciesResource, opts, listOpts) _, err := c.Fake.Invokes(action, &v1.QoSPolicyList{}) return err @@ -123,10 +128,11 @@ func (c *FakeQoSPolicies) DeleteCollection(ctx context.Context, opts metav1.Dele // Patch applies the patch and returns the patched qoSPolicy. func (c *FakeQoSPolicies) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.QoSPolicy, err error) { + emptyResult := &v1.QoSPolicy{} obj, err := c.Fake. - Invokes(testing.NewRootPatchSubresourceAction(qospoliciesResource, name, pt, data, subresources...), &v1.QoSPolicy{}) + Invokes(testing.NewRootPatchSubresourceActionWithOptions(qospoliciesResource, name, pt, data, opts, subresources...), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } return obj.(*v1.QoSPolicy), err } diff --git a/pkg/client/clientset/versioned/typed/kubeovn/v1/fake/fake_securitygroup.go b/pkg/client/clientset/versioned/typed/kubeovn/v1/fake/fake_securitygroup.go index 84829bf7f17..bc2807dbc6c 100644 --- a/pkg/client/clientset/versioned/typed/kubeovn/v1/fake/fake_securitygroup.go +++ b/pkg/client/clientset/versioned/typed/kubeovn/v1/fake/fake_securitygroup.go @@ -40,20 +40,22 @@ var securitygroupsKind = v1.SchemeGroupVersion.WithKind("SecurityGroup") // Get takes name of the securityGroup, and returns the corresponding securityGroup object, and an error if there is any. func (c *FakeSecurityGroups) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.SecurityGroup, err error) { + emptyResult := &v1.SecurityGroup{} obj, err := c.Fake. - Invokes(testing.NewRootGetAction(securitygroupsResource, name), &v1.SecurityGroup{}) + Invokes(testing.NewRootGetActionWithOptions(securitygroupsResource, name, options), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } return obj.(*v1.SecurityGroup), err } // List takes label and field selectors, and returns the list of SecurityGroups that match those selectors. func (c *FakeSecurityGroups) List(ctx context.Context, opts metav1.ListOptions) (result *v1.SecurityGroupList, err error) { + emptyResult := &v1.SecurityGroupList{} obj, err := c.Fake. - Invokes(testing.NewRootListAction(securitygroupsResource, securitygroupsKind, opts), &v1.SecurityGroupList{}) + Invokes(testing.NewRootListActionWithOptions(securitygroupsResource, securitygroupsKind, opts), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } label, _, _ := testing.ExtractFromListOptions(opts) @@ -72,36 +74,39 @@ func (c *FakeSecurityGroups) List(ctx context.Context, opts metav1.ListOptions) // Watch returns a watch.Interface that watches the requested securityGroups. func (c *FakeSecurityGroups) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) { return c.Fake. - InvokesWatch(testing.NewRootWatchAction(securitygroupsResource, opts)) + InvokesWatch(testing.NewRootWatchActionWithOptions(securitygroupsResource, opts)) } // Create takes the representation of a securityGroup and creates it. Returns the server's representation of the securityGroup, and an error, if there is any. func (c *FakeSecurityGroups) Create(ctx context.Context, securityGroup *v1.SecurityGroup, opts metav1.CreateOptions) (result *v1.SecurityGroup, err error) { + emptyResult := &v1.SecurityGroup{} obj, err := c.Fake. - Invokes(testing.NewRootCreateAction(securitygroupsResource, securityGroup), &v1.SecurityGroup{}) + Invokes(testing.NewRootCreateActionWithOptions(securitygroupsResource, securityGroup, opts), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } return obj.(*v1.SecurityGroup), err } // Update takes the representation of a securityGroup and updates it. Returns the server's representation of the securityGroup, and an error, if there is any. func (c *FakeSecurityGroups) Update(ctx context.Context, securityGroup *v1.SecurityGroup, opts metav1.UpdateOptions) (result *v1.SecurityGroup, err error) { + emptyResult := &v1.SecurityGroup{} obj, err := c.Fake. - Invokes(testing.NewRootUpdateAction(securitygroupsResource, securityGroup), &v1.SecurityGroup{}) + Invokes(testing.NewRootUpdateActionWithOptions(securitygroupsResource, securityGroup, opts), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } return obj.(*v1.SecurityGroup), 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 *FakeSecurityGroups) UpdateStatus(ctx context.Context, securityGroup *v1.SecurityGroup, opts metav1.UpdateOptions) (*v1.SecurityGroup, error) { +func (c *FakeSecurityGroups) UpdateStatus(ctx context.Context, securityGroup *v1.SecurityGroup, opts metav1.UpdateOptions) (result *v1.SecurityGroup, err error) { + emptyResult := &v1.SecurityGroup{} obj, err := c.Fake. - Invokes(testing.NewRootUpdateSubresourceAction(securitygroupsResource, "status", securityGroup), &v1.SecurityGroup{}) + Invokes(testing.NewRootUpdateSubresourceActionWithOptions(securitygroupsResource, "status", securityGroup, opts), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } return obj.(*v1.SecurityGroup), err } @@ -115,7 +120,7 @@ func (c *FakeSecurityGroups) Delete(ctx context.Context, name string, opts metav // DeleteCollection deletes a collection of objects. func (c *FakeSecurityGroups) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error { - action := testing.NewRootDeleteCollectionAction(securitygroupsResource, listOpts) + action := testing.NewRootDeleteCollectionActionWithOptions(securitygroupsResource, opts, listOpts) _, err := c.Fake.Invokes(action, &v1.SecurityGroupList{}) return err @@ -123,10 +128,11 @@ func (c *FakeSecurityGroups) DeleteCollection(ctx context.Context, opts metav1.D // Patch applies the patch and returns the patched securityGroup. func (c *FakeSecurityGroups) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.SecurityGroup, err error) { + emptyResult := &v1.SecurityGroup{} obj, err := c.Fake. - Invokes(testing.NewRootPatchSubresourceAction(securitygroupsResource, name, pt, data, subresources...), &v1.SecurityGroup{}) + Invokes(testing.NewRootPatchSubresourceActionWithOptions(securitygroupsResource, name, pt, data, opts, subresources...), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } return obj.(*v1.SecurityGroup), err } diff --git a/pkg/client/clientset/versioned/typed/kubeovn/v1/fake/fake_subnet.go b/pkg/client/clientset/versioned/typed/kubeovn/v1/fake/fake_subnet.go index 49eca2f6c45..7c98aff3336 100644 --- a/pkg/client/clientset/versioned/typed/kubeovn/v1/fake/fake_subnet.go +++ b/pkg/client/clientset/versioned/typed/kubeovn/v1/fake/fake_subnet.go @@ -40,20 +40,22 @@ var subnetsKind = v1.SchemeGroupVersion.WithKind("Subnet") // Get takes name of the subnet, and returns the corresponding subnet object, and an error if there is any. func (c *FakeSubnets) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.Subnet, err error) { + emptyResult := &v1.Subnet{} obj, err := c.Fake. - Invokes(testing.NewRootGetAction(subnetsResource, name), &v1.Subnet{}) + Invokes(testing.NewRootGetActionWithOptions(subnetsResource, name, options), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } return obj.(*v1.Subnet), err } // List takes label and field selectors, and returns the list of Subnets that match those selectors. func (c *FakeSubnets) List(ctx context.Context, opts metav1.ListOptions) (result *v1.SubnetList, err error) { + emptyResult := &v1.SubnetList{} obj, err := c.Fake. - Invokes(testing.NewRootListAction(subnetsResource, subnetsKind, opts), &v1.SubnetList{}) + Invokes(testing.NewRootListActionWithOptions(subnetsResource, subnetsKind, opts), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } label, _, _ := testing.ExtractFromListOptions(opts) @@ -72,36 +74,39 @@ func (c *FakeSubnets) List(ctx context.Context, opts metav1.ListOptions) (result // Watch returns a watch.Interface that watches the requested subnets. func (c *FakeSubnets) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) { return c.Fake. - InvokesWatch(testing.NewRootWatchAction(subnetsResource, opts)) + InvokesWatch(testing.NewRootWatchActionWithOptions(subnetsResource, opts)) } // Create takes the representation of a subnet and creates it. Returns the server's representation of the subnet, and an error, if there is any. func (c *FakeSubnets) Create(ctx context.Context, subnet *v1.Subnet, opts metav1.CreateOptions) (result *v1.Subnet, err error) { + emptyResult := &v1.Subnet{} obj, err := c.Fake. - Invokes(testing.NewRootCreateAction(subnetsResource, subnet), &v1.Subnet{}) + Invokes(testing.NewRootCreateActionWithOptions(subnetsResource, subnet, opts), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } return obj.(*v1.Subnet), err } // Update takes the representation of a subnet and updates it. Returns the server's representation of the subnet, and an error, if there is any. func (c *FakeSubnets) Update(ctx context.Context, subnet *v1.Subnet, opts metav1.UpdateOptions) (result *v1.Subnet, err error) { + emptyResult := &v1.Subnet{} obj, err := c.Fake. - Invokes(testing.NewRootUpdateAction(subnetsResource, subnet), &v1.Subnet{}) + Invokes(testing.NewRootUpdateActionWithOptions(subnetsResource, subnet, opts), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } return obj.(*v1.Subnet), 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 *FakeSubnets) UpdateStatus(ctx context.Context, subnet *v1.Subnet, opts metav1.UpdateOptions) (*v1.Subnet, error) { +func (c *FakeSubnets) UpdateStatus(ctx context.Context, subnet *v1.Subnet, opts metav1.UpdateOptions) (result *v1.Subnet, err error) { + emptyResult := &v1.Subnet{} obj, err := c.Fake. - Invokes(testing.NewRootUpdateSubresourceAction(subnetsResource, "status", subnet), &v1.Subnet{}) + Invokes(testing.NewRootUpdateSubresourceActionWithOptions(subnetsResource, "status", subnet, opts), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } return obj.(*v1.Subnet), err } @@ -115,7 +120,7 @@ func (c *FakeSubnets) Delete(ctx context.Context, name string, opts metav1.Delet // DeleteCollection deletes a collection of objects. func (c *FakeSubnets) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error { - action := testing.NewRootDeleteCollectionAction(subnetsResource, listOpts) + action := testing.NewRootDeleteCollectionActionWithOptions(subnetsResource, opts, listOpts) _, err := c.Fake.Invokes(action, &v1.SubnetList{}) return err @@ -123,10 +128,11 @@ func (c *FakeSubnets) DeleteCollection(ctx context.Context, opts metav1.DeleteOp // Patch applies the patch and returns the patched subnet. func (c *FakeSubnets) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.Subnet, err error) { + emptyResult := &v1.Subnet{} obj, err := c.Fake. - Invokes(testing.NewRootPatchSubresourceAction(subnetsResource, name, pt, data, subresources...), &v1.Subnet{}) + Invokes(testing.NewRootPatchSubresourceActionWithOptions(subnetsResource, name, pt, data, opts, subresources...), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } return obj.(*v1.Subnet), err } diff --git a/pkg/client/clientset/versioned/typed/kubeovn/v1/fake/fake_switchlbrule.go b/pkg/client/clientset/versioned/typed/kubeovn/v1/fake/fake_switchlbrule.go index ecddb77a309..b11f4342c11 100644 --- a/pkg/client/clientset/versioned/typed/kubeovn/v1/fake/fake_switchlbrule.go +++ b/pkg/client/clientset/versioned/typed/kubeovn/v1/fake/fake_switchlbrule.go @@ -40,20 +40,22 @@ var switchlbrulesKind = v1.SchemeGroupVersion.WithKind("SwitchLBRule") // Get takes name of the switchLBRule, and returns the corresponding switchLBRule object, and an error if there is any. func (c *FakeSwitchLBRules) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.SwitchLBRule, err error) { + emptyResult := &v1.SwitchLBRule{} obj, err := c.Fake. - Invokes(testing.NewRootGetAction(switchlbrulesResource, name), &v1.SwitchLBRule{}) + Invokes(testing.NewRootGetActionWithOptions(switchlbrulesResource, name, options), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } return obj.(*v1.SwitchLBRule), err } // List takes label and field selectors, and returns the list of SwitchLBRules that match those selectors. func (c *FakeSwitchLBRules) List(ctx context.Context, opts metav1.ListOptions) (result *v1.SwitchLBRuleList, err error) { + emptyResult := &v1.SwitchLBRuleList{} obj, err := c.Fake. - Invokes(testing.NewRootListAction(switchlbrulesResource, switchlbrulesKind, opts), &v1.SwitchLBRuleList{}) + Invokes(testing.NewRootListActionWithOptions(switchlbrulesResource, switchlbrulesKind, opts), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } label, _, _ := testing.ExtractFromListOptions(opts) @@ -72,36 +74,39 @@ func (c *FakeSwitchLBRules) List(ctx context.Context, opts metav1.ListOptions) ( // Watch returns a watch.Interface that watches the requested switchLBRules. func (c *FakeSwitchLBRules) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) { return c.Fake. - InvokesWatch(testing.NewRootWatchAction(switchlbrulesResource, opts)) + InvokesWatch(testing.NewRootWatchActionWithOptions(switchlbrulesResource, opts)) } // Create takes the representation of a switchLBRule and creates it. Returns the server's representation of the switchLBRule, and an error, if there is any. func (c *FakeSwitchLBRules) Create(ctx context.Context, switchLBRule *v1.SwitchLBRule, opts metav1.CreateOptions) (result *v1.SwitchLBRule, err error) { + emptyResult := &v1.SwitchLBRule{} obj, err := c.Fake. - Invokes(testing.NewRootCreateAction(switchlbrulesResource, switchLBRule), &v1.SwitchLBRule{}) + Invokes(testing.NewRootCreateActionWithOptions(switchlbrulesResource, switchLBRule, opts), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } return obj.(*v1.SwitchLBRule), err } // Update takes the representation of a switchLBRule and updates it. Returns the server's representation of the switchLBRule, and an error, if there is any. func (c *FakeSwitchLBRules) Update(ctx context.Context, switchLBRule *v1.SwitchLBRule, opts metav1.UpdateOptions) (result *v1.SwitchLBRule, err error) { + emptyResult := &v1.SwitchLBRule{} obj, err := c.Fake. - Invokes(testing.NewRootUpdateAction(switchlbrulesResource, switchLBRule), &v1.SwitchLBRule{}) + Invokes(testing.NewRootUpdateActionWithOptions(switchlbrulesResource, switchLBRule, opts), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } return obj.(*v1.SwitchLBRule), 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 *FakeSwitchLBRules) UpdateStatus(ctx context.Context, switchLBRule *v1.SwitchLBRule, opts metav1.UpdateOptions) (*v1.SwitchLBRule, error) { +func (c *FakeSwitchLBRules) UpdateStatus(ctx context.Context, switchLBRule *v1.SwitchLBRule, opts metav1.UpdateOptions) (result *v1.SwitchLBRule, err error) { + emptyResult := &v1.SwitchLBRule{} obj, err := c.Fake. - Invokes(testing.NewRootUpdateSubresourceAction(switchlbrulesResource, "status", switchLBRule), &v1.SwitchLBRule{}) + Invokes(testing.NewRootUpdateSubresourceActionWithOptions(switchlbrulesResource, "status", switchLBRule, opts), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } return obj.(*v1.SwitchLBRule), err } @@ -115,7 +120,7 @@ func (c *FakeSwitchLBRules) Delete(ctx context.Context, name string, opts metav1 // DeleteCollection deletes a collection of objects. func (c *FakeSwitchLBRules) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error { - action := testing.NewRootDeleteCollectionAction(switchlbrulesResource, listOpts) + action := testing.NewRootDeleteCollectionActionWithOptions(switchlbrulesResource, opts, listOpts) _, err := c.Fake.Invokes(action, &v1.SwitchLBRuleList{}) return err @@ -123,10 +128,11 @@ func (c *FakeSwitchLBRules) DeleteCollection(ctx context.Context, opts metav1.De // Patch applies the patch and returns the patched switchLBRule. func (c *FakeSwitchLBRules) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.SwitchLBRule, err error) { + emptyResult := &v1.SwitchLBRule{} obj, err := c.Fake. - Invokes(testing.NewRootPatchSubresourceAction(switchlbrulesResource, name, pt, data, subresources...), &v1.SwitchLBRule{}) + Invokes(testing.NewRootPatchSubresourceActionWithOptions(switchlbrulesResource, name, pt, data, opts, subresources...), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } return obj.(*v1.SwitchLBRule), err } diff --git a/pkg/client/clientset/versioned/typed/kubeovn/v1/fake/fake_vip.go b/pkg/client/clientset/versioned/typed/kubeovn/v1/fake/fake_vip.go index ee844634485..87fbfa0e40c 100644 --- a/pkg/client/clientset/versioned/typed/kubeovn/v1/fake/fake_vip.go +++ b/pkg/client/clientset/versioned/typed/kubeovn/v1/fake/fake_vip.go @@ -40,20 +40,22 @@ var vipsKind = v1.SchemeGroupVersion.WithKind("Vip") // Get takes name of the vip, and returns the corresponding vip object, and an error if there is any. func (c *FakeVips) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.Vip, err error) { + emptyResult := &v1.Vip{} obj, err := c.Fake. - Invokes(testing.NewRootGetAction(vipsResource, name), &v1.Vip{}) + Invokes(testing.NewRootGetActionWithOptions(vipsResource, name, options), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } return obj.(*v1.Vip), err } // List takes label and field selectors, and returns the list of Vips that match those selectors. func (c *FakeVips) List(ctx context.Context, opts metav1.ListOptions) (result *v1.VipList, err error) { + emptyResult := &v1.VipList{} obj, err := c.Fake. - Invokes(testing.NewRootListAction(vipsResource, vipsKind, opts), &v1.VipList{}) + Invokes(testing.NewRootListActionWithOptions(vipsResource, vipsKind, opts), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } label, _, _ := testing.ExtractFromListOptions(opts) @@ -72,36 +74,39 @@ func (c *FakeVips) List(ctx context.Context, opts metav1.ListOptions) (result *v // Watch returns a watch.Interface that watches the requested vips. func (c *FakeVips) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) { return c.Fake. - InvokesWatch(testing.NewRootWatchAction(vipsResource, opts)) + InvokesWatch(testing.NewRootWatchActionWithOptions(vipsResource, opts)) } // Create takes the representation of a vip and creates it. Returns the server's representation of the vip, and an error, if there is any. func (c *FakeVips) Create(ctx context.Context, vip *v1.Vip, opts metav1.CreateOptions) (result *v1.Vip, err error) { + emptyResult := &v1.Vip{} obj, err := c.Fake. - Invokes(testing.NewRootCreateAction(vipsResource, vip), &v1.Vip{}) + Invokes(testing.NewRootCreateActionWithOptions(vipsResource, vip, opts), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } return obj.(*v1.Vip), err } // Update takes the representation of a vip and updates it. Returns the server's representation of the vip, and an error, if there is any. func (c *FakeVips) Update(ctx context.Context, vip *v1.Vip, opts metav1.UpdateOptions) (result *v1.Vip, err error) { + emptyResult := &v1.Vip{} obj, err := c.Fake. - Invokes(testing.NewRootUpdateAction(vipsResource, vip), &v1.Vip{}) + Invokes(testing.NewRootUpdateActionWithOptions(vipsResource, vip, opts), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } return obj.(*v1.Vip), 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 *FakeVips) UpdateStatus(ctx context.Context, vip *v1.Vip, opts metav1.UpdateOptions) (*v1.Vip, error) { +func (c *FakeVips) UpdateStatus(ctx context.Context, vip *v1.Vip, opts metav1.UpdateOptions) (result *v1.Vip, err error) { + emptyResult := &v1.Vip{} obj, err := c.Fake. - Invokes(testing.NewRootUpdateSubresourceAction(vipsResource, "status", vip), &v1.Vip{}) + Invokes(testing.NewRootUpdateSubresourceActionWithOptions(vipsResource, "status", vip, opts), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } return obj.(*v1.Vip), err } @@ -115,7 +120,7 @@ func (c *FakeVips) Delete(ctx context.Context, name string, opts metav1.DeleteOp // DeleteCollection deletes a collection of objects. func (c *FakeVips) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error { - action := testing.NewRootDeleteCollectionAction(vipsResource, listOpts) + action := testing.NewRootDeleteCollectionActionWithOptions(vipsResource, opts, listOpts) _, err := c.Fake.Invokes(action, &v1.VipList{}) return err @@ -123,10 +128,11 @@ func (c *FakeVips) DeleteCollection(ctx context.Context, opts metav1.DeleteOptio // Patch applies the patch and returns the patched vip. func (c *FakeVips) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.Vip, err error) { + emptyResult := &v1.Vip{} obj, err := c.Fake. - Invokes(testing.NewRootPatchSubresourceAction(vipsResource, name, pt, data, subresources...), &v1.Vip{}) + Invokes(testing.NewRootPatchSubresourceActionWithOptions(vipsResource, name, pt, data, opts, subresources...), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } return obj.(*v1.Vip), err } diff --git a/pkg/client/clientset/versioned/typed/kubeovn/v1/fake/fake_vlan.go b/pkg/client/clientset/versioned/typed/kubeovn/v1/fake/fake_vlan.go index 07434f67162..efb1e37decc 100644 --- a/pkg/client/clientset/versioned/typed/kubeovn/v1/fake/fake_vlan.go +++ b/pkg/client/clientset/versioned/typed/kubeovn/v1/fake/fake_vlan.go @@ -40,20 +40,22 @@ var vlansKind = v1.SchemeGroupVersion.WithKind("Vlan") // Get takes name of the vlan, and returns the corresponding vlan object, and an error if there is any. func (c *FakeVlans) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.Vlan, err error) { + emptyResult := &v1.Vlan{} obj, err := c.Fake. - Invokes(testing.NewRootGetAction(vlansResource, name), &v1.Vlan{}) + Invokes(testing.NewRootGetActionWithOptions(vlansResource, name, options), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } return obj.(*v1.Vlan), err } // List takes label and field selectors, and returns the list of Vlans that match those selectors. func (c *FakeVlans) List(ctx context.Context, opts metav1.ListOptions) (result *v1.VlanList, err error) { + emptyResult := &v1.VlanList{} obj, err := c.Fake. - Invokes(testing.NewRootListAction(vlansResource, vlansKind, opts), &v1.VlanList{}) + Invokes(testing.NewRootListActionWithOptions(vlansResource, vlansKind, opts), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } label, _, _ := testing.ExtractFromListOptions(opts) @@ -72,36 +74,39 @@ func (c *FakeVlans) List(ctx context.Context, opts metav1.ListOptions) (result * // Watch returns a watch.Interface that watches the requested vlans. func (c *FakeVlans) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) { return c.Fake. - InvokesWatch(testing.NewRootWatchAction(vlansResource, opts)) + InvokesWatch(testing.NewRootWatchActionWithOptions(vlansResource, opts)) } // Create takes the representation of a vlan and creates it. Returns the server's representation of the vlan, and an error, if there is any. func (c *FakeVlans) Create(ctx context.Context, vlan *v1.Vlan, opts metav1.CreateOptions) (result *v1.Vlan, err error) { + emptyResult := &v1.Vlan{} obj, err := c.Fake. - Invokes(testing.NewRootCreateAction(vlansResource, vlan), &v1.Vlan{}) + Invokes(testing.NewRootCreateActionWithOptions(vlansResource, vlan, opts), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } return obj.(*v1.Vlan), err } // Update takes the representation of a vlan and updates it. Returns the server's representation of the vlan, and an error, if there is any. func (c *FakeVlans) Update(ctx context.Context, vlan *v1.Vlan, opts metav1.UpdateOptions) (result *v1.Vlan, err error) { + emptyResult := &v1.Vlan{} obj, err := c.Fake. - Invokes(testing.NewRootUpdateAction(vlansResource, vlan), &v1.Vlan{}) + Invokes(testing.NewRootUpdateActionWithOptions(vlansResource, vlan, opts), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } return obj.(*v1.Vlan), 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 *FakeVlans) UpdateStatus(ctx context.Context, vlan *v1.Vlan, opts metav1.UpdateOptions) (*v1.Vlan, error) { +func (c *FakeVlans) UpdateStatus(ctx context.Context, vlan *v1.Vlan, opts metav1.UpdateOptions) (result *v1.Vlan, err error) { + emptyResult := &v1.Vlan{} obj, err := c.Fake. - Invokes(testing.NewRootUpdateSubresourceAction(vlansResource, "status", vlan), &v1.Vlan{}) + Invokes(testing.NewRootUpdateSubresourceActionWithOptions(vlansResource, "status", vlan, opts), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } return obj.(*v1.Vlan), err } @@ -115,7 +120,7 @@ func (c *FakeVlans) Delete(ctx context.Context, name string, opts metav1.DeleteO // DeleteCollection deletes a collection of objects. func (c *FakeVlans) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error { - action := testing.NewRootDeleteCollectionAction(vlansResource, listOpts) + action := testing.NewRootDeleteCollectionActionWithOptions(vlansResource, opts, listOpts) _, err := c.Fake.Invokes(action, &v1.VlanList{}) return err @@ -123,10 +128,11 @@ func (c *FakeVlans) DeleteCollection(ctx context.Context, opts metav1.DeleteOpti // Patch applies the patch and returns the patched vlan. func (c *FakeVlans) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.Vlan, err error) { + emptyResult := &v1.Vlan{} obj, err := c.Fake. - Invokes(testing.NewRootPatchSubresourceAction(vlansResource, name, pt, data, subresources...), &v1.Vlan{}) + Invokes(testing.NewRootPatchSubresourceActionWithOptions(vlansResource, name, pt, data, opts, subresources...), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } return obj.(*v1.Vlan), err } diff --git a/pkg/client/clientset/versioned/typed/kubeovn/v1/fake/fake_vpc.go b/pkg/client/clientset/versioned/typed/kubeovn/v1/fake/fake_vpc.go index a4eeb8ea36e..2b2ca6f17c3 100644 --- a/pkg/client/clientset/versioned/typed/kubeovn/v1/fake/fake_vpc.go +++ b/pkg/client/clientset/versioned/typed/kubeovn/v1/fake/fake_vpc.go @@ -40,20 +40,22 @@ var vpcsKind = v1.SchemeGroupVersion.WithKind("Vpc") // Get takes name of the vpc, and returns the corresponding vpc object, and an error if there is any. func (c *FakeVpcs) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.Vpc, err error) { + emptyResult := &v1.Vpc{} obj, err := c.Fake. - Invokes(testing.NewRootGetAction(vpcsResource, name), &v1.Vpc{}) + Invokes(testing.NewRootGetActionWithOptions(vpcsResource, name, options), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } return obj.(*v1.Vpc), err } // List takes label and field selectors, and returns the list of Vpcs that match those selectors. func (c *FakeVpcs) List(ctx context.Context, opts metav1.ListOptions) (result *v1.VpcList, err error) { + emptyResult := &v1.VpcList{} obj, err := c.Fake. - Invokes(testing.NewRootListAction(vpcsResource, vpcsKind, opts), &v1.VpcList{}) + Invokes(testing.NewRootListActionWithOptions(vpcsResource, vpcsKind, opts), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } label, _, _ := testing.ExtractFromListOptions(opts) @@ -72,36 +74,39 @@ func (c *FakeVpcs) List(ctx context.Context, opts metav1.ListOptions) (result *v // Watch returns a watch.Interface that watches the requested vpcs. func (c *FakeVpcs) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) { return c.Fake. - InvokesWatch(testing.NewRootWatchAction(vpcsResource, opts)) + InvokesWatch(testing.NewRootWatchActionWithOptions(vpcsResource, opts)) } // Create takes the representation of a vpc and creates it. Returns the server's representation of the vpc, and an error, if there is any. func (c *FakeVpcs) Create(ctx context.Context, vpc *v1.Vpc, opts metav1.CreateOptions) (result *v1.Vpc, err error) { + emptyResult := &v1.Vpc{} obj, err := c.Fake. - Invokes(testing.NewRootCreateAction(vpcsResource, vpc), &v1.Vpc{}) + Invokes(testing.NewRootCreateActionWithOptions(vpcsResource, vpc, opts), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } return obj.(*v1.Vpc), err } // Update takes the representation of a vpc and updates it. Returns the server's representation of the vpc, and an error, if there is any. func (c *FakeVpcs) Update(ctx context.Context, vpc *v1.Vpc, opts metav1.UpdateOptions) (result *v1.Vpc, err error) { + emptyResult := &v1.Vpc{} obj, err := c.Fake. - Invokes(testing.NewRootUpdateAction(vpcsResource, vpc), &v1.Vpc{}) + Invokes(testing.NewRootUpdateActionWithOptions(vpcsResource, vpc, opts), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } return obj.(*v1.Vpc), 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 *FakeVpcs) UpdateStatus(ctx context.Context, vpc *v1.Vpc, opts metav1.UpdateOptions) (*v1.Vpc, error) { +func (c *FakeVpcs) UpdateStatus(ctx context.Context, vpc *v1.Vpc, opts metav1.UpdateOptions) (result *v1.Vpc, err error) { + emptyResult := &v1.Vpc{} obj, err := c.Fake. - Invokes(testing.NewRootUpdateSubresourceAction(vpcsResource, "status", vpc), &v1.Vpc{}) + Invokes(testing.NewRootUpdateSubresourceActionWithOptions(vpcsResource, "status", vpc, opts), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } return obj.(*v1.Vpc), err } @@ -115,7 +120,7 @@ func (c *FakeVpcs) Delete(ctx context.Context, name string, opts metav1.DeleteOp // DeleteCollection deletes a collection of objects. func (c *FakeVpcs) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error { - action := testing.NewRootDeleteCollectionAction(vpcsResource, listOpts) + action := testing.NewRootDeleteCollectionActionWithOptions(vpcsResource, opts, listOpts) _, err := c.Fake.Invokes(action, &v1.VpcList{}) return err @@ -123,10 +128,11 @@ func (c *FakeVpcs) DeleteCollection(ctx context.Context, opts metav1.DeleteOptio // Patch applies the patch and returns the patched vpc. func (c *FakeVpcs) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.Vpc, err error) { + emptyResult := &v1.Vpc{} obj, err := c.Fake. - Invokes(testing.NewRootPatchSubresourceAction(vpcsResource, name, pt, data, subresources...), &v1.Vpc{}) + Invokes(testing.NewRootPatchSubresourceActionWithOptions(vpcsResource, name, pt, data, opts, subresources...), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } return obj.(*v1.Vpc), err } diff --git a/pkg/client/clientset/versioned/typed/kubeovn/v1/fake/fake_vpcdns.go b/pkg/client/clientset/versioned/typed/kubeovn/v1/fake/fake_vpcdns.go index 21a7155d542..a615f2a0b29 100644 --- a/pkg/client/clientset/versioned/typed/kubeovn/v1/fake/fake_vpcdns.go +++ b/pkg/client/clientset/versioned/typed/kubeovn/v1/fake/fake_vpcdns.go @@ -40,20 +40,22 @@ var vpcdnsesKind = v1.SchemeGroupVersion.WithKind("VpcDns") // Get takes name of the vpcDns, and returns the corresponding vpcDns object, and an error if there is any. func (c *FakeVpcDnses) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.VpcDns, err error) { + emptyResult := &v1.VpcDns{} obj, err := c.Fake. - Invokes(testing.NewRootGetAction(vpcdnsesResource, name), &v1.VpcDns{}) + Invokes(testing.NewRootGetActionWithOptions(vpcdnsesResource, name, options), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } return obj.(*v1.VpcDns), err } // List takes label and field selectors, and returns the list of VpcDnses that match those selectors. func (c *FakeVpcDnses) List(ctx context.Context, opts metav1.ListOptions) (result *v1.VpcDnsList, err error) { + emptyResult := &v1.VpcDnsList{} obj, err := c.Fake. - Invokes(testing.NewRootListAction(vpcdnsesResource, vpcdnsesKind, opts), &v1.VpcDnsList{}) + Invokes(testing.NewRootListActionWithOptions(vpcdnsesResource, vpcdnsesKind, opts), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } label, _, _ := testing.ExtractFromListOptions(opts) @@ -72,36 +74,39 @@ func (c *FakeVpcDnses) List(ctx context.Context, opts metav1.ListOptions) (resul // Watch returns a watch.Interface that watches the requested vpcDnses. func (c *FakeVpcDnses) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) { return c.Fake. - InvokesWatch(testing.NewRootWatchAction(vpcdnsesResource, opts)) + InvokesWatch(testing.NewRootWatchActionWithOptions(vpcdnsesResource, opts)) } // Create takes the representation of a vpcDns and creates it. Returns the server's representation of the vpcDns, and an error, if there is any. func (c *FakeVpcDnses) Create(ctx context.Context, vpcDns *v1.VpcDns, opts metav1.CreateOptions) (result *v1.VpcDns, err error) { + emptyResult := &v1.VpcDns{} obj, err := c.Fake. - Invokes(testing.NewRootCreateAction(vpcdnsesResource, vpcDns), &v1.VpcDns{}) + Invokes(testing.NewRootCreateActionWithOptions(vpcdnsesResource, vpcDns, opts), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } return obj.(*v1.VpcDns), err } // Update takes the representation of a vpcDns and updates it. Returns the server's representation of the vpcDns, and an error, if there is any. func (c *FakeVpcDnses) Update(ctx context.Context, vpcDns *v1.VpcDns, opts metav1.UpdateOptions) (result *v1.VpcDns, err error) { + emptyResult := &v1.VpcDns{} obj, err := c.Fake. - Invokes(testing.NewRootUpdateAction(vpcdnsesResource, vpcDns), &v1.VpcDns{}) + Invokes(testing.NewRootUpdateActionWithOptions(vpcdnsesResource, vpcDns, opts), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } return obj.(*v1.VpcDns), 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 *FakeVpcDnses) UpdateStatus(ctx context.Context, vpcDns *v1.VpcDns, opts metav1.UpdateOptions) (*v1.VpcDns, error) { +func (c *FakeVpcDnses) UpdateStatus(ctx context.Context, vpcDns *v1.VpcDns, opts metav1.UpdateOptions) (result *v1.VpcDns, err error) { + emptyResult := &v1.VpcDns{} obj, err := c.Fake. - Invokes(testing.NewRootUpdateSubresourceAction(vpcdnsesResource, "status", vpcDns), &v1.VpcDns{}) + Invokes(testing.NewRootUpdateSubresourceActionWithOptions(vpcdnsesResource, "status", vpcDns, opts), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } return obj.(*v1.VpcDns), err } @@ -115,7 +120,7 @@ func (c *FakeVpcDnses) Delete(ctx context.Context, name string, opts metav1.Dele // DeleteCollection deletes a collection of objects. func (c *FakeVpcDnses) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error { - action := testing.NewRootDeleteCollectionAction(vpcdnsesResource, listOpts) + action := testing.NewRootDeleteCollectionActionWithOptions(vpcdnsesResource, opts, listOpts) _, err := c.Fake.Invokes(action, &v1.VpcDnsList{}) return err @@ -123,10 +128,11 @@ func (c *FakeVpcDnses) DeleteCollection(ctx context.Context, opts metav1.DeleteO // Patch applies the patch and returns the patched vpcDns. func (c *FakeVpcDnses) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.VpcDns, err error) { + emptyResult := &v1.VpcDns{} obj, err := c.Fake. - Invokes(testing.NewRootPatchSubresourceAction(vpcdnsesResource, name, pt, data, subresources...), &v1.VpcDns{}) + Invokes(testing.NewRootPatchSubresourceActionWithOptions(vpcdnsesResource, name, pt, data, opts, subresources...), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } return obj.(*v1.VpcDns), err } diff --git a/pkg/client/clientset/versioned/typed/kubeovn/v1/fake/fake_vpcnatgateway.go b/pkg/client/clientset/versioned/typed/kubeovn/v1/fake/fake_vpcnatgateway.go index f1d6955c137..6ef40bc4774 100644 --- a/pkg/client/clientset/versioned/typed/kubeovn/v1/fake/fake_vpcnatgateway.go +++ b/pkg/client/clientset/versioned/typed/kubeovn/v1/fake/fake_vpcnatgateway.go @@ -40,20 +40,22 @@ var vpcnatgatewaysKind = v1.SchemeGroupVersion.WithKind("VpcNatGateway") // Get takes name of the vpcNatGateway, and returns the corresponding vpcNatGateway object, and an error if there is any. func (c *FakeVpcNatGateways) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.VpcNatGateway, err error) { + emptyResult := &v1.VpcNatGateway{} obj, err := c.Fake. - Invokes(testing.NewRootGetAction(vpcnatgatewaysResource, name), &v1.VpcNatGateway{}) + Invokes(testing.NewRootGetActionWithOptions(vpcnatgatewaysResource, name, options), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } return obj.(*v1.VpcNatGateway), err } // List takes label and field selectors, and returns the list of VpcNatGateways that match those selectors. func (c *FakeVpcNatGateways) List(ctx context.Context, opts metav1.ListOptions) (result *v1.VpcNatGatewayList, err error) { + emptyResult := &v1.VpcNatGatewayList{} obj, err := c.Fake. - Invokes(testing.NewRootListAction(vpcnatgatewaysResource, vpcnatgatewaysKind, opts), &v1.VpcNatGatewayList{}) + Invokes(testing.NewRootListActionWithOptions(vpcnatgatewaysResource, vpcnatgatewaysKind, opts), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } label, _, _ := testing.ExtractFromListOptions(opts) @@ -72,36 +74,39 @@ func (c *FakeVpcNatGateways) List(ctx context.Context, opts metav1.ListOptions) // Watch returns a watch.Interface that watches the requested vpcNatGateways. func (c *FakeVpcNatGateways) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) { return c.Fake. - InvokesWatch(testing.NewRootWatchAction(vpcnatgatewaysResource, opts)) + InvokesWatch(testing.NewRootWatchActionWithOptions(vpcnatgatewaysResource, opts)) } // Create takes the representation of a vpcNatGateway and creates it. Returns the server's representation of the vpcNatGateway, and an error, if there is any. func (c *FakeVpcNatGateways) Create(ctx context.Context, vpcNatGateway *v1.VpcNatGateway, opts metav1.CreateOptions) (result *v1.VpcNatGateway, err error) { + emptyResult := &v1.VpcNatGateway{} obj, err := c.Fake. - Invokes(testing.NewRootCreateAction(vpcnatgatewaysResource, vpcNatGateway), &v1.VpcNatGateway{}) + Invokes(testing.NewRootCreateActionWithOptions(vpcnatgatewaysResource, vpcNatGateway, opts), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } return obj.(*v1.VpcNatGateway), err } // Update takes the representation of a vpcNatGateway and updates it. Returns the server's representation of the vpcNatGateway, and an error, if there is any. func (c *FakeVpcNatGateways) Update(ctx context.Context, vpcNatGateway *v1.VpcNatGateway, opts metav1.UpdateOptions) (result *v1.VpcNatGateway, err error) { + emptyResult := &v1.VpcNatGateway{} obj, err := c.Fake. - Invokes(testing.NewRootUpdateAction(vpcnatgatewaysResource, vpcNatGateway), &v1.VpcNatGateway{}) + Invokes(testing.NewRootUpdateActionWithOptions(vpcnatgatewaysResource, vpcNatGateway, opts), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } return obj.(*v1.VpcNatGateway), 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 *FakeVpcNatGateways) UpdateStatus(ctx context.Context, vpcNatGateway *v1.VpcNatGateway, opts metav1.UpdateOptions) (*v1.VpcNatGateway, error) { +func (c *FakeVpcNatGateways) UpdateStatus(ctx context.Context, vpcNatGateway *v1.VpcNatGateway, opts metav1.UpdateOptions) (result *v1.VpcNatGateway, err error) { + emptyResult := &v1.VpcNatGateway{} obj, err := c.Fake. - Invokes(testing.NewRootUpdateSubresourceAction(vpcnatgatewaysResource, "status", vpcNatGateway), &v1.VpcNatGateway{}) + Invokes(testing.NewRootUpdateSubresourceActionWithOptions(vpcnatgatewaysResource, "status", vpcNatGateway, opts), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } return obj.(*v1.VpcNatGateway), err } @@ -115,7 +120,7 @@ func (c *FakeVpcNatGateways) Delete(ctx context.Context, name string, opts metav // DeleteCollection deletes a collection of objects. func (c *FakeVpcNatGateways) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error { - action := testing.NewRootDeleteCollectionAction(vpcnatgatewaysResource, listOpts) + action := testing.NewRootDeleteCollectionActionWithOptions(vpcnatgatewaysResource, opts, listOpts) _, err := c.Fake.Invokes(action, &v1.VpcNatGatewayList{}) return err @@ -123,10 +128,11 @@ func (c *FakeVpcNatGateways) DeleteCollection(ctx context.Context, opts metav1.D // Patch applies the patch and returns the patched vpcNatGateway. func (c *FakeVpcNatGateways) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.VpcNatGateway, err error) { + emptyResult := &v1.VpcNatGateway{} obj, err := c.Fake. - Invokes(testing.NewRootPatchSubresourceAction(vpcnatgatewaysResource, name, pt, data, subresources...), &v1.VpcNatGateway{}) + Invokes(testing.NewRootPatchSubresourceActionWithOptions(vpcnatgatewaysResource, name, pt, data, opts, subresources...), emptyResult) if obj == nil { - return nil, err + return emptyResult, err } return obj.(*v1.VpcNatGateway), err } diff --git a/pkg/client/clientset/versioned/typed/kubeovn/v1/ip.go b/pkg/client/clientset/versioned/typed/kubeovn/v1/ip.go index 53015e82f54..62a0c930b1c 100644 --- a/pkg/client/clientset/versioned/typed/kubeovn/v1/ip.go +++ b/pkg/client/clientset/versioned/typed/kubeovn/v1/ip.go @@ -20,14 +20,13 @@ package v1 import ( "context" - "time" v1 "github.com/kubeovn/kube-ovn/pkg/apis/kubeovn/v1" scheme "github.com/kubeovn/kube-ovn/pkg/client/clientset/versioned/scheme" metav1 "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" ) // IPsGetter has a method to return a IPInterface. @@ -51,118 +50,18 @@ type IPInterface interface { // iPs implements IPInterface type iPs struct { - client rest.Interface + *gentype.ClientWithList[*v1.IP, *v1.IPList] } // newIPs returns a IPs func newIPs(c *KubeovnV1Client) *iPs { return &iPs{ - client: c.RESTClient(), + gentype.NewClientWithList[*v1.IP, *v1.IPList]( + "ips", + c.RESTClient(), + scheme.ParameterCodec, + "", + func() *v1.IP { return &v1.IP{} }, + func() *v1.IPList { return &v1.IPList{} }), } } - -// Get takes name of the iP, and returns the corresponding iP object, and an error if there is any. -func (c *iPs) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.IP, err error) { - result = &v1.IP{} - err = c.client.Get(). - Resource("ips"). - Name(name). - VersionedParams(&options, scheme.ParameterCodec). - Do(ctx). - Into(result) - return -} - -// List takes label and field selectors, and returns the list of IPs that match those selectors. -func (c *iPs) List(ctx context.Context, opts metav1.ListOptions) (result *v1.IPList, err error) { - var timeout time.Duration - if opts.TimeoutSeconds != nil { - timeout = time.Duration(*opts.TimeoutSeconds) * time.Second - } - result = &v1.IPList{} - err = c.client.Get(). - Resource("ips"). - VersionedParams(&opts, scheme.ParameterCodec). - Timeout(timeout). - Do(ctx). - Into(result) - return -} - -// Watch returns a watch.Interface that watches the requested iPs. -func (c *iPs) Watch(ctx context.Context, opts metav1.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("ips"). - VersionedParams(&opts, scheme.ParameterCodec). - Timeout(timeout). - Watch(ctx) -} - -// Create takes the representation of a iP and creates it. Returns the server's representation of the iP, and an error, if there is any. -func (c *iPs) Create(ctx context.Context, iP *v1.IP, opts metav1.CreateOptions) (result *v1.IP, err error) { - result = &v1.IP{} - err = c.client.Post(). - Resource("ips"). - VersionedParams(&opts, scheme.ParameterCodec). - Body(iP). - Do(ctx). - Into(result) - return -} - -// Update takes the representation of a iP and updates it. Returns the server's representation of the iP, and an error, if there is any. -func (c *iPs) Update(ctx context.Context, iP *v1.IP, opts metav1.UpdateOptions) (result *v1.IP, err error) { - result = &v1.IP{} - err = c.client.Put(). - Resource("ips"). - Name(iP.Name). - VersionedParams(&opts, scheme.ParameterCodec). - Body(iP). - Do(ctx). - Into(result) - return -} - -// Delete takes name of the iP and deletes it. Returns an error if one occurs. -func (c *iPs) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error { - return c.client.Delete(). - Resource("ips"). - Name(name). - Body(&opts). - Do(ctx). - Error() -} - -// DeleteCollection deletes a collection of objects. -func (c *iPs) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error { - var timeout time.Duration - if listOpts.TimeoutSeconds != nil { - timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second - } - return c.client.Delete(). - Resource("ips"). - VersionedParams(&listOpts, scheme.ParameterCodec). - Timeout(timeout). - Body(&opts). - Do(ctx). - Error() -} - -// Patch applies the patch and returns the patched iP. -func (c *iPs) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.IP, err error) { - result = &v1.IP{} - err = c.client.Patch(pt). - Resource("ips"). - Name(name). - SubResource(subresources...). - VersionedParams(&opts, scheme.ParameterCodec). - Body(data). - Do(ctx). - Into(result) - return -} diff --git a/pkg/client/clientset/versioned/typed/kubeovn/v1/ippool.go b/pkg/client/clientset/versioned/typed/kubeovn/v1/ippool.go index bd6c7bff6bf..c307de9ba95 100644 --- a/pkg/client/clientset/versioned/typed/kubeovn/v1/ippool.go +++ b/pkg/client/clientset/versioned/typed/kubeovn/v1/ippool.go @@ -20,14 +20,13 @@ package v1 import ( "context" - "time" v1 "github.com/kubeovn/kube-ovn/pkg/apis/kubeovn/v1" scheme "github.com/kubeovn/kube-ovn/pkg/client/clientset/versioned/scheme" metav1 "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" ) // IPPoolsGetter has a method to return a IPPoolInterface. @@ -40,6 +39,7 @@ type IPPoolsGetter interface { type IPPoolInterface interface { Create(ctx context.Context, iPPool *v1.IPPool, opts metav1.CreateOptions) (*v1.IPPool, error) Update(ctx context.Context, iPPool *v1.IPPool, opts metav1.UpdateOptions) (*v1.IPPool, error) + // Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus(). UpdateStatus(ctx context.Context, iPPool *v1.IPPool, opts metav1.UpdateOptions) (*v1.IPPool, error) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error @@ -52,133 +52,18 @@ type IPPoolInterface interface { // iPPools implements IPPoolInterface type iPPools struct { - client rest.Interface + *gentype.ClientWithList[*v1.IPPool, *v1.IPPoolList] } // newIPPools returns a IPPools func newIPPools(c *KubeovnV1Client) *iPPools { return &iPPools{ - client: c.RESTClient(), + gentype.NewClientWithList[*v1.IPPool, *v1.IPPoolList]( + "ippools", + c.RESTClient(), + scheme.ParameterCodec, + "", + func() *v1.IPPool { return &v1.IPPool{} }, + func() *v1.IPPoolList { return &v1.IPPoolList{} }), } } - -// Get takes name of the iPPool, and returns the corresponding iPPool object, and an error if there is any. -func (c *iPPools) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.IPPool, err error) { - result = &v1.IPPool{} - err = c.client.Get(). - Resource("ippools"). - Name(name). - VersionedParams(&options, scheme.ParameterCodec). - Do(ctx). - Into(result) - return -} - -// List takes label and field selectors, and returns the list of IPPools that match those selectors. -func (c *iPPools) List(ctx context.Context, opts metav1.ListOptions) (result *v1.IPPoolList, err error) { - var timeout time.Duration - if opts.TimeoutSeconds != nil { - timeout = time.Duration(*opts.TimeoutSeconds) * time.Second - } - result = &v1.IPPoolList{} - err = c.client.Get(). - Resource("ippools"). - VersionedParams(&opts, scheme.ParameterCodec). - Timeout(timeout). - Do(ctx). - Into(result) - return -} - -// Watch returns a watch.Interface that watches the requested iPPools. -func (c *iPPools) Watch(ctx context.Context, opts metav1.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("ippools"). - VersionedParams(&opts, scheme.ParameterCodec). - Timeout(timeout). - Watch(ctx) -} - -// Create takes the representation of a iPPool and creates it. Returns the server's representation of the iPPool, and an error, if there is any. -func (c *iPPools) Create(ctx context.Context, iPPool *v1.IPPool, opts metav1.CreateOptions) (result *v1.IPPool, err error) { - result = &v1.IPPool{} - err = c.client.Post(). - Resource("ippools"). - VersionedParams(&opts, scheme.ParameterCodec). - Body(iPPool). - Do(ctx). - Into(result) - return -} - -// Update takes the representation of a iPPool and updates it. Returns the server's representation of the iPPool, and an error, if there is any. -func (c *iPPools) Update(ctx context.Context, iPPool *v1.IPPool, opts metav1.UpdateOptions) (result *v1.IPPool, err error) { - result = &v1.IPPool{} - err = c.client.Put(). - Resource("ippools"). - Name(iPPool.Name). - VersionedParams(&opts, scheme.ParameterCodec). - Body(iPPool). - 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 *iPPools) UpdateStatus(ctx context.Context, iPPool *v1.IPPool, opts metav1.UpdateOptions) (result *v1.IPPool, err error) { - result = &v1.IPPool{} - err = c.client.Put(). - Resource("ippools"). - Name(iPPool.Name). - SubResource("status"). - VersionedParams(&opts, scheme.ParameterCodec). - Body(iPPool). - Do(ctx). - Into(result) - return -} - -// Delete takes name of the iPPool and deletes it. Returns an error if one occurs. -func (c *iPPools) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error { - return c.client.Delete(). - Resource("ippools"). - Name(name). - Body(&opts). - Do(ctx). - Error() -} - -// DeleteCollection deletes a collection of objects. -func (c *iPPools) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error { - var timeout time.Duration - if listOpts.TimeoutSeconds != nil { - timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second - } - return c.client.Delete(). - Resource("ippools"). - VersionedParams(&listOpts, scheme.ParameterCodec). - Timeout(timeout). - Body(&opts). - Do(ctx). - Error() -} - -// Patch applies the patch and returns the patched iPPool. -func (c *iPPools) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.IPPool, err error) { - result = &v1.IPPool{} - err = c.client.Patch(pt). - Resource("ippools"). - Name(name). - SubResource(subresources...). - VersionedParams(&opts, scheme.ParameterCodec). - Body(data). - Do(ctx). - Into(result) - return -} diff --git a/pkg/client/clientset/versioned/typed/kubeovn/v1/iptablesdnatrule.go b/pkg/client/clientset/versioned/typed/kubeovn/v1/iptablesdnatrule.go index b2088e59d5e..89ac3cdf6d5 100644 --- a/pkg/client/clientset/versioned/typed/kubeovn/v1/iptablesdnatrule.go +++ b/pkg/client/clientset/versioned/typed/kubeovn/v1/iptablesdnatrule.go @@ -20,14 +20,13 @@ package v1 import ( "context" - "time" v1 "github.com/kubeovn/kube-ovn/pkg/apis/kubeovn/v1" scheme "github.com/kubeovn/kube-ovn/pkg/client/clientset/versioned/scheme" metav1 "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" ) // IptablesDnatRulesGetter has a method to return a IptablesDnatRuleInterface. @@ -40,6 +39,7 @@ type IptablesDnatRulesGetter interface { type IptablesDnatRuleInterface interface { Create(ctx context.Context, iptablesDnatRule *v1.IptablesDnatRule, opts metav1.CreateOptions) (*v1.IptablesDnatRule, error) Update(ctx context.Context, iptablesDnatRule *v1.IptablesDnatRule, opts metav1.UpdateOptions) (*v1.IptablesDnatRule, error) + // Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus(). UpdateStatus(ctx context.Context, iptablesDnatRule *v1.IptablesDnatRule, opts metav1.UpdateOptions) (*v1.IptablesDnatRule, error) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error @@ -52,133 +52,18 @@ type IptablesDnatRuleInterface interface { // iptablesDnatRules implements IptablesDnatRuleInterface type iptablesDnatRules struct { - client rest.Interface + *gentype.ClientWithList[*v1.IptablesDnatRule, *v1.IptablesDnatRuleList] } // newIptablesDnatRules returns a IptablesDnatRules func newIptablesDnatRules(c *KubeovnV1Client) *iptablesDnatRules { return &iptablesDnatRules{ - client: c.RESTClient(), + gentype.NewClientWithList[*v1.IptablesDnatRule, *v1.IptablesDnatRuleList]( + "iptables-dnat-rules", + c.RESTClient(), + scheme.ParameterCodec, + "", + func() *v1.IptablesDnatRule { return &v1.IptablesDnatRule{} }, + func() *v1.IptablesDnatRuleList { return &v1.IptablesDnatRuleList{} }), } } - -// Get takes name of the iptablesDnatRule, and returns the corresponding iptablesDnatRule object, and an error if there is any. -func (c *iptablesDnatRules) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.IptablesDnatRule, err error) { - result = &v1.IptablesDnatRule{} - err = c.client.Get(). - Resource("iptables-dnat-rules"). - Name(name). - VersionedParams(&options, scheme.ParameterCodec). - Do(ctx). - Into(result) - return -} - -// List takes label and field selectors, and returns the list of IptablesDnatRules that match those selectors. -func (c *iptablesDnatRules) List(ctx context.Context, opts metav1.ListOptions) (result *v1.IptablesDnatRuleList, err error) { - var timeout time.Duration - if opts.TimeoutSeconds != nil { - timeout = time.Duration(*opts.TimeoutSeconds) * time.Second - } - result = &v1.IptablesDnatRuleList{} - err = c.client.Get(). - Resource("iptables-dnat-rules"). - VersionedParams(&opts, scheme.ParameterCodec). - Timeout(timeout). - Do(ctx). - Into(result) - return -} - -// Watch returns a watch.Interface that watches the requested iptablesDnatRules. -func (c *iptablesDnatRules) Watch(ctx context.Context, opts metav1.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("iptables-dnat-rules"). - VersionedParams(&opts, scheme.ParameterCodec). - Timeout(timeout). - Watch(ctx) -} - -// Create takes the representation of a iptablesDnatRule and creates it. Returns the server's representation of the iptablesDnatRule, and an error, if there is any. -func (c *iptablesDnatRules) Create(ctx context.Context, iptablesDnatRule *v1.IptablesDnatRule, opts metav1.CreateOptions) (result *v1.IptablesDnatRule, err error) { - result = &v1.IptablesDnatRule{} - err = c.client.Post(). - Resource("iptables-dnat-rules"). - VersionedParams(&opts, scheme.ParameterCodec). - Body(iptablesDnatRule). - Do(ctx). - Into(result) - return -} - -// Update takes the representation of a iptablesDnatRule and updates it. Returns the server's representation of the iptablesDnatRule, and an error, if there is any. -func (c *iptablesDnatRules) Update(ctx context.Context, iptablesDnatRule *v1.IptablesDnatRule, opts metav1.UpdateOptions) (result *v1.IptablesDnatRule, err error) { - result = &v1.IptablesDnatRule{} - err = c.client.Put(). - Resource("iptables-dnat-rules"). - Name(iptablesDnatRule.Name). - VersionedParams(&opts, scheme.ParameterCodec). - Body(iptablesDnatRule). - 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 *iptablesDnatRules) UpdateStatus(ctx context.Context, iptablesDnatRule *v1.IptablesDnatRule, opts metav1.UpdateOptions) (result *v1.IptablesDnatRule, err error) { - result = &v1.IptablesDnatRule{} - err = c.client.Put(). - Resource("iptables-dnat-rules"). - Name(iptablesDnatRule.Name). - SubResource("status"). - VersionedParams(&opts, scheme.ParameterCodec). - Body(iptablesDnatRule). - Do(ctx). - Into(result) - return -} - -// Delete takes name of the iptablesDnatRule and deletes it. Returns an error if one occurs. -func (c *iptablesDnatRules) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error { - return c.client.Delete(). - Resource("iptables-dnat-rules"). - Name(name). - Body(&opts). - Do(ctx). - Error() -} - -// DeleteCollection deletes a collection of objects. -func (c *iptablesDnatRules) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error { - var timeout time.Duration - if listOpts.TimeoutSeconds != nil { - timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second - } - return c.client.Delete(). - Resource("iptables-dnat-rules"). - VersionedParams(&listOpts, scheme.ParameterCodec). - Timeout(timeout). - Body(&opts). - Do(ctx). - Error() -} - -// Patch applies the patch and returns the patched iptablesDnatRule. -func (c *iptablesDnatRules) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.IptablesDnatRule, err error) { - result = &v1.IptablesDnatRule{} - err = c.client.Patch(pt). - Resource("iptables-dnat-rules"). - Name(name). - SubResource(subresources...). - VersionedParams(&opts, scheme.ParameterCodec). - Body(data). - Do(ctx). - Into(result) - return -} diff --git a/pkg/client/clientset/versioned/typed/kubeovn/v1/iptableseip.go b/pkg/client/clientset/versioned/typed/kubeovn/v1/iptableseip.go index 607ad8e9928..5a17e62469e 100644 --- a/pkg/client/clientset/versioned/typed/kubeovn/v1/iptableseip.go +++ b/pkg/client/clientset/versioned/typed/kubeovn/v1/iptableseip.go @@ -20,14 +20,13 @@ package v1 import ( "context" - "time" v1 "github.com/kubeovn/kube-ovn/pkg/apis/kubeovn/v1" scheme "github.com/kubeovn/kube-ovn/pkg/client/clientset/versioned/scheme" metav1 "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" ) // IptablesEIPsGetter has a method to return a IptablesEIPInterface. @@ -40,6 +39,7 @@ type IptablesEIPsGetter interface { type IptablesEIPInterface interface { Create(ctx context.Context, iptablesEIP *v1.IptablesEIP, opts metav1.CreateOptions) (*v1.IptablesEIP, error) Update(ctx context.Context, iptablesEIP *v1.IptablesEIP, opts metav1.UpdateOptions) (*v1.IptablesEIP, error) + // Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus(). UpdateStatus(ctx context.Context, iptablesEIP *v1.IptablesEIP, opts metav1.UpdateOptions) (*v1.IptablesEIP, error) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error @@ -52,133 +52,18 @@ type IptablesEIPInterface interface { // iptablesEIPs implements IptablesEIPInterface type iptablesEIPs struct { - client rest.Interface + *gentype.ClientWithList[*v1.IptablesEIP, *v1.IptablesEIPList] } // newIptablesEIPs returns a IptablesEIPs func newIptablesEIPs(c *KubeovnV1Client) *iptablesEIPs { return &iptablesEIPs{ - client: c.RESTClient(), + gentype.NewClientWithList[*v1.IptablesEIP, *v1.IptablesEIPList]( + "iptables-eips", + c.RESTClient(), + scheme.ParameterCodec, + "", + func() *v1.IptablesEIP { return &v1.IptablesEIP{} }, + func() *v1.IptablesEIPList { return &v1.IptablesEIPList{} }), } } - -// Get takes name of the iptablesEIP, and returns the corresponding iptablesEIP object, and an error if there is any. -func (c *iptablesEIPs) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.IptablesEIP, err error) { - result = &v1.IptablesEIP{} - err = c.client.Get(). - Resource("iptables-eips"). - Name(name). - VersionedParams(&options, scheme.ParameterCodec). - Do(ctx). - Into(result) - return -} - -// List takes label and field selectors, and returns the list of IptablesEIPs that match those selectors. -func (c *iptablesEIPs) List(ctx context.Context, opts metav1.ListOptions) (result *v1.IptablesEIPList, err error) { - var timeout time.Duration - if opts.TimeoutSeconds != nil { - timeout = time.Duration(*opts.TimeoutSeconds) * time.Second - } - result = &v1.IptablesEIPList{} - err = c.client.Get(). - Resource("iptables-eips"). - VersionedParams(&opts, scheme.ParameterCodec). - Timeout(timeout). - Do(ctx). - Into(result) - return -} - -// Watch returns a watch.Interface that watches the requested iptablesEIPs. -func (c *iptablesEIPs) Watch(ctx context.Context, opts metav1.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("iptables-eips"). - VersionedParams(&opts, scheme.ParameterCodec). - Timeout(timeout). - Watch(ctx) -} - -// Create takes the representation of a iptablesEIP and creates it. Returns the server's representation of the iptablesEIP, and an error, if there is any. -func (c *iptablesEIPs) Create(ctx context.Context, iptablesEIP *v1.IptablesEIP, opts metav1.CreateOptions) (result *v1.IptablesEIP, err error) { - result = &v1.IptablesEIP{} - err = c.client.Post(). - Resource("iptables-eips"). - VersionedParams(&opts, scheme.ParameterCodec). - Body(iptablesEIP). - Do(ctx). - Into(result) - return -} - -// Update takes the representation of a iptablesEIP and updates it. Returns the server's representation of the iptablesEIP, and an error, if there is any. -func (c *iptablesEIPs) Update(ctx context.Context, iptablesEIP *v1.IptablesEIP, opts metav1.UpdateOptions) (result *v1.IptablesEIP, err error) { - result = &v1.IptablesEIP{} - err = c.client.Put(). - Resource("iptables-eips"). - Name(iptablesEIP.Name). - VersionedParams(&opts, scheme.ParameterCodec). - Body(iptablesEIP). - 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 *iptablesEIPs) UpdateStatus(ctx context.Context, iptablesEIP *v1.IptablesEIP, opts metav1.UpdateOptions) (result *v1.IptablesEIP, err error) { - result = &v1.IptablesEIP{} - err = c.client.Put(). - Resource("iptables-eips"). - Name(iptablesEIP.Name). - SubResource("status"). - VersionedParams(&opts, scheme.ParameterCodec). - Body(iptablesEIP). - Do(ctx). - Into(result) - return -} - -// Delete takes name of the iptablesEIP and deletes it. Returns an error if one occurs. -func (c *iptablesEIPs) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error { - return c.client.Delete(). - Resource("iptables-eips"). - Name(name). - Body(&opts). - Do(ctx). - Error() -} - -// DeleteCollection deletes a collection of objects. -func (c *iptablesEIPs) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error { - var timeout time.Duration - if listOpts.TimeoutSeconds != nil { - timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second - } - return c.client.Delete(). - Resource("iptables-eips"). - VersionedParams(&listOpts, scheme.ParameterCodec). - Timeout(timeout). - Body(&opts). - Do(ctx). - Error() -} - -// Patch applies the patch and returns the patched iptablesEIP. -func (c *iptablesEIPs) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.IptablesEIP, err error) { - result = &v1.IptablesEIP{} - err = c.client.Patch(pt). - Resource("iptables-eips"). - Name(name). - SubResource(subresources...). - VersionedParams(&opts, scheme.ParameterCodec). - Body(data). - Do(ctx). - Into(result) - return -} diff --git a/pkg/client/clientset/versioned/typed/kubeovn/v1/iptablesfiprule.go b/pkg/client/clientset/versioned/typed/kubeovn/v1/iptablesfiprule.go index 2cc7fef6cd4..7ea4e7d2824 100644 --- a/pkg/client/clientset/versioned/typed/kubeovn/v1/iptablesfiprule.go +++ b/pkg/client/clientset/versioned/typed/kubeovn/v1/iptablesfiprule.go @@ -20,14 +20,13 @@ package v1 import ( "context" - "time" v1 "github.com/kubeovn/kube-ovn/pkg/apis/kubeovn/v1" scheme "github.com/kubeovn/kube-ovn/pkg/client/clientset/versioned/scheme" metav1 "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" ) // IptablesFIPRulesGetter has a method to return a IptablesFIPRuleInterface. @@ -40,6 +39,7 @@ type IptablesFIPRulesGetter interface { type IptablesFIPRuleInterface interface { Create(ctx context.Context, iptablesFIPRule *v1.IptablesFIPRule, opts metav1.CreateOptions) (*v1.IptablesFIPRule, error) Update(ctx context.Context, iptablesFIPRule *v1.IptablesFIPRule, opts metav1.UpdateOptions) (*v1.IptablesFIPRule, error) + // Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus(). UpdateStatus(ctx context.Context, iptablesFIPRule *v1.IptablesFIPRule, opts metav1.UpdateOptions) (*v1.IptablesFIPRule, error) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error @@ -52,133 +52,18 @@ type IptablesFIPRuleInterface interface { // iptablesFIPRules implements IptablesFIPRuleInterface type iptablesFIPRules struct { - client rest.Interface + *gentype.ClientWithList[*v1.IptablesFIPRule, *v1.IptablesFIPRuleList] } // newIptablesFIPRules returns a IptablesFIPRules func newIptablesFIPRules(c *KubeovnV1Client) *iptablesFIPRules { return &iptablesFIPRules{ - client: c.RESTClient(), + gentype.NewClientWithList[*v1.IptablesFIPRule, *v1.IptablesFIPRuleList]( + "iptables-fip-rules", + c.RESTClient(), + scheme.ParameterCodec, + "", + func() *v1.IptablesFIPRule { return &v1.IptablesFIPRule{} }, + func() *v1.IptablesFIPRuleList { return &v1.IptablesFIPRuleList{} }), } } - -// Get takes name of the iptablesFIPRule, and returns the corresponding iptablesFIPRule object, and an error if there is any. -func (c *iptablesFIPRules) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.IptablesFIPRule, err error) { - result = &v1.IptablesFIPRule{} - err = c.client.Get(). - Resource("iptables-fip-rules"). - Name(name). - VersionedParams(&options, scheme.ParameterCodec). - Do(ctx). - Into(result) - return -} - -// List takes label and field selectors, and returns the list of IptablesFIPRules that match those selectors. -func (c *iptablesFIPRules) List(ctx context.Context, opts metav1.ListOptions) (result *v1.IptablesFIPRuleList, err error) { - var timeout time.Duration - if opts.TimeoutSeconds != nil { - timeout = time.Duration(*opts.TimeoutSeconds) * time.Second - } - result = &v1.IptablesFIPRuleList{} - err = c.client.Get(). - Resource("iptables-fip-rules"). - VersionedParams(&opts, scheme.ParameterCodec). - Timeout(timeout). - Do(ctx). - Into(result) - return -} - -// Watch returns a watch.Interface that watches the requested iptablesFIPRules. -func (c *iptablesFIPRules) Watch(ctx context.Context, opts metav1.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("iptables-fip-rules"). - VersionedParams(&opts, scheme.ParameterCodec). - Timeout(timeout). - Watch(ctx) -} - -// Create takes the representation of a iptablesFIPRule and creates it. Returns the server's representation of the iptablesFIPRule, and an error, if there is any. -func (c *iptablesFIPRules) Create(ctx context.Context, iptablesFIPRule *v1.IptablesFIPRule, opts metav1.CreateOptions) (result *v1.IptablesFIPRule, err error) { - result = &v1.IptablesFIPRule{} - err = c.client.Post(). - Resource("iptables-fip-rules"). - VersionedParams(&opts, scheme.ParameterCodec). - Body(iptablesFIPRule). - Do(ctx). - Into(result) - return -} - -// Update takes the representation of a iptablesFIPRule and updates it. Returns the server's representation of the iptablesFIPRule, and an error, if there is any. -func (c *iptablesFIPRules) Update(ctx context.Context, iptablesFIPRule *v1.IptablesFIPRule, opts metav1.UpdateOptions) (result *v1.IptablesFIPRule, err error) { - result = &v1.IptablesFIPRule{} - err = c.client.Put(). - Resource("iptables-fip-rules"). - Name(iptablesFIPRule.Name). - VersionedParams(&opts, scheme.ParameterCodec). - Body(iptablesFIPRule). - 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 *iptablesFIPRules) UpdateStatus(ctx context.Context, iptablesFIPRule *v1.IptablesFIPRule, opts metav1.UpdateOptions) (result *v1.IptablesFIPRule, err error) { - result = &v1.IptablesFIPRule{} - err = c.client.Put(). - Resource("iptables-fip-rules"). - Name(iptablesFIPRule.Name). - SubResource("status"). - VersionedParams(&opts, scheme.ParameterCodec). - Body(iptablesFIPRule). - Do(ctx). - Into(result) - return -} - -// Delete takes name of the iptablesFIPRule and deletes it. Returns an error if one occurs. -func (c *iptablesFIPRules) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error { - return c.client.Delete(). - Resource("iptables-fip-rules"). - Name(name). - Body(&opts). - Do(ctx). - Error() -} - -// DeleteCollection deletes a collection of objects. -func (c *iptablesFIPRules) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error { - var timeout time.Duration - if listOpts.TimeoutSeconds != nil { - timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second - } - return c.client.Delete(). - Resource("iptables-fip-rules"). - VersionedParams(&listOpts, scheme.ParameterCodec). - Timeout(timeout). - Body(&opts). - Do(ctx). - Error() -} - -// Patch applies the patch and returns the patched iptablesFIPRule. -func (c *iptablesFIPRules) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.IptablesFIPRule, err error) { - result = &v1.IptablesFIPRule{} - err = c.client.Patch(pt). - Resource("iptables-fip-rules"). - Name(name). - SubResource(subresources...). - VersionedParams(&opts, scheme.ParameterCodec). - Body(data). - Do(ctx). - Into(result) - return -} diff --git a/pkg/client/clientset/versioned/typed/kubeovn/v1/iptablessnatrule.go b/pkg/client/clientset/versioned/typed/kubeovn/v1/iptablessnatrule.go index 576d1fbb92c..9b34cc4fa3a 100644 --- a/pkg/client/clientset/versioned/typed/kubeovn/v1/iptablessnatrule.go +++ b/pkg/client/clientset/versioned/typed/kubeovn/v1/iptablessnatrule.go @@ -20,14 +20,13 @@ package v1 import ( "context" - "time" v1 "github.com/kubeovn/kube-ovn/pkg/apis/kubeovn/v1" scheme "github.com/kubeovn/kube-ovn/pkg/client/clientset/versioned/scheme" metav1 "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" ) // IptablesSnatRulesGetter has a method to return a IptablesSnatRuleInterface. @@ -40,6 +39,7 @@ type IptablesSnatRulesGetter interface { type IptablesSnatRuleInterface interface { Create(ctx context.Context, iptablesSnatRule *v1.IptablesSnatRule, opts metav1.CreateOptions) (*v1.IptablesSnatRule, error) Update(ctx context.Context, iptablesSnatRule *v1.IptablesSnatRule, opts metav1.UpdateOptions) (*v1.IptablesSnatRule, error) + // Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus(). UpdateStatus(ctx context.Context, iptablesSnatRule *v1.IptablesSnatRule, opts metav1.UpdateOptions) (*v1.IptablesSnatRule, error) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error @@ -52,133 +52,18 @@ type IptablesSnatRuleInterface interface { // iptablesSnatRules implements IptablesSnatRuleInterface type iptablesSnatRules struct { - client rest.Interface + *gentype.ClientWithList[*v1.IptablesSnatRule, *v1.IptablesSnatRuleList] } // newIptablesSnatRules returns a IptablesSnatRules func newIptablesSnatRules(c *KubeovnV1Client) *iptablesSnatRules { return &iptablesSnatRules{ - client: c.RESTClient(), + gentype.NewClientWithList[*v1.IptablesSnatRule, *v1.IptablesSnatRuleList]( + "iptables-snat-rules", + c.RESTClient(), + scheme.ParameterCodec, + "", + func() *v1.IptablesSnatRule { return &v1.IptablesSnatRule{} }, + func() *v1.IptablesSnatRuleList { return &v1.IptablesSnatRuleList{} }), } } - -// Get takes name of the iptablesSnatRule, and returns the corresponding iptablesSnatRule object, and an error if there is any. -func (c *iptablesSnatRules) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.IptablesSnatRule, err error) { - result = &v1.IptablesSnatRule{} - err = c.client.Get(). - Resource("iptables-snat-rules"). - Name(name). - VersionedParams(&options, scheme.ParameterCodec). - Do(ctx). - Into(result) - return -} - -// List takes label and field selectors, and returns the list of IptablesSnatRules that match those selectors. -func (c *iptablesSnatRules) List(ctx context.Context, opts metav1.ListOptions) (result *v1.IptablesSnatRuleList, err error) { - var timeout time.Duration - if opts.TimeoutSeconds != nil { - timeout = time.Duration(*opts.TimeoutSeconds) * time.Second - } - result = &v1.IptablesSnatRuleList{} - err = c.client.Get(). - Resource("iptables-snat-rules"). - VersionedParams(&opts, scheme.ParameterCodec). - Timeout(timeout). - Do(ctx). - Into(result) - return -} - -// Watch returns a watch.Interface that watches the requested iptablesSnatRules. -func (c *iptablesSnatRules) Watch(ctx context.Context, opts metav1.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("iptables-snat-rules"). - VersionedParams(&opts, scheme.ParameterCodec). - Timeout(timeout). - Watch(ctx) -} - -// Create takes the representation of a iptablesSnatRule and creates it. Returns the server's representation of the iptablesSnatRule, and an error, if there is any. -func (c *iptablesSnatRules) Create(ctx context.Context, iptablesSnatRule *v1.IptablesSnatRule, opts metav1.CreateOptions) (result *v1.IptablesSnatRule, err error) { - result = &v1.IptablesSnatRule{} - err = c.client.Post(). - Resource("iptables-snat-rules"). - VersionedParams(&opts, scheme.ParameterCodec). - Body(iptablesSnatRule). - Do(ctx). - Into(result) - return -} - -// Update takes the representation of a iptablesSnatRule and updates it. Returns the server's representation of the iptablesSnatRule, and an error, if there is any. -func (c *iptablesSnatRules) Update(ctx context.Context, iptablesSnatRule *v1.IptablesSnatRule, opts metav1.UpdateOptions) (result *v1.IptablesSnatRule, err error) { - result = &v1.IptablesSnatRule{} - err = c.client.Put(). - Resource("iptables-snat-rules"). - Name(iptablesSnatRule.Name). - VersionedParams(&opts, scheme.ParameterCodec). - Body(iptablesSnatRule). - 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 *iptablesSnatRules) UpdateStatus(ctx context.Context, iptablesSnatRule *v1.IptablesSnatRule, opts metav1.UpdateOptions) (result *v1.IptablesSnatRule, err error) { - result = &v1.IptablesSnatRule{} - err = c.client.Put(). - Resource("iptables-snat-rules"). - Name(iptablesSnatRule.Name). - SubResource("status"). - VersionedParams(&opts, scheme.ParameterCodec). - Body(iptablesSnatRule). - Do(ctx). - Into(result) - return -} - -// Delete takes name of the iptablesSnatRule and deletes it. Returns an error if one occurs. -func (c *iptablesSnatRules) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error { - return c.client.Delete(). - Resource("iptables-snat-rules"). - Name(name). - Body(&opts). - Do(ctx). - Error() -} - -// DeleteCollection deletes a collection of objects. -func (c *iptablesSnatRules) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error { - var timeout time.Duration - if listOpts.TimeoutSeconds != nil { - timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second - } - return c.client.Delete(). - Resource("iptables-snat-rules"). - VersionedParams(&listOpts, scheme.ParameterCodec). - Timeout(timeout). - Body(&opts). - Do(ctx). - Error() -} - -// Patch applies the patch and returns the patched iptablesSnatRule. -func (c *iptablesSnatRules) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.IptablesSnatRule, err error) { - result = &v1.IptablesSnatRule{} - err = c.client.Patch(pt). - Resource("iptables-snat-rules"). - Name(name). - SubResource(subresources...). - VersionedParams(&opts, scheme.ParameterCodec). - Body(data). - Do(ctx). - Into(result) - return -} diff --git a/pkg/client/clientset/versioned/typed/kubeovn/v1/ovndnatrule.go b/pkg/client/clientset/versioned/typed/kubeovn/v1/ovndnatrule.go index e7665899be0..ce15014da81 100644 --- a/pkg/client/clientset/versioned/typed/kubeovn/v1/ovndnatrule.go +++ b/pkg/client/clientset/versioned/typed/kubeovn/v1/ovndnatrule.go @@ -20,14 +20,13 @@ package v1 import ( "context" - "time" v1 "github.com/kubeovn/kube-ovn/pkg/apis/kubeovn/v1" scheme "github.com/kubeovn/kube-ovn/pkg/client/clientset/versioned/scheme" metav1 "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" ) // OvnDnatRulesGetter has a method to return a OvnDnatRuleInterface. @@ -40,6 +39,7 @@ type OvnDnatRulesGetter interface { type OvnDnatRuleInterface interface { Create(ctx context.Context, ovnDnatRule *v1.OvnDnatRule, opts metav1.CreateOptions) (*v1.OvnDnatRule, error) Update(ctx context.Context, ovnDnatRule *v1.OvnDnatRule, opts metav1.UpdateOptions) (*v1.OvnDnatRule, error) + // Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus(). UpdateStatus(ctx context.Context, ovnDnatRule *v1.OvnDnatRule, opts metav1.UpdateOptions) (*v1.OvnDnatRule, error) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error @@ -52,133 +52,18 @@ type OvnDnatRuleInterface interface { // ovnDnatRules implements OvnDnatRuleInterface type ovnDnatRules struct { - client rest.Interface + *gentype.ClientWithList[*v1.OvnDnatRule, *v1.OvnDnatRuleList] } // newOvnDnatRules returns a OvnDnatRules func newOvnDnatRules(c *KubeovnV1Client) *ovnDnatRules { return &ovnDnatRules{ - client: c.RESTClient(), + gentype.NewClientWithList[*v1.OvnDnatRule, *v1.OvnDnatRuleList]( + "ovn-dnat-rules", + c.RESTClient(), + scheme.ParameterCodec, + "", + func() *v1.OvnDnatRule { return &v1.OvnDnatRule{} }, + func() *v1.OvnDnatRuleList { return &v1.OvnDnatRuleList{} }), } } - -// Get takes name of the ovnDnatRule, and returns the corresponding ovnDnatRule object, and an error if there is any. -func (c *ovnDnatRules) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.OvnDnatRule, err error) { - result = &v1.OvnDnatRule{} - err = c.client.Get(). - Resource("ovn-dnat-rules"). - Name(name). - VersionedParams(&options, scheme.ParameterCodec). - Do(ctx). - Into(result) - return -} - -// List takes label and field selectors, and returns the list of OvnDnatRules that match those selectors. -func (c *ovnDnatRules) List(ctx context.Context, opts metav1.ListOptions) (result *v1.OvnDnatRuleList, err error) { - var timeout time.Duration - if opts.TimeoutSeconds != nil { - timeout = time.Duration(*opts.TimeoutSeconds) * time.Second - } - result = &v1.OvnDnatRuleList{} - err = c.client.Get(). - Resource("ovn-dnat-rules"). - VersionedParams(&opts, scheme.ParameterCodec). - Timeout(timeout). - Do(ctx). - Into(result) - return -} - -// Watch returns a watch.Interface that watches the requested ovnDnatRules. -func (c *ovnDnatRules) Watch(ctx context.Context, opts metav1.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("ovn-dnat-rules"). - VersionedParams(&opts, scheme.ParameterCodec). - Timeout(timeout). - Watch(ctx) -} - -// Create takes the representation of a ovnDnatRule and creates it. Returns the server's representation of the ovnDnatRule, and an error, if there is any. -func (c *ovnDnatRules) Create(ctx context.Context, ovnDnatRule *v1.OvnDnatRule, opts metav1.CreateOptions) (result *v1.OvnDnatRule, err error) { - result = &v1.OvnDnatRule{} - err = c.client.Post(). - Resource("ovn-dnat-rules"). - VersionedParams(&opts, scheme.ParameterCodec). - Body(ovnDnatRule). - Do(ctx). - Into(result) - return -} - -// Update takes the representation of a ovnDnatRule and updates it. Returns the server's representation of the ovnDnatRule, and an error, if there is any. -func (c *ovnDnatRules) Update(ctx context.Context, ovnDnatRule *v1.OvnDnatRule, opts metav1.UpdateOptions) (result *v1.OvnDnatRule, err error) { - result = &v1.OvnDnatRule{} - err = c.client.Put(). - Resource("ovn-dnat-rules"). - Name(ovnDnatRule.Name). - VersionedParams(&opts, scheme.ParameterCodec). - Body(ovnDnatRule). - 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 *ovnDnatRules) UpdateStatus(ctx context.Context, ovnDnatRule *v1.OvnDnatRule, opts metav1.UpdateOptions) (result *v1.OvnDnatRule, err error) { - result = &v1.OvnDnatRule{} - err = c.client.Put(). - Resource("ovn-dnat-rules"). - Name(ovnDnatRule.Name). - SubResource("status"). - VersionedParams(&opts, scheme.ParameterCodec). - Body(ovnDnatRule). - Do(ctx). - Into(result) - return -} - -// Delete takes name of the ovnDnatRule and deletes it. Returns an error if one occurs. -func (c *ovnDnatRules) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error { - return c.client.Delete(). - Resource("ovn-dnat-rules"). - Name(name). - Body(&opts). - Do(ctx). - Error() -} - -// DeleteCollection deletes a collection of objects. -func (c *ovnDnatRules) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error { - var timeout time.Duration - if listOpts.TimeoutSeconds != nil { - timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second - } - return c.client.Delete(). - Resource("ovn-dnat-rules"). - VersionedParams(&listOpts, scheme.ParameterCodec). - Timeout(timeout). - Body(&opts). - Do(ctx). - Error() -} - -// Patch applies the patch and returns the patched ovnDnatRule. -func (c *ovnDnatRules) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.OvnDnatRule, err error) { - result = &v1.OvnDnatRule{} - err = c.client.Patch(pt). - Resource("ovn-dnat-rules"). - Name(name). - SubResource(subresources...). - VersionedParams(&opts, scheme.ParameterCodec). - Body(data). - Do(ctx). - Into(result) - return -} diff --git a/pkg/client/clientset/versioned/typed/kubeovn/v1/ovneip.go b/pkg/client/clientset/versioned/typed/kubeovn/v1/ovneip.go index 509d0492cac..4fbed307958 100644 --- a/pkg/client/clientset/versioned/typed/kubeovn/v1/ovneip.go +++ b/pkg/client/clientset/versioned/typed/kubeovn/v1/ovneip.go @@ -20,14 +20,13 @@ package v1 import ( "context" - "time" v1 "github.com/kubeovn/kube-ovn/pkg/apis/kubeovn/v1" scheme "github.com/kubeovn/kube-ovn/pkg/client/clientset/versioned/scheme" metav1 "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" ) // OvnEipsGetter has a method to return a OvnEipInterface. @@ -40,6 +39,7 @@ type OvnEipsGetter interface { type OvnEipInterface interface { Create(ctx context.Context, ovnEip *v1.OvnEip, opts metav1.CreateOptions) (*v1.OvnEip, error) Update(ctx context.Context, ovnEip *v1.OvnEip, opts metav1.UpdateOptions) (*v1.OvnEip, error) + // Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus(). UpdateStatus(ctx context.Context, ovnEip *v1.OvnEip, opts metav1.UpdateOptions) (*v1.OvnEip, error) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error @@ -52,133 +52,18 @@ type OvnEipInterface interface { // ovnEips implements OvnEipInterface type ovnEips struct { - client rest.Interface + *gentype.ClientWithList[*v1.OvnEip, *v1.OvnEipList] } // newOvnEips returns a OvnEips func newOvnEips(c *KubeovnV1Client) *ovnEips { return &ovnEips{ - client: c.RESTClient(), + gentype.NewClientWithList[*v1.OvnEip, *v1.OvnEipList]( + "ovn-eips", + c.RESTClient(), + scheme.ParameterCodec, + "", + func() *v1.OvnEip { return &v1.OvnEip{} }, + func() *v1.OvnEipList { return &v1.OvnEipList{} }), } } - -// Get takes name of the ovnEip, and returns the corresponding ovnEip object, and an error if there is any. -func (c *ovnEips) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.OvnEip, err error) { - result = &v1.OvnEip{} - err = c.client.Get(). - Resource("ovn-eips"). - Name(name). - VersionedParams(&options, scheme.ParameterCodec). - Do(ctx). - Into(result) - return -} - -// List takes label and field selectors, and returns the list of OvnEips that match those selectors. -func (c *ovnEips) List(ctx context.Context, opts metav1.ListOptions) (result *v1.OvnEipList, err error) { - var timeout time.Duration - if opts.TimeoutSeconds != nil { - timeout = time.Duration(*opts.TimeoutSeconds) * time.Second - } - result = &v1.OvnEipList{} - err = c.client.Get(). - Resource("ovn-eips"). - VersionedParams(&opts, scheme.ParameterCodec). - Timeout(timeout). - Do(ctx). - Into(result) - return -} - -// Watch returns a watch.Interface that watches the requested ovnEips. -func (c *ovnEips) Watch(ctx context.Context, opts metav1.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("ovn-eips"). - VersionedParams(&opts, scheme.ParameterCodec). - Timeout(timeout). - Watch(ctx) -} - -// Create takes the representation of a ovnEip and creates it. Returns the server's representation of the ovnEip, and an error, if there is any. -func (c *ovnEips) Create(ctx context.Context, ovnEip *v1.OvnEip, opts metav1.CreateOptions) (result *v1.OvnEip, err error) { - result = &v1.OvnEip{} - err = c.client.Post(). - Resource("ovn-eips"). - VersionedParams(&opts, scheme.ParameterCodec). - Body(ovnEip). - Do(ctx). - Into(result) - return -} - -// Update takes the representation of a ovnEip and updates it. Returns the server's representation of the ovnEip, and an error, if there is any. -func (c *ovnEips) Update(ctx context.Context, ovnEip *v1.OvnEip, opts metav1.UpdateOptions) (result *v1.OvnEip, err error) { - result = &v1.OvnEip{} - err = c.client.Put(). - Resource("ovn-eips"). - Name(ovnEip.Name). - VersionedParams(&opts, scheme.ParameterCodec). - Body(ovnEip). - 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 *ovnEips) UpdateStatus(ctx context.Context, ovnEip *v1.OvnEip, opts metav1.UpdateOptions) (result *v1.OvnEip, err error) { - result = &v1.OvnEip{} - err = c.client.Put(). - Resource("ovn-eips"). - Name(ovnEip.Name). - SubResource("status"). - VersionedParams(&opts, scheme.ParameterCodec). - Body(ovnEip). - Do(ctx). - Into(result) - return -} - -// Delete takes name of the ovnEip and deletes it. Returns an error if one occurs. -func (c *ovnEips) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error { - return c.client.Delete(). - Resource("ovn-eips"). - Name(name). - Body(&opts). - Do(ctx). - Error() -} - -// DeleteCollection deletes a collection of objects. -func (c *ovnEips) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error { - var timeout time.Duration - if listOpts.TimeoutSeconds != nil { - timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second - } - return c.client.Delete(). - Resource("ovn-eips"). - VersionedParams(&listOpts, scheme.ParameterCodec). - Timeout(timeout). - Body(&opts). - Do(ctx). - Error() -} - -// Patch applies the patch and returns the patched ovnEip. -func (c *ovnEips) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.OvnEip, err error) { - result = &v1.OvnEip{} - err = c.client.Patch(pt). - Resource("ovn-eips"). - Name(name). - SubResource(subresources...). - VersionedParams(&opts, scheme.ParameterCodec). - Body(data). - Do(ctx). - Into(result) - return -} diff --git a/pkg/client/clientset/versioned/typed/kubeovn/v1/ovnfip.go b/pkg/client/clientset/versioned/typed/kubeovn/v1/ovnfip.go index 0f20cebdfe0..0f8e23d7f24 100644 --- a/pkg/client/clientset/versioned/typed/kubeovn/v1/ovnfip.go +++ b/pkg/client/clientset/versioned/typed/kubeovn/v1/ovnfip.go @@ -20,14 +20,13 @@ package v1 import ( "context" - "time" v1 "github.com/kubeovn/kube-ovn/pkg/apis/kubeovn/v1" scheme "github.com/kubeovn/kube-ovn/pkg/client/clientset/versioned/scheme" metav1 "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" ) // OvnFipsGetter has a method to return a OvnFipInterface. @@ -40,6 +39,7 @@ type OvnFipsGetter interface { type OvnFipInterface interface { Create(ctx context.Context, ovnFip *v1.OvnFip, opts metav1.CreateOptions) (*v1.OvnFip, error) Update(ctx context.Context, ovnFip *v1.OvnFip, opts metav1.UpdateOptions) (*v1.OvnFip, error) + // Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus(). UpdateStatus(ctx context.Context, ovnFip *v1.OvnFip, opts metav1.UpdateOptions) (*v1.OvnFip, error) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error @@ -52,133 +52,18 @@ type OvnFipInterface interface { // ovnFips implements OvnFipInterface type ovnFips struct { - client rest.Interface + *gentype.ClientWithList[*v1.OvnFip, *v1.OvnFipList] } // newOvnFips returns a OvnFips func newOvnFips(c *KubeovnV1Client) *ovnFips { return &ovnFips{ - client: c.RESTClient(), + gentype.NewClientWithList[*v1.OvnFip, *v1.OvnFipList]( + "ovn-fips", + c.RESTClient(), + scheme.ParameterCodec, + "", + func() *v1.OvnFip { return &v1.OvnFip{} }, + func() *v1.OvnFipList { return &v1.OvnFipList{} }), } } - -// Get takes name of the ovnFip, and returns the corresponding ovnFip object, and an error if there is any. -func (c *ovnFips) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.OvnFip, err error) { - result = &v1.OvnFip{} - err = c.client.Get(). - Resource("ovn-fips"). - Name(name). - VersionedParams(&options, scheme.ParameterCodec). - Do(ctx). - Into(result) - return -} - -// List takes label and field selectors, and returns the list of OvnFips that match those selectors. -func (c *ovnFips) List(ctx context.Context, opts metav1.ListOptions) (result *v1.OvnFipList, err error) { - var timeout time.Duration - if opts.TimeoutSeconds != nil { - timeout = time.Duration(*opts.TimeoutSeconds) * time.Second - } - result = &v1.OvnFipList{} - err = c.client.Get(). - Resource("ovn-fips"). - VersionedParams(&opts, scheme.ParameterCodec). - Timeout(timeout). - Do(ctx). - Into(result) - return -} - -// Watch returns a watch.Interface that watches the requested ovnFips. -func (c *ovnFips) Watch(ctx context.Context, opts metav1.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("ovn-fips"). - VersionedParams(&opts, scheme.ParameterCodec). - Timeout(timeout). - Watch(ctx) -} - -// Create takes the representation of a ovnFip and creates it. Returns the server's representation of the ovnFip, and an error, if there is any. -func (c *ovnFips) Create(ctx context.Context, ovnFip *v1.OvnFip, opts metav1.CreateOptions) (result *v1.OvnFip, err error) { - result = &v1.OvnFip{} - err = c.client.Post(). - Resource("ovn-fips"). - VersionedParams(&opts, scheme.ParameterCodec). - Body(ovnFip). - Do(ctx). - Into(result) - return -} - -// Update takes the representation of a ovnFip and updates it. Returns the server's representation of the ovnFip, and an error, if there is any. -func (c *ovnFips) Update(ctx context.Context, ovnFip *v1.OvnFip, opts metav1.UpdateOptions) (result *v1.OvnFip, err error) { - result = &v1.OvnFip{} - err = c.client.Put(). - Resource("ovn-fips"). - Name(ovnFip.Name). - VersionedParams(&opts, scheme.ParameterCodec). - Body(ovnFip). - 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 *ovnFips) UpdateStatus(ctx context.Context, ovnFip *v1.OvnFip, opts metav1.UpdateOptions) (result *v1.OvnFip, err error) { - result = &v1.OvnFip{} - err = c.client.Put(). - Resource("ovn-fips"). - Name(ovnFip.Name). - SubResource("status"). - VersionedParams(&opts, scheme.ParameterCodec). - Body(ovnFip). - Do(ctx). - Into(result) - return -} - -// Delete takes name of the ovnFip and deletes it. Returns an error if one occurs. -func (c *ovnFips) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error { - return c.client.Delete(). - Resource("ovn-fips"). - Name(name). - Body(&opts). - Do(ctx). - Error() -} - -// DeleteCollection deletes a collection of objects. -func (c *ovnFips) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error { - var timeout time.Duration - if listOpts.TimeoutSeconds != nil { - timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second - } - return c.client.Delete(). - Resource("ovn-fips"). - VersionedParams(&listOpts, scheme.ParameterCodec). - Timeout(timeout). - Body(&opts). - Do(ctx). - Error() -} - -// Patch applies the patch and returns the patched ovnFip. -func (c *ovnFips) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.OvnFip, err error) { - result = &v1.OvnFip{} - err = c.client.Patch(pt). - Resource("ovn-fips"). - Name(name). - SubResource(subresources...). - VersionedParams(&opts, scheme.ParameterCodec). - Body(data). - Do(ctx). - Into(result) - return -} diff --git a/pkg/client/clientset/versioned/typed/kubeovn/v1/ovnsnatrule.go b/pkg/client/clientset/versioned/typed/kubeovn/v1/ovnsnatrule.go index 93bb2c01b12..b485fc4ebd6 100644 --- a/pkg/client/clientset/versioned/typed/kubeovn/v1/ovnsnatrule.go +++ b/pkg/client/clientset/versioned/typed/kubeovn/v1/ovnsnatrule.go @@ -20,14 +20,13 @@ package v1 import ( "context" - "time" v1 "github.com/kubeovn/kube-ovn/pkg/apis/kubeovn/v1" scheme "github.com/kubeovn/kube-ovn/pkg/client/clientset/versioned/scheme" metav1 "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" ) // OvnSnatRulesGetter has a method to return a OvnSnatRuleInterface. @@ -40,6 +39,7 @@ type OvnSnatRulesGetter interface { type OvnSnatRuleInterface interface { Create(ctx context.Context, ovnSnatRule *v1.OvnSnatRule, opts metav1.CreateOptions) (*v1.OvnSnatRule, error) Update(ctx context.Context, ovnSnatRule *v1.OvnSnatRule, opts metav1.UpdateOptions) (*v1.OvnSnatRule, error) + // Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus(). UpdateStatus(ctx context.Context, ovnSnatRule *v1.OvnSnatRule, opts metav1.UpdateOptions) (*v1.OvnSnatRule, error) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error @@ -52,133 +52,18 @@ type OvnSnatRuleInterface interface { // ovnSnatRules implements OvnSnatRuleInterface type ovnSnatRules struct { - client rest.Interface + *gentype.ClientWithList[*v1.OvnSnatRule, *v1.OvnSnatRuleList] } // newOvnSnatRules returns a OvnSnatRules func newOvnSnatRules(c *KubeovnV1Client) *ovnSnatRules { return &ovnSnatRules{ - client: c.RESTClient(), + gentype.NewClientWithList[*v1.OvnSnatRule, *v1.OvnSnatRuleList]( + "ovn-snat-rules", + c.RESTClient(), + scheme.ParameterCodec, + "", + func() *v1.OvnSnatRule { return &v1.OvnSnatRule{} }, + func() *v1.OvnSnatRuleList { return &v1.OvnSnatRuleList{} }), } } - -// Get takes name of the ovnSnatRule, and returns the corresponding ovnSnatRule object, and an error if there is any. -func (c *ovnSnatRules) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.OvnSnatRule, err error) { - result = &v1.OvnSnatRule{} - err = c.client.Get(). - Resource("ovn-snat-rules"). - Name(name). - VersionedParams(&options, scheme.ParameterCodec). - Do(ctx). - Into(result) - return -} - -// List takes label and field selectors, and returns the list of OvnSnatRules that match those selectors. -func (c *ovnSnatRules) List(ctx context.Context, opts metav1.ListOptions) (result *v1.OvnSnatRuleList, err error) { - var timeout time.Duration - if opts.TimeoutSeconds != nil { - timeout = time.Duration(*opts.TimeoutSeconds) * time.Second - } - result = &v1.OvnSnatRuleList{} - err = c.client.Get(). - Resource("ovn-snat-rules"). - VersionedParams(&opts, scheme.ParameterCodec). - Timeout(timeout). - Do(ctx). - Into(result) - return -} - -// Watch returns a watch.Interface that watches the requested ovnSnatRules. -func (c *ovnSnatRules) Watch(ctx context.Context, opts metav1.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("ovn-snat-rules"). - VersionedParams(&opts, scheme.ParameterCodec). - Timeout(timeout). - Watch(ctx) -} - -// Create takes the representation of a ovnSnatRule and creates it. Returns the server's representation of the ovnSnatRule, and an error, if there is any. -func (c *ovnSnatRules) Create(ctx context.Context, ovnSnatRule *v1.OvnSnatRule, opts metav1.CreateOptions) (result *v1.OvnSnatRule, err error) { - result = &v1.OvnSnatRule{} - err = c.client.Post(). - Resource("ovn-snat-rules"). - VersionedParams(&opts, scheme.ParameterCodec). - Body(ovnSnatRule). - Do(ctx). - Into(result) - return -} - -// Update takes the representation of a ovnSnatRule and updates it. Returns the server's representation of the ovnSnatRule, and an error, if there is any. -func (c *ovnSnatRules) Update(ctx context.Context, ovnSnatRule *v1.OvnSnatRule, opts metav1.UpdateOptions) (result *v1.OvnSnatRule, err error) { - result = &v1.OvnSnatRule{} - err = c.client.Put(). - Resource("ovn-snat-rules"). - Name(ovnSnatRule.Name). - VersionedParams(&opts, scheme.ParameterCodec). - Body(ovnSnatRule). - 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 *ovnSnatRules) UpdateStatus(ctx context.Context, ovnSnatRule *v1.OvnSnatRule, opts metav1.UpdateOptions) (result *v1.OvnSnatRule, err error) { - result = &v1.OvnSnatRule{} - err = c.client.Put(). - Resource("ovn-snat-rules"). - Name(ovnSnatRule.Name). - SubResource("status"). - VersionedParams(&opts, scheme.ParameterCodec). - Body(ovnSnatRule). - Do(ctx). - Into(result) - return -} - -// Delete takes name of the ovnSnatRule and deletes it. Returns an error if one occurs. -func (c *ovnSnatRules) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error { - return c.client.Delete(). - Resource("ovn-snat-rules"). - Name(name). - Body(&opts). - Do(ctx). - Error() -} - -// DeleteCollection deletes a collection of objects. -func (c *ovnSnatRules) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error { - var timeout time.Duration - if listOpts.TimeoutSeconds != nil { - timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second - } - return c.client.Delete(). - Resource("ovn-snat-rules"). - VersionedParams(&listOpts, scheme.ParameterCodec). - Timeout(timeout). - Body(&opts). - Do(ctx). - Error() -} - -// Patch applies the patch and returns the patched ovnSnatRule. -func (c *ovnSnatRules) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.OvnSnatRule, err error) { - result = &v1.OvnSnatRule{} - err = c.client.Patch(pt). - Resource("ovn-snat-rules"). - Name(name). - SubResource(subresources...). - VersionedParams(&opts, scheme.ParameterCodec). - Body(data). - Do(ctx). - Into(result) - return -} diff --git a/pkg/client/clientset/versioned/typed/kubeovn/v1/providernetwork.go b/pkg/client/clientset/versioned/typed/kubeovn/v1/providernetwork.go index fcef8da37fa..e1c7f09f614 100644 --- a/pkg/client/clientset/versioned/typed/kubeovn/v1/providernetwork.go +++ b/pkg/client/clientset/versioned/typed/kubeovn/v1/providernetwork.go @@ -20,14 +20,13 @@ package v1 import ( "context" - "time" v1 "github.com/kubeovn/kube-ovn/pkg/apis/kubeovn/v1" scheme "github.com/kubeovn/kube-ovn/pkg/client/clientset/versioned/scheme" metav1 "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" ) // ProviderNetworksGetter has a method to return a ProviderNetworkInterface. @@ -40,6 +39,7 @@ type ProviderNetworksGetter interface { type ProviderNetworkInterface interface { Create(ctx context.Context, providerNetwork *v1.ProviderNetwork, opts metav1.CreateOptions) (*v1.ProviderNetwork, error) Update(ctx context.Context, providerNetwork *v1.ProviderNetwork, opts metav1.UpdateOptions) (*v1.ProviderNetwork, error) + // Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus(). UpdateStatus(ctx context.Context, providerNetwork *v1.ProviderNetwork, opts metav1.UpdateOptions) (*v1.ProviderNetwork, error) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error @@ -52,133 +52,18 @@ type ProviderNetworkInterface interface { // providerNetworks implements ProviderNetworkInterface type providerNetworks struct { - client rest.Interface + *gentype.ClientWithList[*v1.ProviderNetwork, *v1.ProviderNetworkList] } // newProviderNetworks returns a ProviderNetworks func newProviderNetworks(c *KubeovnV1Client) *providerNetworks { return &providerNetworks{ - client: c.RESTClient(), + gentype.NewClientWithList[*v1.ProviderNetwork, *v1.ProviderNetworkList]( + "provider-networks", + c.RESTClient(), + scheme.ParameterCodec, + "", + func() *v1.ProviderNetwork { return &v1.ProviderNetwork{} }, + func() *v1.ProviderNetworkList { return &v1.ProviderNetworkList{} }), } } - -// Get takes name of the providerNetwork, and returns the corresponding providerNetwork object, and an error if there is any. -func (c *providerNetworks) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.ProviderNetwork, err error) { - result = &v1.ProviderNetwork{} - err = c.client.Get(). - Resource("provider-networks"). - Name(name). - VersionedParams(&options, scheme.ParameterCodec). - Do(ctx). - Into(result) - return -} - -// List takes label and field selectors, and returns the list of ProviderNetworks that match those selectors. -func (c *providerNetworks) List(ctx context.Context, opts metav1.ListOptions) (result *v1.ProviderNetworkList, err error) { - var timeout time.Duration - if opts.TimeoutSeconds != nil { - timeout = time.Duration(*opts.TimeoutSeconds) * time.Second - } - result = &v1.ProviderNetworkList{} - err = c.client.Get(). - Resource("provider-networks"). - VersionedParams(&opts, scheme.ParameterCodec). - Timeout(timeout). - Do(ctx). - Into(result) - return -} - -// Watch returns a watch.Interface that watches the requested providerNetworks. -func (c *providerNetworks) Watch(ctx context.Context, opts metav1.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("provider-networks"). - VersionedParams(&opts, scheme.ParameterCodec). - Timeout(timeout). - Watch(ctx) -} - -// Create takes the representation of a providerNetwork and creates it. Returns the server's representation of the providerNetwork, and an error, if there is any. -func (c *providerNetworks) Create(ctx context.Context, providerNetwork *v1.ProviderNetwork, opts metav1.CreateOptions) (result *v1.ProviderNetwork, err error) { - result = &v1.ProviderNetwork{} - err = c.client.Post(). - Resource("provider-networks"). - VersionedParams(&opts, scheme.ParameterCodec). - Body(providerNetwork). - Do(ctx). - Into(result) - return -} - -// Update takes the representation of a providerNetwork and updates it. Returns the server's representation of the providerNetwork, and an error, if there is any. -func (c *providerNetworks) Update(ctx context.Context, providerNetwork *v1.ProviderNetwork, opts metav1.UpdateOptions) (result *v1.ProviderNetwork, err error) { - result = &v1.ProviderNetwork{} - err = c.client.Put(). - Resource("provider-networks"). - Name(providerNetwork.Name). - VersionedParams(&opts, scheme.ParameterCodec). - Body(providerNetwork). - 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 *providerNetworks) UpdateStatus(ctx context.Context, providerNetwork *v1.ProviderNetwork, opts metav1.UpdateOptions) (result *v1.ProviderNetwork, err error) { - result = &v1.ProviderNetwork{} - err = c.client.Put(). - Resource("provider-networks"). - Name(providerNetwork.Name). - SubResource("status"). - VersionedParams(&opts, scheme.ParameterCodec). - Body(providerNetwork). - Do(ctx). - Into(result) - return -} - -// Delete takes name of the providerNetwork and deletes it. Returns an error if one occurs. -func (c *providerNetworks) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error { - return c.client.Delete(). - Resource("provider-networks"). - Name(name). - Body(&opts). - Do(ctx). - Error() -} - -// DeleteCollection deletes a collection of objects. -func (c *providerNetworks) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error { - var timeout time.Duration - if listOpts.TimeoutSeconds != nil { - timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second - } - return c.client.Delete(). - Resource("provider-networks"). - VersionedParams(&listOpts, scheme.ParameterCodec). - Timeout(timeout). - Body(&opts). - Do(ctx). - Error() -} - -// Patch applies the patch and returns the patched providerNetwork. -func (c *providerNetworks) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.ProviderNetwork, err error) { - result = &v1.ProviderNetwork{} - err = c.client.Patch(pt). - Resource("provider-networks"). - Name(name). - SubResource(subresources...). - VersionedParams(&opts, scheme.ParameterCodec). - Body(data). - Do(ctx). - Into(result) - return -} diff --git a/pkg/client/clientset/versioned/typed/kubeovn/v1/qospolicy.go b/pkg/client/clientset/versioned/typed/kubeovn/v1/qospolicy.go index 1a051aad72c..2580941f872 100644 --- a/pkg/client/clientset/versioned/typed/kubeovn/v1/qospolicy.go +++ b/pkg/client/clientset/versioned/typed/kubeovn/v1/qospolicy.go @@ -20,14 +20,13 @@ package v1 import ( "context" - "time" v1 "github.com/kubeovn/kube-ovn/pkg/apis/kubeovn/v1" scheme "github.com/kubeovn/kube-ovn/pkg/client/clientset/versioned/scheme" metav1 "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" ) // QoSPoliciesGetter has a method to return a QoSPolicyInterface. @@ -40,6 +39,7 @@ type QoSPoliciesGetter interface { type QoSPolicyInterface interface { Create(ctx context.Context, qoSPolicy *v1.QoSPolicy, opts metav1.CreateOptions) (*v1.QoSPolicy, error) Update(ctx context.Context, qoSPolicy *v1.QoSPolicy, opts metav1.UpdateOptions) (*v1.QoSPolicy, error) + // Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus(). UpdateStatus(ctx context.Context, qoSPolicy *v1.QoSPolicy, opts metav1.UpdateOptions) (*v1.QoSPolicy, error) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error @@ -52,133 +52,18 @@ type QoSPolicyInterface interface { // qoSPolicies implements QoSPolicyInterface type qoSPolicies struct { - client rest.Interface + *gentype.ClientWithList[*v1.QoSPolicy, *v1.QoSPolicyList] } // newQoSPolicies returns a QoSPolicies func newQoSPolicies(c *KubeovnV1Client) *qoSPolicies { return &qoSPolicies{ - client: c.RESTClient(), + gentype.NewClientWithList[*v1.QoSPolicy, *v1.QoSPolicyList]( + "qos-policies", + c.RESTClient(), + scheme.ParameterCodec, + "", + func() *v1.QoSPolicy { return &v1.QoSPolicy{} }, + func() *v1.QoSPolicyList { return &v1.QoSPolicyList{} }), } } - -// Get takes name of the qoSPolicy, and returns the corresponding qoSPolicy object, and an error if there is any. -func (c *qoSPolicies) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.QoSPolicy, err error) { - result = &v1.QoSPolicy{} - err = c.client.Get(). - Resource("qos-policies"). - Name(name). - VersionedParams(&options, scheme.ParameterCodec). - Do(ctx). - Into(result) - return -} - -// List takes label and field selectors, and returns the list of QoSPolicies that match those selectors. -func (c *qoSPolicies) List(ctx context.Context, opts metav1.ListOptions) (result *v1.QoSPolicyList, err error) { - var timeout time.Duration - if opts.TimeoutSeconds != nil { - timeout = time.Duration(*opts.TimeoutSeconds) * time.Second - } - result = &v1.QoSPolicyList{} - err = c.client.Get(). - Resource("qos-policies"). - VersionedParams(&opts, scheme.ParameterCodec). - Timeout(timeout). - Do(ctx). - Into(result) - return -} - -// Watch returns a watch.Interface that watches the requested qoSPolicies. -func (c *qoSPolicies) Watch(ctx context.Context, opts metav1.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("qos-policies"). - VersionedParams(&opts, scheme.ParameterCodec). - Timeout(timeout). - Watch(ctx) -} - -// Create takes the representation of a qoSPolicy and creates it. Returns the server's representation of the qoSPolicy, and an error, if there is any. -func (c *qoSPolicies) Create(ctx context.Context, qoSPolicy *v1.QoSPolicy, opts metav1.CreateOptions) (result *v1.QoSPolicy, err error) { - result = &v1.QoSPolicy{} - err = c.client.Post(). - Resource("qos-policies"). - VersionedParams(&opts, scheme.ParameterCodec). - Body(qoSPolicy). - Do(ctx). - Into(result) - return -} - -// Update takes the representation of a qoSPolicy and updates it. Returns the server's representation of the qoSPolicy, and an error, if there is any. -func (c *qoSPolicies) Update(ctx context.Context, qoSPolicy *v1.QoSPolicy, opts metav1.UpdateOptions) (result *v1.QoSPolicy, err error) { - result = &v1.QoSPolicy{} - err = c.client.Put(). - Resource("qos-policies"). - Name(qoSPolicy.Name). - VersionedParams(&opts, scheme.ParameterCodec). - Body(qoSPolicy). - 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 *qoSPolicies) UpdateStatus(ctx context.Context, qoSPolicy *v1.QoSPolicy, opts metav1.UpdateOptions) (result *v1.QoSPolicy, err error) { - result = &v1.QoSPolicy{} - err = c.client.Put(). - Resource("qos-policies"). - Name(qoSPolicy.Name). - SubResource("status"). - VersionedParams(&opts, scheme.ParameterCodec). - Body(qoSPolicy). - Do(ctx). - Into(result) - return -} - -// Delete takes name of the qoSPolicy and deletes it. Returns an error if one occurs. -func (c *qoSPolicies) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error { - return c.client.Delete(). - Resource("qos-policies"). - Name(name). - Body(&opts). - Do(ctx). - Error() -} - -// DeleteCollection deletes a collection of objects. -func (c *qoSPolicies) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error { - var timeout time.Duration - if listOpts.TimeoutSeconds != nil { - timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second - } - return c.client.Delete(). - Resource("qos-policies"). - VersionedParams(&listOpts, scheme.ParameterCodec). - Timeout(timeout). - Body(&opts). - Do(ctx). - Error() -} - -// Patch applies the patch and returns the patched qoSPolicy. -func (c *qoSPolicies) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.QoSPolicy, err error) { - result = &v1.QoSPolicy{} - err = c.client.Patch(pt). - Resource("qos-policies"). - Name(name). - SubResource(subresources...). - VersionedParams(&opts, scheme.ParameterCodec). - Body(data). - Do(ctx). - Into(result) - return -} diff --git a/pkg/client/clientset/versioned/typed/kubeovn/v1/securitygroup.go b/pkg/client/clientset/versioned/typed/kubeovn/v1/securitygroup.go index 391baf47c56..6ec917d5a83 100644 --- a/pkg/client/clientset/versioned/typed/kubeovn/v1/securitygroup.go +++ b/pkg/client/clientset/versioned/typed/kubeovn/v1/securitygroup.go @@ -20,14 +20,13 @@ package v1 import ( "context" - "time" v1 "github.com/kubeovn/kube-ovn/pkg/apis/kubeovn/v1" scheme "github.com/kubeovn/kube-ovn/pkg/client/clientset/versioned/scheme" metav1 "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" ) // SecurityGroupsGetter has a method to return a SecurityGroupInterface. @@ -40,6 +39,7 @@ type SecurityGroupsGetter interface { type SecurityGroupInterface interface { Create(ctx context.Context, securityGroup *v1.SecurityGroup, opts metav1.CreateOptions) (*v1.SecurityGroup, error) Update(ctx context.Context, securityGroup *v1.SecurityGroup, opts metav1.UpdateOptions) (*v1.SecurityGroup, error) + // Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus(). UpdateStatus(ctx context.Context, securityGroup *v1.SecurityGroup, opts metav1.UpdateOptions) (*v1.SecurityGroup, error) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error @@ -52,133 +52,18 @@ type SecurityGroupInterface interface { // securityGroups implements SecurityGroupInterface type securityGroups struct { - client rest.Interface + *gentype.ClientWithList[*v1.SecurityGroup, *v1.SecurityGroupList] } // newSecurityGroups returns a SecurityGroups func newSecurityGroups(c *KubeovnV1Client) *securityGroups { return &securityGroups{ - client: c.RESTClient(), + gentype.NewClientWithList[*v1.SecurityGroup, *v1.SecurityGroupList]( + "security-groups", + c.RESTClient(), + scheme.ParameterCodec, + "", + func() *v1.SecurityGroup { return &v1.SecurityGroup{} }, + func() *v1.SecurityGroupList { return &v1.SecurityGroupList{} }), } } - -// Get takes name of the securityGroup, and returns the corresponding securityGroup object, and an error if there is any. -func (c *securityGroups) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.SecurityGroup, err error) { - result = &v1.SecurityGroup{} - err = c.client.Get(). - Resource("security-groups"). - Name(name). - VersionedParams(&options, scheme.ParameterCodec). - Do(ctx). - Into(result) - return -} - -// List takes label and field selectors, and returns the list of SecurityGroups that match those selectors. -func (c *securityGroups) List(ctx context.Context, opts metav1.ListOptions) (result *v1.SecurityGroupList, err error) { - var timeout time.Duration - if opts.TimeoutSeconds != nil { - timeout = time.Duration(*opts.TimeoutSeconds) * time.Second - } - result = &v1.SecurityGroupList{} - err = c.client.Get(). - Resource("security-groups"). - VersionedParams(&opts, scheme.ParameterCodec). - Timeout(timeout). - Do(ctx). - Into(result) - return -} - -// Watch returns a watch.Interface that watches the requested securityGroups. -func (c *securityGroups) Watch(ctx context.Context, opts metav1.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("security-groups"). - VersionedParams(&opts, scheme.ParameterCodec). - Timeout(timeout). - Watch(ctx) -} - -// Create takes the representation of a securityGroup and creates it. Returns the server's representation of the securityGroup, and an error, if there is any. -func (c *securityGroups) Create(ctx context.Context, securityGroup *v1.SecurityGroup, opts metav1.CreateOptions) (result *v1.SecurityGroup, err error) { - result = &v1.SecurityGroup{} - err = c.client.Post(). - Resource("security-groups"). - VersionedParams(&opts, scheme.ParameterCodec). - Body(securityGroup). - Do(ctx). - Into(result) - return -} - -// Update takes the representation of a securityGroup and updates it. Returns the server's representation of the securityGroup, and an error, if there is any. -func (c *securityGroups) Update(ctx context.Context, securityGroup *v1.SecurityGroup, opts metav1.UpdateOptions) (result *v1.SecurityGroup, err error) { - result = &v1.SecurityGroup{} - err = c.client.Put(). - Resource("security-groups"). - Name(securityGroup.Name). - VersionedParams(&opts, scheme.ParameterCodec). - Body(securityGroup). - 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 *securityGroups) UpdateStatus(ctx context.Context, securityGroup *v1.SecurityGroup, opts metav1.UpdateOptions) (result *v1.SecurityGroup, err error) { - result = &v1.SecurityGroup{} - err = c.client.Put(). - Resource("security-groups"). - Name(securityGroup.Name). - SubResource("status"). - VersionedParams(&opts, scheme.ParameterCodec). - Body(securityGroup). - Do(ctx). - Into(result) - return -} - -// Delete takes name of the securityGroup and deletes it. Returns an error if one occurs. -func (c *securityGroups) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error { - return c.client.Delete(). - Resource("security-groups"). - Name(name). - Body(&opts). - Do(ctx). - Error() -} - -// DeleteCollection deletes a collection of objects. -func (c *securityGroups) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error { - var timeout time.Duration - if listOpts.TimeoutSeconds != nil { - timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second - } - return c.client.Delete(). - Resource("security-groups"). - VersionedParams(&listOpts, scheme.ParameterCodec). - Timeout(timeout). - Body(&opts). - Do(ctx). - Error() -} - -// Patch applies the patch and returns the patched securityGroup. -func (c *securityGroups) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.SecurityGroup, err error) { - result = &v1.SecurityGroup{} - err = c.client.Patch(pt). - Resource("security-groups"). - Name(name). - SubResource(subresources...). - VersionedParams(&opts, scheme.ParameterCodec). - Body(data). - Do(ctx). - Into(result) - return -} diff --git a/pkg/client/clientset/versioned/typed/kubeovn/v1/subnet.go b/pkg/client/clientset/versioned/typed/kubeovn/v1/subnet.go index a1638ef10f5..f546e4cc9ec 100644 --- a/pkg/client/clientset/versioned/typed/kubeovn/v1/subnet.go +++ b/pkg/client/clientset/versioned/typed/kubeovn/v1/subnet.go @@ -20,14 +20,13 @@ package v1 import ( "context" - "time" v1 "github.com/kubeovn/kube-ovn/pkg/apis/kubeovn/v1" scheme "github.com/kubeovn/kube-ovn/pkg/client/clientset/versioned/scheme" metav1 "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" ) // SubnetsGetter has a method to return a SubnetInterface. @@ -40,6 +39,7 @@ type SubnetsGetter interface { type SubnetInterface interface { Create(ctx context.Context, subnet *v1.Subnet, opts metav1.CreateOptions) (*v1.Subnet, error) Update(ctx context.Context, subnet *v1.Subnet, opts metav1.UpdateOptions) (*v1.Subnet, error) + // Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus(). UpdateStatus(ctx context.Context, subnet *v1.Subnet, opts metav1.UpdateOptions) (*v1.Subnet, error) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error @@ -52,133 +52,18 @@ type SubnetInterface interface { // subnets implements SubnetInterface type subnets struct { - client rest.Interface + *gentype.ClientWithList[*v1.Subnet, *v1.SubnetList] } // newSubnets returns a Subnets func newSubnets(c *KubeovnV1Client) *subnets { return &subnets{ - client: c.RESTClient(), + gentype.NewClientWithList[*v1.Subnet, *v1.SubnetList]( + "subnets", + c.RESTClient(), + scheme.ParameterCodec, + "", + func() *v1.Subnet { return &v1.Subnet{} }, + func() *v1.SubnetList { return &v1.SubnetList{} }), } } - -// Get takes name of the subnet, and returns the corresponding subnet object, and an error if there is any. -func (c *subnets) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.Subnet, err error) { - result = &v1.Subnet{} - err = c.client.Get(). - Resource("subnets"). - Name(name). - VersionedParams(&options, scheme.ParameterCodec). - Do(ctx). - Into(result) - return -} - -// List takes label and field selectors, and returns the list of Subnets that match those selectors. -func (c *subnets) List(ctx context.Context, opts metav1.ListOptions) (result *v1.SubnetList, err error) { - var timeout time.Duration - if opts.TimeoutSeconds != nil { - timeout = time.Duration(*opts.TimeoutSeconds) * time.Second - } - result = &v1.SubnetList{} - err = c.client.Get(). - Resource("subnets"). - VersionedParams(&opts, scheme.ParameterCodec). - Timeout(timeout). - Do(ctx). - Into(result) - return -} - -// Watch returns a watch.Interface that watches the requested subnets. -func (c *subnets) Watch(ctx context.Context, opts metav1.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("subnets"). - VersionedParams(&opts, scheme.ParameterCodec). - Timeout(timeout). - Watch(ctx) -} - -// Create takes the representation of a subnet and creates it. Returns the server's representation of the subnet, and an error, if there is any. -func (c *subnets) Create(ctx context.Context, subnet *v1.Subnet, opts metav1.CreateOptions) (result *v1.Subnet, err error) { - result = &v1.Subnet{} - err = c.client.Post(). - Resource("subnets"). - VersionedParams(&opts, scheme.ParameterCodec). - Body(subnet). - Do(ctx). - Into(result) - return -} - -// Update takes the representation of a subnet and updates it. Returns the server's representation of the subnet, and an error, if there is any. -func (c *subnets) Update(ctx context.Context, subnet *v1.Subnet, opts metav1.UpdateOptions) (result *v1.Subnet, err error) { - result = &v1.Subnet{} - err = c.client.Put(). - Resource("subnets"). - Name(subnet.Name). - VersionedParams(&opts, scheme.ParameterCodec). - Body(subnet). - 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 *subnets) UpdateStatus(ctx context.Context, subnet *v1.Subnet, opts metav1.UpdateOptions) (result *v1.Subnet, err error) { - result = &v1.Subnet{} - err = c.client.Put(). - Resource("subnets"). - Name(subnet.Name). - SubResource("status"). - VersionedParams(&opts, scheme.ParameterCodec). - Body(subnet). - Do(ctx). - Into(result) - return -} - -// Delete takes name of the subnet and deletes it. Returns an error if one occurs. -func (c *subnets) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error { - return c.client.Delete(). - Resource("subnets"). - Name(name). - Body(&opts). - Do(ctx). - Error() -} - -// DeleteCollection deletes a collection of objects. -func (c *subnets) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error { - var timeout time.Duration - if listOpts.TimeoutSeconds != nil { - timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second - } - return c.client.Delete(). - Resource("subnets"). - VersionedParams(&listOpts, scheme.ParameterCodec). - Timeout(timeout). - Body(&opts). - Do(ctx). - Error() -} - -// Patch applies the patch and returns the patched subnet. -func (c *subnets) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.Subnet, err error) { - result = &v1.Subnet{} - err = c.client.Patch(pt). - Resource("subnets"). - Name(name). - SubResource(subresources...). - VersionedParams(&opts, scheme.ParameterCodec). - Body(data). - Do(ctx). - Into(result) - return -} diff --git a/pkg/client/clientset/versioned/typed/kubeovn/v1/switchlbrule.go b/pkg/client/clientset/versioned/typed/kubeovn/v1/switchlbrule.go index 537deb6a187..8b1bdbb0ef0 100644 --- a/pkg/client/clientset/versioned/typed/kubeovn/v1/switchlbrule.go +++ b/pkg/client/clientset/versioned/typed/kubeovn/v1/switchlbrule.go @@ -20,14 +20,13 @@ package v1 import ( "context" - "time" v1 "github.com/kubeovn/kube-ovn/pkg/apis/kubeovn/v1" scheme "github.com/kubeovn/kube-ovn/pkg/client/clientset/versioned/scheme" metav1 "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" ) // SwitchLBRulesGetter has a method to return a SwitchLBRuleInterface. @@ -40,6 +39,7 @@ type SwitchLBRulesGetter interface { type SwitchLBRuleInterface interface { Create(ctx context.Context, switchLBRule *v1.SwitchLBRule, opts metav1.CreateOptions) (*v1.SwitchLBRule, error) Update(ctx context.Context, switchLBRule *v1.SwitchLBRule, opts metav1.UpdateOptions) (*v1.SwitchLBRule, error) + // Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus(). UpdateStatus(ctx context.Context, switchLBRule *v1.SwitchLBRule, opts metav1.UpdateOptions) (*v1.SwitchLBRule, error) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error @@ -52,133 +52,18 @@ type SwitchLBRuleInterface interface { // switchLBRules implements SwitchLBRuleInterface type switchLBRules struct { - client rest.Interface + *gentype.ClientWithList[*v1.SwitchLBRule, *v1.SwitchLBRuleList] } // newSwitchLBRules returns a SwitchLBRules func newSwitchLBRules(c *KubeovnV1Client) *switchLBRules { return &switchLBRules{ - client: c.RESTClient(), + gentype.NewClientWithList[*v1.SwitchLBRule, *v1.SwitchLBRuleList]( + "switch-lb-rules", + c.RESTClient(), + scheme.ParameterCodec, + "", + func() *v1.SwitchLBRule { return &v1.SwitchLBRule{} }, + func() *v1.SwitchLBRuleList { return &v1.SwitchLBRuleList{} }), } } - -// Get takes name of the switchLBRule, and returns the corresponding switchLBRule object, and an error if there is any. -func (c *switchLBRules) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.SwitchLBRule, err error) { - result = &v1.SwitchLBRule{} - err = c.client.Get(). - Resource("switch-lb-rules"). - Name(name). - VersionedParams(&options, scheme.ParameterCodec). - Do(ctx). - Into(result) - return -} - -// List takes label and field selectors, and returns the list of SwitchLBRules that match those selectors. -func (c *switchLBRules) List(ctx context.Context, opts metav1.ListOptions) (result *v1.SwitchLBRuleList, err error) { - var timeout time.Duration - if opts.TimeoutSeconds != nil { - timeout = time.Duration(*opts.TimeoutSeconds) * time.Second - } - result = &v1.SwitchLBRuleList{} - err = c.client.Get(). - Resource("switch-lb-rules"). - VersionedParams(&opts, scheme.ParameterCodec). - Timeout(timeout). - Do(ctx). - Into(result) - return -} - -// Watch returns a watch.Interface that watches the requested switchLBRules. -func (c *switchLBRules) Watch(ctx context.Context, opts metav1.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("switch-lb-rules"). - VersionedParams(&opts, scheme.ParameterCodec). - Timeout(timeout). - Watch(ctx) -} - -// Create takes the representation of a switchLBRule and creates it. Returns the server's representation of the switchLBRule, and an error, if there is any. -func (c *switchLBRules) Create(ctx context.Context, switchLBRule *v1.SwitchLBRule, opts metav1.CreateOptions) (result *v1.SwitchLBRule, err error) { - result = &v1.SwitchLBRule{} - err = c.client.Post(). - Resource("switch-lb-rules"). - VersionedParams(&opts, scheme.ParameterCodec). - Body(switchLBRule). - Do(ctx). - Into(result) - return -} - -// Update takes the representation of a switchLBRule and updates it. Returns the server's representation of the switchLBRule, and an error, if there is any. -func (c *switchLBRules) Update(ctx context.Context, switchLBRule *v1.SwitchLBRule, opts metav1.UpdateOptions) (result *v1.SwitchLBRule, err error) { - result = &v1.SwitchLBRule{} - err = c.client.Put(). - Resource("switch-lb-rules"). - Name(switchLBRule.Name). - VersionedParams(&opts, scheme.ParameterCodec). - Body(switchLBRule). - 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 *switchLBRules) UpdateStatus(ctx context.Context, switchLBRule *v1.SwitchLBRule, opts metav1.UpdateOptions) (result *v1.SwitchLBRule, err error) { - result = &v1.SwitchLBRule{} - err = c.client.Put(). - Resource("switch-lb-rules"). - Name(switchLBRule.Name). - SubResource("status"). - VersionedParams(&opts, scheme.ParameterCodec). - Body(switchLBRule). - Do(ctx). - Into(result) - return -} - -// Delete takes name of the switchLBRule and deletes it. Returns an error if one occurs. -func (c *switchLBRules) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error { - return c.client.Delete(). - Resource("switch-lb-rules"). - Name(name). - Body(&opts). - Do(ctx). - Error() -} - -// DeleteCollection deletes a collection of objects. -func (c *switchLBRules) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error { - var timeout time.Duration - if listOpts.TimeoutSeconds != nil { - timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second - } - return c.client.Delete(). - Resource("switch-lb-rules"). - VersionedParams(&listOpts, scheme.ParameterCodec). - Timeout(timeout). - Body(&opts). - Do(ctx). - Error() -} - -// Patch applies the patch and returns the patched switchLBRule. -func (c *switchLBRules) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.SwitchLBRule, err error) { - result = &v1.SwitchLBRule{} - err = c.client.Patch(pt). - Resource("switch-lb-rules"). - Name(name). - SubResource(subresources...). - VersionedParams(&opts, scheme.ParameterCodec). - Body(data). - Do(ctx). - Into(result) - return -} diff --git a/pkg/client/clientset/versioned/typed/kubeovn/v1/vip.go b/pkg/client/clientset/versioned/typed/kubeovn/v1/vip.go index b355e6079bc..9c8f3d73b29 100644 --- a/pkg/client/clientset/versioned/typed/kubeovn/v1/vip.go +++ b/pkg/client/clientset/versioned/typed/kubeovn/v1/vip.go @@ -20,14 +20,13 @@ package v1 import ( "context" - "time" v1 "github.com/kubeovn/kube-ovn/pkg/apis/kubeovn/v1" scheme "github.com/kubeovn/kube-ovn/pkg/client/clientset/versioned/scheme" metav1 "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" ) // VipsGetter has a method to return a VipInterface. @@ -40,6 +39,7 @@ type VipsGetter interface { type VipInterface interface { Create(ctx context.Context, vip *v1.Vip, opts metav1.CreateOptions) (*v1.Vip, error) Update(ctx context.Context, vip *v1.Vip, opts metav1.UpdateOptions) (*v1.Vip, error) + // Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus(). UpdateStatus(ctx context.Context, vip *v1.Vip, opts metav1.UpdateOptions) (*v1.Vip, error) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error @@ -52,133 +52,18 @@ type VipInterface interface { // vips implements VipInterface type vips struct { - client rest.Interface + *gentype.ClientWithList[*v1.Vip, *v1.VipList] } // newVips returns a Vips func newVips(c *KubeovnV1Client) *vips { return &vips{ - client: c.RESTClient(), + gentype.NewClientWithList[*v1.Vip, *v1.VipList]( + "vips", + c.RESTClient(), + scheme.ParameterCodec, + "", + func() *v1.Vip { return &v1.Vip{} }, + func() *v1.VipList { return &v1.VipList{} }), } } - -// Get takes name of the vip, and returns the corresponding vip object, and an error if there is any. -func (c *vips) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.Vip, err error) { - result = &v1.Vip{} - err = c.client.Get(). - Resource("vips"). - Name(name). - VersionedParams(&options, scheme.ParameterCodec). - Do(ctx). - Into(result) - return -} - -// List takes label and field selectors, and returns the list of Vips that match those selectors. -func (c *vips) List(ctx context.Context, opts metav1.ListOptions) (result *v1.VipList, err error) { - var timeout time.Duration - if opts.TimeoutSeconds != nil { - timeout = time.Duration(*opts.TimeoutSeconds) * time.Second - } - result = &v1.VipList{} - err = c.client.Get(). - Resource("vips"). - VersionedParams(&opts, scheme.ParameterCodec). - Timeout(timeout). - Do(ctx). - Into(result) - return -} - -// Watch returns a watch.Interface that watches the requested vips. -func (c *vips) Watch(ctx context.Context, opts metav1.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("vips"). - VersionedParams(&opts, scheme.ParameterCodec). - Timeout(timeout). - Watch(ctx) -} - -// Create takes the representation of a vip and creates it. Returns the server's representation of the vip, and an error, if there is any. -func (c *vips) Create(ctx context.Context, vip *v1.Vip, opts metav1.CreateOptions) (result *v1.Vip, err error) { - result = &v1.Vip{} - err = c.client.Post(). - Resource("vips"). - VersionedParams(&opts, scheme.ParameterCodec). - Body(vip). - Do(ctx). - Into(result) - return -} - -// Update takes the representation of a vip and updates it. Returns the server's representation of the vip, and an error, if there is any. -func (c *vips) Update(ctx context.Context, vip *v1.Vip, opts metav1.UpdateOptions) (result *v1.Vip, err error) { - result = &v1.Vip{} - err = c.client.Put(). - Resource("vips"). - Name(vip.Name). - VersionedParams(&opts, scheme.ParameterCodec). - Body(vip). - 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 *vips) UpdateStatus(ctx context.Context, vip *v1.Vip, opts metav1.UpdateOptions) (result *v1.Vip, err error) { - result = &v1.Vip{} - err = c.client.Put(). - Resource("vips"). - Name(vip.Name). - SubResource("status"). - VersionedParams(&opts, scheme.ParameterCodec). - Body(vip). - Do(ctx). - Into(result) - return -} - -// Delete takes name of the vip and deletes it. Returns an error if one occurs. -func (c *vips) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error { - return c.client.Delete(). - Resource("vips"). - Name(name). - Body(&opts). - Do(ctx). - Error() -} - -// DeleteCollection deletes a collection of objects. -func (c *vips) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error { - var timeout time.Duration - if listOpts.TimeoutSeconds != nil { - timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second - } - return c.client.Delete(). - Resource("vips"). - VersionedParams(&listOpts, scheme.ParameterCodec). - Timeout(timeout). - Body(&opts). - Do(ctx). - Error() -} - -// Patch applies the patch and returns the patched vip. -func (c *vips) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.Vip, err error) { - result = &v1.Vip{} - err = c.client.Patch(pt). - Resource("vips"). - Name(name). - SubResource(subresources...). - VersionedParams(&opts, scheme.ParameterCodec). - Body(data). - Do(ctx). - Into(result) - return -} diff --git a/pkg/client/clientset/versioned/typed/kubeovn/v1/vlan.go b/pkg/client/clientset/versioned/typed/kubeovn/v1/vlan.go index 64e91699707..958f0be2dce 100644 --- a/pkg/client/clientset/versioned/typed/kubeovn/v1/vlan.go +++ b/pkg/client/clientset/versioned/typed/kubeovn/v1/vlan.go @@ -20,14 +20,13 @@ package v1 import ( "context" - "time" v1 "github.com/kubeovn/kube-ovn/pkg/apis/kubeovn/v1" scheme "github.com/kubeovn/kube-ovn/pkg/client/clientset/versioned/scheme" metav1 "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" ) // VlansGetter has a method to return a VlanInterface. @@ -40,6 +39,7 @@ type VlansGetter interface { type VlanInterface interface { Create(ctx context.Context, vlan *v1.Vlan, opts metav1.CreateOptions) (*v1.Vlan, error) Update(ctx context.Context, vlan *v1.Vlan, opts metav1.UpdateOptions) (*v1.Vlan, error) + // Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus(). UpdateStatus(ctx context.Context, vlan *v1.Vlan, opts metav1.UpdateOptions) (*v1.Vlan, error) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error @@ -52,133 +52,18 @@ type VlanInterface interface { // vlans implements VlanInterface type vlans struct { - client rest.Interface + *gentype.ClientWithList[*v1.Vlan, *v1.VlanList] } // newVlans returns a Vlans func newVlans(c *KubeovnV1Client) *vlans { return &vlans{ - client: c.RESTClient(), + gentype.NewClientWithList[*v1.Vlan, *v1.VlanList]( + "vlans", + c.RESTClient(), + scheme.ParameterCodec, + "", + func() *v1.Vlan { return &v1.Vlan{} }, + func() *v1.VlanList { return &v1.VlanList{} }), } } - -// Get takes name of the vlan, and returns the corresponding vlan object, and an error if there is any. -func (c *vlans) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.Vlan, err error) { - result = &v1.Vlan{} - err = c.client.Get(). - Resource("vlans"). - Name(name). - VersionedParams(&options, scheme.ParameterCodec). - Do(ctx). - Into(result) - return -} - -// List takes label and field selectors, and returns the list of Vlans that match those selectors. -func (c *vlans) List(ctx context.Context, opts metav1.ListOptions) (result *v1.VlanList, err error) { - var timeout time.Duration - if opts.TimeoutSeconds != nil { - timeout = time.Duration(*opts.TimeoutSeconds) * time.Second - } - result = &v1.VlanList{} - err = c.client.Get(). - Resource("vlans"). - VersionedParams(&opts, scheme.ParameterCodec). - Timeout(timeout). - Do(ctx). - Into(result) - return -} - -// Watch returns a watch.Interface that watches the requested vlans. -func (c *vlans) Watch(ctx context.Context, opts metav1.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("vlans"). - VersionedParams(&opts, scheme.ParameterCodec). - Timeout(timeout). - Watch(ctx) -} - -// Create takes the representation of a vlan and creates it. Returns the server's representation of the vlan, and an error, if there is any. -func (c *vlans) Create(ctx context.Context, vlan *v1.Vlan, opts metav1.CreateOptions) (result *v1.Vlan, err error) { - result = &v1.Vlan{} - err = c.client.Post(). - Resource("vlans"). - VersionedParams(&opts, scheme.ParameterCodec). - Body(vlan). - Do(ctx). - Into(result) - return -} - -// Update takes the representation of a vlan and updates it. Returns the server's representation of the vlan, and an error, if there is any. -func (c *vlans) Update(ctx context.Context, vlan *v1.Vlan, opts metav1.UpdateOptions) (result *v1.Vlan, err error) { - result = &v1.Vlan{} - err = c.client.Put(). - Resource("vlans"). - Name(vlan.Name). - VersionedParams(&opts, scheme.ParameterCodec). - Body(vlan). - 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 *vlans) UpdateStatus(ctx context.Context, vlan *v1.Vlan, opts metav1.UpdateOptions) (result *v1.Vlan, err error) { - result = &v1.Vlan{} - err = c.client.Put(). - Resource("vlans"). - Name(vlan.Name). - SubResource("status"). - VersionedParams(&opts, scheme.ParameterCodec). - Body(vlan). - Do(ctx). - Into(result) - return -} - -// Delete takes name of the vlan and deletes it. Returns an error if one occurs. -func (c *vlans) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error { - return c.client.Delete(). - Resource("vlans"). - Name(name). - Body(&opts). - Do(ctx). - Error() -} - -// DeleteCollection deletes a collection of objects. -func (c *vlans) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error { - var timeout time.Duration - if listOpts.TimeoutSeconds != nil { - timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second - } - return c.client.Delete(). - Resource("vlans"). - VersionedParams(&listOpts, scheme.ParameterCodec). - Timeout(timeout). - Body(&opts). - Do(ctx). - Error() -} - -// Patch applies the patch and returns the patched vlan. -func (c *vlans) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.Vlan, err error) { - result = &v1.Vlan{} - err = c.client.Patch(pt). - Resource("vlans"). - Name(name). - SubResource(subresources...). - VersionedParams(&opts, scheme.ParameterCodec). - Body(data). - Do(ctx). - Into(result) - return -} diff --git a/pkg/client/clientset/versioned/typed/kubeovn/v1/vpc.go b/pkg/client/clientset/versioned/typed/kubeovn/v1/vpc.go index 788500624fd..84ba616217c 100644 --- a/pkg/client/clientset/versioned/typed/kubeovn/v1/vpc.go +++ b/pkg/client/clientset/versioned/typed/kubeovn/v1/vpc.go @@ -20,14 +20,13 @@ package v1 import ( "context" - "time" v1 "github.com/kubeovn/kube-ovn/pkg/apis/kubeovn/v1" scheme "github.com/kubeovn/kube-ovn/pkg/client/clientset/versioned/scheme" metav1 "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" ) // VpcsGetter has a method to return a VpcInterface. @@ -40,6 +39,7 @@ type VpcsGetter interface { type VpcInterface interface { Create(ctx context.Context, vpc *v1.Vpc, opts metav1.CreateOptions) (*v1.Vpc, error) Update(ctx context.Context, vpc *v1.Vpc, opts metav1.UpdateOptions) (*v1.Vpc, error) + // Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus(). UpdateStatus(ctx context.Context, vpc *v1.Vpc, opts metav1.UpdateOptions) (*v1.Vpc, error) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error @@ -52,133 +52,18 @@ type VpcInterface interface { // vpcs implements VpcInterface type vpcs struct { - client rest.Interface + *gentype.ClientWithList[*v1.Vpc, *v1.VpcList] } // newVpcs returns a Vpcs func newVpcs(c *KubeovnV1Client) *vpcs { return &vpcs{ - client: c.RESTClient(), + gentype.NewClientWithList[*v1.Vpc, *v1.VpcList]( + "vpcs", + c.RESTClient(), + scheme.ParameterCodec, + "", + func() *v1.Vpc { return &v1.Vpc{} }, + func() *v1.VpcList { return &v1.VpcList{} }), } } - -// Get takes name of the vpc, and returns the corresponding vpc object, and an error if there is any. -func (c *vpcs) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.Vpc, err error) { - result = &v1.Vpc{} - err = c.client.Get(). - Resource("vpcs"). - Name(name). - VersionedParams(&options, scheme.ParameterCodec). - Do(ctx). - Into(result) - return -} - -// List takes label and field selectors, and returns the list of Vpcs that match those selectors. -func (c *vpcs) List(ctx context.Context, opts metav1.ListOptions) (result *v1.VpcList, err error) { - var timeout time.Duration - if opts.TimeoutSeconds != nil { - timeout = time.Duration(*opts.TimeoutSeconds) * time.Second - } - result = &v1.VpcList{} - err = c.client.Get(). - Resource("vpcs"). - VersionedParams(&opts, scheme.ParameterCodec). - Timeout(timeout). - Do(ctx). - Into(result) - return -} - -// Watch returns a watch.Interface that watches the requested vpcs. -func (c *vpcs) Watch(ctx context.Context, opts metav1.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("vpcs"). - VersionedParams(&opts, scheme.ParameterCodec). - Timeout(timeout). - Watch(ctx) -} - -// Create takes the representation of a vpc and creates it. Returns the server's representation of the vpc, and an error, if there is any. -func (c *vpcs) Create(ctx context.Context, vpc *v1.Vpc, opts metav1.CreateOptions) (result *v1.Vpc, err error) { - result = &v1.Vpc{} - err = c.client.Post(). - Resource("vpcs"). - VersionedParams(&opts, scheme.ParameterCodec). - Body(vpc). - Do(ctx). - Into(result) - return -} - -// Update takes the representation of a vpc and updates it. Returns the server's representation of the vpc, and an error, if there is any. -func (c *vpcs) Update(ctx context.Context, vpc *v1.Vpc, opts metav1.UpdateOptions) (result *v1.Vpc, err error) { - result = &v1.Vpc{} - err = c.client.Put(). - Resource("vpcs"). - Name(vpc.Name). - VersionedParams(&opts, scheme.ParameterCodec). - Body(vpc). - 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 *vpcs) UpdateStatus(ctx context.Context, vpc *v1.Vpc, opts metav1.UpdateOptions) (result *v1.Vpc, err error) { - result = &v1.Vpc{} - err = c.client.Put(). - Resource("vpcs"). - Name(vpc.Name). - SubResource("status"). - VersionedParams(&opts, scheme.ParameterCodec). - Body(vpc). - Do(ctx). - Into(result) - return -} - -// Delete takes name of the vpc and deletes it. Returns an error if one occurs. -func (c *vpcs) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error { - return c.client.Delete(). - Resource("vpcs"). - Name(name). - Body(&opts). - Do(ctx). - Error() -} - -// DeleteCollection deletes a collection of objects. -func (c *vpcs) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error { - var timeout time.Duration - if listOpts.TimeoutSeconds != nil { - timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second - } - return c.client.Delete(). - Resource("vpcs"). - VersionedParams(&listOpts, scheme.ParameterCodec). - Timeout(timeout). - Body(&opts). - Do(ctx). - Error() -} - -// Patch applies the patch and returns the patched vpc. -func (c *vpcs) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.Vpc, err error) { - result = &v1.Vpc{} - err = c.client.Patch(pt). - Resource("vpcs"). - Name(name). - SubResource(subresources...). - VersionedParams(&opts, scheme.ParameterCodec). - Body(data). - Do(ctx). - Into(result) - return -} diff --git a/pkg/client/clientset/versioned/typed/kubeovn/v1/vpcdns.go b/pkg/client/clientset/versioned/typed/kubeovn/v1/vpcdns.go index a5190ce56af..02e8ec80882 100644 --- a/pkg/client/clientset/versioned/typed/kubeovn/v1/vpcdns.go +++ b/pkg/client/clientset/versioned/typed/kubeovn/v1/vpcdns.go @@ -20,14 +20,13 @@ package v1 import ( "context" - "time" v1 "github.com/kubeovn/kube-ovn/pkg/apis/kubeovn/v1" scheme "github.com/kubeovn/kube-ovn/pkg/client/clientset/versioned/scheme" metav1 "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" ) // VpcDnsesGetter has a method to return a VpcDnsInterface. @@ -40,6 +39,7 @@ type VpcDnsesGetter interface { type VpcDnsInterface interface { Create(ctx context.Context, vpcDns *v1.VpcDns, opts metav1.CreateOptions) (*v1.VpcDns, error) Update(ctx context.Context, vpcDns *v1.VpcDns, opts metav1.UpdateOptions) (*v1.VpcDns, error) + // Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus(). UpdateStatus(ctx context.Context, vpcDns *v1.VpcDns, opts metav1.UpdateOptions) (*v1.VpcDns, error) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error @@ -52,133 +52,18 @@ type VpcDnsInterface interface { // vpcDnses implements VpcDnsInterface type vpcDnses struct { - client rest.Interface + *gentype.ClientWithList[*v1.VpcDns, *v1.VpcDnsList] } // newVpcDnses returns a VpcDnses func newVpcDnses(c *KubeovnV1Client) *vpcDnses { return &vpcDnses{ - client: c.RESTClient(), + gentype.NewClientWithList[*v1.VpcDns, *v1.VpcDnsList]( + "vpc-dnses", + c.RESTClient(), + scheme.ParameterCodec, + "", + func() *v1.VpcDns { return &v1.VpcDns{} }, + func() *v1.VpcDnsList { return &v1.VpcDnsList{} }), } } - -// Get takes name of the vpcDns, and returns the corresponding vpcDns object, and an error if there is any. -func (c *vpcDnses) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.VpcDns, err error) { - result = &v1.VpcDns{} - err = c.client.Get(). - Resource("vpc-dnses"). - Name(name). - VersionedParams(&options, scheme.ParameterCodec). - Do(ctx). - Into(result) - return -} - -// List takes label and field selectors, and returns the list of VpcDnses that match those selectors. -func (c *vpcDnses) List(ctx context.Context, opts metav1.ListOptions) (result *v1.VpcDnsList, err error) { - var timeout time.Duration - if opts.TimeoutSeconds != nil { - timeout = time.Duration(*opts.TimeoutSeconds) * time.Second - } - result = &v1.VpcDnsList{} - err = c.client.Get(). - Resource("vpc-dnses"). - VersionedParams(&opts, scheme.ParameterCodec). - Timeout(timeout). - Do(ctx). - Into(result) - return -} - -// Watch returns a watch.Interface that watches the requested vpcDnses. -func (c *vpcDnses) Watch(ctx context.Context, opts metav1.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("vpc-dnses"). - VersionedParams(&opts, scheme.ParameterCodec). - Timeout(timeout). - Watch(ctx) -} - -// Create takes the representation of a vpcDns and creates it. Returns the server's representation of the vpcDns, and an error, if there is any. -func (c *vpcDnses) Create(ctx context.Context, vpcDns *v1.VpcDns, opts metav1.CreateOptions) (result *v1.VpcDns, err error) { - result = &v1.VpcDns{} - err = c.client.Post(). - Resource("vpc-dnses"). - VersionedParams(&opts, scheme.ParameterCodec). - Body(vpcDns). - Do(ctx). - Into(result) - return -} - -// Update takes the representation of a vpcDns and updates it. Returns the server's representation of the vpcDns, and an error, if there is any. -func (c *vpcDnses) Update(ctx context.Context, vpcDns *v1.VpcDns, opts metav1.UpdateOptions) (result *v1.VpcDns, err error) { - result = &v1.VpcDns{} - err = c.client.Put(). - Resource("vpc-dnses"). - Name(vpcDns.Name). - VersionedParams(&opts, scheme.ParameterCodec). - Body(vpcDns). - 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 *vpcDnses) UpdateStatus(ctx context.Context, vpcDns *v1.VpcDns, opts metav1.UpdateOptions) (result *v1.VpcDns, err error) { - result = &v1.VpcDns{} - err = c.client.Put(). - Resource("vpc-dnses"). - Name(vpcDns.Name). - SubResource("status"). - VersionedParams(&opts, scheme.ParameterCodec). - Body(vpcDns). - Do(ctx). - Into(result) - return -} - -// Delete takes name of the vpcDns and deletes it. Returns an error if one occurs. -func (c *vpcDnses) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error { - return c.client.Delete(). - Resource("vpc-dnses"). - Name(name). - Body(&opts). - Do(ctx). - Error() -} - -// DeleteCollection deletes a collection of objects. -func (c *vpcDnses) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error { - var timeout time.Duration - if listOpts.TimeoutSeconds != nil { - timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second - } - return c.client.Delete(). - Resource("vpc-dnses"). - VersionedParams(&listOpts, scheme.ParameterCodec). - Timeout(timeout). - Body(&opts). - Do(ctx). - Error() -} - -// Patch applies the patch and returns the patched vpcDns. -func (c *vpcDnses) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.VpcDns, err error) { - result = &v1.VpcDns{} - err = c.client.Patch(pt). - Resource("vpc-dnses"). - Name(name). - SubResource(subresources...). - VersionedParams(&opts, scheme.ParameterCodec). - Body(data). - Do(ctx). - Into(result) - return -} diff --git a/pkg/client/clientset/versioned/typed/kubeovn/v1/vpcnatgateway.go b/pkg/client/clientset/versioned/typed/kubeovn/v1/vpcnatgateway.go index 074523ed533..d94f35ce6ab 100644 --- a/pkg/client/clientset/versioned/typed/kubeovn/v1/vpcnatgateway.go +++ b/pkg/client/clientset/versioned/typed/kubeovn/v1/vpcnatgateway.go @@ -20,14 +20,13 @@ package v1 import ( "context" - "time" v1 "github.com/kubeovn/kube-ovn/pkg/apis/kubeovn/v1" scheme "github.com/kubeovn/kube-ovn/pkg/client/clientset/versioned/scheme" metav1 "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" ) // VpcNatGatewaysGetter has a method to return a VpcNatGatewayInterface. @@ -40,6 +39,7 @@ type VpcNatGatewaysGetter interface { type VpcNatGatewayInterface interface { Create(ctx context.Context, vpcNatGateway *v1.VpcNatGateway, opts metav1.CreateOptions) (*v1.VpcNatGateway, error) Update(ctx context.Context, vpcNatGateway *v1.VpcNatGateway, opts metav1.UpdateOptions) (*v1.VpcNatGateway, error) + // Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus(). UpdateStatus(ctx context.Context, vpcNatGateway *v1.VpcNatGateway, opts metav1.UpdateOptions) (*v1.VpcNatGateway, error) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error @@ -52,133 +52,18 @@ type VpcNatGatewayInterface interface { // vpcNatGateways implements VpcNatGatewayInterface type vpcNatGateways struct { - client rest.Interface + *gentype.ClientWithList[*v1.VpcNatGateway, *v1.VpcNatGatewayList] } // newVpcNatGateways returns a VpcNatGateways func newVpcNatGateways(c *KubeovnV1Client) *vpcNatGateways { return &vpcNatGateways{ - client: c.RESTClient(), + gentype.NewClientWithList[*v1.VpcNatGateway, *v1.VpcNatGatewayList]( + "vpc-nat-gateways", + c.RESTClient(), + scheme.ParameterCodec, + "", + func() *v1.VpcNatGateway { return &v1.VpcNatGateway{} }, + func() *v1.VpcNatGatewayList { return &v1.VpcNatGatewayList{} }), } } - -// Get takes name of the vpcNatGateway, and returns the corresponding vpcNatGateway object, and an error if there is any. -func (c *vpcNatGateways) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.VpcNatGateway, err error) { - result = &v1.VpcNatGateway{} - err = c.client.Get(). - Resource("vpc-nat-gateways"). - Name(name). - VersionedParams(&options, scheme.ParameterCodec). - Do(ctx). - Into(result) - return -} - -// List takes label and field selectors, and returns the list of VpcNatGateways that match those selectors. -func (c *vpcNatGateways) List(ctx context.Context, opts metav1.ListOptions) (result *v1.VpcNatGatewayList, err error) { - var timeout time.Duration - if opts.TimeoutSeconds != nil { - timeout = time.Duration(*opts.TimeoutSeconds) * time.Second - } - result = &v1.VpcNatGatewayList{} - err = c.client.Get(). - Resource("vpc-nat-gateways"). - VersionedParams(&opts, scheme.ParameterCodec). - Timeout(timeout). - Do(ctx). - Into(result) - return -} - -// Watch returns a watch.Interface that watches the requested vpcNatGateways. -func (c *vpcNatGateways) Watch(ctx context.Context, opts metav1.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("vpc-nat-gateways"). - VersionedParams(&opts, scheme.ParameterCodec). - Timeout(timeout). - Watch(ctx) -} - -// Create takes the representation of a vpcNatGateway and creates it. Returns the server's representation of the vpcNatGateway, and an error, if there is any. -func (c *vpcNatGateways) Create(ctx context.Context, vpcNatGateway *v1.VpcNatGateway, opts metav1.CreateOptions) (result *v1.VpcNatGateway, err error) { - result = &v1.VpcNatGateway{} - err = c.client.Post(). - Resource("vpc-nat-gateways"). - VersionedParams(&opts, scheme.ParameterCodec). - Body(vpcNatGateway). - Do(ctx). - Into(result) - return -} - -// Update takes the representation of a vpcNatGateway and updates it. Returns the server's representation of the vpcNatGateway, and an error, if there is any. -func (c *vpcNatGateways) Update(ctx context.Context, vpcNatGateway *v1.VpcNatGateway, opts metav1.UpdateOptions) (result *v1.VpcNatGateway, err error) { - result = &v1.VpcNatGateway{} - err = c.client.Put(). - Resource("vpc-nat-gateways"). - Name(vpcNatGateway.Name). - VersionedParams(&opts, scheme.ParameterCodec). - Body(vpcNatGateway). - 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 *vpcNatGateways) UpdateStatus(ctx context.Context, vpcNatGateway *v1.VpcNatGateway, opts metav1.UpdateOptions) (result *v1.VpcNatGateway, err error) { - result = &v1.VpcNatGateway{} - err = c.client.Put(). - Resource("vpc-nat-gateways"). - Name(vpcNatGateway.Name). - SubResource("status"). - VersionedParams(&opts, scheme.ParameterCodec). - Body(vpcNatGateway). - Do(ctx). - Into(result) - return -} - -// Delete takes name of the vpcNatGateway and deletes it. Returns an error if one occurs. -func (c *vpcNatGateways) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error { - return c.client.Delete(). - Resource("vpc-nat-gateways"). - Name(name). - Body(&opts). - Do(ctx). - Error() -} - -// DeleteCollection deletes a collection of objects. -func (c *vpcNatGateways) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error { - var timeout time.Duration - if listOpts.TimeoutSeconds != nil { - timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second - } - return c.client.Delete(). - Resource("vpc-nat-gateways"). - VersionedParams(&listOpts, scheme.ParameterCodec). - Timeout(timeout). - Body(&opts). - Do(ctx). - Error() -} - -// Patch applies the patch and returns the patched vpcNatGateway. -func (c *vpcNatGateways) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.VpcNatGateway, err error) { - result = &v1.VpcNatGateway{} - err = c.client.Patch(pt). - Resource("vpc-nat-gateways"). - Name(name). - SubResource(subresources...). - VersionedParams(&opts, scheme.ParameterCodec). - Body(data). - Do(ctx). - Into(result) - return -} diff --git a/pkg/client/informers/externalversions/factory.go b/pkg/client/informers/externalversions/factory.go index a5cf0051bc7..fc814f1999b 100644 --- a/pkg/client/informers/externalversions/factory.go +++ b/pkg/client/informers/externalversions/factory.go @@ -228,6 +228,7 @@ type SharedInformerFactory interface { // Start initializes all requested informers. They are handled in goroutines // which run until the stop channel gets closed. + // Warning: Start does not block. When run in a go-routine, it will race with a later WaitForCacheSync. Start(stopCh <-chan struct{}) // Shutdown marks a factory as shutting down. At that point no new diff --git a/pkg/client/listers/kubeovn/v1/ip.go b/pkg/client/listers/kubeovn/v1/ip.go index 7e86509820f..e32e6099ee9 100644 --- a/pkg/client/listers/kubeovn/v1/ip.go +++ b/pkg/client/listers/kubeovn/v1/ip.go @@ -20,8 +20,8 @@ package v1 import ( v1 "github.com/kubeovn/kube-ovn/pkg/apis/kubeovn/v1" - "k8s.io/apimachinery/pkg/api/errors" "k8s.io/apimachinery/pkg/labels" + "k8s.io/client-go/listers" "k8s.io/client-go/tools/cache" ) @@ -39,30 +39,10 @@ type IPLister interface { // iPLister implements the IPLister interface. type iPLister struct { - indexer cache.Indexer + listers.ResourceIndexer[*v1.IP] } // NewIPLister returns a new IPLister. func NewIPLister(indexer cache.Indexer) IPLister { - return &iPLister{indexer: indexer} -} - -// List lists all IPs in the indexer. -func (s *iPLister) List(selector labels.Selector) (ret []*v1.IP, err error) { - err = cache.ListAll(s.indexer, selector, func(m interface{}) { - ret = append(ret, m.(*v1.IP)) - }) - return ret, err -} - -// Get retrieves the IP from the index for a given name. -func (s *iPLister) Get(name string) (*v1.IP, error) { - obj, exists, err := s.indexer.GetByKey(name) - if err != nil { - return nil, err - } - if !exists { - return nil, errors.NewNotFound(v1.Resource("ip"), name) - } - return obj.(*v1.IP), nil + return &iPLister{listers.New[*v1.IP](indexer, v1.Resource("ip"))} } diff --git a/pkg/client/listers/kubeovn/v1/ippool.go b/pkg/client/listers/kubeovn/v1/ippool.go index 95058c4a38f..cfb6329f8d3 100644 --- a/pkg/client/listers/kubeovn/v1/ippool.go +++ b/pkg/client/listers/kubeovn/v1/ippool.go @@ -20,8 +20,8 @@ package v1 import ( v1 "github.com/kubeovn/kube-ovn/pkg/apis/kubeovn/v1" - "k8s.io/apimachinery/pkg/api/errors" "k8s.io/apimachinery/pkg/labels" + "k8s.io/client-go/listers" "k8s.io/client-go/tools/cache" ) @@ -39,30 +39,10 @@ type IPPoolLister interface { // iPPoolLister implements the IPPoolLister interface. type iPPoolLister struct { - indexer cache.Indexer + listers.ResourceIndexer[*v1.IPPool] } // NewIPPoolLister returns a new IPPoolLister. func NewIPPoolLister(indexer cache.Indexer) IPPoolLister { - return &iPPoolLister{indexer: indexer} -} - -// List lists all IPPools in the indexer. -func (s *iPPoolLister) List(selector labels.Selector) (ret []*v1.IPPool, err error) { - err = cache.ListAll(s.indexer, selector, func(m interface{}) { - ret = append(ret, m.(*v1.IPPool)) - }) - return ret, err -} - -// Get retrieves the IPPool from the index for a given name. -func (s *iPPoolLister) Get(name string) (*v1.IPPool, error) { - obj, exists, err := s.indexer.GetByKey(name) - if err != nil { - return nil, err - } - if !exists { - return nil, errors.NewNotFound(v1.Resource("ippool"), name) - } - return obj.(*v1.IPPool), nil + return &iPPoolLister{listers.New[*v1.IPPool](indexer, v1.Resource("ippool"))} } diff --git a/pkg/client/listers/kubeovn/v1/iptablesdnatrule.go b/pkg/client/listers/kubeovn/v1/iptablesdnatrule.go index ade64f00764..94e98336ef8 100644 --- a/pkg/client/listers/kubeovn/v1/iptablesdnatrule.go +++ b/pkg/client/listers/kubeovn/v1/iptablesdnatrule.go @@ -20,8 +20,8 @@ package v1 import ( v1 "github.com/kubeovn/kube-ovn/pkg/apis/kubeovn/v1" - "k8s.io/apimachinery/pkg/api/errors" "k8s.io/apimachinery/pkg/labels" + "k8s.io/client-go/listers" "k8s.io/client-go/tools/cache" ) @@ -39,30 +39,10 @@ type IptablesDnatRuleLister interface { // iptablesDnatRuleLister implements the IptablesDnatRuleLister interface. type iptablesDnatRuleLister struct { - indexer cache.Indexer + listers.ResourceIndexer[*v1.IptablesDnatRule] } // NewIptablesDnatRuleLister returns a new IptablesDnatRuleLister. func NewIptablesDnatRuleLister(indexer cache.Indexer) IptablesDnatRuleLister { - return &iptablesDnatRuleLister{indexer: indexer} -} - -// List lists all IptablesDnatRules in the indexer. -func (s *iptablesDnatRuleLister) List(selector labels.Selector) (ret []*v1.IptablesDnatRule, err error) { - err = cache.ListAll(s.indexer, selector, func(m interface{}) { - ret = append(ret, m.(*v1.IptablesDnatRule)) - }) - return ret, err -} - -// Get retrieves the IptablesDnatRule from the index for a given name. -func (s *iptablesDnatRuleLister) Get(name string) (*v1.IptablesDnatRule, error) { - obj, exists, err := s.indexer.GetByKey(name) - if err != nil { - return nil, err - } - if !exists { - return nil, errors.NewNotFound(v1.Resource("iptablesdnatrule"), name) - } - return obj.(*v1.IptablesDnatRule), nil + return &iptablesDnatRuleLister{listers.New[*v1.IptablesDnatRule](indexer, v1.Resource("iptablesdnatrule"))} } diff --git a/pkg/client/listers/kubeovn/v1/iptableseip.go b/pkg/client/listers/kubeovn/v1/iptableseip.go index f76d6f6b59d..160e8c5f586 100644 --- a/pkg/client/listers/kubeovn/v1/iptableseip.go +++ b/pkg/client/listers/kubeovn/v1/iptableseip.go @@ -20,8 +20,8 @@ package v1 import ( v1 "github.com/kubeovn/kube-ovn/pkg/apis/kubeovn/v1" - "k8s.io/apimachinery/pkg/api/errors" "k8s.io/apimachinery/pkg/labels" + "k8s.io/client-go/listers" "k8s.io/client-go/tools/cache" ) @@ -39,30 +39,10 @@ type IptablesEIPLister interface { // iptablesEIPLister implements the IptablesEIPLister interface. type iptablesEIPLister struct { - indexer cache.Indexer + listers.ResourceIndexer[*v1.IptablesEIP] } // NewIptablesEIPLister returns a new IptablesEIPLister. func NewIptablesEIPLister(indexer cache.Indexer) IptablesEIPLister { - return &iptablesEIPLister{indexer: indexer} -} - -// List lists all IptablesEIPs in the indexer. -func (s *iptablesEIPLister) List(selector labels.Selector) (ret []*v1.IptablesEIP, err error) { - err = cache.ListAll(s.indexer, selector, func(m interface{}) { - ret = append(ret, m.(*v1.IptablesEIP)) - }) - return ret, err -} - -// Get retrieves the IptablesEIP from the index for a given name. -func (s *iptablesEIPLister) Get(name string) (*v1.IptablesEIP, error) { - obj, exists, err := s.indexer.GetByKey(name) - if err != nil { - return nil, err - } - if !exists { - return nil, errors.NewNotFound(v1.Resource("iptableseip"), name) - } - return obj.(*v1.IptablesEIP), nil + return &iptablesEIPLister{listers.New[*v1.IptablesEIP](indexer, v1.Resource("iptableseip"))} } diff --git a/pkg/client/listers/kubeovn/v1/iptablesfiprule.go b/pkg/client/listers/kubeovn/v1/iptablesfiprule.go index dccd3b371a2..d97baf245d3 100644 --- a/pkg/client/listers/kubeovn/v1/iptablesfiprule.go +++ b/pkg/client/listers/kubeovn/v1/iptablesfiprule.go @@ -20,8 +20,8 @@ package v1 import ( v1 "github.com/kubeovn/kube-ovn/pkg/apis/kubeovn/v1" - "k8s.io/apimachinery/pkg/api/errors" "k8s.io/apimachinery/pkg/labels" + "k8s.io/client-go/listers" "k8s.io/client-go/tools/cache" ) @@ -39,30 +39,10 @@ type IptablesFIPRuleLister interface { // iptablesFIPRuleLister implements the IptablesFIPRuleLister interface. type iptablesFIPRuleLister struct { - indexer cache.Indexer + listers.ResourceIndexer[*v1.IptablesFIPRule] } // NewIptablesFIPRuleLister returns a new IptablesFIPRuleLister. func NewIptablesFIPRuleLister(indexer cache.Indexer) IptablesFIPRuleLister { - return &iptablesFIPRuleLister{indexer: indexer} -} - -// List lists all IptablesFIPRules in the indexer. -func (s *iptablesFIPRuleLister) List(selector labels.Selector) (ret []*v1.IptablesFIPRule, err error) { - err = cache.ListAll(s.indexer, selector, func(m interface{}) { - ret = append(ret, m.(*v1.IptablesFIPRule)) - }) - return ret, err -} - -// Get retrieves the IptablesFIPRule from the index for a given name. -func (s *iptablesFIPRuleLister) Get(name string) (*v1.IptablesFIPRule, error) { - obj, exists, err := s.indexer.GetByKey(name) - if err != nil { - return nil, err - } - if !exists { - return nil, errors.NewNotFound(v1.Resource("iptablesfiprule"), name) - } - return obj.(*v1.IptablesFIPRule), nil + return &iptablesFIPRuleLister{listers.New[*v1.IptablesFIPRule](indexer, v1.Resource("iptablesfiprule"))} } diff --git a/pkg/client/listers/kubeovn/v1/iptablessnatrule.go b/pkg/client/listers/kubeovn/v1/iptablessnatrule.go index 7308fd8388c..cc81db98247 100644 --- a/pkg/client/listers/kubeovn/v1/iptablessnatrule.go +++ b/pkg/client/listers/kubeovn/v1/iptablessnatrule.go @@ -20,8 +20,8 @@ package v1 import ( v1 "github.com/kubeovn/kube-ovn/pkg/apis/kubeovn/v1" - "k8s.io/apimachinery/pkg/api/errors" "k8s.io/apimachinery/pkg/labels" + "k8s.io/client-go/listers" "k8s.io/client-go/tools/cache" ) @@ -39,30 +39,10 @@ type IptablesSnatRuleLister interface { // iptablesSnatRuleLister implements the IptablesSnatRuleLister interface. type iptablesSnatRuleLister struct { - indexer cache.Indexer + listers.ResourceIndexer[*v1.IptablesSnatRule] } // NewIptablesSnatRuleLister returns a new IptablesSnatRuleLister. func NewIptablesSnatRuleLister(indexer cache.Indexer) IptablesSnatRuleLister { - return &iptablesSnatRuleLister{indexer: indexer} -} - -// List lists all IptablesSnatRules in the indexer. -func (s *iptablesSnatRuleLister) List(selector labels.Selector) (ret []*v1.IptablesSnatRule, err error) { - err = cache.ListAll(s.indexer, selector, func(m interface{}) { - ret = append(ret, m.(*v1.IptablesSnatRule)) - }) - return ret, err -} - -// Get retrieves the IptablesSnatRule from the index for a given name. -func (s *iptablesSnatRuleLister) Get(name string) (*v1.IptablesSnatRule, error) { - obj, exists, err := s.indexer.GetByKey(name) - if err != nil { - return nil, err - } - if !exists { - return nil, errors.NewNotFound(v1.Resource("iptablessnatrule"), name) - } - return obj.(*v1.IptablesSnatRule), nil + return &iptablesSnatRuleLister{listers.New[*v1.IptablesSnatRule](indexer, v1.Resource("iptablessnatrule"))} } diff --git a/pkg/client/listers/kubeovn/v1/ovndnatrule.go b/pkg/client/listers/kubeovn/v1/ovndnatrule.go index 629841e1e0a..fd17243985f 100644 --- a/pkg/client/listers/kubeovn/v1/ovndnatrule.go +++ b/pkg/client/listers/kubeovn/v1/ovndnatrule.go @@ -20,8 +20,8 @@ package v1 import ( v1 "github.com/kubeovn/kube-ovn/pkg/apis/kubeovn/v1" - "k8s.io/apimachinery/pkg/api/errors" "k8s.io/apimachinery/pkg/labels" + "k8s.io/client-go/listers" "k8s.io/client-go/tools/cache" ) @@ -39,30 +39,10 @@ type OvnDnatRuleLister interface { // ovnDnatRuleLister implements the OvnDnatRuleLister interface. type ovnDnatRuleLister struct { - indexer cache.Indexer + listers.ResourceIndexer[*v1.OvnDnatRule] } // NewOvnDnatRuleLister returns a new OvnDnatRuleLister. func NewOvnDnatRuleLister(indexer cache.Indexer) OvnDnatRuleLister { - return &ovnDnatRuleLister{indexer: indexer} -} - -// List lists all OvnDnatRules in the indexer. -func (s *ovnDnatRuleLister) List(selector labels.Selector) (ret []*v1.OvnDnatRule, err error) { - err = cache.ListAll(s.indexer, selector, func(m interface{}) { - ret = append(ret, m.(*v1.OvnDnatRule)) - }) - return ret, err -} - -// Get retrieves the OvnDnatRule from the index for a given name. -func (s *ovnDnatRuleLister) Get(name string) (*v1.OvnDnatRule, error) { - obj, exists, err := s.indexer.GetByKey(name) - if err != nil { - return nil, err - } - if !exists { - return nil, errors.NewNotFound(v1.Resource("ovndnatrule"), name) - } - return obj.(*v1.OvnDnatRule), nil + return &ovnDnatRuleLister{listers.New[*v1.OvnDnatRule](indexer, v1.Resource("ovndnatrule"))} } diff --git a/pkg/client/listers/kubeovn/v1/ovneip.go b/pkg/client/listers/kubeovn/v1/ovneip.go index 534fe338ca0..1f5ac201242 100644 --- a/pkg/client/listers/kubeovn/v1/ovneip.go +++ b/pkg/client/listers/kubeovn/v1/ovneip.go @@ -20,8 +20,8 @@ package v1 import ( v1 "github.com/kubeovn/kube-ovn/pkg/apis/kubeovn/v1" - "k8s.io/apimachinery/pkg/api/errors" "k8s.io/apimachinery/pkg/labels" + "k8s.io/client-go/listers" "k8s.io/client-go/tools/cache" ) @@ -39,30 +39,10 @@ type OvnEipLister interface { // ovnEipLister implements the OvnEipLister interface. type ovnEipLister struct { - indexer cache.Indexer + listers.ResourceIndexer[*v1.OvnEip] } // NewOvnEipLister returns a new OvnEipLister. func NewOvnEipLister(indexer cache.Indexer) OvnEipLister { - return &ovnEipLister{indexer: indexer} -} - -// List lists all OvnEips in the indexer. -func (s *ovnEipLister) List(selector labels.Selector) (ret []*v1.OvnEip, err error) { - err = cache.ListAll(s.indexer, selector, func(m interface{}) { - ret = append(ret, m.(*v1.OvnEip)) - }) - return ret, err -} - -// Get retrieves the OvnEip from the index for a given name. -func (s *ovnEipLister) Get(name string) (*v1.OvnEip, error) { - obj, exists, err := s.indexer.GetByKey(name) - if err != nil { - return nil, err - } - if !exists { - return nil, errors.NewNotFound(v1.Resource("ovneip"), name) - } - return obj.(*v1.OvnEip), nil + return &ovnEipLister{listers.New[*v1.OvnEip](indexer, v1.Resource("ovneip"))} } diff --git a/pkg/client/listers/kubeovn/v1/ovnfip.go b/pkg/client/listers/kubeovn/v1/ovnfip.go index 24173bac404..a7276b125ee 100644 --- a/pkg/client/listers/kubeovn/v1/ovnfip.go +++ b/pkg/client/listers/kubeovn/v1/ovnfip.go @@ -20,8 +20,8 @@ package v1 import ( v1 "github.com/kubeovn/kube-ovn/pkg/apis/kubeovn/v1" - "k8s.io/apimachinery/pkg/api/errors" "k8s.io/apimachinery/pkg/labels" + "k8s.io/client-go/listers" "k8s.io/client-go/tools/cache" ) @@ -39,30 +39,10 @@ type OvnFipLister interface { // ovnFipLister implements the OvnFipLister interface. type ovnFipLister struct { - indexer cache.Indexer + listers.ResourceIndexer[*v1.OvnFip] } // NewOvnFipLister returns a new OvnFipLister. func NewOvnFipLister(indexer cache.Indexer) OvnFipLister { - return &ovnFipLister{indexer: indexer} -} - -// List lists all OvnFips in the indexer. -func (s *ovnFipLister) List(selector labels.Selector) (ret []*v1.OvnFip, err error) { - err = cache.ListAll(s.indexer, selector, func(m interface{}) { - ret = append(ret, m.(*v1.OvnFip)) - }) - return ret, err -} - -// Get retrieves the OvnFip from the index for a given name. -func (s *ovnFipLister) Get(name string) (*v1.OvnFip, error) { - obj, exists, err := s.indexer.GetByKey(name) - if err != nil { - return nil, err - } - if !exists { - return nil, errors.NewNotFound(v1.Resource("ovnfip"), name) - } - return obj.(*v1.OvnFip), nil + return &ovnFipLister{listers.New[*v1.OvnFip](indexer, v1.Resource("ovnfip"))} } diff --git a/pkg/client/listers/kubeovn/v1/ovnsnatrule.go b/pkg/client/listers/kubeovn/v1/ovnsnatrule.go index 1610f4e0688..5944b06bd6f 100644 --- a/pkg/client/listers/kubeovn/v1/ovnsnatrule.go +++ b/pkg/client/listers/kubeovn/v1/ovnsnatrule.go @@ -20,8 +20,8 @@ package v1 import ( v1 "github.com/kubeovn/kube-ovn/pkg/apis/kubeovn/v1" - "k8s.io/apimachinery/pkg/api/errors" "k8s.io/apimachinery/pkg/labels" + "k8s.io/client-go/listers" "k8s.io/client-go/tools/cache" ) @@ -39,30 +39,10 @@ type OvnSnatRuleLister interface { // ovnSnatRuleLister implements the OvnSnatRuleLister interface. type ovnSnatRuleLister struct { - indexer cache.Indexer + listers.ResourceIndexer[*v1.OvnSnatRule] } // NewOvnSnatRuleLister returns a new OvnSnatRuleLister. func NewOvnSnatRuleLister(indexer cache.Indexer) OvnSnatRuleLister { - return &ovnSnatRuleLister{indexer: indexer} -} - -// List lists all OvnSnatRules in the indexer. -func (s *ovnSnatRuleLister) List(selector labels.Selector) (ret []*v1.OvnSnatRule, err error) { - err = cache.ListAll(s.indexer, selector, func(m interface{}) { - ret = append(ret, m.(*v1.OvnSnatRule)) - }) - return ret, err -} - -// Get retrieves the OvnSnatRule from the index for a given name. -func (s *ovnSnatRuleLister) Get(name string) (*v1.OvnSnatRule, error) { - obj, exists, err := s.indexer.GetByKey(name) - if err != nil { - return nil, err - } - if !exists { - return nil, errors.NewNotFound(v1.Resource("ovnsnatrule"), name) - } - return obj.(*v1.OvnSnatRule), nil + return &ovnSnatRuleLister{listers.New[*v1.OvnSnatRule](indexer, v1.Resource("ovnsnatrule"))} } diff --git a/pkg/client/listers/kubeovn/v1/providernetwork.go b/pkg/client/listers/kubeovn/v1/providernetwork.go index 6cd37240293..4345af44697 100644 --- a/pkg/client/listers/kubeovn/v1/providernetwork.go +++ b/pkg/client/listers/kubeovn/v1/providernetwork.go @@ -20,8 +20,8 @@ package v1 import ( v1 "github.com/kubeovn/kube-ovn/pkg/apis/kubeovn/v1" - "k8s.io/apimachinery/pkg/api/errors" "k8s.io/apimachinery/pkg/labels" + "k8s.io/client-go/listers" "k8s.io/client-go/tools/cache" ) @@ -39,30 +39,10 @@ type ProviderNetworkLister interface { // providerNetworkLister implements the ProviderNetworkLister interface. type providerNetworkLister struct { - indexer cache.Indexer + listers.ResourceIndexer[*v1.ProviderNetwork] } // NewProviderNetworkLister returns a new ProviderNetworkLister. func NewProviderNetworkLister(indexer cache.Indexer) ProviderNetworkLister { - return &providerNetworkLister{indexer: indexer} -} - -// List lists all ProviderNetworks in the indexer. -func (s *providerNetworkLister) List(selector labels.Selector) (ret []*v1.ProviderNetwork, err error) { - err = cache.ListAll(s.indexer, selector, func(m interface{}) { - ret = append(ret, m.(*v1.ProviderNetwork)) - }) - return ret, err -} - -// Get retrieves the ProviderNetwork from the index for a given name. -func (s *providerNetworkLister) Get(name string) (*v1.ProviderNetwork, error) { - obj, exists, err := s.indexer.GetByKey(name) - if err != nil { - return nil, err - } - if !exists { - return nil, errors.NewNotFound(v1.Resource("providernetwork"), name) - } - return obj.(*v1.ProviderNetwork), nil + return &providerNetworkLister{listers.New[*v1.ProviderNetwork](indexer, v1.Resource("providernetwork"))} } diff --git a/pkg/client/listers/kubeovn/v1/qospolicy.go b/pkg/client/listers/kubeovn/v1/qospolicy.go index dd9acf2250d..2994089bb47 100644 --- a/pkg/client/listers/kubeovn/v1/qospolicy.go +++ b/pkg/client/listers/kubeovn/v1/qospolicy.go @@ -20,8 +20,8 @@ package v1 import ( v1 "github.com/kubeovn/kube-ovn/pkg/apis/kubeovn/v1" - "k8s.io/apimachinery/pkg/api/errors" "k8s.io/apimachinery/pkg/labels" + "k8s.io/client-go/listers" "k8s.io/client-go/tools/cache" ) @@ -39,30 +39,10 @@ type QoSPolicyLister interface { // qoSPolicyLister implements the QoSPolicyLister interface. type qoSPolicyLister struct { - indexer cache.Indexer + listers.ResourceIndexer[*v1.QoSPolicy] } // NewQoSPolicyLister returns a new QoSPolicyLister. func NewQoSPolicyLister(indexer cache.Indexer) QoSPolicyLister { - return &qoSPolicyLister{indexer: indexer} -} - -// List lists all QoSPolicies in the indexer. -func (s *qoSPolicyLister) List(selector labels.Selector) (ret []*v1.QoSPolicy, err error) { - err = cache.ListAll(s.indexer, selector, func(m interface{}) { - ret = append(ret, m.(*v1.QoSPolicy)) - }) - return ret, err -} - -// Get retrieves the QoSPolicy from the index for a given name. -func (s *qoSPolicyLister) Get(name string) (*v1.QoSPolicy, error) { - obj, exists, err := s.indexer.GetByKey(name) - if err != nil { - return nil, err - } - if !exists { - return nil, errors.NewNotFound(v1.Resource("qospolicy"), name) - } - return obj.(*v1.QoSPolicy), nil + return &qoSPolicyLister{listers.New[*v1.QoSPolicy](indexer, v1.Resource("qospolicy"))} } diff --git a/pkg/client/listers/kubeovn/v1/securitygroup.go b/pkg/client/listers/kubeovn/v1/securitygroup.go index c36052ce4df..06c7a36688b 100644 --- a/pkg/client/listers/kubeovn/v1/securitygroup.go +++ b/pkg/client/listers/kubeovn/v1/securitygroup.go @@ -20,8 +20,8 @@ package v1 import ( v1 "github.com/kubeovn/kube-ovn/pkg/apis/kubeovn/v1" - "k8s.io/apimachinery/pkg/api/errors" "k8s.io/apimachinery/pkg/labels" + "k8s.io/client-go/listers" "k8s.io/client-go/tools/cache" ) @@ -39,30 +39,10 @@ type SecurityGroupLister interface { // securityGroupLister implements the SecurityGroupLister interface. type securityGroupLister struct { - indexer cache.Indexer + listers.ResourceIndexer[*v1.SecurityGroup] } // NewSecurityGroupLister returns a new SecurityGroupLister. func NewSecurityGroupLister(indexer cache.Indexer) SecurityGroupLister { - return &securityGroupLister{indexer: indexer} -} - -// List lists all SecurityGroups in the indexer. -func (s *securityGroupLister) List(selector labels.Selector) (ret []*v1.SecurityGroup, err error) { - err = cache.ListAll(s.indexer, selector, func(m interface{}) { - ret = append(ret, m.(*v1.SecurityGroup)) - }) - return ret, err -} - -// Get retrieves the SecurityGroup from the index for a given name. -func (s *securityGroupLister) Get(name string) (*v1.SecurityGroup, error) { - obj, exists, err := s.indexer.GetByKey(name) - if err != nil { - return nil, err - } - if !exists { - return nil, errors.NewNotFound(v1.Resource("securitygroup"), name) - } - return obj.(*v1.SecurityGroup), nil + return &securityGroupLister{listers.New[*v1.SecurityGroup](indexer, v1.Resource("securitygroup"))} } diff --git a/pkg/client/listers/kubeovn/v1/subnet.go b/pkg/client/listers/kubeovn/v1/subnet.go index 43235d8bacc..25f92314f8c 100644 --- a/pkg/client/listers/kubeovn/v1/subnet.go +++ b/pkg/client/listers/kubeovn/v1/subnet.go @@ -20,8 +20,8 @@ package v1 import ( v1 "github.com/kubeovn/kube-ovn/pkg/apis/kubeovn/v1" - "k8s.io/apimachinery/pkg/api/errors" "k8s.io/apimachinery/pkg/labels" + "k8s.io/client-go/listers" "k8s.io/client-go/tools/cache" ) @@ -39,30 +39,10 @@ type SubnetLister interface { // subnetLister implements the SubnetLister interface. type subnetLister struct { - indexer cache.Indexer + listers.ResourceIndexer[*v1.Subnet] } // NewSubnetLister returns a new SubnetLister. func NewSubnetLister(indexer cache.Indexer) SubnetLister { - return &subnetLister{indexer: indexer} -} - -// List lists all Subnets in the indexer. -func (s *subnetLister) List(selector labels.Selector) (ret []*v1.Subnet, err error) { - err = cache.ListAll(s.indexer, selector, func(m interface{}) { - ret = append(ret, m.(*v1.Subnet)) - }) - return ret, err -} - -// Get retrieves the Subnet from the index for a given name. -func (s *subnetLister) Get(name string) (*v1.Subnet, error) { - obj, exists, err := s.indexer.GetByKey(name) - if err != nil { - return nil, err - } - if !exists { - return nil, errors.NewNotFound(v1.Resource("subnet"), name) - } - return obj.(*v1.Subnet), nil + return &subnetLister{listers.New[*v1.Subnet](indexer, v1.Resource("subnet"))} } diff --git a/pkg/client/listers/kubeovn/v1/switchlbrule.go b/pkg/client/listers/kubeovn/v1/switchlbrule.go index fd2872db147..37d97f1b841 100644 --- a/pkg/client/listers/kubeovn/v1/switchlbrule.go +++ b/pkg/client/listers/kubeovn/v1/switchlbrule.go @@ -20,8 +20,8 @@ package v1 import ( v1 "github.com/kubeovn/kube-ovn/pkg/apis/kubeovn/v1" - "k8s.io/apimachinery/pkg/api/errors" "k8s.io/apimachinery/pkg/labels" + "k8s.io/client-go/listers" "k8s.io/client-go/tools/cache" ) @@ -39,30 +39,10 @@ type SwitchLBRuleLister interface { // switchLBRuleLister implements the SwitchLBRuleLister interface. type switchLBRuleLister struct { - indexer cache.Indexer + listers.ResourceIndexer[*v1.SwitchLBRule] } // NewSwitchLBRuleLister returns a new SwitchLBRuleLister. func NewSwitchLBRuleLister(indexer cache.Indexer) SwitchLBRuleLister { - return &switchLBRuleLister{indexer: indexer} -} - -// List lists all SwitchLBRules in the indexer. -func (s *switchLBRuleLister) List(selector labels.Selector) (ret []*v1.SwitchLBRule, err error) { - err = cache.ListAll(s.indexer, selector, func(m interface{}) { - ret = append(ret, m.(*v1.SwitchLBRule)) - }) - return ret, err -} - -// Get retrieves the SwitchLBRule from the index for a given name. -func (s *switchLBRuleLister) Get(name string) (*v1.SwitchLBRule, error) { - obj, exists, err := s.indexer.GetByKey(name) - if err != nil { - return nil, err - } - if !exists { - return nil, errors.NewNotFound(v1.Resource("switchlbrule"), name) - } - return obj.(*v1.SwitchLBRule), nil + return &switchLBRuleLister{listers.New[*v1.SwitchLBRule](indexer, v1.Resource("switchlbrule"))} } diff --git a/pkg/client/listers/kubeovn/v1/vip.go b/pkg/client/listers/kubeovn/v1/vip.go index 95c52124b44..87736f3c7f1 100644 --- a/pkg/client/listers/kubeovn/v1/vip.go +++ b/pkg/client/listers/kubeovn/v1/vip.go @@ -20,8 +20,8 @@ package v1 import ( v1 "github.com/kubeovn/kube-ovn/pkg/apis/kubeovn/v1" - "k8s.io/apimachinery/pkg/api/errors" "k8s.io/apimachinery/pkg/labels" + "k8s.io/client-go/listers" "k8s.io/client-go/tools/cache" ) @@ -39,30 +39,10 @@ type VipLister interface { // vipLister implements the VipLister interface. type vipLister struct { - indexer cache.Indexer + listers.ResourceIndexer[*v1.Vip] } // NewVipLister returns a new VipLister. func NewVipLister(indexer cache.Indexer) VipLister { - return &vipLister{indexer: indexer} -} - -// List lists all Vips in the indexer. -func (s *vipLister) List(selector labels.Selector) (ret []*v1.Vip, err error) { - err = cache.ListAll(s.indexer, selector, func(m interface{}) { - ret = append(ret, m.(*v1.Vip)) - }) - return ret, err -} - -// Get retrieves the Vip from the index for a given name. -func (s *vipLister) Get(name string) (*v1.Vip, error) { - obj, exists, err := s.indexer.GetByKey(name) - if err != nil { - return nil, err - } - if !exists { - return nil, errors.NewNotFound(v1.Resource("vip"), name) - } - return obj.(*v1.Vip), nil + return &vipLister{listers.New[*v1.Vip](indexer, v1.Resource("vip"))} } diff --git a/pkg/client/listers/kubeovn/v1/vlan.go b/pkg/client/listers/kubeovn/v1/vlan.go index 471c798e1d7..d0d5bfa595d 100644 --- a/pkg/client/listers/kubeovn/v1/vlan.go +++ b/pkg/client/listers/kubeovn/v1/vlan.go @@ -20,8 +20,8 @@ package v1 import ( v1 "github.com/kubeovn/kube-ovn/pkg/apis/kubeovn/v1" - "k8s.io/apimachinery/pkg/api/errors" "k8s.io/apimachinery/pkg/labels" + "k8s.io/client-go/listers" "k8s.io/client-go/tools/cache" ) @@ -39,30 +39,10 @@ type VlanLister interface { // vlanLister implements the VlanLister interface. type vlanLister struct { - indexer cache.Indexer + listers.ResourceIndexer[*v1.Vlan] } // NewVlanLister returns a new VlanLister. func NewVlanLister(indexer cache.Indexer) VlanLister { - return &vlanLister{indexer: indexer} -} - -// List lists all Vlans in the indexer. -func (s *vlanLister) List(selector labels.Selector) (ret []*v1.Vlan, err error) { - err = cache.ListAll(s.indexer, selector, func(m interface{}) { - ret = append(ret, m.(*v1.Vlan)) - }) - return ret, err -} - -// Get retrieves the Vlan from the index for a given name. -func (s *vlanLister) Get(name string) (*v1.Vlan, error) { - obj, exists, err := s.indexer.GetByKey(name) - if err != nil { - return nil, err - } - if !exists { - return nil, errors.NewNotFound(v1.Resource("vlan"), name) - } - return obj.(*v1.Vlan), nil + return &vlanLister{listers.New[*v1.Vlan](indexer, v1.Resource("vlan"))} } diff --git a/pkg/client/listers/kubeovn/v1/vpc.go b/pkg/client/listers/kubeovn/v1/vpc.go index 5dcf66ea76e..fcaac837cb4 100644 --- a/pkg/client/listers/kubeovn/v1/vpc.go +++ b/pkg/client/listers/kubeovn/v1/vpc.go @@ -20,8 +20,8 @@ package v1 import ( v1 "github.com/kubeovn/kube-ovn/pkg/apis/kubeovn/v1" - "k8s.io/apimachinery/pkg/api/errors" "k8s.io/apimachinery/pkg/labels" + "k8s.io/client-go/listers" "k8s.io/client-go/tools/cache" ) @@ -39,30 +39,10 @@ type VpcLister interface { // vpcLister implements the VpcLister interface. type vpcLister struct { - indexer cache.Indexer + listers.ResourceIndexer[*v1.Vpc] } // NewVpcLister returns a new VpcLister. func NewVpcLister(indexer cache.Indexer) VpcLister { - return &vpcLister{indexer: indexer} -} - -// List lists all Vpcs in the indexer. -func (s *vpcLister) List(selector labels.Selector) (ret []*v1.Vpc, err error) { - err = cache.ListAll(s.indexer, selector, func(m interface{}) { - ret = append(ret, m.(*v1.Vpc)) - }) - return ret, err -} - -// Get retrieves the Vpc from the index for a given name. -func (s *vpcLister) Get(name string) (*v1.Vpc, error) { - obj, exists, err := s.indexer.GetByKey(name) - if err != nil { - return nil, err - } - if !exists { - return nil, errors.NewNotFound(v1.Resource("vpc"), name) - } - return obj.(*v1.Vpc), nil + return &vpcLister{listers.New[*v1.Vpc](indexer, v1.Resource("vpc"))} } diff --git a/pkg/client/listers/kubeovn/v1/vpcdns.go b/pkg/client/listers/kubeovn/v1/vpcdns.go index 5eaf1929c5f..d3649c528b1 100644 --- a/pkg/client/listers/kubeovn/v1/vpcdns.go +++ b/pkg/client/listers/kubeovn/v1/vpcdns.go @@ -20,8 +20,8 @@ package v1 import ( v1 "github.com/kubeovn/kube-ovn/pkg/apis/kubeovn/v1" - "k8s.io/apimachinery/pkg/api/errors" "k8s.io/apimachinery/pkg/labels" + "k8s.io/client-go/listers" "k8s.io/client-go/tools/cache" ) @@ -39,30 +39,10 @@ type VpcDnsLister interface { // vpcDnsLister implements the VpcDnsLister interface. type vpcDnsLister struct { - indexer cache.Indexer + listers.ResourceIndexer[*v1.VpcDns] } // NewVpcDnsLister returns a new VpcDnsLister. func NewVpcDnsLister(indexer cache.Indexer) VpcDnsLister { - return &vpcDnsLister{indexer: indexer} -} - -// List lists all VpcDnses in the indexer. -func (s *vpcDnsLister) List(selector labels.Selector) (ret []*v1.VpcDns, err error) { - err = cache.ListAll(s.indexer, selector, func(m interface{}) { - ret = append(ret, m.(*v1.VpcDns)) - }) - return ret, err -} - -// Get retrieves the VpcDns from the index for a given name. -func (s *vpcDnsLister) Get(name string) (*v1.VpcDns, error) { - obj, exists, err := s.indexer.GetByKey(name) - if err != nil { - return nil, err - } - if !exists { - return nil, errors.NewNotFound(v1.Resource("vpcdns"), name) - } - return obj.(*v1.VpcDns), nil + return &vpcDnsLister{listers.New[*v1.VpcDns](indexer, v1.Resource("vpcdns"))} } diff --git a/pkg/client/listers/kubeovn/v1/vpcnatgateway.go b/pkg/client/listers/kubeovn/v1/vpcnatgateway.go index d4e578d34df..845fe60ec35 100644 --- a/pkg/client/listers/kubeovn/v1/vpcnatgateway.go +++ b/pkg/client/listers/kubeovn/v1/vpcnatgateway.go @@ -20,8 +20,8 @@ package v1 import ( v1 "github.com/kubeovn/kube-ovn/pkg/apis/kubeovn/v1" - "k8s.io/apimachinery/pkg/api/errors" "k8s.io/apimachinery/pkg/labels" + "k8s.io/client-go/listers" "k8s.io/client-go/tools/cache" ) @@ -39,30 +39,10 @@ type VpcNatGatewayLister interface { // vpcNatGatewayLister implements the VpcNatGatewayLister interface. type vpcNatGatewayLister struct { - indexer cache.Indexer + listers.ResourceIndexer[*v1.VpcNatGateway] } // NewVpcNatGatewayLister returns a new VpcNatGatewayLister. func NewVpcNatGatewayLister(indexer cache.Indexer) VpcNatGatewayLister { - return &vpcNatGatewayLister{indexer: indexer} -} - -// List lists all VpcNatGateways in the indexer. -func (s *vpcNatGatewayLister) List(selector labels.Selector) (ret []*v1.VpcNatGateway, err error) { - err = cache.ListAll(s.indexer, selector, func(m interface{}) { - ret = append(ret, m.(*v1.VpcNatGateway)) - }) - return ret, err -} - -// Get retrieves the VpcNatGateway from the index for a given name. -func (s *vpcNatGatewayLister) Get(name string) (*v1.VpcNatGateway, error) { - obj, exists, err := s.indexer.GetByKey(name) - if err != nil { - return nil, err - } - if !exists { - return nil, errors.NewNotFound(v1.Resource("vpcnatgateway"), name) - } - return obj.(*v1.VpcNatGateway), nil + return &vpcNatGatewayLister{listers.New[*v1.VpcNatGateway](indexer, v1.Resource("vpcnatgateway"))} } diff --git a/test/e2e/kube-ovn/ipam/ipam.go b/test/e2e/kube-ovn/ipam/ipam.go index 4c8ae27d23c..0df397b4d53 100644 --- a/test/e2e/kube-ovn/ipam/ipam.go +++ b/test/e2e/kube-ovn/ipam/ipam.go @@ -159,7 +159,7 @@ var _ = framework.Describe("[group:ipam]", func() { framework.ExpectNoError(err) ginkgo.By("Waiting for new pods to be ready") - err = e2epod.WaitForPodsRunningReady(context.Background(), cs, namespaceName, *deploy.Spec.Replicas, 0, time.Minute) + err = e2epod.WaitForPodsRunningReady(context.Background(), cs, namespaceName, int(*deploy.Spec.Replicas), time.Minute) framework.ExpectNoError(err, "timed out waiting for pods to be ready") ginkgo.By("Getting pods for deployment " + deployName + " after deletion") diff --git a/yamls/kind.yaml.j2 b/yamls/kind.yaml.j2 index 3f53d10c922..323ba65a617 100644 --- a/yamls/kind.yaml.j2 +++ b/yamls/kind.yaml.j2 @@ -1,5 +1,5 @@ {%- if k8s_version is not defined -%} - {%- set k8s_version = "v1.29.2" -%} + {%- set k8s_version = "v1.31.0" -%} {%- endif -%} {%- if kube_proxy_mode is not defined -%} {%- set kube_proxy_mode = "ipvs" -%} From cf21d7e0f1881bb109b839c9d5073b5c5eca7cce Mon Sep 17 00:00:00 2001 From: zhangzujian Date: Thu, 15 Aug 2024 05:51:49 +0000 Subject: [PATCH 2/3] remove unused variables Signed-off-by: zhangzujian --- pkg/controller/controller.go | 5 ----- 1 file changed, 5 deletions(-) diff --git a/pkg/controller/controller.go b/pkg/controller/controller.go index f7e21bcf5b2..6741f1c9400 100644 --- a/pkg/controller/controller.go +++ b/pkg/controller/controller.go @@ -54,10 +54,7 @@ const ( // Controller is kube-ovn main controller that watch ns/pod/node/svc/ep and operate ovn type Controller struct { config *Configuration - vpcs *sync.Map - // subnetVpcMap *sync.Map - podSubnetMap *sync.Map ipam *ovnipam.IPAM namedPort *NamedPort anpPrioNameMap map[int32]string @@ -333,8 +330,6 @@ func Run(ctx context.Context, config *Configuration) { } controller := &Controller{ config: config, - vpcs: &sync.Map{}, - podSubnetMap: &sync.Map{}, deletingPodObjMap: &sync.Map{}, deletingNodeObjMap: &sync.Map{}, ipam: ovnipam.NewIPAM(), From a2877b43079d126a5a389989b45c5149d257b109 Mon Sep 17 00:00:00 2001 From: zhangzujian Date: Thu, 15 Aug 2024 06:22:05 +0000 Subject: [PATCH 3/3] workquque: use typed interface Signed-off-by: zhangzujian --- go.mod | 1 + go.sum | 2 + pkg/controller/admin_network_policy.go | 131 +--- .../baseline_admin_network_policy.go | 125 +--- pkg/controller/controller.go | 606 ++++++++++-------- pkg/controller/controller_test.go | 4 +- pkg/controller/endpoint.go | 40 -- pkg/controller/ip.go | 102 --- pkg/controller/ippool.go | 110 +--- pkg/controller/namespace.go | 37 -- pkg/controller/network_policy.go | 70 -- pkg/controller/node.go | 120 +--- pkg/controller/ovn_dnat.go | 102 --- pkg/controller/ovn_eip.go | 132 ---- pkg/controller/ovn_fip.go | 100 --- pkg/controller/ovn_snat.go | 102 --- pkg/controller/pod.go | 131 +--- pkg/controller/qos_policy.go | 102 --- pkg/controller/security_group.go | 104 --- pkg/controller/service.go | 104 --- pkg/controller/signer.go | 37 -- pkg/controller/subnet.go | 147 +---- pkg/controller/switch_lb_rule.go | 70 +- pkg/controller/vip.go | 134 ---- pkg/controller/vlan.go | 113 ---- pkg/controller/vpc.go | 117 +--- pkg/controller/vpc_dns.go | 18 +- pkg/controller/vpc_nat_gateway.go | 70 -- pkg/controller/vpc_nat_gw_eip.go | 134 ---- pkg/controller/vpc_nat_gw_nat.go | 306 --------- pkg/daemon/controller.go | 112 ++-- pkg/daemon/nm_linux.go | 11 +- 32 files changed, 446 insertions(+), 3048 deletions(-) diff --git a/go.mod b/go.mod index 4d4e99b5a23..230c1691b60 100644 --- a/go.mod +++ b/go.mod @@ -31,6 +31,7 @@ require ( github.com/parnurzeal/gorequest v0.3.0 github.com/prometheus-community/pro-bing v0.4.1 github.com/prometheus/client_golang v1.20.0 + github.com/puzpuzpuz/xsync/v3 v3.4.0 github.com/scylladb/go-set v1.0.2 github.com/sirupsen/logrus v1.9.3 github.com/spf13/pflag v1.0.5 diff --git a/go.sum b/go.sum index 36fbab93ea2..bd348f2ff27 100644 --- a/go.sum +++ b/go.sum @@ -514,6 +514,8 @@ github.com/prometheus/common v0.55.0 h1:KEi6DK7lXW/m7Ig5i47x0vRzuBsHuvJdi5ee6Y3G github.com/prometheus/common v0.55.0/go.mod h1:2SECS4xJG1kd8XF9IcM1gMX6510RAEL65zxzNImwdc8= 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/puzpuzpuz/xsync/v3 v3.4.0 h1:DuVBAdXuGFHv8adVXjWWZ63pJq+NRXOWVXlKDBZ+mJ4= +github.com/puzpuzpuz/xsync/v3 v3.4.0/go.mod h1:VjzYrABPabuM4KyBh1Ftq6u8nhwY5tBPKP9jpmh0nnA= github.com/rogpeppe/go-charset v0.0.0-20180617210344-2471d30d28b4/go.mod h1:qgYeAmZ5ZIpBWTGllZSQnw97Dj+woV0toclVaRGI8pc= github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= github.com/rogpeppe/go-internal v1.11.0/go.mod h1:ddIwULY96R17DhadqLgMfk9H9tvdUzkipdSkR5nkCZA= diff --git a/pkg/controller/admin_network_policy.go b/pkg/controller/admin_network_policy.go index 77f9821c680..1447a0ec10c 100644 --- a/pkg/controller/admin_network_policy.go +++ b/pkg/controller/admin_network_policy.go @@ -5,7 +5,6 @@ import ( "fmt" "reflect" "strings" - "time" "unicode" "github.com/scylladb/go-set/strset" @@ -38,7 +37,7 @@ type ChangedName struct { curRuleName string } -type ChangedDelta struct { +type AdminNetworkPolicyChangedDelta struct { key string ruleNames [util.AnpMaxRules]ChangedName field ChangedField @@ -56,14 +55,9 @@ func (c *Controller) enqueueAddAnp(obj interface{}) { } func (c *Controller) enqueueDeleteAnp(obj interface{}) { - var key string - var err error - if key, err = cache.MetaNamespaceKeyFunc(obj); err != nil { - utilruntime.HandleError(err) - return - } - klog.V(3).Infof("enqueue delete anp %s", key) - c.deleteAnpQueue.Add(obj) + anp := obj.(*v1alpha1.AdminNetworkPolicy) + klog.V(3).Infof("enqueue delete anp %s", anp.Name) + c.deleteAnpQueue.Add(anp) } func (c *Controller) enqueueUpdateAnp(oldObj, newObj interface{}) { @@ -104,7 +98,7 @@ func (c *Controller) enqueueUpdateAnp(oldObj, newObj interface{}) { // The remaining changes do not affect the acls. The port-group or address-set should be updated. // The port-group for anp should be updated if !reflect.DeepEqual(oldAnpObj.Spec.Subject, newAnpObj.Spec.Subject) { - c.updateAnpQueue.Add(ChangedDelta{key: newAnpObj.Name, field: ChangedSubject}) + c.updateAnpQueue.Add(&AdminNetworkPolicyChangedDelta{key: newAnpObj.Name, field: ChangedSubject}) } // Rule name or peer selector in ingress/egress rule has changed, the corresponding address-set need be updated @@ -122,7 +116,7 @@ func (c *Controller) enqueueUpdateAnp(oldObj, newObj interface{}) { } } if ruleChanged { - c.updateAnpQueue.Add(ChangedDelta{key: newAnpObj.Name, ruleNames: changedIngressRuleNames, field: ChangedIngressRule}) + c.updateAnpQueue.Add(&AdminNetworkPolicyChangedDelta{key: newAnpObj.Name, ruleNames: changedIngressRuleNames, field: ChangedIngressRule}) } ruleChanged = false @@ -138,113 +132,8 @@ func (c *Controller) enqueueUpdateAnp(oldObj, newObj interface{}) { } } if ruleChanged { - c.updateAnpQueue.Add(ChangedDelta{key: newAnpObj.Name, ruleNames: changedEgressRuleNames, field: ChangedEgressRule}) - } -} - -func (c *Controller) runAddAnpWorker() { - for c.processNextAddAnpWorkItem() { - } -} - -func (c *Controller) runUpdateAnpWorker() { - for c.processNextUpdateAnpWorkItem() { - } -} - -func (c *Controller) runDeleteAnpWorker() { - for c.processNextDeleteAnpWorkItem() { - } -} - -func (c *Controller) processNextAddAnpWorkItem() bool { - obj, shutdown := c.addAnpQueue.Get() - if shutdown { - return false - } - now := time.Now() - - err := func(obj interface{}) error { - defer c.addAnpQueue.Done(obj) - var key string - var ok bool - if key, ok = obj.(string); !ok { - c.addAnpQueue.Forget(obj) - utilruntime.HandleError(fmt.Errorf("expected string in workqueue but got %#v", obj)) - return nil - } - if err := c.handleAddAnp(key); err != nil { - c.addAnpQueue.AddRateLimited(key) - return fmt.Errorf("error syncing '%s': %s, requeuing", key, err.Error()) - } - last := time.Since(now) - klog.Infof("take %d ms to handle add anp %s", last.Milliseconds(), key) - c.addAnpQueue.Forget(obj) - return nil - }(obj) - if err != nil { - utilruntime.HandleError(err) - return true - } - return true -} - -func (c *Controller) processNextUpdateAnpWorkItem() bool { - obj, shutdown := c.updateAnpQueue.Get() - if shutdown { - return false - } - - err := func(obj interface{}) error { - defer c.updateAnpQueue.Done(obj) - var key ChangedDelta - var ok bool - if key, ok = obj.(ChangedDelta); !ok { - c.updateAnpQueue.Forget(obj) - utilruntime.HandleError(fmt.Errorf("expected ChangedDelta in workqueue but got %#v", obj)) - return nil - } - if err := c.handleUpdateAnp(key); err != nil { - c.updateAnpQueue.AddRateLimited(key) - return fmt.Errorf("error syncing admin network policy %s: %w, requeuing", key.key, err) - } - c.updateAnpQueue.Forget(obj) - return nil - }(obj) - if err != nil { - utilruntime.HandleError(err) - return true - } - return true -} - -func (c *Controller) processNextDeleteAnpWorkItem() bool { - obj, shutdown := c.deleteAnpQueue.Get() - if shutdown { - return false - } - - err := func(obj interface{}) error { - defer c.deleteAnpQueue.Done(obj) - var anp *v1alpha1.AdminNetworkPolicy - var ok bool - if anp, ok = obj.(*v1alpha1.AdminNetworkPolicy); !ok { - c.deleteAnpQueue.Forget(obj) - utilruntime.HandleError(fmt.Errorf("expected anp object in workqueue but got %#v", obj)) - return nil - } - if err := c.handleDeleteAnp(anp); err != nil { - c.deleteAnpQueue.AddRateLimited(obj) - return fmt.Errorf("error syncing anp '%s': %s, requeuing", anp.Name, err.Error()) - } - c.deleteAnpQueue.Forget(obj) - return nil - }(obj) - if err != nil { - utilruntime.HandleError(err) - return true + c.updateAnpQueue.Add(&AdminNetworkPolicyChangedDelta{key: newAnpObj.Name, ruleNames: changedEgressRuleNames, field: ChangedEgressRule}) } - return true } func (c *Controller) handleAddAnp(key string) (err error) { @@ -479,7 +368,7 @@ func (c *Controller) handleDeleteAnp(anp *v1alpha1.AdminNetworkPolicy) error { return nil } -func (c *Controller) handleUpdateAnp(changed ChangedDelta) error { +func (c *Controller) handleUpdateAnp(changed *AdminNetworkPolicyChangedDelta) error { // Only handle updates that do not affect acls. c.anpKeyMutex.LockKey(changed.key) defer func() { _ = c.anpKeyMutex.UnlockKey(changed.key) }() @@ -899,7 +788,7 @@ func (c *Controller) setAddrSetForAnpRule(anpName, pgName, ruleName string, inde func (c *Controller) updateAnpsByLabelsMatch(nsLabels, podLabels map[string]string) { anps, _ := c.anpsLister.List(labels.Everything()) for _, anp := range anps { - changed := ChangedDelta{ + changed := &AdminNetworkPolicyChangedDelta{ key: anp.Name, } @@ -927,7 +816,7 @@ func (c *Controller) updateAnpsByLabelsMatch(nsLabels, podLabels map[string]stri banps, _ := c.banpsLister.List(labels.Everything()) for _, banp := range banps { - changed := ChangedDelta{ + changed := &AdminNetworkPolicyChangedDelta{ key: banp.Name, } diff --git a/pkg/controller/baseline_admin_network_policy.go b/pkg/controller/baseline_admin_network_policy.go index 5953133dfc3..819d7a18872 100644 --- a/pkg/controller/baseline_admin_network_policy.go +++ b/pkg/controller/baseline_admin_network_policy.go @@ -4,7 +4,6 @@ import ( "fmt" "reflect" "strings" - "time" "github.com/scylladb/go-set/strset" k8serrors "k8s.io/apimachinery/pkg/api/errors" @@ -29,14 +28,9 @@ func (c *Controller) enqueueAddBanp(obj interface{}) { } func (c *Controller) enqueueDeleteBanp(obj interface{}) { - var key string - var err error - if key, err = cache.MetaNamespaceKeyFunc(obj); err != nil { - utilruntime.HandleError(err) - return - } - klog.V(3).Infof("enqueue delete banp %s", key) - c.deleteBanpQueue.Add(obj) + banp := obj.(*v1alpha1.BaselineAdminNetworkPolicy) + klog.V(3).Infof("enqueue delete banp %s", banp.Name) + c.deleteBanpQueue.Add(banp) } func (c *Controller) enqueueUpdateBanp(oldObj, newObj interface{}) { @@ -75,7 +69,7 @@ func (c *Controller) enqueueUpdateBanp(oldObj, newObj interface{}) { // The remaining changes do not affect the acls. The port-group or address-set should be updated. // The port-group for anp should be updated if !reflect.DeepEqual(oldBanp.Spec.Subject, newBanp.Spec.Subject) { - c.updateBanpQueue.Add(ChangedDelta{key: newBanp.Name, field: ChangedSubject}) + c.updateBanpQueue.Add(&AdminNetworkPolicyChangedDelta{key: newBanp.Name, field: ChangedSubject}) } // Rule name or peer selector in ingress/egress rule has changed, the corresponding address-set need be updated @@ -94,7 +88,7 @@ func (c *Controller) enqueueUpdateBanp(oldObj, newObj interface{}) { } } if ruleChanged { - c.updateBanpQueue.Add(ChangedDelta{key: newBanp.Name, ruleNames: changedIngressRuleNames, field: ChangedIngressRule}) + c.updateBanpQueue.Add(&AdminNetworkPolicyChangedDelta{key: newBanp.Name, ruleNames: changedIngressRuleNames, field: ChangedIngressRule}) } ruleChanged = false @@ -110,113 +104,8 @@ func (c *Controller) enqueueUpdateBanp(oldObj, newObj interface{}) { } } if ruleChanged { - c.updateBanpQueue.Add(ChangedDelta{key: newBanp.Name, ruleNames: changedEgressRuleNames, field: ChangedEgressRule}) - } -} - -func (c *Controller) runAddBanpWorker() { - for c.processNextAddBanpWorkItem() { - } -} - -func (c *Controller) runUpdateBanpWorker() { - for c.processNextUpdateBanpWorkItem() { - } -} - -func (c *Controller) runDeleteBanpWorker() { - for c.processNextDeleteBanpWorkItem() { - } -} - -func (c *Controller) processNextAddBanpWorkItem() bool { - obj, shutdown := c.addBanpQueue.Get() - if shutdown { - return false - } - now := time.Now() - - err := func(obj interface{}) error { - defer c.addBanpQueue.Done(obj) - var key string - var ok bool - if key, ok = obj.(string); !ok { - c.addBanpQueue.Forget(obj) - utilruntime.HandleError(fmt.Errorf("expected string in workqueue but got %#v", obj)) - return nil - } - if err := c.handleAddBanp(key); err != nil { - c.addBanpQueue.AddRateLimited(key) - return fmt.Errorf("error syncing '%s': %s, requeuing", key, err.Error()) - } - last := time.Since(now) - klog.Infof("take %d ms to handle add banp %s", last.Milliseconds(), key) - c.addBanpQueue.Forget(obj) - return nil - }(obj) - if err != nil { - utilruntime.HandleError(err) - return true - } - return true -} - -func (c *Controller) processNextUpdateBanpWorkItem() bool { - obj, shutdown := c.updateBanpQueue.Get() - if shutdown { - return false - } - - err := func(obj interface{}) error { - defer c.updateBanpQueue.Done(obj) - var key ChangedDelta - var ok bool - if key, ok = obj.(ChangedDelta); !ok { - c.updateBanpQueue.Forget(obj) - utilruntime.HandleError(fmt.Errorf("expected ChangedDelta in workqueue but got %#v", obj)) - return nil - } - if err := c.handleUpdateBanp(key); err != nil { - c.updateBanpQueue.AddRateLimited(key) - return fmt.Errorf("error syncing banp %s: %w, requeuing", key.key, err) - } - c.updateBanpQueue.Forget(obj) - return nil - }(obj) - if err != nil { - utilruntime.HandleError(err) - return true - } - return true -} - -func (c *Controller) processNextDeleteBanpWorkItem() bool { - obj, shutdown := c.deleteBanpQueue.Get() - if shutdown { - return false - } - - err := func(obj interface{}) error { - defer c.deleteBanpQueue.Done(obj) - var banp *v1alpha1.BaselineAdminNetworkPolicy - var ok bool - if banp, ok = obj.(*v1alpha1.BaselineAdminNetworkPolicy); !ok { - c.deleteBanpQueue.Forget(obj) - utilruntime.HandleError(fmt.Errorf("expected banp object in workqueue but got %#v", obj)) - return nil - } - if err := c.handleDeleteBanp(banp); err != nil { - c.deleteBanpQueue.AddRateLimited(obj) - return fmt.Errorf("error syncing banp '%s': %s, requeuing", banp.Name, err.Error()) - } - c.deleteBanpQueue.Forget(obj) - return nil - }(obj) - if err != nil { - utilruntime.HandleError(err) - return true + c.updateBanpQueue.Add(&AdminNetworkPolicyChangedDelta{key: newBanp.Name, ruleNames: changedEgressRuleNames, field: ChangedEgressRule}) } - return true } func (c *Controller) handleAddBanp(key string) (err error) { @@ -436,7 +325,7 @@ func (c *Controller) handleDeleteBanp(banp *v1alpha1.BaselineAdminNetworkPolicy) return nil } -func (c *Controller) handleUpdateBanp(changed ChangedDelta) error { +func (c *Controller) handleUpdateBanp(changed *AdminNetworkPolicyChangedDelta) error { // Only handle updates that do not affect acls. c.banpKeyMutex.LockKey(changed.key) defer func() { _ = c.banpKeyMutex.UnlockKey(changed.key) }() diff --git a/pkg/controller/controller.go b/pkg/controller/controller.go index 6741f1c9400..33e86c44db9 100644 --- a/pkg/controller/controller.go +++ b/pkg/controller/controller.go @@ -5,9 +5,9 @@ import ( "fmt" "runtime" "strings" - "sync" "time" + "github.com/puzpuzpuz/xsync/v3" "golang.org/x/time/rate" corev1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -25,10 +25,11 @@ import ( "k8s.io/client-go/util/workqueue" "k8s.io/klog/v2" "k8s.io/utils/keymutex" - + v1alpha1 "sigs.k8s.io/network-policy-api/apis/v1alpha1" anpinformer "sigs.k8s.io/network-policy-api/pkg/client/informers/externalversions" anplister "sigs.k8s.io/network-policy-api/pkg/client/listers/apis/v1alpha1" + kubeovnv1 "github.com/kubeovn/kube-ovn/pkg/apis/kubeovn/v1" kubeovninformer "github.com/kubeovn/kube-ovn/pkg/client/informers/externalversions" kubeovnlister "github.com/kubeovn/kube-ovn/pkg/client/listers/kubeovn/v1" ovnipam "github.com/kubeovn/kube-ovn/pkg/ipam" @@ -68,194 +69,194 @@ type Controller struct { podsLister v1.PodLister podsSynced cache.InformerSynced - addOrUpdatePodQueue workqueue.RateLimitingInterface - deletePodQueue workqueue.RateLimitingInterface - deletingPodObjMap *sync.Map - deletingNodeObjMap *sync.Map - updatePodSecurityQueue workqueue.RateLimitingInterface + addOrUpdatePodQueue workqueue.TypedRateLimitingInterface[string] + deletePodQueue workqueue.TypedRateLimitingInterface[string] + deletingPodObjMap *xsync.MapOf[string, *corev1.Pod] + deletingNodeObjMap *xsync.MapOf[string, *corev1.Node] + updatePodSecurityQueue workqueue.TypedRateLimitingInterface[string] podKeyMutex keymutex.KeyMutex vpcsLister kubeovnlister.VpcLister vpcSynced cache.InformerSynced - addOrUpdateVpcQueue workqueue.RateLimitingInterface - delVpcQueue workqueue.RateLimitingInterface - updateVpcStatusQueue workqueue.RateLimitingInterface + addOrUpdateVpcQueue workqueue.TypedRateLimitingInterface[string] + delVpcQueue workqueue.TypedRateLimitingInterface[*kubeovnv1.Vpc] + updateVpcStatusQueue workqueue.TypedRateLimitingInterface[string] vpcKeyMutex keymutex.KeyMutex vpcNatGatewayLister kubeovnlister.VpcNatGatewayLister vpcNatGatewaySynced cache.InformerSynced - addOrUpdateVpcNatGatewayQueue workqueue.RateLimitingInterface - delVpcNatGatewayQueue workqueue.RateLimitingInterface - initVpcNatGatewayQueue workqueue.RateLimitingInterface - updateVpcEipQueue workqueue.RateLimitingInterface - updateVpcFloatingIPQueue workqueue.RateLimitingInterface - updateVpcDnatQueue workqueue.RateLimitingInterface - updateVpcSnatQueue workqueue.RateLimitingInterface - updateVpcSubnetQueue workqueue.RateLimitingInterface + addOrUpdateVpcNatGatewayQueue workqueue.TypedRateLimitingInterface[string] + delVpcNatGatewayQueue workqueue.TypedRateLimitingInterface[string] + initVpcNatGatewayQueue workqueue.TypedRateLimitingInterface[string] + updateVpcEipQueue workqueue.TypedRateLimitingInterface[string] + updateVpcFloatingIPQueue workqueue.TypedRateLimitingInterface[string] + updateVpcDnatQueue workqueue.TypedRateLimitingInterface[string] + updateVpcSnatQueue workqueue.TypedRateLimitingInterface[string] + updateVpcSubnetQueue workqueue.TypedRateLimitingInterface[string] vpcNatGwKeyMutex keymutex.KeyMutex switchLBRuleLister kubeovnlister.SwitchLBRuleLister switchLBRuleSynced cache.InformerSynced - addSwitchLBRuleQueue workqueue.RateLimitingInterface - UpdateSwitchLBRuleQueue workqueue.RateLimitingInterface - delSwitchLBRuleQueue workqueue.RateLimitingInterface + addSwitchLBRuleQueue workqueue.TypedRateLimitingInterface[string] + updateSwitchLBRuleQueue workqueue.TypedRateLimitingInterface[*SlrInfo] + delSwitchLBRuleQueue workqueue.TypedRateLimitingInterface[*SlrInfo] vpcDNSLister kubeovnlister.VpcDnsLister vpcDNSSynced cache.InformerSynced - addOrUpdateVpcDNSQueue workqueue.RateLimitingInterface - delVpcDNSQueue workqueue.RateLimitingInterface + addOrUpdateVpcDNSQueue workqueue.TypedRateLimitingInterface[string] + delVpcDNSQueue workqueue.TypedRateLimitingInterface[string] subnetsLister kubeovnlister.SubnetLister subnetSynced cache.InformerSynced - addOrUpdateSubnetQueue workqueue.RateLimitingInterface - deleteSubnetQueue workqueue.RateLimitingInterface - updateSubnetStatusQueue workqueue.RateLimitingInterface - syncVirtualPortsQueue workqueue.RateLimitingInterface + addOrUpdateSubnetQueue workqueue.TypedRateLimitingInterface[string] + deleteSubnetQueue workqueue.TypedRateLimitingInterface[*kubeovnv1.Subnet] + updateSubnetStatusQueue workqueue.TypedRateLimitingInterface[string] + syncVirtualPortsQueue workqueue.TypedRateLimitingInterface[string] subnetKeyMutex keymutex.KeyMutex ippoolLister kubeovnlister.IPPoolLister ippoolSynced cache.InformerSynced - addOrUpdateIPPoolQueue workqueue.RateLimitingInterface - updateIPPoolStatusQueue workqueue.RateLimitingInterface - deleteIPPoolQueue workqueue.RateLimitingInterface + addOrUpdateIPPoolQueue workqueue.TypedRateLimitingInterface[string] + updateIPPoolStatusQueue workqueue.TypedRateLimitingInterface[string] + deleteIPPoolQueue workqueue.TypedRateLimitingInterface[*kubeovnv1.IPPool] ippoolKeyMutex keymutex.KeyMutex ipsLister kubeovnlister.IPLister ipSynced cache.InformerSynced - addIPQueue workqueue.RateLimitingInterface - updateIPQueue workqueue.RateLimitingInterface - delIPQueue workqueue.RateLimitingInterface + addIPQueue workqueue.TypedRateLimitingInterface[string] + updateIPQueue workqueue.TypedRateLimitingInterface[string] + delIPQueue workqueue.TypedRateLimitingInterface[*kubeovnv1.IP] virtualIpsLister kubeovnlister.VipLister virtualIpsSynced cache.InformerSynced - addVirtualIPQueue workqueue.RateLimitingInterface - updateVirtualIPQueue workqueue.RateLimitingInterface - updateVirtualParentsQueue workqueue.RateLimitingInterface - delVirtualIPQueue workqueue.RateLimitingInterface + addVirtualIPQueue workqueue.TypedRateLimitingInterface[string] + updateVirtualIPQueue workqueue.TypedRateLimitingInterface[string] + updateVirtualParentsQueue workqueue.TypedRateLimitingInterface[string] + delVirtualIPQueue workqueue.TypedRateLimitingInterface[*kubeovnv1.Vip] iptablesEipsLister kubeovnlister.IptablesEIPLister iptablesEipSynced cache.InformerSynced - addIptablesEipQueue workqueue.RateLimitingInterface - updateIptablesEipQueue workqueue.RateLimitingInterface - resetIptablesEipQueue workqueue.RateLimitingInterface - delIptablesEipQueue workqueue.RateLimitingInterface + addIptablesEipQueue workqueue.TypedRateLimitingInterface[string] + updateIptablesEipQueue workqueue.TypedRateLimitingInterface[string] + resetIptablesEipQueue workqueue.TypedRateLimitingInterface[string] + delIptablesEipQueue workqueue.TypedRateLimitingInterface[string] iptablesFipsLister kubeovnlister.IptablesFIPRuleLister iptablesFipSynced cache.InformerSynced - addIptablesFipQueue workqueue.RateLimitingInterface - updateIptablesFipQueue workqueue.RateLimitingInterface - delIptablesFipQueue workqueue.RateLimitingInterface + addIptablesFipQueue workqueue.TypedRateLimitingInterface[string] + updateIptablesFipQueue workqueue.TypedRateLimitingInterface[string] + delIptablesFipQueue workqueue.TypedRateLimitingInterface[string] iptablesDnatRulesLister kubeovnlister.IptablesDnatRuleLister iptablesDnatRuleSynced cache.InformerSynced - addIptablesDnatRuleQueue workqueue.RateLimitingInterface - updateIptablesDnatRuleQueue workqueue.RateLimitingInterface - delIptablesDnatRuleQueue workqueue.RateLimitingInterface + addIptablesDnatRuleQueue workqueue.TypedRateLimitingInterface[string] + updateIptablesDnatRuleQueue workqueue.TypedRateLimitingInterface[string] + delIptablesDnatRuleQueue workqueue.TypedRateLimitingInterface[string] iptablesSnatRulesLister kubeovnlister.IptablesSnatRuleLister iptablesSnatRuleSynced cache.InformerSynced - addIptablesSnatRuleQueue workqueue.RateLimitingInterface - updateIptablesSnatRuleQueue workqueue.RateLimitingInterface - delIptablesSnatRuleQueue workqueue.RateLimitingInterface + addIptablesSnatRuleQueue workqueue.TypedRateLimitingInterface[string] + updateIptablesSnatRuleQueue workqueue.TypedRateLimitingInterface[string] + delIptablesSnatRuleQueue workqueue.TypedRateLimitingInterface[string] ovnEipsLister kubeovnlister.OvnEipLister ovnEipSynced cache.InformerSynced - addOvnEipQueue workqueue.RateLimitingInterface - updateOvnEipQueue workqueue.RateLimitingInterface - resetOvnEipQueue workqueue.RateLimitingInterface - delOvnEipQueue workqueue.RateLimitingInterface + addOvnEipQueue workqueue.TypedRateLimitingInterface[string] + updateOvnEipQueue workqueue.TypedRateLimitingInterface[string] + resetOvnEipQueue workqueue.TypedRateLimitingInterface[string] + delOvnEipQueue workqueue.TypedRateLimitingInterface[string] ovnFipsLister kubeovnlister.OvnFipLister ovnFipSynced cache.InformerSynced - addOvnFipQueue workqueue.RateLimitingInterface - updateOvnFipQueue workqueue.RateLimitingInterface - delOvnFipQueue workqueue.RateLimitingInterface + addOvnFipQueue workqueue.TypedRateLimitingInterface[string] + updateOvnFipQueue workqueue.TypedRateLimitingInterface[string] + delOvnFipQueue workqueue.TypedRateLimitingInterface[string] ovnSnatRulesLister kubeovnlister.OvnSnatRuleLister ovnSnatRuleSynced cache.InformerSynced - addOvnSnatRuleQueue workqueue.RateLimitingInterface - updateOvnSnatRuleQueue workqueue.RateLimitingInterface - delOvnSnatRuleQueue workqueue.RateLimitingInterface + addOvnSnatRuleQueue workqueue.TypedRateLimitingInterface[string] + updateOvnSnatRuleQueue workqueue.TypedRateLimitingInterface[string] + delOvnSnatRuleQueue workqueue.TypedRateLimitingInterface[string] ovnDnatRulesLister kubeovnlister.OvnDnatRuleLister ovnDnatRuleSynced cache.InformerSynced - addOvnDnatRuleQueue workqueue.RateLimitingInterface - updateOvnDnatRuleQueue workqueue.RateLimitingInterface - delOvnDnatRuleQueue workqueue.RateLimitingInterface + addOvnDnatRuleQueue workqueue.TypedRateLimitingInterface[string] + updateOvnDnatRuleQueue workqueue.TypedRateLimitingInterface[string] + delOvnDnatRuleQueue workqueue.TypedRateLimitingInterface[string] providerNetworksLister kubeovnlister.ProviderNetworkLister providerNetworkSynced cache.InformerSynced vlansLister kubeovnlister.VlanLister vlanSynced cache.InformerSynced - addVlanQueue workqueue.RateLimitingInterface - delVlanQueue workqueue.RateLimitingInterface - updateVlanQueue workqueue.RateLimitingInterface + addVlanQueue workqueue.TypedRateLimitingInterface[string] + delVlanQueue workqueue.TypedRateLimitingInterface[string] + updateVlanQueue workqueue.TypedRateLimitingInterface[string] vlanKeyMutex keymutex.KeyMutex namespacesLister v1.NamespaceLister namespacesSynced cache.InformerSynced - addNamespaceQueue workqueue.RateLimitingInterface + addNamespaceQueue workqueue.TypedRateLimitingInterface[string] nsKeyMutex keymutex.KeyMutex nodesLister v1.NodeLister nodesSynced cache.InformerSynced - addNodeQueue workqueue.RateLimitingInterface - updateNodeQueue workqueue.RateLimitingInterface - deleteNodeQueue workqueue.RateLimitingInterface + addNodeQueue workqueue.TypedRateLimitingInterface[string] + updateNodeQueue workqueue.TypedRateLimitingInterface[string] + deleteNodeQueue workqueue.TypedRateLimitingInterface[string] nodeKeyMutex keymutex.KeyMutex servicesLister v1.ServiceLister serviceSynced cache.InformerSynced - addServiceQueue workqueue.RateLimitingInterface - deleteServiceQueue workqueue.RateLimitingInterface - updateServiceQueue workqueue.RateLimitingInterface + addServiceQueue workqueue.TypedRateLimitingInterface[string] + deleteServiceQueue workqueue.TypedRateLimitingInterface[*vpcService] + updateServiceQueue workqueue.TypedRateLimitingInterface[string] svcKeyMutex keymutex.KeyMutex endpointsLister v1.EndpointsLister endpointsSynced cache.InformerSynced - addOrUpdateEndpointQueue workqueue.RateLimitingInterface + addOrUpdateEndpointQueue workqueue.TypedRateLimitingInterface[string] epKeyMutex keymutex.KeyMutex npsLister netv1.NetworkPolicyLister npsSynced cache.InformerSynced - updateNpQueue workqueue.RateLimitingInterface - deleteNpQueue workqueue.RateLimitingInterface + updateNpQueue workqueue.TypedRateLimitingInterface[string] + deleteNpQueue workqueue.TypedRateLimitingInterface[string] npKeyMutex keymutex.KeyMutex sgsLister kubeovnlister.SecurityGroupLister sgSynced cache.InformerSynced - addOrUpdateSgQueue workqueue.RateLimitingInterface - delSgQueue workqueue.RateLimitingInterface - syncSgPortsQueue workqueue.RateLimitingInterface + addOrUpdateSgQueue workqueue.TypedRateLimitingInterface[string] + delSgQueue workqueue.TypedRateLimitingInterface[string] + syncSgPortsQueue workqueue.TypedRateLimitingInterface[string] sgKeyMutex keymutex.KeyMutex qosPoliciesLister kubeovnlister.QoSPolicyLister qosPolicySynced cache.InformerSynced - addQoSPolicyQueue workqueue.RateLimitingInterface - updateQoSPolicyQueue workqueue.RateLimitingInterface - delQoSPolicyQueue workqueue.RateLimitingInterface + addQoSPolicyQueue workqueue.TypedRateLimitingInterface[string] + updateQoSPolicyQueue workqueue.TypedRateLimitingInterface[string] + delQoSPolicyQueue workqueue.TypedRateLimitingInterface[string] configMapsLister v1.ConfigMapLister configMapsSynced cache.InformerSynced anpsLister anplister.AdminNetworkPolicyLister anpsSynced cache.InformerSynced - addAnpQueue workqueue.RateLimitingInterface - updateAnpQueue workqueue.RateLimitingInterface - deleteAnpQueue workqueue.RateLimitingInterface + addAnpQueue workqueue.TypedRateLimitingInterface[string] + updateAnpQueue workqueue.TypedRateLimitingInterface[*AdminNetworkPolicyChangedDelta] + deleteAnpQueue workqueue.TypedRateLimitingInterface[*v1alpha1.AdminNetworkPolicy] anpKeyMutex keymutex.KeyMutex banpsLister anplister.BaselineAdminNetworkPolicyLister banpsSynced cache.InformerSynced - addBanpQueue workqueue.RateLimitingInterface - updateBanpQueue workqueue.RateLimitingInterface - deleteBanpQueue workqueue.RateLimitingInterface + addBanpQueue workqueue.TypedRateLimitingInterface[string] + updateBanpQueue workqueue.TypedRateLimitingInterface[*AdminNetworkPolicyChangedDelta] + deleteBanpQueue workqueue.TypedRateLimitingInterface[*v1alpha1.BaselineAdminNetworkPolicy] banpKeyMutex keymutex.KeyMutex csrLister certListerv1.CertificateSigningRequestLister csrSynced cache.InformerSynced - addOrUpdateCsrQueue workqueue.RateLimitingInterface + addOrUpdateCsrQueue workqueue.TypedRateLimitingInterface[string] recorder record.EventRecorder informerFactory kubeinformers.SharedInformerFactory @@ -264,6 +265,13 @@ type Controller struct { anpInformerFactory anpinformer.SharedInformerFactory } +func newTypedRateLimitingQueue[T comparable](name string, rateLimiter workqueue.TypedRateLimiter[T]) workqueue.TypedRateLimitingInterface[T] { + if rateLimiter == nil { + rateLimiter = workqueue.DefaultTypedControllerRateLimiter[T]() + } + return workqueue.NewTypedRateLimitingQueueWithConfig(rateLimiter, workqueue.TypedRateLimitingQueueConfig[T]{Name: name}) +} + // Run creates and runs a new ovn controller func Run(ctx context.Context, config *Configuration) { klog.V(4).Info("Creating event broadcaster") @@ -271,9 +279,9 @@ func Run(ctx context.Context, config *Configuration) { eventBroadcaster.StartLogging(klog.Infof) eventBroadcaster.StartRecordingToSink(&typedcorev1.EventSinkImpl{Interface: config.KubeFactoryClient.CoreV1().Events("")}) recorder := eventBroadcaster.NewRecorder(scheme.Scheme, corev1.EventSource{Component: controllerAgentName}) - custCrdRateLimiter := workqueue.NewMaxOfRateLimiter( - workqueue.NewItemExponentialFailureRateLimiter(time.Duration(config.CustCrdRetryMinDelay)*time.Second, time.Duration(config.CustCrdRetryMaxDelay)*time.Second), - &workqueue.BucketRateLimiter{Limiter: rate.NewLimiter(rate.Limit(10), 100)}, + custCrdRateLimiter := workqueue.NewTypedMaxOfRateLimiter( + workqueue.NewTypedItemExponentialFailureRateLimiter[string](time.Duration(config.CustCrdRetryMinDelay)*time.Second, time.Duration(config.CustCrdRetryMaxDelay)*time.Second), + &workqueue.TypedBucketRateLimiter[string]{Limiter: rate.NewLimiter(rate.Limit(10), 100)}, ) informerFactory := kubeinformers.NewSharedInformerFactoryWithOptions(config.KubeFactoryClient, 0, @@ -330,88 +338,88 @@ func Run(ctx context.Context, config *Configuration) { } controller := &Controller{ config: config, - deletingPodObjMap: &sync.Map{}, - deletingNodeObjMap: &sync.Map{}, + deletingPodObjMap: xsync.NewMapOf[string, *corev1.Pod](), + deletingNodeObjMap: xsync.NewMapOf[string, *corev1.Node](), ipam: ovnipam.NewIPAM(), namedPort: NewNamedPort(), vpcsLister: vpcInformer.Lister(), vpcSynced: vpcInformer.Informer().HasSynced, - addOrUpdateVpcQueue: workqueue.NewNamedRateLimitingQueue(workqueue.DefaultControllerRateLimiter(), "AddOrUpdateVpc"), - delVpcQueue: workqueue.NewNamedRateLimitingQueue(workqueue.DefaultControllerRateLimiter(), "DeleteVpc"), - updateVpcStatusQueue: workqueue.NewNamedRateLimitingQueue(workqueue.DefaultControllerRateLimiter(), "UpdateVpcStatus"), + addOrUpdateVpcQueue: newTypedRateLimitingQueue[string]("AddOrUpdateVpc", nil), + delVpcQueue: newTypedRateLimitingQueue[*kubeovnv1.Vpc]("DeleteVpc", nil), + updateVpcStatusQueue: newTypedRateLimitingQueue[string]("UpdateVpcStatus", nil), vpcKeyMutex: keymutex.NewHashed(numKeyLocks), vpcNatGatewayLister: vpcNatGatewayInformer.Lister(), vpcNatGatewaySynced: vpcNatGatewayInformer.Informer().HasSynced, - addOrUpdateVpcNatGatewayQueue: workqueue.NewNamedRateLimitingQueue(custCrdRateLimiter, "AddOrUpdateVpcNatGw"), - initVpcNatGatewayQueue: workqueue.NewNamedRateLimitingQueue(custCrdRateLimiter, "InitVpcNatGw"), - delVpcNatGatewayQueue: workqueue.NewNamedRateLimitingQueue(custCrdRateLimiter, "DeleteVpcNatGw"), - updateVpcEipQueue: workqueue.NewNamedRateLimitingQueue(custCrdRateLimiter, "UpdateVpcEip"), - updateVpcFloatingIPQueue: workqueue.NewNamedRateLimitingQueue(custCrdRateLimiter, "UpdateVpcFloatingIp"), - updateVpcDnatQueue: workqueue.NewNamedRateLimitingQueue(custCrdRateLimiter, "UpdateVpcDnat"), - updateVpcSnatQueue: workqueue.NewNamedRateLimitingQueue(custCrdRateLimiter, "UpdateVpcSnat"), - updateVpcSubnetQueue: workqueue.NewNamedRateLimitingQueue(custCrdRateLimiter, "UpdateVpcSubnet"), + addOrUpdateVpcNatGatewayQueue: newTypedRateLimitingQueue("AddOrUpdateVpcNatGw", custCrdRateLimiter), + initVpcNatGatewayQueue: newTypedRateLimitingQueue("InitVpcNatGw", custCrdRateLimiter), + delVpcNatGatewayQueue: newTypedRateLimitingQueue("DeleteVpcNatGw", custCrdRateLimiter), + updateVpcEipQueue: newTypedRateLimitingQueue("UpdateVpcEip", custCrdRateLimiter), + updateVpcFloatingIPQueue: newTypedRateLimitingQueue("UpdateVpcFloatingIp", custCrdRateLimiter), + updateVpcDnatQueue: newTypedRateLimitingQueue("UpdateVpcDnat", custCrdRateLimiter), + updateVpcSnatQueue: newTypedRateLimitingQueue("UpdateVpcSnat", custCrdRateLimiter), + updateVpcSubnetQueue: newTypedRateLimitingQueue("UpdateVpcSubnet", custCrdRateLimiter), vpcNatGwKeyMutex: keymutex.NewHashed(numKeyLocks), subnetsLister: subnetInformer.Lister(), subnetSynced: subnetInformer.Informer().HasSynced, - addOrUpdateSubnetQueue: workqueue.NewNamedRateLimitingQueue(workqueue.DefaultControllerRateLimiter(), "AddSubnet"), - deleteSubnetQueue: workqueue.NewNamedRateLimitingQueue(workqueue.DefaultControllerRateLimiter(), "DeleteSubnet"), - updateSubnetStatusQueue: workqueue.NewNamedRateLimitingQueue(workqueue.DefaultControllerRateLimiter(), "UpdateSubnetStatus"), - syncVirtualPortsQueue: workqueue.NewNamedRateLimitingQueue(workqueue.DefaultControllerRateLimiter(), "SyncVirtualPort"), + addOrUpdateSubnetQueue: newTypedRateLimitingQueue[string]("AddSubnet", nil), + deleteSubnetQueue: newTypedRateLimitingQueue[*kubeovnv1.Subnet]("DeleteSubnet", nil), + updateSubnetStatusQueue: newTypedRateLimitingQueue[string]("UpdateSubnetStatus", nil), + syncVirtualPortsQueue: newTypedRateLimitingQueue[string]("SyncVirtualPort", nil), subnetKeyMutex: keymutex.NewHashed(numKeyLocks), ippoolLister: ippoolInformer.Lister(), ippoolSynced: ippoolInformer.Informer().HasSynced, - addOrUpdateIPPoolQueue: workqueue.NewNamedRateLimitingQueue(workqueue.DefaultControllerRateLimiter(), "AddIPPool"), - updateIPPoolStatusQueue: workqueue.NewNamedRateLimitingQueue(workqueue.DefaultControllerRateLimiter(), "UpdateIPPoolStatus"), - deleteIPPoolQueue: workqueue.NewNamedRateLimitingQueue(workqueue.DefaultControllerRateLimiter(), "DeleteIPPool"), + addOrUpdateIPPoolQueue: newTypedRateLimitingQueue[string]("AddIPPool", nil), + updateIPPoolStatusQueue: newTypedRateLimitingQueue[string]("UpdateIPPoolStatus", nil), + deleteIPPoolQueue: newTypedRateLimitingQueue[*kubeovnv1.IPPool]("DeleteIPPool", nil), ippoolKeyMutex: keymutex.NewHashed(numKeyLocks), ipsLister: ipInformer.Lister(), ipSynced: ipInformer.Informer().HasSynced, - addIPQueue: workqueue.NewNamedRateLimitingQueue(workqueue.DefaultControllerRateLimiter(), "AddIP"), - updateIPQueue: workqueue.NewNamedRateLimitingQueue(workqueue.DefaultControllerRateLimiter(), "UpdateIP"), - delIPQueue: workqueue.NewNamedRateLimitingQueue(workqueue.DefaultControllerRateLimiter(), "DeleteIP"), + addIPQueue: newTypedRateLimitingQueue[string]("AddIP", nil), + updateIPQueue: newTypedRateLimitingQueue[string]("UpdateIP", nil), + delIPQueue: newTypedRateLimitingQueue[*kubeovnv1.IP]("DeleteIP", nil), virtualIpsLister: virtualIPInformer.Lister(), virtualIpsSynced: virtualIPInformer.Informer().HasSynced, - addVirtualIPQueue: workqueue.NewNamedRateLimitingQueue(workqueue.DefaultControllerRateLimiter(), "AddVirtualIp"), - updateVirtualIPQueue: workqueue.NewNamedRateLimitingQueue(workqueue.DefaultControllerRateLimiter(), "UpdateVirtualIp"), - updateVirtualParentsQueue: workqueue.NewNamedRateLimitingQueue(workqueue.DefaultControllerRateLimiter(), "UpdateVirtualParents"), - delVirtualIPQueue: workqueue.NewNamedRateLimitingQueue(workqueue.DefaultControllerRateLimiter(), "DeleteVirtualIp"), + addVirtualIPQueue: newTypedRateLimitingQueue[string]("AddVirtualIP", nil), + updateVirtualIPQueue: newTypedRateLimitingQueue[string]("UpdateVirtualIP", nil), + updateVirtualParentsQueue: newTypedRateLimitingQueue[string]("UpdateVirtualParents", nil), + delVirtualIPQueue: newTypedRateLimitingQueue[*kubeovnv1.Vip]("DeleteVirtualIP", nil), iptablesEipsLister: iptablesEipInformer.Lister(), iptablesEipSynced: iptablesEipInformer.Informer().HasSynced, - addIptablesEipQueue: workqueue.NewNamedRateLimitingQueue(custCrdRateLimiter, "AddIptablesEip"), - updateIptablesEipQueue: workqueue.NewNamedRateLimitingQueue(custCrdRateLimiter, "UpdateIptablesEip"), - resetIptablesEipQueue: workqueue.NewNamedRateLimitingQueue(custCrdRateLimiter, "ResetIptablesEip"), - delIptablesEipQueue: workqueue.NewNamedRateLimitingQueue(custCrdRateLimiter, "DeleteIptablesEip"), + addIptablesEipQueue: newTypedRateLimitingQueue("AddIptablesEip", custCrdRateLimiter), + updateIptablesEipQueue: newTypedRateLimitingQueue("UpdateIptablesEip", custCrdRateLimiter), + resetIptablesEipQueue: newTypedRateLimitingQueue("ResetIptablesEip", custCrdRateLimiter), + delIptablesEipQueue: newTypedRateLimitingQueue("DeleteIptablesEip", custCrdRateLimiter), iptablesFipsLister: iptablesFipInformer.Lister(), iptablesFipSynced: iptablesFipInformer.Informer().HasSynced, - addIptablesFipQueue: workqueue.NewNamedRateLimitingQueue(custCrdRateLimiter, "AddIptablesFip"), - updateIptablesFipQueue: workqueue.NewNamedRateLimitingQueue(custCrdRateLimiter, "UpdateIptablesFip"), - delIptablesFipQueue: workqueue.NewNamedRateLimitingQueue(custCrdRateLimiter, "DeleteIptablesFip"), + addIptablesFipQueue: newTypedRateLimitingQueue("AddIptablesFip", custCrdRateLimiter), + updateIptablesFipQueue: newTypedRateLimitingQueue("UpdateIptablesFip", custCrdRateLimiter), + delIptablesFipQueue: newTypedRateLimitingQueue("DeleteIptablesFip", custCrdRateLimiter), iptablesDnatRulesLister: iptablesDnatRuleInformer.Lister(), iptablesDnatRuleSynced: iptablesDnatRuleInformer.Informer().HasSynced, - addIptablesDnatRuleQueue: workqueue.NewNamedRateLimitingQueue(custCrdRateLimiter, "AddIptablesDnatRule"), - updateIptablesDnatRuleQueue: workqueue.NewNamedRateLimitingQueue(custCrdRateLimiter, "UpdateIptablesDnatRule"), - delIptablesDnatRuleQueue: workqueue.NewNamedRateLimitingQueue(custCrdRateLimiter, "DeleteIptablesDnatRule"), + addIptablesDnatRuleQueue: newTypedRateLimitingQueue("AddIptablesDnatRule", custCrdRateLimiter), + updateIptablesDnatRuleQueue: newTypedRateLimitingQueue("UpdateIptablesDnatRule", custCrdRateLimiter), + delIptablesDnatRuleQueue: newTypedRateLimitingQueue("DeleteIptablesDnatRule", custCrdRateLimiter), iptablesSnatRulesLister: iptablesSnatRuleInformer.Lister(), iptablesSnatRuleSynced: iptablesSnatRuleInformer.Informer().HasSynced, - addIptablesSnatRuleQueue: workqueue.NewNamedRateLimitingQueue(custCrdRateLimiter, "AddIptablesSnatRule"), - updateIptablesSnatRuleQueue: workqueue.NewNamedRateLimitingQueue(custCrdRateLimiter, "UpdateIptablesSnatRule"), - delIptablesSnatRuleQueue: workqueue.NewNamedRateLimitingQueue(custCrdRateLimiter, "DeleteIptablesSnatRule"), + addIptablesSnatRuleQueue: newTypedRateLimitingQueue("AddIptablesSnatRule", custCrdRateLimiter), + updateIptablesSnatRuleQueue: newTypedRateLimitingQueue("UpdateIptablesSnatRule", custCrdRateLimiter), + delIptablesSnatRuleQueue: newTypedRateLimitingQueue("DeleteIptablesSnatRule", custCrdRateLimiter), vlansLister: vlanInformer.Lister(), vlanSynced: vlanInformer.Informer().HasSynced, - addVlanQueue: workqueue.NewNamedRateLimitingQueue(workqueue.DefaultControllerRateLimiter(), "AddVlan"), - delVlanQueue: workqueue.NewNamedRateLimitingQueue(workqueue.DefaultControllerRateLimiter(), "DelVlan"), - updateVlanQueue: workqueue.NewNamedRateLimitingQueue(workqueue.DefaultControllerRateLimiter(), "UpdateVlan"), + addVlanQueue: newTypedRateLimitingQueue[string]("AddVlan", nil), + delVlanQueue: newTypedRateLimitingQueue[string]("DeleteVlan", nil), + updateVlanQueue: newTypedRateLimitingQueue[string]("UpdateVlan", nil), vlanKeyMutex: keymutex.NewHashed(numKeyLocks), providerNetworksLister: providerNetworkInformer.Lister(), @@ -419,43 +427,46 @@ func Run(ctx context.Context, config *Configuration) { podsLister: podInformer.Lister(), podsSynced: podInformer.Informer().HasSynced, - addOrUpdatePodQueue: workqueue.NewNamedRateLimitingQueue(workqueue.DefaultControllerRateLimiter(), "AddOrUpdatePod"), - deletePodQueue: workqueue.NewRateLimitingQueueWithDelayingInterface( - workqueue.NewNamedDelayingQueue("DeletePod"), - workqueue.DefaultControllerRateLimiter(), + addOrUpdatePodQueue: newTypedRateLimitingQueue[string]("AddOrUpdatePod", nil), + deletePodQueue: workqueue.NewTypedRateLimitingQueueWithConfig( + workqueue.DefaultTypedControllerRateLimiter[string](), + workqueue.TypedRateLimitingQueueConfig[string]{ + Name: "DeletePod", + DelayingQueue: workqueue.TypedNewDelayingQueue[string](), + }, ), - updatePodSecurityQueue: workqueue.NewNamedRateLimitingQueue(workqueue.DefaultControllerRateLimiter(), "UpdatePodSecurity"), + updatePodSecurityQueue: newTypedRateLimitingQueue[string]("UpdatePodSecurity", nil), podKeyMutex: keymutex.NewHashed(numKeyLocks), namespacesLister: namespaceInformer.Lister(), namespacesSynced: namespaceInformer.Informer().HasSynced, - addNamespaceQueue: workqueue.NewNamedRateLimitingQueue(workqueue.DefaultControllerRateLimiter(), "AddNamespace"), + addNamespaceQueue: newTypedRateLimitingQueue[string]("AddNamespace", nil), nsKeyMutex: keymutex.NewHashed(numKeyLocks), nodesLister: nodeInformer.Lister(), nodesSynced: nodeInformer.Informer().HasSynced, - addNodeQueue: workqueue.NewNamedRateLimitingQueue(workqueue.DefaultControllerRateLimiter(), "AddNode"), - updateNodeQueue: workqueue.NewNamedRateLimitingQueue(workqueue.DefaultControllerRateLimiter(), "UpdateNode"), - deleteNodeQueue: workqueue.NewNamedRateLimitingQueue(workqueue.DefaultControllerRateLimiter(), "DeleteNode"), + addNodeQueue: newTypedRateLimitingQueue[string]("AddNode", nil), + updateNodeQueue: newTypedRateLimitingQueue[string]("UpdateNode", nil), + deleteNodeQueue: newTypedRateLimitingQueue[string]("DeleteNode", nil), nodeKeyMutex: keymutex.NewHashed(numKeyLocks), servicesLister: serviceInformer.Lister(), serviceSynced: serviceInformer.Informer().HasSynced, - addServiceQueue: workqueue.NewNamedRateLimitingQueue(workqueue.DefaultControllerRateLimiter(), "AddService"), - deleteServiceQueue: workqueue.NewNamedRateLimitingQueue(workqueue.DefaultControllerRateLimiter(), "DeleteService"), - updateServiceQueue: workqueue.NewNamedRateLimitingQueue(workqueue.DefaultControllerRateLimiter(), "UpdateService"), + addServiceQueue: newTypedRateLimitingQueue[string]("AddService", nil), + deleteServiceQueue: newTypedRateLimitingQueue[*vpcService]("DeleteService", nil), + updateServiceQueue: newTypedRateLimitingQueue[string]("UpdateService", nil), svcKeyMutex: keymutex.NewHashed(numKeyLocks), endpointsLister: endpointInformer.Lister(), endpointsSynced: endpointInformer.Informer().HasSynced, - addOrUpdateEndpointQueue: workqueue.NewNamedRateLimitingQueue(workqueue.DefaultControllerRateLimiter(), "UpdateEndpoint"), + addOrUpdateEndpointQueue: newTypedRateLimitingQueue[string]("UpdateEndpoint", nil), epKeyMutex: keymutex.NewHashed(numKeyLocks), qosPoliciesLister: qosPolicyInformer.Lister(), qosPolicySynced: qosPolicyInformer.Informer().HasSynced, - addQoSPolicyQueue: workqueue.NewNamedRateLimitingQueue(custCrdRateLimiter, "AddQoSPolicy"), - updateQoSPolicyQueue: workqueue.NewNamedRateLimitingQueue(custCrdRateLimiter, "UpdateQoSPolicy"), - delQoSPolicyQueue: workqueue.NewNamedRateLimitingQueue(custCrdRateLimiter, "DeleteQoSPolicy"), + addQoSPolicyQueue: newTypedRateLimitingQueue("AddQoSPolicy", custCrdRateLimiter), + updateQoSPolicyQueue: newTypedRateLimitingQueue("UpdateQoSPolicy", custCrdRateLimiter), + delQoSPolicyQueue: newTypedRateLimitingQueue("DeleteQoSPolicy", custCrdRateLimiter), configMapsLister: configMapInformer.Lister(), configMapsSynced: configMapInformer.Informer().HasSynced, @@ -463,38 +474,38 @@ func Run(ctx context.Context, config *Configuration) { sgKeyMutex: keymutex.NewHashed(numKeyLocks), sgsLister: sgInformer.Lister(), sgSynced: sgInformer.Informer().HasSynced, - addOrUpdateSgQueue: workqueue.NewNamedRateLimitingQueue(workqueue.DefaultControllerRateLimiter(), "UpdateSg"), - delSgQueue: workqueue.NewNamedRateLimitingQueue(workqueue.DefaultControllerRateLimiter(), "DeleteSg"), - syncSgPortsQueue: workqueue.NewNamedRateLimitingQueue(workqueue.DefaultControllerRateLimiter(), "SyncSgPorts"), + addOrUpdateSgQueue: newTypedRateLimitingQueue[string]("UpdateSecurityGroup", nil), + delSgQueue: newTypedRateLimitingQueue[string]("DeleteSecurityGroup", nil), + syncSgPortsQueue: newTypedRateLimitingQueue[string]("SyncSecurityGroupPorts", nil), ovnEipsLister: ovnEipInformer.Lister(), ovnEipSynced: ovnEipInformer.Informer().HasSynced, - addOvnEipQueue: workqueue.NewNamedRateLimitingQueue(custCrdRateLimiter, "AddOvnEip"), - updateOvnEipQueue: workqueue.NewNamedRateLimitingQueue(custCrdRateLimiter, "UpdateOvnEip"), - resetOvnEipQueue: workqueue.NewNamedRateLimitingQueue(custCrdRateLimiter, "ResetOvnEip"), - delOvnEipQueue: workqueue.NewNamedRateLimitingQueue(custCrdRateLimiter, "DelOvnEip"), + addOvnEipQueue: newTypedRateLimitingQueue("AddOvnEip", custCrdRateLimiter), + updateOvnEipQueue: newTypedRateLimitingQueue("UpdateOvnEip", custCrdRateLimiter), + resetOvnEipQueue: newTypedRateLimitingQueue("ResetOvnEip", custCrdRateLimiter), + delOvnEipQueue: newTypedRateLimitingQueue("DeleteOvnEip", custCrdRateLimiter), ovnFipsLister: ovnFipInformer.Lister(), ovnFipSynced: ovnFipInformer.Informer().HasSynced, - addOvnFipQueue: workqueue.NewNamedRateLimitingQueue(custCrdRateLimiter, "AddOvnFip"), - updateOvnFipQueue: workqueue.NewNamedRateLimitingQueue(custCrdRateLimiter, "UpdateOvnFip"), - delOvnFipQueue: workqueue.NewNamedRateLimitingQueue(custCrdRateLimiter, "DeleteOvnFip"), + addOvnFipQueue: newTypedRateLimitingQueue("AddOvnFip", custCrdRateLimiter), + updateOvnFipQueue: newTypedRateLimitingQueue("UpdateOvnFip", custCrdRateLimiter), + delOvnFipQueue: newTypedRateLimitingQueue("DeleteOvnFip", custCrdRateLimiter), ovnSnatRulesLister: ovnSnatRuleInformer.Lister(), ovnSnatRuleSynced: ovnSnatRuleInformer.Informer().HasSynced, - addOvnSnatRuleQueue: workqueue.NewNamedRateLimitingQueue(custCrdRateLimiter, "AddOvnSnatRule"), - updateOvnSnatRuleQueue: workqueue.NewNamedRateLimitingQueue(custCrdRateLimiter, "UpdateOvnSnatRule"), - delOvnSnatRuleQueue: workqueue.NewNamedRateLimitingQueue(custCrdRateLimiter, "DelOvnSnatRule"), + addOvnSnatRuleQueue: newTypedRateLimitingQueue("AddOvnSnatRule", custCrdRateLimiter), + updateOvnSnatRuleQueue: newTypedRateLimitingQueue("UpdateOvnSnatRule", custCrdRateLimiter), + delOvnSnatRuleQueue: newTypedRateLimitingQueue("DeleteOvnSnatRule", custCrdRateLimiter), ovnDnatRulesLister: ovnDnatRuleInformer.Lister(), ovnDnatRuleSynced: ovnDnatRuleInformer.Informer().HasSynced, - addOvnDnatRuleQueue: workqueue.NewNamedRateLimitingQueue(custCrdRateLimiter, "AddOvnDnatRule"), - updateOvnDnatRuleQueue: workqueue.NewNamedRateLimitingQueue(custCrdRateLimiter, "UpdateOvnDnatRule"), - delOvnDnatRuleQueue: workqueue.NewNamedRateLimitingQueue(custCrdRateLimiter, "DeleteOvnDnatRule"), + addOvnDnatRuleQueue: newTypedRateLimitingQueue("AddOvnDnatRule", custCrdRateLimiter), + updateOvnDnatRuleQueue: newTypedRateLimitingQueue("UpdateOvnDnatRule", custCrdRateLimiter), + delOvnDnatRuleQueue: newTypedRateLimitingQueue("DeleteOvnDnatRule", custCrdRateLimiter), csrLister: csrInformer.Lister(), csrSynced: csrInformer.Informer().HasSynced, - addOrUpdateCsrQueue: workqueue.NewNamedRateLimitingQueue(workqueue.DefaultControllerRateLimiter(), "AddOrUpdateCsr"), + addOrUpdateCsrQueue: newTypedRateLimitingQueue[string]("AddOrUpdateCSR", nil), recorder: recorder, informerFactory: informerFactory, @@ -522,37 +533,49 @@ func Run(ctx context.Context, config *Configuration) { if config.EnableLb { controller.switchLBRuleLister = switchLBRuleInformer.Lister() controller.switchLBRuleSynced = switchLBRuleInformer.Informer().HasSynced - controller.addSwitchLBRuleQueue = workqueue.NewNamedRateLimitingQueue(custCrdRateLimiter, "addSwitchLBRule") - controller.delSwitchLBRuleQueue = workqueue.NewNamedRateLimitingQueue(custCrdRateLimiter, "delSwitchLBRule") - controller.UpdateSwitchLBRuleQueue = workqueue.NewNamedRateLimitingQueue(custCrdRateLimiter, "updateSwitchLBRule") + controller.addSwitchLBRuleQueue = newTypedRateLimitingQueue("AddSwitchLBRule", custCrdRateLimiter) + controller.delSwitchLBRuleQueue = newTypedRateLimitingQueue( + "DeleteSwitchLBRule", + workqueue.NewTypedMaxOfRateLimiter( + workqueue.NewTypedItemExponentialFailureRateLimiter[*SlrInfo](time.Duration(config.CustCrdRetryMinDelay)*time.Second, time.Duration(config.CustCrdRetryMaxDelay)*time.Second), + &workqueue.TypedBucketRateLimiter[*SlrInfo]{Limiter: rate.NewLimiter(rate.Limit(10), 100)}, + ), + ) + controller.updateSwitchLBRuleQueue = newTypedRateLimitingQueue( + "UpdateSwitchLBRule", + workqueue.NewTypedMaxOfRateLimiter( + workqueue.NewTypedItemExponentialFailureRateLimiter[*SlrInfo](time.Duration(config.CustCrdRetryMinDelay)*time.Second, time.Duration(config.CustCrdRetryMaxDelay)*time.Second), + &workqueue.TypedBucketRateLimiter[*SlrInfo]{Limiter: rate.NewLimiter(rate.Limit(10), 100)}, + ), + ) controller.vpcDNSLister = vpcDNSInformer.Lister() controller.vpcDNSSynced = vpcDNSInformer.Informer().HasSynced - controller.addOrUpdateVpcDNSQueue = workqueue.NewNamedRateLimitingQueue(custCrdRateLimiter, "AddOrUpdateVpcDns") - controller.delVpcDNSQueue = workqueue.NewNamedRateLimitingQueue(custCrdRateLimiter, "DeleteVpcDns") + controller.addOrUpdateVpcDNSQueue = newTypedRateLimitingQueue("AddOrUpdateVpcDns", custCrdRateLimiter) + controller.delVpcDNSQueue = newTypedRateLimitingQueue("DeleteVpcDns", custCrdRateLimiter) } if config.EnableNP { controller.npsLister = npInformer.Lister() controller.npsSynced = npInformer.Informer().HasSynced - controller.updateNpQueue = workqueue.NewNamedRateLimitingQueue(workqueue.DefaultControllerRateLimiter(), "UpdateNp") - controller.deleteNpQueue = workqueue.NewNamedRateLimitingQueue(workqueue.DefaultControllerRateLimiter(), "DeleteNp") + controller.updateNpQueue = newTypedRateLimitingQueue[string]("UpdateNetworkPolicy", nil) + controller.deleteNpQueue = newTypedRateLimitingQueue[string]("DeleteNetworkPolicy", nil) controller.npKeyMutex = keymutex.NewHashed(numKeyLocks) } if config.EnableANP { controller.anpsLister = anpInformer.Lister() controller.anpsSynced = anpInformer.Informer().HasSynced - controller.addAnpQueue = workqueue.NewNamedRateLimitingQueue(workqueue.DefaultControllerRateLimiter(), "AddAnp") - controller.updateAnpQueue = workqueue.NewNamedRateLimitingQueue(workqueue.DefaultControllerRateLimiter(), "UpdateAnp") - controller.deleteAnpQueue = workqueue.NewNamedRateLimitingQueue(workqueue.DefaultControllerRateLimiter(), "DeleteAnp") + controller.addAnpQueue = newTypedRateLimitingQueue[string]("AddAdminNetworkPolicy", nil) + controller.updateAnpQueue = newTypedRateLimitingQueue[*AdminNetworkPolicyChangedDelta]("UpdateAdminNetworkPolicy", nil) + controller.deleteAnpQueue = newTypedRateLimitingQueue[*v1alpha1.AdminNetworkPolicy]("DeleteAdminNetworkPolicy", nil) controller.anpKeyMutex = keymutex.NewHashed(numKeyLocks) controller.banpsLister = banpInformer.Lister() controller.banpsSynced = banpInformer.Informer().HasSynced - controller.addBanpQueue = workqueue.NewNamedRateLimitingQueue(workqueue.DefaultControllerRateLimiter(), "AddBanp") - controller.updateBanpQueue = workqueue.NewNamedRateLimitingQueue(workqueue.DefaultControllerRateLimiter(), "UpdateBanp") - controller.deleteBanpQueue = workqueue.NewNamedRateLimitingQueue(workqueue.DefaultControllerRateLimiter(), "DeleteBanp") + controller.addBanpQueue = newTypedRateLimitingQueue[string]("AddBaseAdminNetworkPolicy", nil) + controller.updateBanpQueue = newTypedRateLimitingQueue[*AdminNetworkPolicyChangedDelta]("UpdateBaseAdminNetworkPolicy", nil) + controller.deleteBanpQueue = newTypedRateLimitingQueue[*v1alpha1.BaselineAdminNetworkPolicy]("DeleteBaseAdminNetworkPolicy", nil) controller.banpKeyMutex = keymutex.NewHashed(numKeyLocks) } @@ -941,7 +964,7 @@ func (c *Controller) shutdown() { if c.config.EnableLb { c.addSwitchLBRuleQueue.ShutDown() c.delSwitchLBRuleQueue.ShutDown() - c.UpdateSwitchLBRuleQueue.ShutDown() + c.updateSwitchLBRuleQueue.ShutDown() c.addOrUpdateVpcDNSQueue.ShutDown() c.delVpcDNSQueue.ShutDown() @@ -1018,23 +1041,23 @@ func (c *Controller) shutdown() { func (c *Controller) startWorkers(ctx context.Context) { klog.Info("Starting workers") - go wait.Until(c.runAddVpcWorker, time.Second, ctx.Done()) + go wait.Until(runWorker("add/update vpc", c.addOrUpdateVpcQueue, c.handleAddOrUpdateVpc), time.Second, ctx.Done()) - go wait.Until(c.runAddOrUpdateVpcNatGwWorker, time.Second, ctx.Done()) - go wait.Until(c.runInitVpcNatGwWorker, time.Second, ctx.Done()) - go wait.Until(c.runDelVpcNatGwWorker, time.Second, ctx.Done()) - go wait.Until(c.runUpdateVpcFloatingIPWorker, time.Second, ctx.Done()) - go wait.Until(c.runUpdateVpcEipWorker, time.Second, ctx.Done()) - go wait.Until(c.runUpdateVpcDnatWorker, time.Second, ctx.Done()) - go wait.Until(c.runUpdateVpcSnatWorker, time.Second, ctx.Done()) - go wait.Until(c.runUpdateVpcSubnetWorker, time.Second, ctx.Done()) - go wait.Until(c.runAddOrUpdateCsrWorker, time.Second, ctx.Done()) + go wait.Until(runWorker("add/update vpc nat gateway", c.addOrUpdateVpcNatGatewayQueue, c.handleAddOrUpdateVpcNatGw), time.Second, ctx.Done()) + go wait.Until(runWorker("init vpc nat gateway", c.initVpcNatGatewayQueue, c.handleInitVpcNatGw), time.Second, ctx.Done()) + go wait.Until(runWorker("delete vpc nat gateway", c.delVpcNatGatewayQueue, c.handleDelVpcNatGw), time.Second, ctx.Done()) + go wait.Until(runWorker("update fip for vpc nat gateway", c.updateVpcFloatingIPQueue, c.handleUpdateVpcFloatingIP), time.Second, ctx.Done()) + go wait.Until(runWorker("update eip for vpc nat gateway", c.updateVpcEipQueue, c.handleUpdateVpcEip), time.Second, ctx.Done()) + go wait.Until(runWorker("update dnat for vpc nat gateway", c.updateVpcDnatQueue, c.handleUpdateVpcDnat), time.Second, ctx.Done()) + go wait.Until(runWorker("update snat for vpc nat gateway", c.updateVpcSnatQueue, c.handleUpdateVpcSnat), time.Second, ctx.Done()) + go wait.Until(runWorker("update subnet route for vpc nat gateway", c.updateVpcSubnetQueue, c.handleUpdateNatGwSubnetRoute), time.Second, ctx.Done()) + go wait.Until(runWorker("add/update csr", c.addOrUpdateCsrQueue, c.handleAddOrUpdateCsr), time.Second, ctx.Done()) // add default and join subnet and wait them ready - go wait.Until(c.runAddSubnetWorker, time.Second, ctx.Done()) - go wait.Until(c.runAddIPPoolWorker, time.Second, ctx.Done()) - go wait.Until(c.runAddVlanWorker, time.Second, ctx.Done()) - go wait.Until(c.runAddNamespaceWorker, time.Second, ctx.Done()) + go wait.Until(runWorker("add/update subnet", c.addOrUpdateSubnetQueue, c.handleAddOrUpdateSubnet), time.Second, ctx.Done()) + go wait.Until(runWorker("add/update ippool", c.addOrUpdateIPPoolQueue, c.handleAddOrUpdateIPPool), time.Second, ctx.Done()) + go wait.Until(runWorker("add vlan", c.addVlanQueue, c.handleAddVlan), time.Second, ctx.Done()) + go wait.Until(runWorker("add namespace", c.addNamespaceQueue, c.handleAddNamespace), time.Second, ctx.Done()) err := wait.PollUntilContextCancel(ctx, 3*time.Second, true, func(_ context.Context) (done bool, err error) { subnets := []string{c.config.DefaultLogicalSwitch, c.config.NodeSwitch} klog.Infof("wait for subnets %v ready", subnets) @@ -1045,15 +1068,15 @@ func (c *Controller) startWorkers(ctx context.Context) { klog.Fatalf("wait default and join subnet ready, error: %v", err) } - go wait.Until(c.runAddSgWorker, time.Second, ctx.Done()) - go wait.Until(c.runDelSgWorker, time.Second, ctx.Done()) - go wait.Until(c.runSyncSgPortsWorker, time.Second, ctx.Done()) + go wait.Until(runWorker("add/update security group", c.addOrUpdateSgQueue, func(key string) error { return c.handleAddOrUpdateSg(key, false) }), time.Second, ctx.Done()) + go wait.Until(runWorker("delete security group", c.delSgQueue, c.handleDeleteSg), time.Second, ctx.Done()) + go wait.Until(runWorker("ports for security group", c.syncSgPortsQueue, c.syncSgLogicalPort), time.Second, ctx.Done()) // run node worker before handle any pods for i := 0; i < c.config.WorkerNum; i++ { - go wait.Until(c.runAddNodeWorker, time.Second, ctx.Done()) - go wait.Until(c.runUpdateNodeWorker, time.Second, ctx.Done()) - go wait.Until(c.runDeleteNodeWorker, time.Second, ctx.Done()) + go wait.Until(runWorker("add node", c.addNodeQueue, c.handleAddNode), time.Second, ctx.Done()) + go wait.Until(runWorker("update node", c.updateNodeQueue, c.handleUpdateNode), time.Second, ctx.Done()) + go wait.Until(runWorker("delete node", c.deleteNodeQueue, c.handleDeleteNode), time.Second, ctx.Done()) } for { ready := true @@ -1074,48 +1097,48 @@ func (c *Controller) startWorkers(ctx context.Context) { } } - go wait.Until(c.runDelVpcWorker, time.Second, ctx.Done()) - go wait.Until(c.runUpdateVpcStatusWorker, time.Second, ctx.Done()) + go wait.Until(runWorker("delete vpc", c.delVpcQueue, c.handleDelVpc), time.Second, ctx.Done()) + go wait.Until(runWorker("update status of vpc", c.updateVpcStatusQueue, c.handleUpdateVpcStatus), time.Second, ctx.Done()) if c.config.EnableLb { - go wait.Until(c.runAddServiceWorker, time.Second, ctx.Done()) + go wait.Until(runWorker("add service", c.addServiceQueue, c.handleAddService), time.Second, ctx.Done()) // run in a single worker to avoid delete the last vip, which will lead ovn to delete the loadbalancer - go wait.Until(c.runDeleteServiceWorker, time.Second, ctx.Done()) + go wait.Until(runWorker("delete service", c.deleteServiceQueue, c.handleDeleteService), time.Second, ctx.Done()) - go wait.Until(c.runAddSwitchLBRuleWorker, time.Second, ctx.Done()) - go wait.Until(c.runDelSwitchLBRuleWorker, time.Second, ctx.Done()) - go wait.Until(c.runUpdateSwitchLBRuleWorker, time.Second, ctx.Done()) + go wait.Until(runWorker("add/update switch lb rule", c.addSwitchLBRuleQueue, c.handleAddOrUpdateSwitchLBRule), time.Second, ctx.Done()) + go wait.Until(runWorker("delete switch lb rule", c.delSwitchLBRuleQueue, c.handleDelSwitchLBRule), time.Second, ctx.Done()) + go wait.Until(runWorker("delete switch lb rule", c.updateSwitchLBRuleQueue, c.handleUpdateSwitchLBRule), time.Second, ctx.Done()) - go wait.Until(c.runAddOrUpdateVPCDNSWorker, time.Second, ctx.Done()) - go wait.Until(c.runDelVPCDNSWorker, time.Second, ctx.Done()) + go wait.Until(runWorker("add/update vpc dns", c.addOrUpdateVpcDNSQueue, c.handleAddOrUpdateVPCDNS), time.Second, ctx.Done()) + go wait.Until(runWorker("delete vpc dns", c.delVpcDNSQueue, c.handleDelVpcDNS), time.Second, ctx.Done()) go wait.Until(func() { c.resyncVpcDNSConfig() }, 5*time.Second, ctx.Done()) } for i := 0; i < c.config.WorkerNum; i++ { - go wait.Until(c.runDeletePodWorker, time.Second, ctx.Done()) - go wait.Until(c.runAddOrUpdatePodWorker, time.Second, ctx.Done()) - go wait.Until(c.runUpdatePodSecurityWorker, time.Second, ctx.Done()) + go wait.Until(runWorker("delete pod", c.deletePodQueue, c.handleDeletePod), time.Second, ctx.Done()) + go wait.Until(runWorker("add/update pod", c.addOrUpdatePodQueue, c.handleAddOrUpdatePod), time.Second, ctx.Done()) + go wait.Until(runWorker("update pod security", c.updatePodSecurityQueue, c.handleUpdatePodSecurity), time.Second, ctx.Done()) - go wait.Until(c.runDeleteSubnetWorker, time.Second, ctx.Done()) - go wait.Until(c.runDeleteIPPoolWorker, time.Second, ctx.Done()) - go wait.Until(c.runUpdateSubnetStatusWorker, time.Second, ctx.Done()) - go wait.Until(c.runUpdateIPPoolStatusWorker, time.Second, ctx.Done()) - go wait.Until(c.runSyncVirtualPortsWorker, time.Second, ctx.Done()) + go wait.Until(runWorker("delete subnet", c.deleteSubnetQueue, c.handleDeleteSubnet), time.Second, ctx.Done()) + go wait.Until(runWorker("delete ippool", c.deleteIPPoolQueue, c.handleDeleteIPPool), time.Second, ctx.Done()) + go wait.Until(runWorker("update status of subnet", c.updateSubnetStatusQueue, c.handleUpdateSubnetStatus), time.Second, ctx.Done()) + go wait.Until(runWorker("update status of ippool", c.updateIPPoolStatusQueue, c.handleUpdateIPPoolStatus), time.Second, ctx.Done()) + go wait.Until(runWorker("virtual port for subnet", c.syncVirtualPortsQueue, c.syncVirtualPort), time.Second, ctx.Done()) if c.config.EnableLb { - go wait.Until(c.runUpdateServiceWorker, time.Second, ctx.Done()) - go wait.Until(c.runUpdateEndpointWorker, time.Second, ctx.Done()) + go wait.Until(runWorker("update service", c.updateServiceQueue, c.handleUpdateService), time.Second, ctx.Done()) + go wait.Until(runWorker("add/update endpoint", c.addOrUpdateEndpointQueue, c.handleUpdateEndpoint), time.Second, ctx.Done()) } if c.config.EnableNP { - go wait.Until(c.runUpdateNpWorker, time.Second, ctx.Done()) - go wait.Until(c.runDeleteNpWorker, time.Second, ctx.Done()) + go wait.Until(runWorker("update network policy", c.updateNpQueue, c.handleUpdateNp), time.Second, ctx.Done()) + go wait.Until(runWorker("delete network policy", c.deleteNpQueue, c.handleDeleteNp), time.Second, ctx.Done()) } - go wait.Until(c.runDelVlanWorker, time.Second, ctx.Done()) - go wait.Until(c.runUpdateVlanWorker, time.Second, ctx.Done()) + go wait.Until(runWorker("delete vlan", c.delVlanQueue, c.handleDelVlan), time.Second, ctx.Done()) + go wait.Until(runWorker("update vlan", c.updateVlanQueue, c.handleUpdateVlan), time.Second, ctx.Done()) } if c.config.EnableEipSnat { @@ -1158,65 +1181,65 @@ func (c *Controller) startWorkers(ctx context.Context) { go wait.Until(c.exportSubnetMetrics, 30*time.Second, ctx.Done()) go wait.Until(c.CheckGatewayReady, 5*time.Second, ctx.Done()) - go wait.Until(c.runAddOvnEipWorker, time.Second, ctx.Done()) - go wait.Until(c.runUpdateOvnEipWorker, time.Second, ctx.Done()) - go wait.Until(c.runResetOvnEipWorker, time.Second, ctx.Done()) - go wait.Until(c.runDelOvnEipWorker, time.Second, ctx.Done()) + go wait.Until(runWorker("add ovn eip", c.addOvnEipQueue, c.handleAddOvnEip), time.Second, ctx.Done()) + go wait.Until(runWorker("update ovn eip", c.updateOvnEipQueue, c.handleUpdateOvnEip), time.Second, ctx.Done()) + go wait.Until(runWorker("reset ovn eip", c.resetOvnEipQueue, c.handleResetOvnEip), time.Second, ctx.Done()) + go wait.Until(runWorker("delete ovn eip", c.delOvnEipQueue, c.handleDelOvnEip), time.Second, ctx.Done()) - go wait.Until(c.runAddOvnFipWorker, time.Second, ctx.Done()) - go wait.Until(c.runUpdateOvnFipWorker, time.Second, ctx.Done()) - go wait.Until(c.runDelOvnFipWorker, time.Second, ctx.Done()) + go wait.Until(runWorker("add ovn fip", c.addOvnFipQueue, c.handleAddOvnFip), time.Second, ctx.Done()) + go wait.Until(runWorker("update ovn fip", c.updateOvnFipQueue, c.handleUpdateOvnFip), time.Second, ctx.Done()) + go wait.Until(runWorker("delete ovn fip", c.delOvnFipQueue, c.handleDelOvnFip), time.Second, ctx.Done()) - go wait.Until(c.runAddOvnSnatRuleWorker, time.Second, ctx.Done()) - go wait.Until(c.runUpdateOvnSnatRuleWorker, time.Second, ctx.Done()) - go wait.Until(c.runDelOvnSnatRuleWorker, time.Second, ctx.Done()) + go wait.Until(runWorker("add ovn snat rule", c.addOvnSnatRuleQueue, c.handleAddOvnSnatRule), time.Second, ctx.Done()) + go wait.Until(runWorker("update ovn snat rule", c.updateOvnSnatRuleQueue, c.handleUpdateOvnSnatRule), time.Second, ctx.Done()) + go wait.Until(runWorker("delete ovn snat rule", c.delOvnSnatRuleQueue, c.handleDelOvnSnatRule), time.Second, ctx.Done()) - go wait.Until(c.runAddOvnDnatRuleWorker, time.Second, ctx.Done()) - go wait.Until(c.runUpdateOvnDnatRuleWorker, time.Second, ctx.Done()) - go wait.Until(c.runDelOvnDnatRuleWorker, time.Second, ctx.Done()) + go wait.Until(runWorker("add ovn dnat", c.addOvnDnatRuleQueue, c.handleAddOvnDnatRule), time.Second, ctx.Done()) + go wait.Until(runWorker("update ovn dnat", c.updateOvnDnatRuleQueue, c.handleUpdateOvnDnatRule), time.Second, ctx.Done()) + go wait.Until(runWorker("delete ovn dnat", c.delOvnDnatRuleQueue, c.handleDelOvnDnatRule), time.Second, ctx.Done()) if c.config.EnableNP { go wait.Until(c.CheckNodePortGroup, time.Duration(c.config.NodePgProbeTime)*time.Minute, ctx.Done()) } - go wait.Until(c.runAddIPWorker, time.Second, ctx.Done()) - go wait.Until(c.runUpdateIPWorker, time.Second, ctx.Done()) - go wait.Until(c.runDelIPWorker, time.Second, ctx.Done()) + go wait.Until(runWorker("add ip", c.addIPQueue, c.handleAddReservedIP), time.Second, ctx.Done()) + go wait.Until(runWorker("update ip", c.updateIPQueue, c.handleUpdateIP), time.Second, ctx.Done()) + go wait.Until(runWorker("delete ip", c.delIPQueue, c.handleDelIP), time.Second, ctx.Done()) - go wait.Until(c.runAddVirtualIPWorker, time.Second, ctx.Done()) - go wait.Until(c.runUpdateVirtualIPWorker, time.Second, ctx.Done()) - go wait.Until(c.runUpdateVirtualParentsWorker, time.Second, ctx.Done()) - go wait.Until(c.runDelVirtualIPWorker, time.Second, ctx.Done()) + go wait.Until(runWorker("add vip", c.addVirtualIPQueue, c.handleAddVirtualIP), time.Second, ctx.Done()) + go wait.Until(runWorker("update vip", c.updateVirtualIPQueue, c.handleUpdateVirtualIP), time.Second, ctx.Done()) + go wait.Until(runWorker("update virtual parent for vip", c.updateVirtualParentsQueue, c.handleUpdateVirtualParents), time.Second, ctx.Done()) + go wait.Until(runWorker("delete vip", c.delVirtualIPQueue, c.handleDelVirtualIP), time.Second, ctx.Done()) - go wait.Until(c.runAddIptablesEipWorker, time.Second, ctx.Done()) - go wait.Until(c.runUpdateIptablesEipWorker, time.Second, ctx.Done()) - go wait.Until(c.runResetIptablesEipWorker, time.Second, ctx.Done()) - go wait.Until(c.runDelIptablesEipWorker, time.Second, ctx.Done()) + go wait.Until(runWorker("add iptables eip", c.addIptablesEipQueue, c.handleAddIptablesEip), time.Second, ctx.Done()) + go wait.Until(runWorker("update iptables eip", c.updateIptablesEipQueue, c.handleUpdateIptablesEip), time.Second, ctx.Done()) + go wait.Until(runWorker("reset iptables eip", c.resetIptablesEipQueue, c.handleResetIptablesEip), time.Second, ctx.Done()) + go wait.Until(runWorker("delete iptables eip", c.delIptablesEipQueue, c.handleDelIptablesEip), time.Second, ctx.Done()) - go wait.Until(c.runAddIptablesFipWorker, time.Second, ctx.Done()) - go wait.Until(c.runUpdateIptablesFipWorker, time.Second, ctx.Done()) - go wait.Until(c.runDelIptablesFipWorker, time.Second, ctx.Done()) + go wait.Until(runWorker("add iptables fip", c.addIptablesFipQueue, c.handleAddIptablesFip), time.Second, ctx.Done()) + go wait.Until(runWorker("update iptables fip", c.updateIptablesFipQueue, c.handleUpdateIptablesFip), time.Second, ctx.Done()) + go wait.Until(runWorker("delete iptables fip", c.delIptablesFipQueue, c.handleDelIptablesFip), time.Second, ctx.Done()) - go wait.Until(c.runAddIptablesDnatRuleWorker, time.Second, ctx.Done()) - go wait.Until(c.runUpdateIptablesDnatRuleWorker, time.Second, ctx.Done()) - go wait.Until(c.runDelIptablesDnatRuleWorker, time.Second, ctx.Done()) + go wait.Until(runWorker("add iptables dnat rule", c.addIptablesDnatRuleQueue, c.handleAddIptablesDnatRule), time.Second, ctx.Done()) + go wait.Until(runWorker("update iptables dnat rule", c.updateIptablesDnatRuleQueue, c.handleUpdateIptablesDnatRule), time.Second, ctx.Done()) + go wait.Until(runWorker("delete iptables dnat rule", c.delIptablesDnatRuleQueue, c.handleDelIptablesDnatRule), time.Second, ctx.Done()) - go wait.Until(c.runAddIptablesSnatRuleWorker, time.Second, ctx.Done()) - go wait.Until(c.runUpdateIptablesSnatRuleWorker, time.Second, ctx.Done()) - go wait.Until(c.runDelIptablesSnatRuleWorker, time.Second, ctx.Done()) + go wait.Until(runWorker("add iptables snat rule", c.addIptablesSnatRuleQueue, c.handleAddIptablesSnatRule), time.Second, ctx.Done()) + go wait.Until(runWorker("update iptables snat rule", c.updateIptablesSnatRuleQueue, c.handleUpdateIptablesSnatRule), time.Second, ctx.Done()) + go wait.Until(runWorker("delete iptables snat rule", c.delIptablesSnatRuleQueue, c.handleDelIptablesSnatRule), time.Second, ctx.Done()) - go wait.Until(c.runAddQoSPolicyWorker, time.Second, ctx.Done()) - go wait.Until(c.runUpdateQoSPolicyWorker, time.Second, ctx.Done()) - go wait.Until(c.runDelQoSPolicyWorker, time.Second, ctx.Done()) + go wait.Until(runWorker("add qos policy", c.addQoSPolicyQueue, c.handleAddQoSPolicy), time.Second, ctx.Done()) + go wait.Until(runWorker("update qos policy", c.updateQoSPolicyQueue, c.handleUpdateQoSPolicy), time.Second, ctx.Done()) + go wait.Until(runWorker("delete qos policy", c.delQoSPolicyQueue, c.handleDelQoSPolicy), time.Second, ctx.Done()) if c.config.EnableANP { - go wait.Until(c.runAddAnpWorker, time.Second, ctx.Done()) - go wait.Until(c.runUpdateAnpWorker, time.Second, ctx.Done()) - go wait.Until(c.runDeleteAnpWorker, time.Second, ctx.Done()) + go wait.Until(runWorker("add admin network policy", c.addAnpQueue, c.handleAddAnp), time.Second, ctx.Done()) + go wait.Until(runWorker("update admin network policy", c.updateAnpQueue, c.handleUpdateAnp), time.Second, ctx.Done()) + go wait.Until(runWorker("delete admin network policy", c.deleteAnpQueue, c.handleDeleteAnp), time.Second, ctx.Done()) - go wait.Until(c.runAddBanpWorker, time.Second, ctx.Done()) - go wait.Until(c.runUpdateBanpWorker, time.Second, ctx.Done()) - go wait.Until(c.runDeleteBanpWorker, time.Second, ctx.Done()) + go wait.Until(runWorker("add base admin network policy", c.addBanpQueue, c.handleAddBanp), time.Second, ctx.Done()) + go wait.Until(runWorker("update base admin network policy", c.updateBanpQueue, c.handleUpdateBanp), time.Second, ctx.Done()) + go wait.Until(runWorker("delete base admin network policy", c.deleteBanpQueue, c.handleDeleteBanp), time.Second, ctx.Done()) } } @@ -1269,3 +1292,52 @@ func (c *Controller) initResourceOnce() { util.LogFatalAndExit(err, "failed to run gc") } } + +func processNextWorkItem[T comparable](action string, queue workqueue.TypedRateLimitingInterface[T], handler func(T) error, getItemKey func(any) string) bool { + item, shutdown := queue.Get() + if shutdown { + return false + } + + err := func(item T) error { + defer queue.Done(item) + if err := handler(item); err != nil { + queue.AddRateLimited(item) + return fmt.Errorf("error syncing %s %q: %w, requeuing", action, getItemKey(item), err) + } + queue.Forget(item) + return nil + }(item) + if err != nil { + utilruntime.HandleError(err) + return true + } + return true +} + +func getWorkItemKey(obj any) string { + switch v := obj.(type) { + case string: + return v + case *vpcService: + return fmt.Sprintf("%s/%s", v.Svc.Namespace, v.Svc.Name) + case *AdminNetworkPolicyChangedDelta: + return v.key + case *SlrInfo: + return v.Name + default: + key, err := cache.MetaNamespaceKeyFunc(obj) + if err != nil { + utilruntime.HandleError(err) + return "" + } + return key + } +} + +func runWorker[T comparable](action string, queue workqueue.TypedRateLimitingInterface[T], handler func(T) error) func() { + return func() { + for processNextWorkItem(action, queue, handler, getWorkItemKey) { + } + } +} diff --git a/pkg/controller/controller_test.go b/pkg/controller/controller_test.go index 0523df0ab0f..5fb9005929c 100644 --- a/pkg/controller/controller_test.go +++ b/pkg/controller/controller_test.go @@ -5,11 +5,9 @@ import ( "github.com/stretchr/testify/require" "go.uber.org/mock/gomock" - "k8s.io/client-go/informers" coreinformers "k8s.io/client-go/informers/core/v1" "k8s.io/client-go/kubernetes/fake" - "k8s.io/client-go/util/workqueue" mockovs "github.com/kubeovn/kube-ovn/mocks/pkg/ovs" kubeovnfake "github.com/kubeovn/kube-ovn/pkg/client/clientset/versioned/fake" @@ -59,7 +57,7 @@ func newFakeController(t *testing.T) *fakeController { subnetsLister: subnetInformer.Lister(), subnetSynced: alwaysReady, OVNNbClient: mockOvnClient, - syncVirtualPortsQueue: workqueue.NewNamedRateLimitingQueue(workqueue.DefaultControllerRateLimiter(), ""), + syncVirtualPortsQueue: newTypedRateLimitingQueue[string]("SyncVirtualPort", nil), } ctrl.config = &Configuration{ diff --git a/pkg/controller/endpoint.go b/pkg/controller/endpoint.go index 058cdfda103..6a1ee045d09 100644 --- a/pkg/controller/endpoint.go +++ b/pkg/controller/endpoint.go @@ -55,46 +55,6 @@ func (c *Controller) enqueueUpdateEndpoint(oldObj, newObj interface{}) { c.addOrUpdateEndpointQueue.Add(key) } -func (c *Controller) runUpdateEndpointWorker() { - for c.processNextUpdateEndpointWorkItem() { - } -} - -func (c *Controller) processNextUpdateEndpointWorkItem() bool { - obj, shutdown := c.addOrUpdateEndpointQueue.Get() - - if shutdown { - return false - } - - if err := func(obj interface{}) error { - defer c.addOrUpdateEndpointQueue.Done(obj) - - var ( - key string - ok bool - err error - ) - - if key, ok = obj.(string); !ok { - c.addOrUpdateEndpointQueue.Forget(obj) - utilruntime.HandleError(fmt.Errorf("expected string in workqueue but got %#v", obj)) - return nil - } - - if err = c.handleUpdateEndpoint(key); err != nil { - c.addOrUpdateEndpointQueue.AddRateLimited(key) - return fmt.Errorf("error syncing '%s': %s, requeuing", key, err.Error()) - } - c.addOrUpdateEndpointQueue.Forget(obj) - return nil - }(obj); err != nil { - utilruntime.HandleError(err) - return true - } - return true -} - func (c *Controller) handleUpdateEndpoint(key string) error { namespace, name, err := cache.SplitMetaNamespaceKey(key) if err != nil { diff --git a/pkg/controller/ip.go b/pkg/controller/ip.go index a5b8623e331..46638347bf2 100644 --- a/pkg/controller/ip.go +++ b/pkg/controller/ip.go @@ -112,108 +112,6 @@ func (c *Controller) enqueueDelIP(obj interface{}) { c.delIPQueue.Add(ipObj) } -func (c *Controller) runAddIPWorker() { - for c.processNextAddIPWorkItem() { - } -} - -func (c *Controller) runUpdateIPWorker() { - for c.processNextUpdateIPWorkItem() { - } -} - -func (c *Controller) runDelIPWorker() { - for c.processNextDeleteIPWorkItem() { - } -} - -func (c *Controller) processNextAddIPWorkItem() bool { - obj, shutdown := c.addIPQueue.Get() - if shutdown { - return false - } - - err := func(obj interface{}) error { - defer c.addIPQueue.Done(obj) - var key string - var ok bool - if key, ok = obj.(string); !ok { - c.addIPQueue.Forget(obj) - utilruntime.HandleError(fmt.Errorf("expected string in workqueue but got %#v", obj)) - return nil - } - if err := c.handleAddReservedIP(key); err != nil { - c.addIPQueue.AddRateLimited(key) - return fmt.Errorf("error syncing '%s': %s, requeuing", key, err.Error()) - } - c.addIPQueue.Forget(obj) - return nil - }(obj) - if err != nil { - utilruntime.HandleError(err) - return true - } - return true -} - -func (c *Controller) processNextUpdateIPWorkItem() bool { - obj, shutdown := c.updateIPQueue.Get() - if shutdown { - return false - } - - err := func(obj interface{}) error { - defer c.updateIPQueue.Done(obj) - var key string - var ok bool - if key, ok = obj.(string); !ok { - c.updateIPQueue.Forget(obj) - utilruntime.HandleError(fmt.Errorf("expected string in workqueue but got %#v", obj)) - return nil - } - if err := c.handleUpdateIP(key); err != nil { - c.updateIPQueue.AddRateLimited(key) - return fmt.Errorf("error syncing '%s': %s, requeuing", key, err.Error()) - } - c.updateIPQueue.Forget(obj) - return nil - }(obj) - if err != nil { - utilruntime.HandleError(err) - return true - } - return true -} - -func (c *Controller) processNextDeleteIPWorkItem() bool { - obj, shutdown := c.delIPQueue.Get() - if shutdown { - return false - } - - err := func(obj interface{}) error { - defer c.delIPQueue.Done(obj) - var ip *kubeovnv1.IP - var ok bool - if ip, ok = obj.(*kubeovnv1.IP); !ok { - c.delIPQueue.Forget(obj) - utilruntime.HandleError(fmt.Errorf("expected ip in workqueue but got %#v", obj)) - return nil - } - if err := c.handleDelIP(ip); err != nil { - c.delIPQueue.AddRateLimited(obj) - return fmt.Errorf("error syncing '%s': %s, requeuing", ip.Name, err.Error()) - } - c.delIPQueue.Forget(obj) - return nil - }(obj) - if err != nil { - utilruntime.HandleError(err) - return true - } - return true -} - func (c *Controller) handleAddReservedIP(key string) error { ip, err := c.ipsLister.Get(key) if err != nil { diff --git a/pkg/controller/ippool.go b/pkg/controller/ippool.go index be72a7bbb29..77885b059da 100644 --- a/pkg/controller/ippool.go +++ b/pkg/controller/ippool.go @@ -2,7 +2,6 @@ package controller import ( "context" - "fmt" "reflect" corev1 "k8s.io/api/core/v1" @@ -29,13 +28,9 @@ func (c *Controller) enqueueAddIPPool(obj interface{}) { } func (c *Controller) enqueueDeleteIPPool(obj interface{}) { - key, err := cache.MetaNamespaceKeyFunc(obj) - if err != nil { - utilruntime.HandleError(err) - return - } - klog.V(3).Infof("enqueue delete ippool %s", key) - c.deleteIPPoolQueue.Add(obj) + ippool := obj.(*kubeovnv1.IPPool) + klog.V(3).Infof("enqueue delete ippool %s", ippool.Name) + c.deleteIPPoolQueue.Add(ippool) } func (c *Controller) enqueueUpdateIPPool(oldObj, newObj interface{}) { @@ -54,105 +49,6 @@ func (c *Controller) enqueueUpdateIPPool(oldObj, newObj interface{}) { } } -func (c *Controller) runAddIPPoolWorker() { - for c.processNextAddIPPoolWorkItem() { - } -} - -func (c *Controller) runUpdateIPPoolStatusWorker() { - for c.processNextUpdateIPPoolStatusWorkItem() { - } -} - -func (c *Controller) runDeleteIPPoolWorker() { - for c.processNextDeleteIPPoolWorkItem() { - } -} - -func (c *Controller) processNextAddIPPoolWorkItem() bool { - obj, shutdown := c.addOrUpdateIPPoolQueue.Get() - if shutdown { - return false - } - - err := func(obj interface{}) error { - defer c.addOrUpdateIPPoolQueue.Done(obj) - key, ok := obj.(string) - if !ok { - c.addOrUpdateIPPoolQueue.Forget(obj) - utilruntime.HandleError(fmt.Errorf("expected string in workqueue but got %#v", obj)) - return nil - } - if err := c.handleAddOrUpdateIPPool(key); err != nil { - c.addOrUpdateIPPoolQueue.AddRateLimited(key) - return fmt.Errorf("error syncing ippool %q: %s, requeuing", key, err.Error()) - } - c.addOrUpdateIPPoolQueue.Forget(obj) - return nil - }(obj) - if err != nil { - utilruntime.HandleError(err) - return true - } - return true -} - -func (c *Controller) processNextUpdateIPPoolStatusWorkItem() bool { - obj, shutdown := c.updateIPPoolStatusQueue.Get() - if shutdown { - return false - } - - err := func(obj interface{}) error { - defer c.updateIPPoolStatusQueue.Done(obj) - var key string - var ok bool - if key, ok = obj.(string); !ok { - c.updateIPPoolStatusQueue.Forget(obj) - utilruntime.HandleError(fmt.Errorf("expected string in workqueue but got %#v", obj)) - return nil - } - if err := c.handleUpdateIPPoolStatus(key); err != nil { - c.updateIPPoolStatusQueue.AddRateLimited(key) - return fmt.Errorf("error syncing '%s': %s, requeuing", key, err.Error()) - } - return nil - }(obj) - if err != nil { - utilruntime.HandleError(err) - return true - } - return true -} - -func (c *Controller) processNextDeleteIPPoolWorkItem() bool { - obj, shutdown := c.deleteIPPoolQueue.Get() - if shutdown { - return false - } - - err := func(obj interface{}) error { - defer c.deleteIPPoolQueue.Done(obj) - ippool, ok := obj.(*kubeovnv1.IPPool) - if !ok { - c.deleteIPPoolQueue.Forget(obj) - utilruntime.HandleError(fmt.Errorf("expected ippool in workqueue but got %#v", obj)) - return nil - } - if err := c.handleDeleteIPPool(ippool); err != nil { - c.deleteIPPoolQueue.AddRateLimited(obj) - return fmt.Errorf("error syncing ippool %q: %s, requeuing", ippool.Name, err.Error()) - } - c.deleteIPPoolQueue.Forget(obj) - return nil - }(obj) - if err != nil { - utilruntime.HandleError(err) - return true - } - return true -} - func (c *Controller) handleAddOrUpdateIPPool(key string) error { c.ippoolKeyMutex.LockKey(key) defer func() { _ = c.ippoolKeyMutex.UnlockKey(key) }() diff --git a/pkg/controller/namespace.go b/pkg/controller/namespace.go index b875b555a28..97c0c27a416 100644 --- a/pkg/controller/namespace.go +++ b/pkg/controller/namespace.go @@ -2,7 +2,6 @@ package controller import ( "context" - "fmt" "reflect" "slices" "strings" @@ -77,42 +76,6 @@ func (c *Controller) enqueueUpdateNamespace(oldObj, newObj interface{}) { } } -func (c *Controller) runAddNamespaceWorker() { - for c.processNextAddNamespaceWorkItem() { - } -} - -func (c *Controller) processNextAddNamespaceWorkItem() bool { - obj, shutdown := c.addNamespaceQueue.Get() - - if shutdown { - return false - } - - err := func(obj interface{}) error { - defer c.addNamespaceQueue.Done(obj) - var key string - var ok bool - if key, ok = obj.(string); !ok { - c.addNamespaceQueue.Forget(obj) - utilruntime.HandleError(fmt.Errorf("expected string in workqueue but got %#v", obj)) - return nil - } - if err := c.handleAddNamespace(key); err != nil { - c.addNamespaceQueue.AddRateLimited(key) - return fmt.Errorf("error syncing '%s': %s, requeuing", key, err.Error()) - } - c.addNamespaceQueue.Forget(obj) - return nil - }(obj) - if err != nil { - utilruntime.HandleError(err) - return true - } - - return true -} - func (c *Controller) handleAddNamespace(key string) error { c.nsKeyMutex.LockKey(key) defer func() { _ = c.nsKeyMutex.UnlockKey(key) }() diff --git a/pkg/controller/network_policy.go b/pkg/controller/network_policy.go index 1c674f5ec2a..7a935a618a2 100644 --- a/pkg/controller/network_policy.go +++ b/pkg/controller/network_policy.go @@ -63,76 +63,6 @@ func (c *Controller) enqueueUpdateNp(oldObj, newObj interface{}) { } } -func (c *Controller) runUpdateNpWorker() { - for c.processNextUpdateNpWorkItem() { - } -} - -func (c *Controller) runDeleteNpWorker() { - for c.processNextDeleteNpWorkItem() { - } -} - -func (c *Controller) processNextUpdateNpWorkItem() bool { - obj, shutdown := c.updateNpQueue.Get() - - if shutdown { - return false - } - - err := func(obj interface{}) error { - defer c.updateNpQueue.Done(obj) - var key string - var ok bool - if key, ok = obj.(string); !ok { - c.updateNpQueue.Forget(obj) - utilruntime.HandleError(fmt.Errorf("expected string in workqueue but got %#v", obj)) - return nil - } - if err := c.handleUpdateNp(key); err != nil { - c.updateNpQueue.AddRateLimited(key) - return fmt.Errorf("error syncing network policy %s: %w, requeuing", key, err) - } - c.updateNpQueue.Forget(obj) - return nil - }(obj) - if err != nil { - utilruntime.HandleError(err) - return true - } - return true -} - -func (c *Controller) processNextDeleteNpWorkItem() bool { - obj, shutdown := c.deleteNpQueue.Get() - - if shutdown { - return false - } - - err := func(obj interface{}) error { - defer c.deleteNpQueue.Done(obj) - var key string - var ok bool - if key, ok = obj.(string); !ok { - c.deleteNpQueue.Forget(obj) - utilruntime.HandleError(fmt.Errorf("expected string in workqueue but got %#v", obj)) - return nil - } - if err := c.handleDeleteNp(key); err != nil { - c.deleteNpQueue.AddRateLimited(key) - return fmt.Errorf("error syncing '%s': %s, requeuing", key, err.Error()) - } - c.deleteNpQueue.Forget(obj) - return nil - }(obj) - if err != nil { - utilruntime.HandleError(err) - return true - } - return true -} - func (c *Controller) createAsForNetpol(ns, name, direction, asName string, addresses []string) error { if err := c.OVNNbClient.CreateAddressSet(asName, map[string]string{ networkPolicyKey: fmt.Sprintf("%s/%s/%s", ns, name, direction), diff --git a/pkg/controller/node.go b/pkg/controller/node.go index c65731783d9..ce3f2cda145 100644 --- a/pkg/controller/node.go +++ b/pkg/controller/node.go @@ -86,116 +86,10 @@ func (c *Controller) enqueueDeleteNode(obj interface{}) { } klog.V(3).Infof("enqueue delete node %s", key) - n := obj.(*v1.Node) - c.deletingNodeObjMap.Store(key, n) + c.deletingNodeObjMap.Store(key, obj.(*v1.Node)) c.deleteNodeQueue.Add(key) } -func (c *Controller) runAddNodeWorker() { - for c.processNextAddNodeWorkItem() { - } -} - -func (c *Controller) runUpdateNodeWorker() { - for c.processNextUpdateNodeWorkItem() { - } -} - -func (c *Controller) runDeleteNodeWorker() { - for c.processNextDeleteNodeWorkItem() { - } -} - -func (c *Controller) processNextAddNodeWorkItem() bool { - obj, shutdown := c.addNodeQueue.Get() - if shutdown { - return false - } - - err := func(obj interface{}) error { - defer c.addNodeQueue.Done(obj) - var key string - var ok bool - if key, ok = obj.(string); !ok { - c.addNodeQueue.Forget(obj) - utilruntime.HandleError(fmt.Errorf("expected string in workqueue but got %#v", obj)) - return nil - } - if err := c.handleAddNode(key); err != nil { - c.addNodeQueue.AddRateLimited(key) - return fmt.Errorf("error syncing '%s': %s, requeuing", key, err.Error()) - } - c.addNodeQueue.Forget(obj) - return nil - }(obj) - if err != nil { - utilruntime.HandleError(err) - return true - } - return true -} - -func (c *Controller) processNextUpdateNodeWorkItem() bool { - obj, shutdown := c.updateNodeQueue.Get() - - if shutdown { - return false - } - - err := func(obj interface{}) error { - defer c.updateNodeQueue.Done(obj) - var key string - var ok bool - if key, ok = obj.(string); !ok { - c.updateNodeQueue.Forget(obj) - utilruntime.HandleError(fmt.Errorf("expected string in workqueue but got %#v", obj)) - return nil - } - if err := c.handleUpdateNode(key); err != nil { - c.updateNodeQueue.AddRateLimited(key) - return fmt.Errorf("error syncing '%s': %s, requeuing", key, err.Error()) - } - c.updateNodeQueue.Forget(obj) - return nil - }(obj) - if err != nil { - utilruntime.HandleError(err) - return true - } - return true -} - -func (c *Controller) processNextDeleteNodeWorkItem() bool { - obj, shutdown := c.deleteNodeQueue.Get() - - if shutdown { - return false - } - - err := func(obj interface{}) error { - defer c.deleteNodeQueue.Done(obj) - var key string - var ok bool - if key, ok = obj.(string); !ok { - c.deleteNodeQueue.Forget(obj) - utilruntime.HandleError(fmt.Errorf("expected string in workqueue but got %#v", obj)) - return nil - } - if err := c.handleDeleteNode(key); err != nil { - c.deleteNodeQueue.AddRateLimited(key) - return fmt.Errorf("error syncing '%s': %s, requeuing", key, err.Error()) - } - c.deleteNodeQueue.Forget(obj) - c.deletingNodeObjMap.Delete(key) - return nil - }(obj) - if err != nil { - utilruntime.HandleError(err) - return true - } - return true -} - func nodeUnderlayAddressSetName(node string, af int) string { return fmt.Sprintf("node_%s_underlay_v%d", strings.ReplaceAll(node, "-", "_"), af) } @@ -470,16 +364,20 @@ func (c *Controller) handleNodeAnnotationsForProviderNetworks(node *v1.Node) err return nil } -func (c *Controller) handleDeleteNode(key string) error { +func (c *Controller) handleDeleteNode(key string) (err error) { c.nodeKeyMutex.LockKey(key) - defer func() { _ = c.nodeKeyMutex.UnlockKey(key) }() + defer func() { + _ = c.nodeKeyMutex.UnlockKey(key) + if err == nil { + c.deletingNodeObjMap.Delete(key) + } + }() klog.Infof("handle delete node %s", key) - nodeObj, ok := c.deletingNodeObjMap.Load(key) + node, ok := c.deletingNodeObjMap.Load(key) if !ok { return nil } - node := nodeObj.(*v1.Node) n, _ := c.nodesLister.Get(key) if n != nil && n.UID != node.UID { klog.Warningf("Node %s is adding, skip the node delete handler, but it may leave some gc resources behind", key) diff --git a/pkg/controller/ovn_dnat.go b/pkg/controller/ovn_dnat.go index 8ca4c29a641..fe8909d5099 100644 --- a/pkg/controller/ovn_dnat.go +++ b/pkg/controller/ovn_dnat.go @@ -84,108 +84,6 @@ func (c *Controller) enqueueDelOvnDnatRule(obj interface{}) { c.delOvnDnatRuleQueue.Add(key) } -func (c *Controller) runAddOvnDnatRuleWorker() { - for c.processNextAddOvnDnatRuleWorkItem() { - } -} - -func (c *Controller) runUpdateOvnDnatRuleWorker() { - for c.processNextUpdateOvnDnatRuleWorkItem() { - } -} - -func (c *Controller) runDelOvnDnatRuleWorker() { - for c.processNextDeleteOvnDnatRuleWorkItem() { - } -} - -func (c *Controller) processNextAddOvnDnatRuleWorkItem() bool { - obj, shutdown := c.addOvnDnatRuleQueue.Get() - if shutdown { - return false - } - - err := func(obj interface{}) error { - defer c.addOvnDnatRuleQueue.Done(obj) - var key string - var ok bool - if key, ok = obj.(string); !ok { - c.addOvnDnatRuleQueue.Forget(obj) - utilruntime.HandleError(fmt.Errorf("expected string in workqueue but got %#v", obj)) - return nil - } - if err := c.handleAddOvnDnatRule(key); err != nil { - c.addOvnDnatRuleQueue.AddRateLimited(key) - return fmt.Errorf("error syncing '%s': %s, requeuing", key, err.Error()) - } - c.addOvnDnatRuleQueue.Forget(obj) - return nil - }(obj) - if err != nil { - utilruntime.HandleError(err) - return true - } - return true -} - -func (c *Controller) processNextUpdateOvnDnatRuleWorkItem() bool { - obj, shutdown := c.updateOvnDnatRuleQueue.Get() - if shutdown { - return false - } - - err := func(obj interface{}) error { - defer c.updateOvnDnatRuleQueue.Done(obj) - var key string - var ok bool - if key, ok = obj.(string); !ok { - c.updateOvnDnatRuleQueue.Forget(obj) - utilruntime.HandleError(fmt.Errorf("expected string in workqueue but got %#v", obj)) - return nil - } - if err := c.handleUpdateOvnDnatRule(key); err != nil { - c.updateOvnDnatRuleQueue.AddRateLimited(key) - return fmt.Errorf("error syncing '%s': %s, requeuing", key, err.Error()) - } - c.updateOvnDnatRuleQueue.Forget(obj) - return nil - }(obj) - if err != nil { - utilruntime.HandleError(err) - return true - } - return true -} - -func (c *Controller) processNextDeleteOvnDnatRuleWorkItem() bool { - obj, shutdown := c.delOvnDnatRuleQueue.Get() - if shutdown { - return false - } - - err := func(obj interface{}) error { - defer c.delOvnDnatRuleQueue.Done(obj) - var key string - var ok bool - if key, ok = obj.(string); !ok { - c.delOvnDnatRuleQueue.Forget(obj) - utilruntime.HandleError(fmt.Errorf("expected string in workqueue but got %#v", obj)) - return nil - } - if err := c.handleDelOvnDnatRule(key); err != nil { - c.delOvnDnatRuleQueue.AddRateLimited(key) - return fmt.Errorf("error syncing '%s': %s, requeuing", key, err.Error()) - } - c.delOvnDnatRuleQueue.Forget(obj) - return nil - }(obj) - if err != nil { - utilruntime.HandleError(err) - return true - } - return true -} - func (c *Controller) isOvnDnatDuplicated(eipName, dnatName, externalPort string) error { // check if eip:external port already used dnats, err := c.ovnDnatRulesLister.List(labels.SelectorFromSet(labels.Set{ diff --git a/pkg/controller/ovn_eip.go b/pkg/controller/ovn_eip.go index c6e3df96a53..65400ca3355 100644 --- a/pkg/controller/ovn_eip.go +++ b/pkg/controller/ovn_eip.go @@ -75,138 +75,6 @@ func (c *Controller) enqueueDelOvnEip(obj interface{}) { c.delOvnEipQueue.Add(key) } -func (c *Controller) runAddOvnEipWorker() { - for c.processNextAddOvnEipWorkItem() { - } -} - -func (c *Controller) runUpdateOvnEipWorker() { - for c.processNextUpdateOvnEipWorkItem() { - } -} - -func (c *Controller) runResetOvnEipWorker() { - for c.processNextResetOvnEipWorkItem() { - } -} - -func (c *Controller) runDelOvnEipWorker() { - for c.processNextDeleteOvnEipWorkItem() { - } -} - -func (c *Controller) processNextAddOvnEipWorkItem() bool { - obj, shutdown := c.addOvnEipQueue.Get() - if shutdown { - return false - } - err := func(obj interface{}) error { - defer c.addOvnEipQueue.Done(obj) - var key string - var ok bool - if key, ok = obj.(string); !ok { - c.addOvnEipQueue.Forget(obj) - utilruntime.HandleError(fmt.Errorf("expected string in workqueue but got %#v", obj)) - return nil - } - if err := c.handleAddOvnEip(key); err != nil { - c.addOvnEipQueue.AddRateLimited(key) - return fmt.Errorf("error syncing '%s': %s, requeuing", key, err.Error()) - } - c.addOvnEipQueue.Forget(obj) - return nil - }(obj) - if err != nil { - utilruntime.HandleError(err) - return true - } - return true -} - -func (c *Controller) processNextUpdateOvnEipWorkItem() bool { - obj, shutdown := c.updateOvnEipQueue.Get() - if shutdown { - return false - } - err := func(obj interface{}) error { - defer c.updateOvnEipQueue.Done(obj) - var key string - var ok bool - if key, ok = obj.(string); !ok { - c.updateOvnEipQueue.Forget(obj) - utilruntime.HandleError(fmt.Errorf("expected string in workqueue but got %#v", obj)) - return nil - } - if err := c.handleUpdateOvnEip(key); err != nil { - c.updateOvnEipQueue.AddRateLimited(key) - return fmt.Errorf("error syncing '%s': %s, requeuing", key, err.Error()) - } - c.updateOvnEipQueue.Forget(obj) - return nil - }(obj) - if err != nil { - utilruntime.HandleError(err) - return true - } - return true -} - -func (c *Controller) processNextResetOvnEipWorkItem() bool { - obj, shutdown := c.resetOvnEipQueue.Get() - if shutdown { - return false - } - err := func(obj interface{}) error { - defer c.resetOvnEipQueue.Done(obj) - var key string - var ok bool - if key, ok = obj.(string); !ok { - c.resetOvnEipQueue.Forget(obj) - utilruntime.HandleError(fmt.Errorf("expected string in workqueue but got %#v", obj)) - return nil - } - if err := c.handleResetOvnEip(key); err != nil { - c.resetOvnEipQueue.AddRateLimited(key) - return fmt.Errorf("error syncing '%s': %s, requeuing", key, err.Error()) - } - c.resetOvnEipQueue.Forget(obj) - return nil - }(obj) - if err != nil { - utilruntime.HandleError(err) - return true - } - return true -} - -func (c *Controller) processNextDeleteOvnEipWorkItem() bool { - obj, shutdown := c.delOvnEipQueue.Get() - if shutdown { - return false - } - err := func(obj interface{}) error { - defer c.delOvnEipQueue.Done(obj) - var key string - var ok bool - if key, ok = obj.(string); !ok { - c.delOvnEipQueue.Forget(obj) - utilruntime.HandleError(fmt.Errorf("expected ovn eip in workqueue but got %#v", obj)) - return nil - } - if err := c.handleDelOvnEip(key); err != nil { - c.delOvnEipQueue.AddRateLimited(key) - return fmt.Errorf("error syncing '%s': %s, requeuing", key, err.Error()) - } - c.delOvnEipQueue.Forget(obj) - return nil - }(obj) - if err != nil { - utilruntime.HandleError(err) - return true - } - return true -} - func (c *Controller) handleAddOvnEip(key string) error { cachedEip, err := c.ovnEipsLister.Get(key) if err != nil { diff --git a/pkg/controller/ovn_fip.go b/pkg/controller/ovn_fip.go index 04c816ab3fd..0f3c7cfda69 100644 --- a/pkg/controller/ovn_fip.go +++ b/pkg/controller/ovn_fip.go @@ -75,106 +75,6 @@ func (c *Controller) enqueueDelOvnFip(obj interface{}) { c.delOvnFipQueue.Add(key) } -func (c *Controller) runAddOvnFipWorker() { - for c.processNextAddOvnFipWorkItem() { - } -} - -func (c *Controller) runUpdateOvnFipWorker() { - for c.processNextUpdateOvnFipWorkItem() { - } -} - -func (c *Controller) runDelOvnFipWorker() { - for c.processNextDeleteOvnFipWorkItem() { - } -} - -func (c *Controller) processNextAddOvnFipWorkItem() bool { - obj, shutdown := c.addOvnFipQueue.Get() - if shutdown { - return false - } - err := func(obj interface{}) error { - defer c.addOvnFipQueue.Done(obj) - var key string - var ok bool - if key, ok = obj.(string); !ok { - c.addOvnFipQueue.Forget(obj) - utilruntime.HandleError(fmt.Errorf("expected string in workqueue but got %#v", obj)) - return nil - } - if err := c.handleAddOvnFip(key); err != nil { - c.addOvnFipQueue.AddRateLimited(key) - return fmt.Errorf("error syncing '%s': %s, requeuing", key, err.Error()) - } - c.addOvnFipQueue.Forget(obj) - return nil - }(obj) - if err != nil { - utilruntime.HandleError(err) - return true - } - return true -} - -func (c *Controller) processNextUpdateOvnFipWorkItem() bool { - obj, shutdown := c.updateOvnFipQueue.Get() - if shutdown { - return false - } - - err := func(obj interface{}) error { - defer c.updateOvnFipQueue.Done(obj) - var key string - var ok bool - if key, ok = obj.(string); !ok { - c.updateOvnFipQueue.Forget(obj) - utilruntime.HandleError(fmt.Errorf("expected string in workqueue but got %#v", obj)) - return nil - } - if err := c.handleUpdateOvnFip(key); err != nil { - c.updateOvnFipQueue.AddRateLimited(key) - return fmt.Errorf("error syncing '%s': %s, requeuing", key, err.Error()) - } - c.updateOvnFipQueue.Forget(obj) - return nil - }(obj) - if err != nil { - utilruntime.HandleError(err) - return true - } - return true -} - -func (c *Controller) processNextDeleteOvnFipWorkItem() bool { - obj, shutdown := c.delOvnFipQueue.Get() - if shutdown { - return false - } - err := func(obj interface{}) error { - defer c.delOvnFipQueue.Done(obj) - var key string - var ok bool - if key, ok = obj.(string); !ok { - c.delOvnFipQueue.Forget(obj) - utilruntime.HandleError(fmt.Errorf("expected fip in workqueue but got %#v", obj)) - return nil - } - if err := c.handleDelOvnFip(key); err != nil { - c.delOvnFipQueue.AddRateLimited(key) - return fmt.Errorf("error syncing '%s': %s, requeuing", key, err.Error()) - } - c.delOvnFipQueue.Forget(obj) - return nil - }(obj) - if err != nil { - utilruntime.HandleError(err) - return true - } - return true -} - func (c *Controller) isOvnFipDuplicated(fipName, eipV4IP string) error { // check if has another fip using this eip already selector := labels.SelectorFromSet(labels.Set{util.EipV4IpLabel: eipV4IP}) diff --git a/pkg/controller/ovn_snat.go b/pkg/controller/ovn_snat.go index db3c01cf0df..6296c0d9523 100644 --- a/pkg/controller/ovn_snat.go +++ b/pkg/controller/ovn_snat.go @@ -72,108 +72,6 @@ func (c *Controller) enqueueDelOvnSnatRule(obj interface{}) { c.delOvnSnatRuleQueue.Add(key) } -func (c *Controller) runAddOvnSnatRuleWorker() { - for c.processNextAddOvnSnatRuleWorkItem() { - } -} - -func (c *Controller) runUpdateOvnSnatRuleWorker() { - for c.processNextUpdateOvnSnatRuleWorkItem() { - } -} - -func (c *Controller) runDelOvnSnatRuleWorker() { - for c.processNextDeleteOvnSnatRuleWorkItem() { - } -} - -func (c *Controller) processNextAddOvnSnatRuleWorkItem() bool { - obj, shutdown := c.addOvnSnatRuleQueue.Get() - if shutdown { - return false - } - - err := func(obj interface{}) error { - defer c.addOvnSnatRuleQueue.Done(obj) - var key string - var ok bool - if key, ok = obj.(string); !ok { - c.addOvnSnatRuleQueue.Forget(obj) - utilruntime.HandleError(fmt.Errorf("expected string in workqueue but got %#v", obj)) - return nil - } - if err := c.handleAddOvnSnatRule(key); err != nil { - c.addOvnSnatRuleQueue.AddRateLimited(key) - return fmt.Errorf("error syncing '%s': %s, requeuing", key, err.Error()) - } - c.addOvnSnatRuleQueue.Forget(obj) - return nil - }(obj) - if err != nil { - utilruntime.HandleError(err) - return true - } - return true -} - -func (c *Controller) processNextUpdateOvnSnatRuleWorkItem() bool { - obj, shutdown := c.updateOvnSnatRuleQueue.Get() - if shutdown { - return false - } - - err := func(obj interface{}) error { - defer c.updateOvnSnatRuleQueue.Done(obj) - var key string - var ok bool - if key, ok = obj.(string); !ok { - c.updateOvnSnatRuleQueue.Forget(obj) - utilruntime.HandleError(fmt.Errorf("expected string in workqueue but got %#v", obj)) - return nil - } - if err := c.handleUpdateOvnSnatRule(key); err != nil { - c.updateOvnSnatRuleQueue.AddRateLimited(key) - return fmt.Errorf("error syncing '%s': %s, requeuing", key, err.Error()) - } - c.updateOvnSnatRuleQueue.Forget(obj) - return nil - }(obj) - if err != nil { - utilruntime.HandleError(err) - return true - } - return true -} - -func (c *Controller) processNextDeleteOvnSnatRuleWorkItem() bool { - obj, shutdown := c.delOvnSnatRuleQueue.Get() - if shutdown { - return false - } - - err := func(obj interface{}) error { - defer c.delOvnSnatRuleQueue.Done(obj) - var key string - var ok bool - if key, ok = obj.(string); !ok { - c.delOvnSnatRuleQueue.Forget(obj) - utilruntime.HandleError(fmt.Errorf("expected snat in workqueue but got %#v", obj)) - return nil - } - if err := c.handleDelOvnSnatRule(key); err != nil { - c.delOvnSnatRuleQueue.AddRateLimited(key) - return fmt.Errorf("error syncing '%s': %s, requeuing", key, err.Error()) - } - c.delOvnSnatRuleQueue.Forget(obj) - return nil - }(obj) - if err != nil { - utilruntime.HandleError(err) - return true - } - return true -} - func (c *Controller) handleAddOvnSnatRule(key string) error { cachedSnat, err := c.ovnSnatRulesLister.Get(key) if err != nil { diff --git a/pkg/controller/pod.go b/pkg/controller/pod.go index 2d5603e193d..2934558d8ea 100644 --- a/pkg/controller/pod.go +++ b/pkg/controller/pod.go @@ -412,125 +412,6 @@ func (c *Controller) enqueueUpdatePod(oldObj, newObj interface{}) { } } -func (c *Controller) runAddOrUpdatePodWorker() { - for c.processNextAddOrUpdatePodWorkItem() { - } -} - -func (c *Controller) runDeletePodWorker() { - for c.processNextDeletePodWorkItem() { - } -} - -func (c *Controller) runUpdatePodSecurityWorker() { - for c.processNextUpdatePodSecurityWorkItem() { - } -} - -func (c *Controller) processNextAddOrUpdatePodWorkItem() bool { - obj, shutdown := c.addOrUpdatePodQueue.Get() - if shutdown { - return false - } - now := time.Now() - - err := func(obj interface{}) error { - defer c.addOrUpdatePodQueue.Done(obj) - var key string - var ok bool - if key, ok = obj.(string); !ok { - c.addOrUpdatePodQueue.Forget(obj) - utilruntime.HandleError(fmt.Errorf("expected string in workqueue but got %#v", obj)) - return nil - } - if err := c.handleAddOrUpdatePod(key); err != nil { - c.addOrUpdatePodQueue.AddRateLimited(key) - return fmt.Errorf("error syncing '%s': %s, requeuing", key, err.Error()) - } - last := time.Since(now) - klog.Infof("take %d ms to handle sync pod %s", last.Milliseconds(), key) - c.addOrUpdatePodQueue.Forget(obj) - return nil - }(obj) - if err != nil { - utilruntime.HandleError(err) - return true - } - return true -} - -func (c *Controller) processNextDeletePodWorkItem() bool { - obj, shutdown := c.deletePodQueue.Get() - - if shutdown { - return false - } - - now := time.Now() - err := func(obj interface{}) error { - defer c.deletePodQueue.Done(obj) - var key string - var ok bool - if key, ok = obj.(string); !ok { - c.deletePodQueue.Forget(obj) - utilruntime.HandleError(fmt.Errorf("expected string in workqueue but got %#v", obj)) - return nil - } - if _, ok := c.deletingPodObjMap.Load(key); !ok { - return nil - } - - if err := c.handleDeletePod(key); err != nil { - c.deletePodQueue.AddRateLimited(key) - return fmt.Errorf("error syncing '%s': %s, requeuing", key, err.Error()) - } - c.deletePodQueue.Forget(obj) - last := time.Since(now) - klog.Infof("take %d ms to handle delete pod %s", last.Milliseconds(), key) - // gc pod obj in c.deletingPodObjMap - go func() { - time.Sleep(5 * time.Minute) - c.deletingPodObjMap.Delete(key) - }() - return nil - }(obj) - if err != nil { - utilruntime.HandleError(err) - return true - } - return true -} - -func (c *Controller) processNextUpdatePodSecurityWorkItem() bool { - obj, shutdown := c.updatePodSecurityQueue.Get() - - if shutdown { - return false - } - - err := func(obj interface{}) error { - defer c.updatePodSecurityQueue.Done(obj) - var key string - var ok bool - if key, ok = obj.(string); !ok { - c.updatePodSecurityQueue.Forget(obj) - utilruntime.HandleError(fmt.Errorf("expected string in workqueue but got %#v", obj)) - return nil - } - if err := c.handleUpdatePodSecurity(key); err != nil { - c.updatePodSecurityQueue.AddRateLimited(key) - return fmt.Errorf("error syncing '%s': %s, requeuing", key, err.Error()) - } - c.updatePodSecurityQueue.Forget(obj) - return nil - }(obj) - if err != nil { - utilruntime.HandleError(err) - return true - } - return true -} - func (c *Controller) getPodKubeovnNets(pod *v1.Pod) ([]*kubeovnNet, error) { defaultSubnet, err := c.getPodDefaultSubnet(pod) if err != nil { @@ -1023,15 +904,19 @@ func (c *Controller) reconcileRouteSubnets(cachedPod, pod *v1.Pod, needRoutePodN return nil } -func (c *Controller) handleDeletePod(key string) error { - podObj, ok := c.deletingPodObjMap.Load(key) +func (c *Controller) handleDeletePod(key string) (err error) { + pod, ok := c.deletingPodObjMap.Load(key) if !ok { return nil } - pod := podObj.(*v1.Pod) podName := c.getNameByPod(pod) c.podKeyMutex.LockKey(key) - defer func() { _ = c.podKeyMutex.UnlockKey(key) }() + defer func() { + _ = c.podKeyMutex.UnlockKey(key) + if err == nil { + c.deletingPodObjMap.Delete(key) + } + }() klog.Infof("handle delete pod %s", key) p, _ := c.podsLister.Pods(pod.Namespace).Get(pod.Name) diff --git a/pkg/controller/qos_policy.go b/pkg/controller/qos_policy.go index 7a2e31d7539..9cccb334a0e 100644 --- a/pkg/controller/qos_policy.go +++ b/pkg/controller/qos_policy.go @@ -78,108 +78,6 @@ func (c *Controller) enqueueDelQoSPolicy(obj interface{}) { c.delQoSPolicyQueue.Add(key) } -func (c *Controller) runAddQoSPolicyWorker() { - for c.processNextAddQoSPolicyWorkItem() { - } -} - -func (c *Controller) runUpdateQoSPolicyWorker() { - for c.processNextUpdateQoSPolicyWorkItem() { - } -} - -func (c *Controller) runDelQoSPolicyWorker() { - for c.processNextDeleteQoSPolicyWorkItem() { - } -} - -func (c *Controller) processNextAddQoSPolicyWorkItem() bool { - obj, shutdown := c.addQoSPolicyQueue.Get() - if shutdown { - return false - } - - err := func(obj interface{}) error { - defer c.addQoSPolicyQueue.Done(obj) - var key string - var ok bool - if key, ok = obj.(string); !ok { - c.addQoSPolicyQueue.Forget(obj) - utilruntime.HandleError(fmt.Errorf("expected string in workqueue but got %#v", obj)) - return nil - } - if err := c.handleAddQoSPolicy(key); err != nil { - c.addQoSPolicyQueue.AddRateLimited(key) - return fmt.Errorf("error syncing '%s': %s, requeuing", key, err.Error()) - } - c.addQoSPolicyQueue.Forget(obj) - return nil - }(obj) - if err != nil { - utilruntime.HandleError(err) - return true - } - return true -} - -func (c *Controller) processNextUpdateQoSPolicyWorkItem() bool { - obj, shutdown := c.updateQoSPolicyQueue.Get() - if shutdown { - return false - } - - err := func(obj interface{}) error { - defer c.updateQoSPolicyQueue.Done(obj) - var key string - var ok bool - if key, ok = obj.(string); !ok { - c.updateQoSPolicyQueue.Forget(obj) - utilruntime.HandleError(fmt.Errorf("expected string in workqueue but got %#v", obj)) - return nil - } - if err := c.handleUpdateQoSPolicy(key); err != nil { - c.updateQoSPolicyQueue.AddRateLimited(key) - return fmt.Errorf("error syncing '%s': %s, requeuing", key, err.Error()) - } - c.updateQoSPolicyQueue.Forget(obj) - return nil - }(obj) - if err != nil { - utilruntime.HandleError(err) - return true - } - return true -} - -func (c *Controller) processNextDeleteQoSPolicyWorkItem() bool { - obj, shutdown := c.delQoSPolicyQueue.Get() - if shutdown { - return false - } - - err := func(obj interface{}) error { - defer c.delQoSPolicyQueue.Done(obj) - var key string - var ok bool - if key, ok = obj.(string); !ok { - c.delQoSPolicyQueue.Forget(obj) - utilruntime.HandleError(fmt.Errorf("expected qos in workqueue but got %#v", obj)) - return nil - } - if err := c.handleDelQoSPolicy(key); err != nil { - c.delQoSPolicyQueue.AddRateLimited(key) - return fmt.Errorf("error syncing '%s': %s, requeuing", key, err.Error()) - } - c.delQoSPolicyQueue.Forget(obj) - return nil - }(obj) - if err != nil { - utilruntime.HandleError(err) - return true - } - return true -} - func (c *Controller) handleAddQoSPolicy(key string) error { cachedQoS, err := c.qosPoliciesLister.Get(key) if err != nil { diff --git a/pkg/controller/security_group.go b/pkg/controller/security_group.go index 1ff90add01e..1149fc26773 100644 --- a/pkg/controller/security_group.go +++ b/pkg/controller/security_group.go @@ -62,110 +62,6 @@ func (c *Controller) enqueueDeleteSg(obj interface{}) { c.delSgQueue.Add(key) } -func (c *Controller) runAddSgWorker() { - for c.processNextAddOrUpdateSgWorkItem() { - } -} - -func (c *Controller) runDelSgWorker() { - for c.processNextDeleteSgWorkItem() { - } -} - -func (c *Controller) runSyncSgPortsWorker() { - for c.processNextSyncSgPortsWorkItem() { - } -} - -func (c *Controller) processNextSyncSgPortsWorkItem() bool { - obj, shutdown := c.syncSgPortsQueue.Get() - if shutdown { - return false - } - - err := func(obj interface{}) error { - defer c.syncSgPortsQueue.Done(obj) - var key string - var ok bool - if key, ok = obj.(string); !ok { - c.syncSgPortsQueue.Forget(obj) - utilruntime.HandleError(fmt.Errorf("expected string in workqueue but got %#v", obj)) - return nil - } - if err := c.syncSgLogicalPort(key); err != nil { - c.syncSgPortsQueue.AddRateLimited(key) - return fmt.Errorf("error syncing '%s': %s, requeuing", key, err.Error()) - } - c.syncSgPortsQueue.Forget(obj) - return nil - }(obj) - if err != nil { - utilruntime.HandleError(err) - return true - } - return true -} - -func (c *Controller) processNextAddOrUpdateSgWorkItem() bool { - obj, shutdown := c.addOrUpdateSgQueue.Get() - - if shutdown { - return false - } - - err := func(obj interface{}) error { - defer c.addOrUpdateSgQueue.Done(obj) - var key string - var ok bool - if key, ok = obj.(string); !ok { - c.addOrUpdateSgQueue.Forget(obj) - utilruntime.HandleError(fmt.Errorf("expected string in workqueue but got %#v", obj)) - return nil - } - if err := c.handleAddOrUpdateSg(key, false); err != nil { - c.addOrUpdateSgQueue.AddRateLimited(key) - return fmt.Errorf("error syncing '%s': %s, requeuing", key, err.Error()) - } - c.addOrUpdateSgQueue.Forget(obj) - return nil - }(obj) - if err != nil { - utilruntime.HandleError(err) - return true - } - return true -} - -func (c *Controller) processNextDeleteSgWorkItem() bool { - obj, shutdown := c.delSgQueue.Get() - - if shutdown { - return false - } - - err := func(obj interface{}) error { - defer c.delSgQueue.Done(obj) - var key string - var ok bool - if key, ok = obj.(string); !ok { - c.delSgQueue.Forget(obj) - utilruntime.HandleError(fmt.Errorf("expected string in workqueue but got %#v", obj)) - return nil - } - if err := c.handleDeleteSg(key); err != nil { - c.delSgQueue.AddRateLimited(key) - return fmt.Errorf("error syncing '%s': %s, requeuing", key, err.Error()) - } - c.delSgQueue.Forget(obj) - return nil - }(obj) - if err != nil { - utilruntime.HandleError(err) - return true - } - return true -} - func (c *Controller) initDefaultDenyAllSecurityGroup() error { pgName := ovs.GetSgPortGroupName(util.DenyAllSecurityGroup) if err := c.OVNNbClient.CreatePortGroup(pgName, map[string]string{ diff --git a/pkg/controller/service.go b/pkg/controller/service.go index 262f7e881a4..e9efb830829 100644 --- a/pkg/controller/service.go +++ b/pkg/controller/service.go @@ -125,110 +125,6 @@ func (c *Controller) enqueueUpdateService(oldObj, newObj interface{}) { c.updateServiceQueue.Add(key) } -func (c *Controller) runAddServiceWorker() { - for c.processNextAddServiceWorkItem() { - } -} - -func (c *Controller) runDeleteServiceWorker() { - for c.processNextDeleteServiceWorkItem() { - } -} - -func (c *Controller) runUpdateServiceWorker() { - for c.processNextUpdateServiceWorkItem() { - } -} - -func (c *Controller) processNextAddServiceWorkItem() bool { - obj, shutdown := c.addServiceQueue.Get() - if shutdown { - return false - } - - err := func(obj interface{}) error { - defer c.addServiceQueue.Done(obj) - var key string - var ok bool - if key, ok = obj.(string); !ok { - c.addServiceQueue.Forget(obj) - utilruntime.HandleError(fmt.Errorf("expected string in workqueue but got %#v", obj)) - return nil - } - if err := c.handleAddService(key); err != nil { - c.addServiceQueue.AddRateLimited(key) - return fmt.Errorf("error syncing '%s': %s, requeuing", key, err.Error()) - } - c.addServiceQueue.Forget(obj) - return nil - }(obj) - if err != nil { - utilruntime.HandleError(err) - return true - } - return true -} - -func (c *Controller) processNextDeleteServiceWorkItem() bool { - obj, shutdown := c.deleteServiceQueue.Get() - if shutdown { - return false - } - - err := func(obj interface{}) error { - defer c.deleteServiceQueue.Done(obj) - var vpcSvc *vpcService - var ok bool - if vpcSvc, ok = obj.(*vpcService); !ok { - c.deleteServiceQueue.Forget(obj) - utilruntime.HandleError(fmt.Errorf("expected vpcService in workqueue but got %#v", obj)) - return nil - } - - if err := c.handleDeleteService(vpcSvc); err != nil { - c.deleteServiceQueue.AddRateLimited(obj) - return fmt.Errorf("error syncing '%v': %s, requeuing", vpcSvc.Vips, err.Error()) - } - c.deleteServiceQueue.Forget(obj) - return nil - }(obj) - if err != nil { - utilruntime.HandleError(err) - return true - } - return true -} - -func (c *Controller) processNextUpdateServiceWorkItem() bool { - obj, shutdown := c.updateServiceQueue.Get() - - if shutdown { - return false - } - - err := func(obj interface{}) error { - defer c.updateServiceQueue.Done(obj) - var key string - var ok bool - if key, ok = obj.(string); !ok { - c.updateServiceQueue.Forget(obj) - utilruntime.HandleError(fmt.Errorf("expected string in workqueue but got %#v", obj)) - return nil - } - if err := c.handleUpdateService(key); err != nil { - c.updateServiceQueue.AddRateLimited(key) - return fmt.Errorf("error syncing '%s': %s, requeuing", key, err.Error()) - } - c.updateServiceQueue.Forget(obj) - return nil - }(obj) - if err != nil { - utilruntime.HandleError(err) - return true - } - return true -} - func (c *Controller) handleDeleteService(service *vpcService) error { key, err := cache.MetaNamespaceKeyFunc(service.Svc) if err != nil { diff --git a/pkg/controller/signer.go b/pkg/controller/signer.go index 4d9bb23da92..e83cc52e060 100644 --- a/pkg/controller/signer.go +++ b/pkg/controller/signer.go @@ -53,43 +53,6 @@ func (c *Controller) enqueueUpdateCsr(oldObj, newObj interface{}) { c.addOrUpdateCsrQueue.Add(key) } -func (c *Controller) runAddOrUpdateCsrWorker() { - for c.processNextAddOrUpdateCsrWorkItem() { - } -} - -func (c *Controller) processNextAddOrUpdateCsrWorkItem() bool { - obj, shutdown := c.addOrUpdateCsrQueue.Get() - if shutdown { - return false - } - now := time.Now() - - err := func(obj interface{}) error { - defer c.addOrUpdateCsrQueue.Done(obj) - var key string - var ok bool - if key, ok = obj.(string); !ok { - c.addOrUpdateCsrQueue.Forget(obj) - utilruntime.HandleError(fmt.Errorf("expected string in workqueue but got %#v", obj)) - return nil - } - if err := c.handleAddOrUpdateCsr(key); err != nil { - c.addOrUpdateCsrQueue.AddRateLimited(key) - return fmt.Errorf("error syncing '%s': %s, requeuing", key, err.Error()) - } - last := time.Since(now) - klog.Infof("take %d ms to handle sync csr %s", last.Milliseconds(), key) - c.addOrUpdateCsrQueue.Forget(obj) - return nil - }(obj) - if err != nil { - utilruntime.HandleError(err) - return true - } - return true -} - func (c *Controller) handleAddOrUpdateCsr(key string) (err error) { csr, err := c.csrLister.Get(key) if err != nil { diff --git a/pkg/controller/subnet.go b/pkg/controller/subnet.go index fe0c1983e94..48c303c300e 100644 --- a/pkg/controller/subnet.go +++ b/pkg/controller/subnet.go @@ -47,17 +47,9 @@ func (c *Controller) enqueueAddSubnet(obj interface{}) { } func (c *Controller) enqueueDeleteSubnet(obj interface{}) { - var ( - key string - err error - ) - - if key, err = cache.MetaNamespaceKeyFunc(obj); err != nil { - utilruntime.HandleError(err) - return - } - klog.V(3).Infof("enqueue delete subnet %s", key) - c.deleteSubnetQueue.Add(obj) + subnet := obj.(*kubeovnv1.Subnet) + klog.V(3).Infof("enqueue delete subnet %s", subnet.Name) + c.deleteSubnetQueue.Add(subnet) } func (c *Controller) enqueueUpdateSubnet(oldObj, newObj interface{}) { @@ -147,139 +139,6 @@ func (c *Controller) enqueueUpdateSubnet(oldObj, newObj interface{}) { } } -func (c *Controller) runAddSubnetWorker() { - for c.processNextAddSubnetWorkItem() { - } -} - -func (c *Controller) runUpdateSubnetStatusWorker() { - for c.processNextUpdateSubnetStatusWorkItem() { - } -} - -func (c *Controller) runDeleteSubnetWorker() { - for c.processNextDeleteSubnetWorkItem() { - } -} - -func (c *Controller) runSyncVirtualPortsWorker() { - for c.processNextSyncVirtualPortsWorkItem() { - } -} - -func (c *Controller) processNextSyncVirtualPortsWorkItem() bool { - obj, shutdown := c.syncVirtualPortsQueue.Get() - if shutdown { - return false - } - - err := func(obj interface{}) error { - defer c.syncVirtualPortsQueue.Done(obj) - var key string - var ok bool - if key, ok = obj.(string); !ok { - c.syncVirtualPortsQueue.Forget(obj) - utilruntime.HandleError(fmt.Errorf("expected string in workqueue but got %#v", obj)) - return nil - } - if err := c.syncVirtualPort(key); err != nil { - c.syncVirtualPortsQueue.AddRateLimited(key) - return fmt.Errorf("error syncing '%s': %s, requeuing", key, err.Error()) - } - c.syncVirtualPortsQueue.Forget(obj) - return nil - }(obj) - if err != nil { - utilruntime.HandleError(err) - return true - } - return true -} - -func (c *Controller) processNextAddSubnetWorkItem() bool { - obj, shutdown := c.addOrUpdateSubnetQueue.Get() - if shutdown { - return false - } - - if err := func(obj interface{}) error { - defer c.addOrUpdateSubnetQueue.Done(obj) - var key string - var ok bool - if key, ok = obj.(string); !ok { - c.addOrUpdateSubnetQueue.Forget(obj) - utilruntime.HandleError(fmt.Errorf("expected string in workqueue but got %#v", obj)) - return nil - } - if err := c.handleAddOrUpdateSubnet(key); err != nil { - c.addOrUpdateSubnetQueue.AddRateLimited(key) - return fmt.Errorf("error syncing '%s': %s, requeuing", key, err.Error()) - } - c.addOrUpdateSubnetQueue.Forget(obj) - return nil - }(obj); err != nil { - utilruntime.HandleError(err) - return true - } - return true -} - -func (c *Controller) processNextUpdateSubnetStatusWorkItem() bool { - obj, shutdown := c.updateSubnetStatusQueue.Get() - if shutdown { - return false - } - - if err := func(obj interface{}) error { - defer c.updateSubnetStatusQueue.Done(obj) - var key string - var ok bool - if key, ok = obj.(string); !ok { - c.updateSubnetStatusQueue.Forget(obj) - utilruntime.HandleError(fmt.Errorf("expected string in workqueue but got %#v", obj)) - return nil - } - if err := c.handleUpdateSubnetStatus(key); err != nil { - c.updateSubnetStatusQueue.AddRateLimited(key) - return fmt.Errorf("error syncing '%s': %s, requeuing", key, err.Error()) - } - c.updateSubnetStatusQueue.Forget(obj) - return nil - }(obj); err != nil { - utilruntime.HandleError(err) - return true - } - return true -} - -func (c *Controller) processNextDeleteSubnetWorkItem() bool { - obj, shutdown := c.deleteSubnetQueue.Get() - if shutdown { - return false - } - - if err := func(obj interface{}) error { - defer c.deleteSubnetQueue.Done(obj) - var subnet *kubeovnv1.Subnet - var ok bool - if subnet, ok = obj.(*kubeovnv1.Subnet); !ok { - c.deleteSubnetQueue.Forget(obj) - utilruntime.HandleError(fmt.Errorf("expected subnet in workqueue but got %#v", obj)) - return nil - } - if err := c.handleDeleteSubnet(subnet); err != nil { - c.deleteSubnetQueue.AddRateLimited(obj) - return fmt.Errorf("error syncing '%s': %s, requeuing", subnet.Name, err.Error()) - } - c.deleteSubnetQueue.Forget(obj) - return nil - }(obj); err != nil { - utilruntime.HandleError(err) - return true - } - return true -} - func (c *Controller) formatSubnet(subnet *kubeovnv1.Subnet) (*kubeovnv1.Subnet, error) { var ( changed bool diff --git a/pkg/controller/switch_lb_rule.go b/pkg/controller/switch_lb_rule.go index d9d9ded8b70..7406cb3315c 100644 --- a/pkg/controller/switch_lb_rule.go +++ b/pkg/controller/switch_lb_rule.go @@ -5,7 +5,6 @@ import ( "fmt" "reflect" "slices" - "strconv" "strings" corev1 "k8s.io/api/core/v1" @@ -14,7 +13,6 @@ import ( "k8s.io/apimachinery/pkg/util/intstr" utilruntime "k8s.io/apimachinery/pkg/util/runtime" "k8s.io/client-go/tools/cache" - "k8s.io/client-go/util/workqueue" "k8s.io/klog/v2" kubeovnv1 "github.com/kubeovn/kube-ovn/pkg/apis/kubeovn/v1" @@ -34,30 +32,20 @@ func generateSvcName(name string) string { } func NewSlrInfo(slr *kubeovnv1.SwitchLBRule) *SlrInfo { - var ( - vips []string - namespace string - ) - - if namespace = slr.Spec.Namespace; namespace == "" { + namespace := slr.Spec.Namespace + if namespace == "" { namespace = "default" } + vips := make([]string, 0, len(slr.Spec.Ports)) for _, port := range slr.Spec.Ports { - vips = append( - vips, - strings.Join( - []string{slr.Spec.Vip, strconv.Itoa(int(port.Port))}, - ":", - ), - ) + vips = append(vips, util.JoinHostPort(slr.Spec.Vip, port.Port)) } return &SlrInfo{ - Name: slr.Name, - Namespace: namespace, - IsRecreate: false, - Vips: vips, + Name: slr.Name, + Namespace: namespace, + Vips: vips, } } @@ -93,7 +81,7 @@ func (c *Controller) enqueueUpdateSwitchLBRule(oldObj, newObj interface{}) { info.IsRecreate = true } - c.UpdateSwitchLBRuleQueue.Add(info) + c.updateSwitchLBRuleQueue.Add(info) } func (c *Controller) enqueueDeleteSwitchLBRule(obj interface{}) { @@ -111,48 +99,6 @@ func (c *Controller) enqueueDeleteSwitchLBRule(obj interface{}) { c.delSwitchLBRuleQueue.Add(NewSlrInfo(obj.(*kubeovnv1.SwitchLBRule))) } -func (c *Controller) processSwitchLBRuleWorkItem(processName string, queue workqueue.RateLimitingInterface, handler func(key *SlrInfo) error) bool { - obj, shutdown := queue.Get() - if shutdown { - return false - } - - if err := func(obj interface{}) error { - defer queue.Done(obj) - key, ok := obj.(*SlrInfo) - if !ok { - queue.Forget(obj) - utilruntime.HandleError(fmt.Errorf("expected switchLBRule in workqueue but got %#v", obj)) - return nil - } - if err := handler(key); err != nil { - return fmt.Errorf("error syncing '%s': %s, requeuing", key.Name, err.Error()) - } - queue.Forget(obj) - return nil - }(obj); err != nil { - utilruntime.HandleError(fmt.Errorf("process: %s. err: %w", processName, err)) - queue.AddRateLimited(obj) - return true - } - return true -} - -func (c *Controller) runDelSwitchLBRuleWorker() { - for c.processSwitchLBRuleWorkItem("delSwitchLBRule", c.delSwitchLBRuleQueue, c.handleDelSwitchLBRule) { - } -} - -func (c *Controller) runUpdateSwitchLBRuleWorker() { - for c.processSwitchLBRuleWorkItem("updateSwitchLBRule", c.UpdateSwitchLBRuleQueue, c.handleUpdateSwitchLBRule) { - } -} - -func (c *Controller) runAddSwitchLBRuleWorker() { - for c.processNextWorkItem("addSwitchLBRule", c.addSwitchLBRuleQueue, c.handleAddOrUpdateSwitchLBRule) { - } -} - func (c *Controller) handleAddOrUpdateSwitchLBRule(key string) error { klog.V(3).Infof("handleAddOrUpdateSwitchLBRule %s", key) diff --git a/pkg/controller/vip.go b/pkg/controller/vip.go index 93b34e16410..3d868928f49 100644 --- a/pkg/controller/vip.go +++ b/pkg/controller/vip.go @@ -70,140 +70,6 @@ func (c *Controller) enqueueDelVirtualIP(obj interface{}) { c.delVirtualIPQueue.Add(vip) } -func (c *Controller) runAddVirtualIPWorker() { - for c.processNextAddVirtualIPWorkItem() { - } -} - -func (c *Controller) runUpdateVirtualIPWorker() { - for c.processNextUpdateVirtualIPWorkItem() { - } -} - -func (c *Controller) runUpdateVirtualParentsWorker() { - for c.processNextUpdateVirtualParentsWorkItem() { - } -} - -func (c *Controller) runDelVirtualIPWorker() { - for c.processNextDeleteVirtualIPWorkItem() { - } -} - -func (c *Controller) processNextAddVirtualIPWorkItem() bool { - obj, shutdown := c.addVirtualIPQueue.Get() - if shutdown { - return false - } - - err := func(obj interface{}) error { - defer c.addVirtualIPQueue.Done(obj) - var key string - var ok bool - if key, ok = obj.(string); !ok { - c.addVirtualIPQueue.Forget(obj) - utilruntime.HandleError(fmt.Errorf("expected string in workqueue but got %#v", obj)) - return nil - } - if err := c.handleAddVirtualIP(key); err != nil { - c.addVirtualIPQueue.AddRateLimited(key) - return fmt.Errorf("error syncing '%s': %s, requeuing", key, err.Error()) - } - c.addVirtualIPQueue.Forget(obj) - return nil - }(obj) - if err != nil { - utilruntime.HandleError(err) - return true - } - return true -} - -func (c *Controller) processNextUpdateVirtualIPWorkItem() bool { - obj, shutdown := c.updateVirtualIPQueue.Get() - if shutdown { - return false - } - err := func(obj interface{}) error { - defer c.updateVirtualIPQueue.Done(obj) - var key string - var ok bool - if key, ok = obj.(string); !ok { - c.updateVirtualIPQueue.Forget(obj) - utilruntime.HandleError(fmt.Errorf("expected string in workqueue but got %#v", obj)) - return nil - } - if err := c.handleUpdateVirtualIP(key); err != nil { - c.updateVirtualIPQueue.AddRateLimited(key) - return fmt.Errorf("error syncing '%s': %s, requeuing", key, err.Error()) - } - c.updateVirtualIPQueue.Forget(obj) - return nil - }(obj) - if err != nil { - utilruntime.HandleError(err) - return true - } - return true -} - -func (c *Controller) processNextUpdateVirtualParentsWorkItem() bool { - obj, shutdown := c.updateVirtualParentsQueue.Get() - if shutdown { - return false - } - err := func(obj interface{}) error { - defer c.updateVirtualParentsQueue.Done(obj) - var key string - var ok bool - if key, ok = obj.(string); !ok { - c.updateVirtualParentsQueue.Forget(obj) - utilruntime.HandleError(fmt.Errorf("expected string in workqueue but got %#v", obj)) - return nil - } - if err := c.handleUpdateVirtualParents(key); err != nil { - c.updateVirtualParentsQueue.AddRateLimited(key) - return fmt.Errorf("error syncing '%s': %s, requeuing", key, err.Error()) - } - c.updateVirtualParentsQueue.Forget(obj) - return nil - }(obj) - if err != nil { - utilruntime.HandleError(err) - return true - } - return true -} - -func (c *Controller) processNextDeleteVirtualIPWorkItem() bool { - obj, shutdown := c.delVirtualIPQueue.Get() - if shutdown { - return false - } - - err := func(obj interface{}) error { - defer c.delVirtualIPQueue.Done(obj) - var vip *kubeovnv1.Vip - var ok bool - if vip, ok = obj.(*kubeovnv1.Vip); !ok { - c.delVirtualIPQueue.Forget(obj) - utilruntime.HandleError(fmt.Errorf("expected vip in workqueue but got %#v", obj)) - return nil - } - if err := c.handleDelVirtualIP(vip); err != nil { - c.delVirtualIPQueue.AddRateLimited(obj) - return fmt.Errorf("error syncing '%s': %s, requeuing", vip.Name, err.Error()) - } - c.delVirtualIPQueue.Forget(obj) - return nil - }(obj) - if err != nil { - utilruntime.HandleError(err) - return true - } - return true -} - func (c *Controller) handleAddVirtualIP(key string) error { cachedVip, err := c.virtualIpsLister.Get(key) if err != nil { diff --git a/pkg/controller/vlan.go b/pkg/controller/vlan.go index 4de241fec06..bbebb8bfc36 100644 --- a/pkg/controller/vlan.go +++ b/pkg/controller/vlan.go @@ -2,7 +2,6 @@ package controller import ( "context" - "fmt" "slices" k8serrors "k8s.io/apimachinery/pkg/api/errors" @@ -51,118 +50,6 @@ func (c *Controller) enqueueDelVlan(obj interface{}) { c.delVlanQueue.Add(key) } -func (c *Controller) runAddVlanWorker() { - for c.processNextAddVlanWorkItem() { - } -} - -func (c *Controller) runUpdateVlanWorker() { - for c.processNextUpdateVlanWorkItem() { - } -} - -func (c *Controller) runDelVlanWorker() { - for c.processNextDelVlanWorkItem() { - } -} - -func (c *Controller) processNextAddVlanWorkItem() bool { - obj, shutdown := c.addVlanQueue.Get() - if shutdown { - return false - } - - err := func(obj interface{}) error { - defer c.addVlanQueue.Done(obj) - var key string - var ok bool - if key, ok = obj.(string); !ok { - c.addVlanQueue.Forget(obj) - utilruntime.HandleError(fmt.Errorf("expected string in workqueue but got %#v", obj)) - return nil - } - if err := c.handleAddVlan(key); err != nil { - c.addVlanQueue.AddRateLimited(key) - return fmt.Errorf("error syncing '%s': %s, requeuing", key, err.Error()) - } - c.addVlanQueue.Forget(obj) - return nil - }(obj) - if err != nil { - utilruntime.HandleError(err) - return true - } - return true -} - -func (c *Controller) processNextUpdateVlanWorkItem() bool { - obj, shutdown := c.updateVlanQueue.Get() - - if shutdown { - return false - } - - err := func(obj interface{}) error { - defer c.updateVlanQueue.Done(obj) - var key string - var ok bool - - if key, ok = obj.(string); !ok { - c.updateVlanQueue.Forget(obj) - utilruntime.HandleError(fmt.Errorf("expected string in workqueue but got %#v", obj)) - return nil - } - - if err := c.handleUpdateVlan(key); err != nil { - c.updateVlanQueue.AddRateLimited(key) - return fmt.Errorf("error syncing '%s': %s, requeuing", key, err.Error()) - } - - c.updateVlanQueue.Forget(obj) - return nil - }(obj) - if err != nil { - utilruntime.HandleError(err) - return true - } - - return true -} - -func (c *Controller) processNextDelVlanWorkItem() bool { - obj, shutdown := c.delVlanQueue.Get() - - if shutdown { - return false - } - - err := func(obj interface{}) error { - defer c.delVlanQueue.Done(obj) - var key string - var ok bool - - if key, ok = obj.(string); !ok { - c.delVlanQueue.Forget(obj) - utilruntime.HandleError(fmt.Errorf("expected string in workqueue but got %#v", obj)) - return nil - } - - if err := c.handleDelVlan(key); err != nil { - c.delVlanQueue.AddRateLimited(key) - return fmt.Errorf("error syncing '%s': %s, requeuing", key, err.Error()) - } - - c.delVlanQueue.Forget(obj) - return nil - }(obj) - if err != nil { - utilruntime.HandleError(err) - return true - } - - return true -} - func (c *Controller) handleAddVlan(key string) error { c.vlanKeyMutex.LockKey(key) defer func() { _ = c.vlanKeyMutex.UnlockKey(key) }() diff --git a/pkg/controller/vpc.go b/pkg/controller/vpc.go index b5bd67ac483..71321dc00c5 100644 --- a/pkg/controller/vpc.go +++ b/pkg/controller/vpc.go @@ -79,36 +79,10 @@ func (c *Controller) enqueueUpdateVpc(oldObj, newObj interface{}) { } func (c *Controller) enqueueDelVpc(obj interface{}) { - var ( - key string - err error - ) - - if key, err = cache.MetaNamespaceKeyFunc(obj); err != nil { - utilruntime.HandleError(err) - return - } - vpc := obj.(*kubeovnv1.Vpc) - _, ok := vpc.Labels[util.VpcExternalLabel] - if !vpc.Status.Default || !ok { - klog.V(3).Infof("enqueue delete vpc %s", key) - c.delVpcQueue.Add(obj) - } -} - -func (c *Controller) runAddVpcWorker() { - for c.processNextAddVpcWorkItem() { - } -} - -func (c *Controller) runUpdateVpcStatusWorker() { - for c.processNextUpdateStatusVpcWorkItem() { - } -} - -func (c *Controller) runDelVpcWorker() { - for c.processNextDeleteVpcWorkItem() { + if _, ok := vpc.Labels[util.VpcExternalLabel]; !vpc.Status.Default || !ok { + klog.V(3).Infof("enqueue delete vpc %s", vpc.Name) + c.delVpcQueue.Add(vpc) } } @@ -968,91 +942,6 @@ func reversePolicy(origin ovnnb.LogicalRouterStaticRoutePolicy) kubeovnv1.RouteP return kubeovnv1.PolicySrc } -func (c *Controller) processNextUpdateStatusVpcWorkItem() bool { - obj, shutdown := c.updateVpcStatusQueue.Get() - if shutdown { - return false - } - - if err := func(obj interface{}) error { - defer c.updateVpcStatusQueue.Done(obj) - var key string - var ok bool - if key, ok = obj.(string); !ok { - c.updateVpcStatusQueue.Forget(obj) - utilruntime.HandleError(fmt.Errorf("expected string in workqueue but got %#v", obj)) - return nil - } - if err := c.handleUpdateVpcStatus(key); err != nil { - c.updateVpcStatusQueue.AddRateLimited(key) - return fmt.Errorf("error syncing '%s': %s, requeuing", key, err.Error()) - } - c.updateVpcStatusQueue.Forget(obj) - return nil - }(obj); err != nil { - utilruntime.HandleError(err) - return true - } - return true -} - -func (c *Controller) processNextAddVpcWorkItem() bool { - obj, shutdown := c.addOrUpdateVpcQueue.Get() - if shutdown { - return false - } - - if err := func(obj interface{}) error { - defer c.addOrUpdateVpcQueue.Done(obj) - var key string - var ok bool - if key, ok = obj.(string); !ok { - c.addOrUpdateVpcQueue.Forget(obj) - utilruntime.HandleError(fmt.Errorf("expected string in workqueue but got %#v", obj)) - return nil - } - if err := c.handleAddOrUpdateVpc(key); err != nil { - // c.addOrUpdateVpcQueue.AddRateLimited(key) - return fmt.Errorf("error syncing '%s': %s, requeuing", key, err.Error()) - } - c.addOrUpdateVpcQueue.Forget(obj) - return nil - }(obj); err != nil { - utilruntime.HandleError(err) - c.addOrUpdateVpcQueue.AddRateLimited(obj) - return true - } - return true -} - -func (c *Controller) processNextDeleteVpcWorkItem() bool { - obj, shutdown := c.delVpcQueue.Get() - if shutdown { - return false - } - - if err := func(obj interface{}) error { - defer c.delVpcQueue.Done(obj) - var vpc *kubeovnv1.Vpc - var ok bool - if vpc, ok = obj.(*kubeovnv1.Vpc); !ok { - c.delVpcQueue.Forget(obj) - utilruntime.HandleError(fmt.Errorf("expected string in workqueue but got %#v", obj)) - return nil - } - if err := c.handleDelVpc(vpc); err != nil { - c.delVpcQueue.AddRateLimited(obj) - return fmt.Errorf("error syncing '%s': %s, requeuing", vpc.Name, err.Error()) - } - c.delVpcQueue.Forget(obj) - return nil - }(obj); err != nil { - utilruntime.HandleError(err) - return true - } - return true -} - func (c *Controller) getVpcSubnets(vpc *kubeovnv1.Vpc) (subnets []string, defaultSubnet string, err error) { subnets = []string{} allSubnets, err := c.subnetsLister.List(labels.Everything()) diff --git a/pkg/controller/vpc_dns.go b/pkg/controller/vpc_dns.go index fef363e7a90..b15f6a20fce 100644 --- a/pkg/controller/vpc_dns.go +++ b/pkg/controller/vpc_dns.go @@ -12,7 +12,6 @@ import ( "strconv" "strings" "text/template" - "time" v1 "k8s.io/api/apps/v1" corev1 "k8s.io/api/core/v1" @@ -92,23 +91,10 @@ func (c *Controller) enqueueDeleteVPCDNS(obj interface{}) { c.delVpcDNSQueue.Add(key) } -func (c *Controller) runAddOrUpdateVPCDNSWorker() { - for c.processNextWorkItem("addOrUpdateVpcDns", c.addOrUpdateVpcDNSQueue, c.handleAddOrUpdateVPCDNS) { - } -} - -func (c *Controller) runDelVPCDNSWorker() { - for c.processNextWorkItem("delVpcDns", c.delVpcDNSQueue, c.handleDelVpcDNS) { - } -} - func (c *Controller) handleAddOrUpdateVPCDNS(key string) error { - klog.V(3).Infof("handleAddOrUpdateVPCDNS %s", key) + klog.Infof("handle add or update vpc dns %s", key) if !enableCoreDNS { - time.Sleep(10 * time.Second) - if !enableCoreDNS { - return errors.New("failed to add or update vpc-dns, not enabled") - } + return errors.New("failed to add or update vpc-dns, not enabled") } vpcDNS, err := c.vpcDNSLister.Get(key) diff --git a/pkg/controller/vpc_nat_gateway.go b/pkg/controller/vpc_nat_gateway.go index 78e82666223..c92db1e295f 100644 --- a/pkg/controller/vpc_nat_gateway.go +++ b/pkg/controller/vpc_nat_gateway.go @@ -21,7 +21,6 @@ import ( "k8s.io/apimachinery/pkg/types" utilruntime "k8s.io/apimachinery/pkg/util/runtime" "k8s.io/client-go/tools/cache" - "k8s.io/client-go/util/workqueue" "k8s.io/klog/v2" "k8s.io/utils/ptr" @@ -128,75 +127,6 @@ func (c *Controller) enqueueDeleteVpcNatGw(obj interface{}) { c.delVpcNatGatewayQueue.Add(key) } -func (c *Controller) runAddOrUpdateVpcNatGwWorker() { - for c.processNextWorkItem("addOrUpdateVpcNatGateway", c.addOrUpdateVpcNatGatewayQueue, c.handleAddOrUpdateVpcNatGw) { - } -} - -func (c *Controller) runInitVpcNatGwWorker() { - for c.processNextWorkItem("initVpcNatGateway", c.initVpcNatGatewayQueue, c.handleInitVpcNatGw) { - } -} - -func (c *Controller) runDelVpcNatGwWorker() { - for c.processNextWorkItem("delVpcNatGateway", c.delVpcNatGatewayQueue, c.handleDelVpcNatGw) { - } -} - -func (c *Controller) runUpdateVpcFloatingIPWorker() { - for c.processNextWorkItem("updateVpcFloatingIp", c.updateVpcFloatingIPQueue, c.handleUpdateVpcFloatingIP) { - } -} - -func (c *Controller) runUpdateVpcEipWorker() { - for c.processNextWorkItem("UpdateVpcEip", c.updateVpcEipQueue, c.handleUpdateVpcEip) { - } -} - -func (c *Controller) runUpdateVpcDnatWorker() { - for c.processNextWorkItem("updateVpcDnat", c.updateVpcDnatQueue, c.handleUpdateVpcDnat) { - } -} - -func (c *Controller) runUpdateVpcSnatWorker() { - for c.processNextWorkItem("updateVpcSnat", c.updateVpcSnatQueue, c.handleUpdateVpcSnat) { - } -} - -func (c *Controller) runUpdateVpcSubnetWorker() { - for c.processNextWorkItem("updateVpcSubnet", c.updateVpcSubnetQueue, c.handleUpdateNatGwSubnetRoute) { - } -} - -func (c *Controller) processNextWorkItem(processName string, queue workqueue.RateLimitingInterface, handler func(key string) error) bool { - obj, shutdown := queue.Get() - if shutdown { - return false - } - - err := func(obj interface{}) error { - defer queue.Done(obj) - var key string - var ok bool - if key, ok = obj.(string); !ok { - queue.Forget(obj) - utilruntime.HandleError(fmt.Errorf("expected string in workqueue but got %#v", obj)) - return nil - } - if err := handler(key); err != nil { - return fmt.Errorf("error syncing '%s': %s, requeuing", key, err.Error()) - } - queue.Forget(obj) - return nil - }(obj) - if err != nil { - utilruntime.HandleError(fmt.Errorf("process: %s. err: %w", processName, err)) - queue.AddRateLimited(obj) - return true - } - return true -} - func (c *Controller) handleDelVpcNatGw(key string) error { c.vpcNatGwKeyMutex.LockKey(key) defer func() { _ = c.vpcNatGwKeyMutex.UnlockKey(key) }() diff --git a/pkg/controller/vpc_nat_gw_eip.go b/pkg/controller/vpc_nat_gw_eip.go index e34658392f7..0cd3ad94fc4 100644 --- a/pkg/controller/vpc_nat_gw_eip.go +++ b/pkg/controller/vpc_nat_gw_eip.go @@ -67,140 +67,6 @@ func (c *Controller) enqueueDelIptablesEip(obj interface{}) { c.updateSubnetStatusQueue.Add(externalNetwork) } -func (c *Controller) runAddIptablesEipWorker() { - for c.processNextAddIptablesEipWorkItem() { - } -} - -func (c *Controller) runUpdateIptablesEipWorker() { - for c.processNextUpdateIptablesEipWorkItem() { - } -} - -func (c *Controller) runResetIptablesEipWorker() { - for c.processNextResetIptablesEipWorkItem() { - } -} - -func (c *Controller) runDelIptablesEipWorker() { - for c.processNextDeleteIptablesEipWorkItem() { - } -} - -func (c *Controller) processNextAddIptablesEipWorkItem() bool { - obj, shutdown := c.addIptablesEipQueue.Get() - if shutdown { - return false - } - - err := func(obj interface{}) error { - defer c.addIptablesEipQueue.Done(obj) - var key string - var ok bool - if key, ok = obj.(string); !ok { - c.addIptablesEipQueue.Forget(obj) - utilruntime.HandleError(fmt.Errorf("expected string in workqueue but got %#v", obj)) - return nil - } - if err := c.handleAddIptablesEip(key); err != nil { - c.addIptablesEipQueue.AddRateLimited(key) - return fmt.Errorf("error syncing '%s': %s, requeuing", key, err.Error()) - } - c.addIptablesEipQueue.Forget(obj) - return nil - }(obj) - if err != nil { - utilruntime.HandleError(err) - return true - } - return true -} - -func (c *Controller) processNextResetIptablesEipWorkItem() bool { - obj, shutdown := c.resetIptablesEipQueue.Get() - if shutdown { - return false - } - - err := func(obj interface{}) error { - defer c.resetIptablesEipQueue.Done(obj) - var key string - var ok bool - if key, ok = obj.(string); !ok { - c.resetIptablesEipQueue.Forget(obj) - utilruntime.HandleError(fmt.Errorf("expected string in workqueue but got %#v", obj)) - return nil - } - if err := c.handleResetIptablesEip(key); err != nil { - c.resetIptablesEipQueue.AddRateLimited(key) - return fmt.Errorf("error syncing '%s': %s, requeuing", key, err.Error()) - } - c.resetIptablesEipQueue.Forget(obj) - return nil - }(obj) - if err != nil { - utilruntime.HandleError(err) - return true - } - return true -} - -func (c *Controller) processNextUpdateIptablesEipWorkItem() bool { - obj, shutdown := c.updateIptablesEipQueue.Get() - if shutdown { - return false - } - err := func(obj interface{}) error { - defer c.updateIptablesEipQueue.Done(obj) - var key string - var ok bool - if key, ok = obj.(string); !ok { - c.updateIptablesEipQueue.Forget(obj) - utilruntime.HandleError(fmt.Errorf("expected string in workqueue but got %#v", obj)) - return nil - } - if err := c.handleUpdateIptablesEip(key); err != nil { - c.updateIptablesEipQueue.AddRateLimited(key) - return fmt.Errorf("error syncing '%s': %s, requeuing", key, err.Error()) - } - c.updateIptablesEipQueue.Forget(obj) - return nil - }(obj) - if err != nil { - utilruntime.HandleError(err) - return true - } - return true -} - -func (c *Controller) processNextDeleteIptablesEipWorkItem() bool { - obj, shutdown := c.delIptablesEipQueue.Get() - if shutdown { - return false - } - err := func(obj interface{}) error { - defer c.delIptablesEipQueue.Done(obj) - var key string - var ok bool - if key, ok = obj.(string); !ok { - c.delIptablesEipQueue.Forget(obj) - utilruntime.HandleError(fmt.Errorf("expected eip in workqueue but got %#v", obj)) - return nil - } - if err := c.handleDelIptablesEip(key); err != nil { - c.delIptablesEipQueue.AddRateLimited(obj) - return fmt.Errorf("error syncing '%s': %s, requeuing", key, err.Error()) - } - c.delIptablesEipQueue.Forget(obj) - return nil - }(obj) - if err != nil { - utilruntime.HandleError(err) - return true - } - return true -} - func (c *Controller) handleAddIptablesEip(key string) error { cachedEip, err := c.iptablesEipsLister.Get(key) if err != nil { diff --git a/pkg/controller/vpc_nat_gw_nat.go b/pkg/controller/vpc_nat_gw_nat.go index 7adb1e1b894..e89eaa3b883 100644 --- a/pkg/controller/vpc_nat_gw_nat.go +++ b/pkg/controller/vpc_nat_gw_nat.go @@ -172,312 +172,6 @@ func (c *Controller) enqueueDelIptablesSnatRule(obj interface{}) { c.delIptablesSnatRuleQueue.Add(key) } -func (c *Controller) runAddIptablesFipWorker() { - for c.processNextAddIptablesFipWorkItem() { - } -} - -func (c *Controller) runUpdateIptablesFipWorker() { - for c.processNextUpdateIptablesFipWorkItem() { - } -} - -func (c *Controller) runDelIptablesFipWorker() { - for c.processNextDeleteIptablesFipWorkItem() { - } -} - -func (c *Controller) runAddIptablesDnatRuleWorker() { - for c.processNextAddIptablesDnatRuleWorkItem() { - } -} - -func (c *Controller) runUpdateIptablesDnatRuleWorker() { - for c.processNextUpdateIptablesDnatRuleWorkItem() { - } -} - -func (c *Controller) runDelIptablesDnatRuleWorker() { - for c.processNextDeleteIptablesDnatRuleWorkItem() { - } -} - -func (c *Controller) runAddIptablesSnatRuleWorker() { - for c.processNextAddIptablesSnatRuleWorkItem() { - } -} - -func (c *Controller) runUpdateIptablesSnatRuleWorker() { - for c.processNextUpdateIptablesSnatRuleWorkItem() { - } -} - -func (c *Controller) runDelIptablesSnatRuleWorker() { - for c.processNextDeleteIptablesSnatRuleWorkItem() { - } -} - -func (c *Controller) processNextAddIptablesFipWorkItem() bool { - obj, shutdown := c.addIptablesFipQueue.Get() - if shutdown { - return false - } - - err := func(obj interface{}) error { - defer c.addIptablesFipQueue.Done(obj) - var key string - var ok bool - if key, ok = obj.(string); !ok { - c.addIptablesFipQueue.Forget(obj) - utilruntime.HandleError(fmt.Errorf("expected string in workqueue but got %#v", obj)) - return nil - } - if err := c.handleAddIptablesFip(key); err != nil { - c.addIptablesFipQueue.AddRateLimited(key) - return fmt.Errorf("error syncing '%s': %s, requeuing", key, err.Error()) - } - c.addIptablesFipQueue.Forget(obj) - return nil - }(obj) - if err != nil { - utilruntime.HandleError(err) - return true - } - return true -} - -func (c *Controller) processNextUpdateIptablesFipWorkItem() bool { - obj, shutdown := c.updateIptablesFipQueue.Get() - if shutdown { - return false - } - - err := func(obj interface{}) error { - defer c.updateIptablesFipQueue.Done(obj) - var key string - var ok bool - if key, ok = obj.(string); !ok { - c.updateIptablesFipQueue.Forget(obj) - utilruntime.HandleError(fmt.Errorf("expected string in workqueue but got %#v", obj)) - return nil - } - if err := c.handleUpdateIptablesFip(key); err != nil { - c.updateIptablesFipQueue.AddRateLimited(key) - return fmt.Errorf("error syncing '%s': %s, requeuing", key, err.Error()) - } - c.updateIptablesFipQueue.Forget(obj) - return nil - }(obj) - if err != nil { - utilruntime.HandleError(err) - return true - } - return true -} - -func (c *Controller) processNextDeleteIptablesFipWorkItem() bool { - obj, shutdown := c.delIptablesFipQueue.Get() - if shutdown { - return false - } - - err := func(obj interface{}) error { - defer c.delIptablesFipQueue.Done(obj) - var key string - var ok bool - if key, ok = obj.(string); !ok { - c.delIptablesFipQueue.Forget(obj) - utilruntime.HandleError(fmt.Errorf("expected fip in workqueue but got %#v", obj)) - return nil - } - if err := c.handleDelIptablesFip(key); err != nil { - c.delIptablesFipQueue.AddRateLimited(key) - return fmt.Errorf("error syncing '%s': %s, requeuing", key, err.Error()) - } - c.delIptablesFipQueue.Forget(obj) - return nil - }(obj) - if err != nil { - utilruntime.HandleError(err) - return true - } - return true -} - -func (c *Controller) processNextAddIptablesDnatRuleWorkItem() bool { - obj, shutdown := c.addIptablesDnatRuleQueue.Get() - if shutdown { - return false - } - - err := func(obj interface{}) error { - defer c.addIptablesDnatRuleQueue.Done(obj) - var key string - var ok bool - if key, ok = obj.(string); !ok { - c.addIptablesDnatRuleQueue.Forget(obj) - utilruntime.HandleError(fmt.Errorf("expected string in workqueue but got %#v", obj)) - return nil - } - if err := c.handleAddIptablesDnatRule(key); err != nil { - c.addIptablesDnatRuleQueue.AddRateLimited(key) - return fmt.Errorf("error syncing '%s': %s, requeuing", key, err.Error()) - } - c.addIptablesDnatRuleQueue.Forget(obj) - return nil - }(obj) - if err != nil { - utilruntime.HandleError(err) - return true - } - return true -} - -func (c *Controller) processNextUpdateIptablesDnatRuleWorkItem() bool { - obj, shutdown := c.updateIptablesDnatRuleQueue.Get() - if shutdown { - return false - } - - err := func(obj interface{}) error { - defer c.updateIptablesDnatRuleQueue.Done(obj) - var key string - var ok bool - if key, ok = obj.(string); !ok { - c.updateIptablesDnatRuleQueue.Forget(obj) - utilruntime.HandleError(fmt.Errorf("expected string in workqueue but got %#v", obj)) - return nil - } - if err := c.handleUpdateIptablesDnatRule(key); err != nil { - c.updateIptablesDnatRuleQueue.AddRateLimited(key) - return fmt.Errorf("error syncing '%s': %s, requeuing", key, err.Error()) - } - c.updateIptablesDnatRuleQueue.Forget(obj) - return nil - }(obj) - if err != nil { - utilruntime.HandleError(err) - return true - } - return true -} - -func (c *Controller) processNextDeleteIptablesDnatRuleWorkItem() bool { - obj, shutdown := c.delIptablesDnatRuleQueue.Get() - if shutdown { - return false - } - - err := func(obj interface{}) error { - defer c.delIptablesDnatRuleQueue.Done(obj) - var key string - var ok bool - if key, ok = obj.(string); !ok { - c.delIptablesDnatRuleQueue.Forget(obj) - utilruntime.HandleError(fmt.Errorf("expected dnat in workqueue but got %#v", obj)) - return nil - } - if err := c.handleDelIptablesDnatRule(key); err != nil { - c.delIptablesDnatRuleQueue.AddRateLimited(key) - return fmt.Errorf("error syncing '%s': %s, requeuing", key, err.Error()) - } - c.delIptablesDnatRuleQueue.Forget(obj) - return nil - }(obj) - if err != nil { - utilruntime.HandleError(err) - return true - } - return true -} - -func (c *Controller) processNextAddIptablesSnatRuleWorkItem() bool { - obj, shutdown := c.addIptablesSnatRuleQueue.Get() - if shutdown { - return false - } - - err := func(obj interface{}) error { - defer c.addIptablesSnatRuleQueue.Done(obj) - var key string - var ok bool - if key, ok = obj.(string); !ok { - c.addIptablesSnatRuleQueue.Forget(obj) - utilruntime.HandleError(fmt.Errorf("expected string in workqueue but got %#v", obj)) - return nil - } - if err := c.handleAddIptablesSnatRule(key); err != nil { - c.addIptablesSnatRuleQueue.AddRateLimited(key) - return fmt.Errorf("error syncing '%s': %s, requeuing", key, err.Error()) - } - c.addIptablesSnatRuleQueue.Forget(obj) - return nil - }(obj) - if err != nil { - utilruntime.HandleError(err) - return true - } - return true -} - -func (c *Controller) processNextUpdateIptablesSnatRuleWorkItem() bool { - obj, shutdown := c.updateIptablesSnatRuleQueue.Get() - if shutdown { - return false - } - - err := func(obj interface{}) error { - defer c.updateIptablesSnatRuleQueue.Done(obj) - var key string - var ok bool - if key, ok = obj.(string); !ok { - c.updateIptablesSnatRuleQueue.Forget(obj) - utilruntime.HandleError(fmt.Errorf("expected string in workqueue but got %#v", obj)) - return nil - } - if err := c.handleUpdateIptablesSnatRule(key); err != nil { - c.updateIptablesSnatRuleQueue.AddRateLimited(key) - return fmt.Errorf("error syncing '%s': %s, requeuing", key, err.Error()) - } - c.updateIptablesSnatRuleQueue.Forget(obj) - return nil - }(obj) - if err != nil { - utilruntime.HandleError(err) - return true - } - return true -} - -func (c *Controller) processNextDeleteIptablesSnatRuleWorkItem() bool { - obj, shutdown := c.delIptablesSnatRuleQueue.Get() - if shutdown { - return false - } - - err := func(obj interface{}) error { - defer c.delIptablesSnatRuleQueue.Done(obj) - var key string - var ok bool - if key, ok = obj.(string); !ok { - c.delIptablesSnatRuleQueue.Forget(obj) - utilruntime.HandleError(fmt.Errorf("expected snat in workqueue but got %#v", obj)) - return nil - } - if err := c.handleDelIptablesSnatRule(key); err != nil { - c.delIptablesSnatRuleQueue.AddRateLimited(key) - return fmt.Errorf("error syncing '%s': %s, requeuing", key, err.Error()) - } - c.delIptablesSnatRuleQueue.Forget(obj) - return nil - }(obj) - if err != nil { - utilruntime.HandleError(err) - return true - } - return true -} - func (c *Controller) handleAddIptablesFip(key string) error { fip, err := c.iptablesFipsLister.Get(key) if err != nil { diff --git a/pkg/daemon/controller.go b/pkg/daemon/controller.go index b7047fd5154..8a146c8c40c 100644 --- a/pkg/daemon/controller.go +++ b/pkg/daemon/controller.go @@ -38,23 +38,22 @@ type Controller struct { providerNetworksLister kubeovnlister.ProviderNetworkLister providerNetworksSynced cache.InformerSynced - addOrUpdateProviderNetworkQueue workqueue.RateLimitingInterface - deleteProviderNetworkQueue workqueue.RateLimitingInterface + addOrUpdateProviderNetworkQueue workqueue.TypedRateLimitingInterface[string] + deleteProviderNetworkQueue workqueue.TypedRateLimitingInterface[*kubeovnv1.ProviderNetwork] - vlansLister kubeovnlister.VlanLister - vlansSynced cache.InformerSynced - updateVlanQueue workqueue.RateLimitingInterface + vlansLister kubeovnlister.VlanLister + vlansSynced cache.InformerSynced subnetsLister kubeovnlister.SubnetLister subnetsSynced cache.InformerSynced - subnetQueue workqueue.RateLimitingInterface + subnetQueue workqueue.TypedRateLimitingInterface[*subnetEvent] ovnEipsLister kubeovnlister.OvnEipLister ovnEipsSynced cache.InformerSynced podsLister listerv1.PodLister podsSynced cache.InformerSynced - podQueue workqueue.RateLimitingInterface + podQueue workqueue.TypedRateLimitingInterface[string] nodesLister listerv1.NodeLister nodesSynced cache.InformerSynced @@ -70,6 +69,13 @@ type Controller struct { k8sExec k8sexec.Interface } +func newTypedRateLimitingQueue[T comparable](name string, rateLimiter workqueue.TypedRateLimiter[T]) workqueue.TypedRateLimitingInterface[T] { + if rateLimiter == nil { + rateLimiter = workqueue.DefaultTypedControllerRateLimiter[T]() + } + return workqueue.NewTypedRateLimitingQueueWithConfig(rateLimiter, workqueue.TypedRateLimitingQueueConfig[T]{Name: name}) +} + // NewController init a daemon controller func NewController(config *Configuration, stopCh <-chan struct{}, podInformerFactory, nodeInformerFactory informers.SharedInformerFactory, kubeovnInformerFactory kubeovninformer.SharedInformerFactory) (*Controller, error) { eventBroadcaster := record.NewBroadcaster() @@ -89,23 +95,22 @@ func NewController(config *Configuration, stopCh <-chan struct{}, podInformerFac providerNetworksLister: providerNetworkInformer.Lister(), providerNetworksSynced: providerNetworkInformer.Informer().HasSynced, - addOrUpdateProviderNetworkQueue: workqueue.NewNamedRateLimitingQueue(workqueue.DefaultControllerRateLimiter(), "AddOrUpdateProviderNetwork"), - deleteProviderNetworkQueue: workqueue.NewNamedRateLimitingQueue(workqueue.DefaultControllerRateLimiter(), "DeleteProviderNetwork"), + addOrUpdateProviderNetworkQueue: newTypedRateLimitingQueue[string]("AddOrUpdateProviderNetwork", nil), + deleteProviderNetworkQueue: newTypedRateLimitingQueue[*kubeovnv1.ProviderNetwork]("DeleteProviderNetwork", nil), - vlansLister: vlanInformer.Lister(), - vlansSynced: vlanInformer.Informer().HasSynced, - updateVlanQueue: workqueue.NewNamedRateLimitingQueue(workqueue.DefaultControllerRateLimiter(), "UpdateVlan"), + vlansLister: vlanInformer.Lister(), + vlansSynced: vlanInformer.Informer().HasSynced, subnetsLister: subnetInformer.Lister(), subnetsSynced: subnetInformer.Informer().HasSynced, - subnetQueue: workqueue.NewNamedRateLimitingQueue(workqueue.DefaultControllerRateLimiter(), "Subnet"), + subnetQueue: newTypedRateLimitingQueue[*subnetEvent]("Subnet", nil), ovnEipsLister: ovnEipInformer.Lister(), ovnEipsSynced: ovnEipInformer.Informer().HasSynced, podsLister: podInformer.Lister(), podsSynced: podInformer.Informer().HasSynced, - podQueue: workqueue.NewNamedRateLimitingQueue(workqueue.DefaultControllerRateLimiter(), "Pod"), + podQueue: newTypedRateLimitingQueue[string]("Pod", nil), nodesLister: nodeInformer.Lister(), nodesSynced: nodeInformer.Informer().HasSynced, @@ -185,8 +190,9 @@ func (c *Controller) enqueueUpdateProviderNetwork(_, newObj interface{}) { } func (c *Controller) enqueueDeleteProviderNetwork(obj interface{}) { - klog.V(3).Infof("enqueue delete provider network %s", obj.(*kubeovnv1.ProviderNetwork).Name) - c.deleteProviderNetworkQueue.Add(obj) + pn := obj.(*kubeovnv1.ProviderNetwork) + klog.V(3).Infof("enqueue delete provider network %s", pn.Name) + c.deleteProviderNetworkQueue.Add(pn) } func (c *Controller) runAddOrUpdateProviderNetworkWorker() { @@ -200,29 +206,22 @@ func (c *Controller) runDeleteProviderNetworkWorker() { } func (c *Controller) processNextAddOrUpdateProviderNetworkWorkItem() bool { - obj, shutdown := c.addOrUpdateProviderNetworkQueue.Get() + key, shutdown := c.addOrUpdateProviderNetworkQueue.Get() if shutdown { return false } - err := func(obj interface{}) error { - defer c.addOrUpdateProviderNetworkQueue.Done(obj) - var key string - var ok bool - if key, ok = obj.(string); !ok { - c.addOrUpdateProviderNetworkQueue.Forget(obj) - utilruntime.HandleError(fmt.Errorf("expected string in workqueue but got %#v", obj)) - return nil - } + err := func(key string) error { + defer c.addOrUpdateProviderNetworkQueue.Done(key) if err := c.handleAddOrUpdateProviderNetwork(key); err != nil { - return fmt.Errorf("error syncing '%s': %s, requeuing", key, err.Error()) + return fmt.Errorf("error syncing %q: %w, requeuing", key, err) } - c.addOrUpdateProviderNetworkQueue.Forget(obj) + c.addOrUpdateProviderNetworkQueue.Forget(key) return nil - }(obj) + }(key) if err != nil { utilruntime.HandleError(err) - c.addOrUpdateProviderNetworkQueue.AddRateLimited(obj) + c.addOrUpdateProviderNetworkQueue.AddRateLimited(key) return true } return true @@ -234,17 +233,10 @@ func (c *Controller) processNextDeleteProviderNetworkWorkItem() bool { return false } - err := func(obj interface{}) error { + err := func(obj *kubeovnv1.ProviderNetwork) error { defer c.deleteProviderNetworkQueue.Done(obj) - var pn *kubeovnv1.ProviderNetwork - var ok bool - if pn, ok = obj.(*kubeovnv1.ProviderNetwork); !ok { - c.deleteProviderNetworkQueue.Forget(obj) - utilruntime.HandleError(fmt.Errorf("expected ProviderNetwork in workqueue but got %#v", obj)) - return nil - } - if err := c.handleDeleteProviderNetwork(pn); err != nil { - return fmt.Errorf("error syncing '%s': %w, requeuing", pn.Name, err) + if err := c.handleDeleteProviderNetwork(obj); err != nil { + return fmt.Errorf("error syncing %q: %w, requeuing", obj.Name, err) } c.deleteProviderNetworkQueue.Forget(obj) return nil @@ -447,15 +439,15 @@ type subnetEvent struct { } func (c *Controller) enqueueAddSubnet(obj interface{}) { - c.subnetQueue.Add(subnetEvent{newObj: obj}) + c.subnetQueue.Add(&subnetEvent{newObj: obj}) } func (c *Controller) enqueueUpdateSubnet(oldObj, newObj interface{}) { - c.subnetQueue.Add(subnetEvent{oldObj: oldObj, newObj: newObj}) + c.subnetQueue.Add(&subnetEvent{oldObj: oldObj, newObj: newObj}) } func (c *Controller) enqueueDeleteSubnet(obj interface{}) { - c.subnetQueue.Add(subnetEvent{oldObj: obj}) + c.subnetQueue.Add(&subnetEvent{oldObj: obj}) } func (c *Controller) runSubnetWorker() { @@ -469,17 +461,11 @@ func (c *Controller) processNextSubnetWorkItem() bool { return false } - err := func(obj interface{}) error { + err := func(obj *subnetEvent) error { defer c.subnetQueue.Done(obj) - event, ok := obj.(subnetEvent) - if !ok { - c.subnetQueue.Forget(obj) - utilruntime.HandleError(fmt.Errorf("expected subnetEvent in workqueue but got %#v", obj)) - return nil - } - if err := c.reconcileRouters(&event); err != nil { - c.subnetQueue.AddRateLimited(event) - return fmt.Errorf("error syncing '%s': %s, requeuing", event, err.Error()) + if err := c.reconcileRouters(obj); err != nil { + c.subnetQueue.AddRateLimited(obj) + return fmt.Errorf("error syncing %v: %w, requeuing", obj, err) } c.subnetQueue.Forget(obj) return nil @@ -543,28 +529,20 @@ func (c *Controller) runPodWorker() { } func (c *Controller) processNextPodWorkItem() bool { - obj, shutdown := c.podQueue.Get() - + key, shutdown := c.podQueue.Get() if shutdown { return false } - err := func(obj interface{}) error { - defer c.podQueue.Done(obj) - var key string - var ok bool - if key, ok = obj.(string); !ok { - c.podQueue.Forget(obj) - utilruntime.HandleError(fmt.Errorf("expected string in workqueue but got %#v", obj)) - return nil - } + err := func(key string) error { + defer c.podQueue.Done(key) if err := c.handlePod(key); err != nil { c.podQueue.AddRateLimited(key) - return fmt.Errorf("error syncing '%s': %s, requeuing", key, err.Error()) + return fmt.Errorf("error syncing %q: %w, requeuing", key, err) } - c.podQueue.Forget(obj) + c.podQueue.Forget(key) return nil - }(obj) + }(key) if err != nil { utilruntime.HandleError(err) return true diff --git a/pkg/daemon/nm_linux.go b/pkg/daemon/nm_linux.go index 90470f0b20d..0f6029ed801 100644 --- a/pkg/daemon/nm_linux.go +++ b/pkg/daemon/nm_linux.go @@ -22,7 +22,7 @@ const ( type networkManagerSyncer struct { manager gonetworkmanager.NetworkManager - workqueue workqueue.Interface + workqueue workqueue.TypedInterface[string] devices *strset.Set bridgeMap map[string]string lock sync.Mutex @@ -48,7 +48,7 @@ func newNetworkManagerSyncer() *networkManagerSyncer { } syncer.manager = manager - syncer.workqueue = workqueue.NewNamed("NetworkManagerSyncer") + syncer.workqueue = workqueue.NewTypedWithConfig(workqueue.TypedQueueConfig[string]{Name: "NetworkManagerSyncer"}) syncer.devices = strset.New() syncer.bridgeMap = make(map[string]string) return syncer @@ -134,15 +134,14 @@ func (n *networkManagerSyncer) Run(handler func(nic, bridge string, delNonExiste } func (n *networkManagerSyncer) ProcessNextItem(handler func(nic, bridge string, delNonExistent bool) (int, error)) bool { - item, shutdown := n.workqueue.Get() + nic, shutdown := n.workqueue.Get() if shutdown { return false } - defer n.workqueue.Done(item) + defer n.workqueue.Done(nic) - klog.Infof("process device %v", item) + klog.Infof("process device %v", nic) - nic := item.(string) var bridge string n.lock.Lock() if !n.devices.Has(nic) {