Bump sigs.k8s.io/gateway-api to v1.7.0-rc.3

This commit is contained in:
Andreï Basdereff authored and GitHub committed 2026-10-26 10:58:07 +01:00
1 parent eabc0714b3
commit f1f227eda7
54 files changed
+7102 -851

No files matched your search

@@ -2,7 +2,7 @@ apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.21.0
controller-gen.kubebuilder.io/version: v0.23.0
name: ingressroutes.traefik.io
spec:
group: traefik.io
@@ -527,7 +527,7 @@ apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.21.0
controller-gen.kubebuilder.io/version: v0.23.0
name: ingressroutetcps.traefik.io
spec:
group: traefik.io
@@ -790,7 +790,7 @@ apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.21.0
controller-gen.kubebuilder.io/version: v0.23.0
name: ingressrouteudps.traefik.io
spec:
group: traefik.io
@@ -906,7 +906,7 @@ apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.21.0
controller-gen.kubebuilder.io/version: v0.23.0
name: middlewares.traefik.io
spec:
group: traefik.io
@@ -2949,7 +2949,7 @@ apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.21.0
controller-gen.kubebuilder.io/version: v0.23.0
name: middlewaretcps.traefik.io
spec:
group: traefik.io
@@ -3038,7 +3038,7 @@ apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.21.0
controller-gen.kubebuilder.io/version: v0.23.0
name: serverstransports.traefik.io
spec:
group: traefik.io
@@ -3258,7 +3258,7 @@ apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.21.0
controller-gen.kubebuilder.io/version: v0.23.0
name: serverstransporttcps.traefik.io
spec:
group: traefik.io
@@ -3431,7 +3431,7 @@ apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.21.0
controller-gen.kubebuilder.io/version: v0.23.0
name: tlsoptions.traefik.io
spec:
group: traefik.io
@@ -3550,7 +3550,7 @@ apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.21.0
controller-gen.kubebuilder.io/version: v0.23.0
name: tlsstores.traefik.io
spec:
group: traefik.io
@@ -3647,7 +3647,7 @@ apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.21.0
controller-gen.kubebuilder.io/version: v0.23.0
name: traefikservices.traefik.io
spec:
group: traefik.io
@@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.21.0
controller-gen.kubebuilder.io/version: v0.23.0
name: ingressroutes.traefik.io
spec:
group: traefik.io
@@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.21.0
controller-gen.kubebuilder.io/version: v0.23.0
name: ingressroutetcps.traefik.io
spec:
group: traefik.io
@@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.21.0
controller-gen.kubebuilder.io/version: v0.23.0
name: ingressrouteudps.traefik.io
spec:
group: traefik.io
@@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.21.0
controller-gen.kubebuilder.io/version: v0.23.0
name: middlewares.traefik.io
spec:
group: traefik.io
@@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.21.0
controller-gen.kubebuilder.io/version: v0.23.0
name: middlewaretcps.traefik.io
spec:
group: traefik.io
@@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.21.0
controller-gen.kubebuilder.io/version: v0.23.0
name: serverstransports.traefik.io
spec:
group: traefik.io
@@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.21.0
controller-gen.kubebuilder.io/version: v0.23.0
name: serverstransporttcps.traefik.io
spec:
group: traefik.io
@@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.21.0
controller-gen.kubebuilder.io/version: v0.23.0
name: tlsoptions.traefik.io
spec:
group: traefik.io
@@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.21.0
controller-gen.kubebuilder.io/version: v0.23.0
name: tlsstores.traefik.io
spec:
group: traefik.io
@@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.21.0
controller-gen.kubebuilder.io/version: v0.23.0
name: traefikservices.traefik.io
spec:
group: traefik.io
+32 -33
View File
@@ -56,14 +56,14 @@ require (
github.com/patrickmn/go-cache v2.1.0+incompatible
github.com/pires/go-proxyproto v0.12.0
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // No tag on the repo.
github.com/prometheus/client_golang v1.23.2
github.com/prometheus/client_golang v1.24.0
github.com/prometheus/client_model v0.6.2
github.com/quic-go/quic-go v0.62.0
github.com/redis/go-redis/v9 v9.21.0
github.com/rs/zerolog v1.34.0
github.com/samber/slog-zerolog/v2 v2.9.2
github.com/sirupsen/logrus v1.10.2
github.com/spiffe/go-spiffe/v2 v2.7.0
github.com/spiffe/go-spiffe/v2 v2.8.1
github.com/stealthrocket/wasi-go v0.8.0
github.com/stealthrocket/wazergo v0.19.1
github.com/stretchr/testify v1.12.1
@@ -101,29 +101,29 @@ require (
go.opentelemetry.io/otel/sdk/log v0.22.0
go.opentelemetry.io/otel/sdk/metric v1.46.0
go.opentelemetry.io/otel/trace v1.46.0
golang.org/x/crypto v0.57.0
golang.org/x/mod v0.41.0
golang.org/x/net v0.60.0
golang.org/x/sync v0.23.0
golang.org/x/sys v0.48.0
golang.org/x/text v0.42.0
golang.org/x/crypto v0.58.0
golang.org/x/mod v0.42.0
golang.org/x/net v0.61.0
golang.org/x/sync v0.24.0
golang.org/x/sys v0.49.0
golang.org/x/text v0.43.0
golang.org/x/time v0.16.0
golang.org/x/tools v0.49.0
google.golang.org/grpc v1.83.2
golang.org/x/tools v0.52.0
google.golang.org/grpc v1.84.0
gopkg.in/natefinch/lumberjack.v2 v2.2.1
gopkg.in/yaml.v3 v3.0.1
k8s.io/api v0.36.3
k8s.io/apiextensions-apiserver v0.36.3
k8s.io/apimachinery v0.36.3
k8s.io/client-go v0.36.3
k8s.io/utils v0.0.0-20260319190234-28399d86e0b5 // No tag on the repo.
k8s.io/api v0.37.1
k8s.io/apiextensions-apiserver v0.37.1
k8s.io/apimachinery v0.37.1
k8s.io/client-go v0.37.1
k8s.io/utils v0.0.0-20260626114624-be93311217bd // No tag on the repo.
knative.dev/networking v0.0.0-20251217020127-11890a5dabea
knative.dev/pkg v0.0.0-20251216153728-9c8140b780d1
mvdan.cc/xurls/v2 v2.5.0
sigs.k8s.io/controller-runtime v0.24.1
sigs.k8s.io/gateway-api v1.6.3
sigs.k8s.io/gateway-api/conformance v1.6.3
sigs.k8s.io/structured-merge-diff/v6 v6.4.0
sigs.k8s.io/controller-runtime v0.25.2
sigs.k8s.io/gateway-api v1.7.0-rc.3
sigs.k8s.io/gateway-api/conformance v1.7.0-rc.3
sigs.k8s.io/structured-merge-diff/v6 v6.4.2
sigs.k8s.io/yaml v1.6.0
)
@@ -260,7 +260,6 @@ require (
github.com/hashicorp/go-sockaddr v1.0.7 // indirect
github.com/hashicorp/go-uuid v1.0.3 // indirect
github.com/hashicorp/golang-lru v1.0.2 // indirect
github.com/hashicorp/hcl v1.0.1-vault-5 // indirect
github.com/hashicorp/serf v0.10.1 // indirect
github.com/huaweicloud/huaweicloud-sdk-go-v3 v0.1.215 // indirect
github.com/imdario/mergo v0.3.16 // indirect
@@ -327,15 +326,14 @@ require (
github.com/pkg/errors v0.9.1 // indirect
github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 // indirect
github.com/pquerna/otp v1.5.0 // indirect
github.com/prometheus/common v0.67.5 // indirect
github.com/prometheus/procfs v0.20.1 // indirect
github.com/prometheus/common v0.70.0 // indirect
github.com/prometheus/procfs v0.21.1 // indirect
github.com/quic-go/qpack v0.6.0 // indirect
github.com/regfish/regfish-dnsapi-go v0.2.0 // indirect
github.com/rs/cors v1.7.0 // indirect
github.com/rs/dnscache v0.0.0-20230804202142-fc85eb664529 // indirect
github.com/sacloud/sacloud-sdk-go v0.2.0 // indirect
github.com/sagikazarmark/locafero v0.4.0 // indirect
github.com/sagikazarmark/slog-shim v0.1.0 // indirect
github.com/sagikazarmark/locafero v0.11.0 // indirect
github.com/samber/lo v1.53.0 // indirect
github.com/samber/slog-common v0.21.0 // indirect
github.com/scaleway/scaleway-sdk-go v1.0.0-beta.37 // indirect
@@ -347,11 +345,11 @@ require (
github.com/softlayer/softlayer-go v1.2.1 // indirect
github.com/softlayer/xmlrpc v0.0.0-20200409220501-5f089df7cb7e // indirect
github.com/sony/gobreaker/v2 v2.4.0 // indirect
github.com/sourcegraph/conc v0.3.0 // indirect
github.com/sourcegraph/conc v0.3.1-0.20240121214520-5f936abd7ae8 // indirect
github.com/spf13/afero v1.15.0 // indirect
github.com/spf13/cast v1.7.0 // indirect
github.com/spf13/cast v1.10.0 // indirect
github.com/spf13/pflag v1.0.10 // indirect
github.com/spf13/viper v1.18.2 // indirect
github.com/spf13/viper v1.21.0 // indirect
github.com/stretchr/objx v0.5.3 // indirect
github.com/subosito/gotenv v1.6.0 // indirect
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.3.177 // indirect
@@ -373,9 +371,9 @@ require (
github.com/yandex-cloud/go-sdk/v2 v2.175.0 // indirect
github.com/youmark/pkcs8 v0.0.0-20240726163527-a2c0da244d78 // indirect
github.com/yusufpapurcu/wmi v1.2.4 // indirect
go.etcd.io/etcd/api/v3 v3.6.14 // indirect
go.etcd.io/etcd/client/pkg/v3 v3.6.14 // indirect
go.etcd.io/etcd/client/v3 v3.6.14 // indirect
go.etcd.io/etcd/api/v3 v3.7.0 // indirect
go.etcd.io/etcd/client/pkg/v3 v3.7.0 // indirect
go.etcd.io/etcd/client/v3 v3.7.0 // indirect
go.mongodb.org/mongo-driver v1.17.9 // indirect
go.opentelemetry.io/auto/sdk v1.2.1 // indirect
go.opentelemetry.io/collector/featuregate v1.41.0 // indirect
@@ -393,7 +391,7 @@ require (
go.yaml.in/yaml/v3 v3.0.5 // indirect
golang.org/x/exp v0.0.0-20260410095643-746e56fc9e2f // indirect
golang.org/x/oauth2 v0.37.0 // indirect
golang.org/x/term v0.46.0 // indirect
golang.org/x/term v0.47.0 // indirect
gomodules.xyz/jsonpatch/v2 v2.5.0 // indirect
google.golang.org/api v0.297.0 // indirect
google.golang.org/genproto/googleapis/api v0.0.0-20260819154853-08b0e4226688 // indirect
@@ -405,8 +403,9 @@ require (
gopkg.in/ns1/ns1-go.v2 v2.18.0 // indirect
gopkg.in/yaml.v2 v2.4.0 // indirect
k8s.io/klog/v2 v2.140.0 // indirect
k8s.io/kube-openapi v0.0.0-20260501160325-927ab1f70cd6 // indirect
k8s.io/streaming v0.36.3 // indirect
k8s.io/kube-openapi v0.0.0-20260721132016-d427ff9ee9ad // indirect
k8s.io/streaming v0.37.1 // indirect
sigs.k8s.io/gateway-api-conformance-images v0.2.0 // indirect
sigs.k8s.io/json v0.0.0-20250730193827-2d320260d730 // indirect
sigs.k8s.io/randfill v1.0.0 // indirect
software.sslmate.com/src/go-pkcs12 v0.7.3 // indirect
+73 -73
View File
@@ -44,6 +44,7 @@ github.com/AdaLogics/go-fuzz-headers v0.0.0-20240806141605-e8a1dd7889d6 h1:He8af
github.com/AdaLogics/go-fuzz-headers v0.0.0-20240806141605-e8a1dd7889d6/go.mod h1:8o94RPi1/7XTJvwPpRSzSUedZrtlirdB3r9Z20bi2f8=
github.com/AdamSLevy/jsonrpc2/v14 v14.1.0 h1:Dy3M9aegiI7d7PF1LUdjbVigJReo+QOceYsMyFh9qoE=
github.com/AdamSLevy/jsonrpc2/v14 v14.1.0/go.mod h1:ZakZtbCXxCz82NJvq7MoREtiQesnDfrtF6RFUGzQfLo=
github.com/Azure/azure-sdk-for-go v68.0.0+incompatible h1:fcYLmCpyNYRnvJbPerq7U0hS+6+I79yEDJBqVNcqUzU=
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.23.1 h1:zvXfGJCWvywnCA814d8ZiVyt+fm9nnTE8xSb99zRyfo=
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.23.1/go.mod h1:iptorS+VYKFL2N6PnebpS91dubG35eAOEERnT4PJbQU=
github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.14.1 h1:u93s+zU2JD62im61Bm5CZIc1ZrOJaIAWEg0WOrMVkEo=
@@ -131,8 +132,9 @@ github.com/alibabacloud-go/debug v0.0.0-20190504072949-9472017b5c68/go.mod h1:6p
github.com/alibabacloud-go/debug v1.0.0/go.mod h1:8gfgZCCAC3+SCzjWtY053FrOcd4/qlH6IHTI4QyICOc=
github.com/alibabacloud-go/debug v1.0.1 h1:MsW9SmUtbb1Fnt3ieC6NNZi6aEwrXfDksD4QA6GSbPg=
github.com/alibabacloud-go/debug v1.0.1/go.mod h1:8gfgZCCAC3+SCzjWtY053FrOcd4/qlH6IHTI4QyICOc=
github.com/alibabacloud-go/endpoint-util v1.1.0 h1:r/4D3VSw888XGaeNpP994zDUaxdgTSHBbVfZlzf6b5Q=
github.com/alibabacloud-go/endpoint-util v1.1.0/go.mod h1:O5FuCALmCKs2Ff7JFJMudHs0I5EBgecXXxZRyswlEjE=
github.com/alibabacloud-go/endpoint-util v1.1.1 h1:ZkBv2/jnghxtU0p+upSU0GGzW1VL9GQdZO3mcSUTUy8=
github.com/alibabacloud-go/endpoint-util v1.1.1/go.mod h1:O5FuCALmCKs2Ff7JFJMudHs0I5EBgecXXxZRyswlEjE=
github.com/alibabacloud-go/openapi-util v0.1.0/go.mod h1:sQuElr4ywwFRlCCberQwKRFhRzIyG4QTP/P4y1CJ6Ws=
github.com/alibabacloud-go/openapi-util v0.1.2 h1:aljdyAPotH4xHymo5wzARjcHb3Org0zKnLP4RxS0JGY=
github.com/alibabacloud-go/openapi-util v0.1.2/go.mod h1:/UehBSE2cf1gYT43GV4E+RxTdLRzURImCYY0aRmlXpw=
@@ -590,8 +592,8 @@ github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hf
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-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
github.com/google/pprof v0.0.0-20260115054156-294ebfa9ad83 h1:z2ogiKUYzX5Is6zr/vP9vJGqPwcdqsWjOt+V8J7+bTc=
github.com/google/pprof v0.0.0-20260115054156-294ebfa9ad83/go.mod h1:MxpfABSjhmINe3F1It9d+8exIHFvUqtLIRCdOGNXqiI=
github.com/google/pprof v0.0.0-20250403155104-27863c87afa6 h1:BHT72Gu3keYf3ZEu2J0b1vyeLSOYI8bm5wbJM/8yDe8=
github.com/google/pprof v0.0.0-20250403155104-27863c87afa6/go.mod h1:boTsfXsheKC2y+lKOCMpSfarhxDeIzfZG1jqGcPl3cA=
github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
github.com/google/s2a-go v0.1.9 h1:LGD7gtMgezd8a/Xak7mEWL0PjoTQFvpRudN895yqKW0=
github.com/google/s2a-go v0.1.9/go.mod h1:YA0Ei2ZQL3acow2O62kdp9UlnvMmU7kA6Eutn0dXayM=
@@ -685,8 +687,6 @@ github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uG
github.com/hashicorp/golang-lru v1.0.2 h1:dV3g9Z/unq5DpblPpw+Oqcv4dU/1omnb4Ok8iPY6p1c=
github.com/hashicorp/golang-lru v1.0.2/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4=
github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ=
github.com/hashicorp/hcl v1.0.1-vault-5 h1:kI3hhbbyzr4dldA8UdTb7ZlVVlI2DACdCfz31RPDgJM=
github.com/hashicorp/hcl v1.0.1-vault-5/go.mod h1:XYhtn6ijBSAj6n4YqAaf7RBPS4I06AItNorpy+MoQNM=
github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64=
github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ=
github.com/hashicorp/mdns v1.0.1/go.mod h1:4gW7WsVCke5TE7EPeYliwHlRUyBtfCwuFwuMg2DmyNY=
@@ -998,16 +998,16 @@ github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE=
github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU=
github.com/onsi/ginkgo/v2 v2.0.0/go.mod h1:vw5CSIxN1JObi/U8gcbwft7ZxR2dgaR70JSE3/PpL4c=
github.com/onsi/ginkgo/v2 v2.1.3/go.mod h1:vw5CSIxN1JObi/U8gcbwft7ZxR2dgaR70JSE3/PpL4c=
github.com/onsi/ginkgo/v2 v2.28.0 h1:Rrf+lVLmtlBIKv6KrIGJCjyY8N36vDVcutbGJkyqjJc=
github.com/onsi/ginkgo/v2 v2.28.0/go.mod h1:ArE1D/XhNXBXCBkKOLkbsb2c81dQHCRcF5zwn/ykDRo=
github.com/onsi/ginkgo/v2 v2.32.1 h1:6tlvcDm/3sE8lGJbZ4+d4mO3RLy24/tQWOFzVSQNIfw=
github.com/onsi/ginkgo/v2 v2.32.1/go.mod h1:+aXOY+vzZ5mu2iI2HpTZUPmM//oQfsNFX6gU9kNcA44=
github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY=
github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY=
github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo=
github.com/onsi/gomega v1.13.0/go.mod h1:lRk9szgn8TxENtWd0Tp4c3wjlRfMTMH27I+3Je41yGY=
github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY=
github.com/onsi/gomega v1.18.1/go.mod h1:0q+aL8jAiMXy9hbwj2mr5GziHiwhAIQpFmmtT5hitRs=
github.com/onsi/gomega v1.40.0 h1:Vtol0e1MghCD2ZVIilPDIg44XSL9l2QAn8ZNaljWcJc=
github.com/onsi/gomega v1.40.0/go.mod h1:M/Uqpu/8qTjtzCLUA2zJHX9Iilrau25x1PdoSRbWh5A=
github.com/onsi/gomega v1.43.0 h1:VlG/1FxqNxhSO+lq/OHBNaaqwiBK/mO8JbVkX9Y+FeU=
github.com/onsi/gomega v1.43.0/go.mod h1:REff/hsDsodHoKlWsP2mAPhu1+5/6hVYNf9rIEBpeSg=
github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk=
github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U=
github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM=
@@ -1061,8 +1061,8 @@ github.com/prometheus/client_golang v1.1.0/go.mod h1:I1FGZT9+L76gKKOs5djB6ezCbFQ
github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU=
github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M=
github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0=
github.com/prometheus/client_golang v1.23.2 h1:Je96obch5RDVy3FDMndoUsjAhG5Edi49h0RJWRi/o0o=
github.com/prometheus/client_golang v1.23.2/go.mod h1:Tb1a6LWHB3/SPIzCoaDXI4I8UHKeFTEQ1YCr+0Gyqmg=
github.com/prometheus/client_golang v1.24.0 h1:5XStIklKuAtJSNpdD3s8XJj/Yv78IQmE1kbNk87JrAI=
github.com/prometheus/client_golang v1.24.0/go.mod h1:QcsNdotprC2nS4BTM2ucbcqxd2CeXTEa9jW7zHO9iDE=
github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo=
github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
@@ -1077,8 +1077,8 @@ github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8b
github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo=
github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc=
github.com/prometheus/common v0.30.0/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls=
github.com/prometheus/common v0.67.5 h1:pIgK94WWlQt1WLwAC5j2ynLaBRDiinoAb86HZHTUGI4=
github.com/prometheus/common v0.67.5/go.mod h1:SjE/0MzDEEAyrdr5Gqc6G+sXI67maCxzaT3A2+HqjUw=
github.com/prometheus/common v0.70.0 h1:bcpru3tWPVnxGnETLgOV5jbp/JRXgYEyv65CuBLAMMI=
github.com/prometheus/common v0.70.0/go.mod h1:S/SFasQmgGiYH6C81LKCtYa8QACgthGg5zxL2udV7SY=
github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk=
github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA=
github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA=
@@ -1087,8 +1087,8 @@ github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+Gx
github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU=
github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA=
github.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA=
github.com/prometheus/procfs v0.20.1 h1:XwbrGOIplXW/AU3YhIhLODXMJYyC1isLFfYCsTEycfc=
github.com/prometheus/procfs v0.20.1/go.mod h1:o9EMBZGRyvDrSPH1RqdxhojkuXstoe4UlK79eF5TGGo=
github.com/prometheus/procfs v0.21.1 h1:GljZCt+zSTS+NZq88cyQ1LjZ+RCHp3uVuabBWA5+OJI=
github.com/prometheus/procfs v0.21.1/go.mod h1:aB55Cww9pdSJVHk0hUf0inxWyyjPogFIjmHKYgMKmtY=
github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU=
github.com/quic-go/go-ossfuzz-seeds v0.1.0 h1:APacT+iIaNF6fd8AGEiN3bT/Jtkd2jz4v4TzM7MFjy0=
github.com/quic-go/go-ossfuzz-seeds v0.1.0/go.mod h1:3IOHRbJIc+L6YKMwfDtJAM9Vj9k0YY4muhuyUYk5tbk=
@@ -1120,10 +1120,8 @@ github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQD
github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts=
github.com/sacloud/sacloud-sdk-go v0.2.0 h1:kL4h1554oMjE+ZnhYos9lbrFC3mhNjWJ9JzAJVsaqSY=
github.com/sacloud/sacloud-sdk-go v0.2.0/go.mod h1:kW29fUt9FgdTBcsGdA1sFrKnlRPuenUKza3z6jZeX68=
github.com/sagikazarmark/locafero v0.4.0 h1:HApY1R9zGo4DBgr7dqsTH/JJxLTTsOt7u6keLGt6kNQ=
github.com/sagikazarmark/locafero v0.4.0/go.mod h1:Pe1W6UlPYUk/+wc/6KFhbORCfqzgYEpgQ3O5fPuL3H4=
github.com/sagikazarmark/slog-shim v0.1.0 h1:diDBnUNK9N/354PgrxMywXnAwEr1QZcOr6gto+ugjYE=
github.com/sagikazarmark/slog-shim v0.1.0/go.mod h1:SrcSrq8aKtyuqEI1uvTDTK1arOWRIczQRv+GVI1AkeQ=
github.com/sagikazarmark/locafero v0.11.0 h1:1iurJgmM9G3PA/I+wWYIOw/5SyBtxapeHDcg+AAIFXc=
github.com/sagikazarmark/locafero v0.11.0/go.mod h1:nVIGvgyzw595SUSUE6tvCp3YYTeHs15MvlmU87WwIik=
github.com/samber/lo v1.53.0 h1:t975lj2py4kJPQ6haz1QMgtId2gtmfktACxIXArw3HM=
github.com/samber/lo v1.53.0/go.mod h1:4+MXEGsJzbKGaUEQFKBq2xtfuznW9oz/WrgyzMzRoM0=
github.com/samber/slog-common v0.21.0 h1:Wo2hTly1Br5RjYqX/BTWJJeDnTE85oWk/7vqlpZuAUc=
@@ -1167,8 +1165,8 @@ github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4k
github.com/sony/gobreaker v0.4.1/go.mod h1:ZKptC7FHNvhBz7dN2LGjPVBz2sZJmc0/PkyDJOjmxWY=
github.com/sony/gobreaker/v2 v2.4.0 h1:g2KJRW1Ubty3+ZOcSEUN7K+REQJdN6yo6XvaML+jptg=
github.com/sony/gobreaker/v2 v2.4.0/go.mod h1:pTyFJgcZ3h2tdQVLZZruK2C0eoFL1fb/G83wK1ZQl+s=
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/sourcegraph/conc v0.3.1-0.20240121214520-5f936abd7ae8 h1:+jumHNA0Wrelhe64i8F6HNlS8pkoyMv5sreGx2Ry5Rw=
github.com/sourcegraph/conc v0.3.1-0.20240121214520-5f936abd7ae8/go.mod h1:3n1Cwaq1E1/1lhQhtRK2ts/ZwZEhjcQeJQ1RuC6Q/8U=
github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA=
github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ=
github.com/spf13/afero v1.4.1/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I=
@@ -1176,8 +1174,8 @@ github.com/spf13/afero v1.15.0 h1:b/YBCLWAJdFWJTN9cLhiXXcD7mzKn9Dm86dNnfyQw1I=
github.com/spf13/afero v1.15.0/go.mod h1:NC2ByUVxtQs4b3sIUphxK0NioZnmxgyCrfzeuq8lxMg=
github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE=
github.com/spf13/cast v1.3.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE=
github.com/spf13/cast v1.7.0 h1:ntdiHjuueXFgm5nzDRdOS4yfT43P5Fnud6DH50rz/7w=
github.com/spf13/cast v1.7.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo=
github.com/spf13/cast v1.10.0 h1:h2x0u2shc1QuLHfxi+cTJvs30+ZAHOGRic8uyGTDWxY=
github.com/spf13/cast v1.10.0/go.mod h1:jNfB8QC9IA6ZuY2ZjDp0KtFO2LZZlg4S/7bzP6qqeHo=
github.com/spf13/cobra v1.1.1/go.mod h1:WnodtKOvamDL/PwE2M4iKs8aMDBZ5Q5klgD3qfVJQMI=
github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo=
github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo=
@@ -1187,10 +1185,10 @@ github.com/spf13/pflag v1.0.10 h1:4EBh2KAYBwaONj6b2Ye1GiHfwjqyROoF4RwYO+vPwFk=
github.com/spf13/pflag v1.0.10/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
github.com/spf13/viper v1.7.0/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg=
github.com/spf13/viper v1.7.1/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg=
github.com/spf13/viper v1.18.2 h1:LUXCnvUvSM6FXAsj6nnfc8Q2tp1dIgUfY9Kc8GsSOiQ=
github.com/spf13/viper v1.18.2/go.mod h1:EKmWIqdnk5lOcmR72yw6hS+8OPYcwD0jteitLMVB+yk=
github.com/spiffe/go-spiffe/v2 v2.7.0 h1:uXe1MflJoHw58wAUvxVlcM7WpKtijWG7I1UidcGh6g4=
github.com/spiffe/go-spiffe/v2 v2.7.0/go.mod h1:47Q0Q9/AqGha8QLHp+kxpH4Wca7X7EnOtlIJy3mxZ3U=
github.com/spf13/viper v1.21.0 h1:x5S+0EU27Lbphp4UKm1C+1oQO+rKx36vfCoaVebLFSU=
github.com/spf13/viper v1.21.0/go.mod h1:P0lhsswPGWD/1lZJ9ny3fYnVqxiegrlNrEmgLjbTCAY=
github.com/spiffe/go-spiffe/v2 v2.8.1 h1:eXZMLsu+3MLEPJyGJkolqtVrteZfQdUpOWj6LTiDl/E=
github.com/spiffe/go-spiffe/v2 v2.8.1/go.mod h1:47Q0Q9/AqGha8QLHp+kxpH4Wca7X7EnOtlIJy3mxZ3U=
github.com/stealthrocket/wasi-go v0.8.0 h1:Hwnv3CUoMhhRyero9vt1vfwaYa9tu/Z5kmCW4WeAmVI=
github.com/stealthrocket/wasi-go v0.8.0/go.mod h1:PJ5oVs2E1ciOJnsTnav4nvTtEcJ4D1jUZAewS9pzuZg=
github.com/stealthrocket/wazergo v0.19.1 h1:BPrITETPgSFwiytwmToO0MbUC/+RGC39JScz1JmmG6c=
@@ -1337,15 +1335,15 @@ github.com/zeebo/xxh3 v1.1.0 h1:s7DLGDK45Dyfg7++yxI0khrfwq9661w9EN78eP/UZVs=
github.com/zeebo/xxh3 v1.1.0/go.mod h1:IisAie1LELR4xhVinxWS5+zf1lA4p0MW4T+w+W07F5s=
go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU=
go.etcd.io/etcd/api/v3 v3.5.0/go.mod h1:cbVKeC6lCfl7j/8jBhAK6aIYO9XOjdptoxU/nLQcPvs=
go.etcd.io/etcd/api/v3 v3.6.14 h1:3EEwTzQPiCyhLtacyl2ZkC0pMJWowghi61nJ9JSpO1w=
go.etcd.io/etcd/api/v3 v3.6.14/go.mod h1:L4HXnXoJ5NqXSxiwB4RihT5gGJJVvHEEOpEZ37g1Uj4=
go.etcd.io/etcd/api/v3 v3.7.0 h1:WZlGK7pRtYGDB8ti8wkrQ5D2oWGMbtNL9VA5e+vF2Fg=
go.etcd.io/etcd/api/v3 v3.7.0/go.mod h1:EcTihnwAQ0BQNh5dfAdaFVFdchuo7EP0HlX7TV3jz/A=
go.etcd.io/etcd/client/pkg/v3 v3.5.0/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g=
go.etcd.io/etcd/client/pkg/v3 v3.6.14 h1:kqZf/BCRDWk9u5cNwBn1mTA+4GIZAU0POFPHmWHvo/I=
go.etcd.io/etcd/client/pkg/v3 v3.6.14/go.mod h1:Po3WXW01VRS7/gSDf8xjiY2rJTLmAwq/YmKAEz6u1+E=
go.etcd.io/etcd/client/pkg/v3 v3.7.0 h1:sW9njJzS3vXKcAJjjLQ4nk+avNUJ12Bcijcx8ehUskE=
go.etcd.io/etcd/client/pkg/v3 v3.7.0/go.mod h1:cnzZGIUzSfjEwLC6UBVsSXlEK1eepS/JUD7wE6PLRT0=
go.etcd.io/etcd/client/v2 v2.305.0/go.mod h1:h9puh54ZTgAKtEbut2oe9P4L/oqKCVB6xsXlzd7alYQ=
go.etcd.io/etcd/client/v3 v3.5.0/go.mod h1:AIKXXVX/DQXtfTEqBryiLTUXwON+GuvO6Z7lLS/oTh0=
go.etcd.io/etcd/client/v3 v3.6.14 h1:3hjJbZCFJ3nFR47dZ/jjVu1/z6BRUHN1AA34pRbUW8Q=
go.etcd.io/etcd/client/v3 v3.6.14/go.mod h1:rQqHPE7ju1B1nmaqpGdhRgBHqOTiVaUeymlY1/ATcoM=
go.etcd.io/etcd/client/v3 v3.7.0 h1:5MHO37VbPB87VRPKUXEcicjeQWiTSjpPv3Ume8xPx20=
go.etcd.io/etcd/client/v3 v3.7.0/go.mod h1:DJ382WuwjmbowjPDyaaQ0idWXy4dh91XRhe4FOrb9vM=
go.mongodb.org/mongo-driver v1.13.1/go.mod h1:wcDf1JBCXy2mOW0bWHwO/IOYqdca1MPCwDtFu/Z9+eo=
go.mongodb.org/mongo-driver v1.17.9 h1:IexDdCuuNJ3BHrELgBlyaH9p60JXAvdzWR128q+U5tU=
go.mongodb.org/mongo-driver v1.17.9/go.mod h1:LlOhpH5NUEfhxcAwG0UEkMqwYcc4JU18gtCdGudk/tQ=
@@ -1484,8 +1482,8 @@ golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDf
golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs=
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.57.0 h1:3ZVCjf8Ggz7zneR/EHRVx68Ctf+2pmIMP2UFhh9cC6M=
golang.org/x/crypto v0.57.0/go.mod h1:Fdz0i5U6CoizGwLda9DttjSk6qlZo25zYNtR+ycvuZA=
golang.org/x/crypto v0.58.0 h1:COkYLr4k7nDI4r6QtMML2AfzeIswWHAJthLS6K/M/54=
golang.org/x/crypto v0.58.0/go.mod h1:Xh+kl5A+M0gMiWDytH2Hhr5Z7WbNCpv/eB/EFgfSk+w=
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=
@@ -1530,8 +1528,8 @@ golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
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.41.0 h1:qJmnOUb4YB+FsEuM3HcWucdZASCPGhsX6uljO6pog0c=
golang.org/x/mod v0.41.0/go.mod h1:Ek9pY8RKWXwsWvd3rQiHYtMqkjSUV+s1Rj7j4H5Ur6o=
golang.org/x/mod v0.42.0 h1:ICeL3t2L30ljSPHHxDnR4fqVcBt/zR2zJAb9juavmQg=
golang.org/x/mod v0.42.0/go.mod h1:u5fzIrRInkL8MaO1cbRkUHT64v303YIT5KEqpNr7jRs=
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
@@ -1593,8 +1591,8 @@ 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.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM=
golang.org/x/net v0.26.0/go.mod h1:5YKkiSynbBIh3p6iOc/vibscux0x38BZDkn8sCUPxHE=
golang.org/x/net v0.60.0 h1:79p50tfZlm0J9YfoDsSi639qSXNGVwEzOPLCxM2FsYU=
golang.org/x/net v0.60.0/go.mod h1:2DA/G1UfVbCpQPeWTmMPGY7Cs2PkBkwu743bVX5PIVg=
golang.org/x/net v0.61.0 h1:RR+6j/BTBCrggOLugxa+66R8FvoN6MHlzDlZIbN9YFw=
golang.org/x/net v0.61.0/go.mod h1:WgDCOTH8iwtB66T4/GfI94AHo/hhdb7Hah9NDseQfiI=
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=
@@ -1619,8 +1617,8 @@ golang.org/x/sync v0.1.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.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
golang.org/x/sync v0.23.0 h1:KameEIfc1IkluZyXWLn39Wd4tURc6GbCiISGiZm2bQk=
golang.org/x/sync v0.23.0/go.mod h1:sUUOizhqBxiL6pEWpqNLUiaJn1ShEbZ6BBqskPbjZm0=
golang.org/x/sync v0.24.0 h1:iqiDrGoDgyuvAKrhLQthUEzU/R378N78gXbBjxed7oA=
golang.org/x/sync v0.24.0/go.mod h1:sUUOizhqBxiL6pEWpqNLUiaJn1ShEbZ6BBqskPbjZm0=
golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
@@ -1714,8 +1712,8 @@ 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.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.48.0 h1:bbX/i/6MgT9BVLM9RT1thmxL04yeTAhbEz4SyadbXoo=
golang.org/x/sys v0.48.0/go.mod h1:hNLxWAXmnKAxqDtdwIYC4bM9oQPEecfsnNMuSxOs3og=
golang.org/x/sys v0.49.0 h1:XbzkgYJHdqh/8m2Uu0W/dQv8nktxx4BFHp1M0gROTXA=
golang.org/x/sys v0.49.0/go.mod h1:hNLxWAXmnKAxqDtdwIYC4bM9oQPEecfsnNMuSxOs3og=
golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2/go.mod h1:TeRTkGYfJXctD9OcfyVLyj2J3IxLnKwHJR8f4D8a3YE=
golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
@@ -1731,8 +1729,8 @@ 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.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY=
golang.org/x/term v0.21.0/go.mod h1:ooXLefLobQVslOqselCNF4SxFAaoS6KujMbsGzSDmX0=
golang.org/x/term v0.46.0 h1:3+OXuTbaKDgwk8jTi3aSLHRlmWqHEUDUtxnbFigO4YE=
golang.org/x/term v0.46.0/go.mod h1:+K02xbkittuwc0Am4abfA3Fc+XRGXkvBXNO88NCXPoc=
golang.org/x/term v0.47.0 h1:cpyOwQkr2Nzxe2p6KnrTG7Ei2wtzjsuSjhpXXepZ/BM=
golang.org/x/term v0.47.0/go.mod h1:efAfAuG6RKABvg1ArGebRkvX6LXul14SM67o2e4mUCY=
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=
@@ -1751,8 +1749,8 @@ 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.42.0 h1:JbOZXgfeCPU9gacVtYliJqOhD+zhrEqK4LfdpmlUZqI=
golang.org/x/text v0.42.0/go.mod h1:ojzP1Z+2QtioaF8DTtO8K5q7JWVVYwZKenzujK0Zd0E=
golang.org/x/text v0.43.0 h1:1QivrlhwAsnMOcqgOdl9my7s9OyZl8O5/UGUTJVXoWc=
golang.org/x/text v0.43.0/go.mod h1:hbSIYA/amXcRXTFSZqh8tWHEoqRvvbKPJ2uz/KU+a+s=
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=
@@ -1822,8 +1820,8 @@ golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc
golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58=
golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk=
golang.org/x/tools v0.49.0 h1:3NI7VXzL9+1WZD52Dx2ttoPwD5DWrFGpl9mFZDlmisI=
golang.org/x/tools v0.49.0/go.mod h1:SJNXV9DBKT0UbdttsQjbfJlAE/q+y36++zo3uL3N0Oo=
golang.org/x/tools v0.52.0 h1:ryxg4U63oaUYk7uOLTF37n43f4qgtGvqV4Ioit1BaEs=
golang.org/x/tools v0.52.0/go.mod h1:ItcP5UNaVGG+Yc4eIYmaFLNJ4soEopkx5Y2d4lcEurs=
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=
@@ -1915,8 +1913,8 @@ google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv
google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU=
google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM=
google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34=
google.golang.org/grpc v1.83.2 h1:EManeRomTObA0BU7I8vXgg/78uE5MJ9M8B39EX2WscU=
google.golang.org/grpc v1.83.2/go.mod h1:YPI1hK3kDked6iHvgX3tR0y+nX/qpMFKhPgFsokw1S8=
google.golang.org/grpc v1.84.0 h1:soMyaPJ8pAak5PIQ0DGBUir0XRo2fRoMqhNWMLlLxO0=
google.golang.org/grpc v1.84.0/go.mod h1:ljCht0DrxQrXBDRTZp52Qxh3Ffk8CdYm2sj4O2QN2C0=
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=
@@ -1985,22 +1983,22 @@ honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWh
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=
k8s.io/api v0.36.3 h1:NxB+05W2UGqXWFXcLO0RB5cnqnUPP5v5sVlaOH0Iz4w=
k8s.io/api v0.36.3/go.mod h1:JzLQKqRHC5+I8RVj/lS3lCg0mg6nWI9Fo/Sk3ElxHzg=
k8s.io/apiextensions-apiserver v0.36.3 h1:dPmOAPhwTtqb1bTxbFPsy18KHPhktQeO3WUPXunZIB0=
k8s.io/apiextensions-apiserver v0.36.3/go.mod h1:KTXFqgXiuw2pRoL+Wpmttqc+up9Xt/GohadPWeLLOa4=
k8s.io/apimachinery v0.36.3 h1:PkzMRBRG8joFD8EhCuQAtNPvJlxb82FwplP26HIzvAM=
k8s.io/apimachinery v0.36.3/go.mod h1:cTSjBWgPe/6CQyBKzY/hDIRWCQQQeK0mfLbml0UYFHE=
k8s.io/client-go v0.36.3 h1:M4JdVzXxYcZk4fGpfDdYnxSwhLKWCFoQsHW6t+z8Hfg=
k8s.io/client-go v0.36.3/go.mod h1:gcPwr0c87vjjG6HB6pWEqOeuYVoXSsREjzux2j6GF30=
k8s.io/api v0.37.1 h1:l6N77U7tjwB5L056bgrBTJIEdevac/naBZ3iSvDNfpM=
k8s.io/api v0.37.1/go.mod h1:zSlbB1YpJ1YQlFVQy20UYll81UJSJJUMLhkhvg6Z78M=
k8s.io/apiextensions-apiserver v0.37.1 h1:7fIQG8eThDSTVYBWg/DOpI8v5wYfKCo0N8/TDMjj+zY=
k8s.io/apiextensions-apiserver v0.37.1/go.mod h1:1Q3ujWwHgnhBoGsdmGORflwK1sDFmuaqH1OsMDWk2Gs=
k8s.io/apimachinery v0.37.1 h1:hGCYyvKHCwtwMitj2vU4vYx0Z16N9GyZk9BBnz0wDAE=
k8s.io/apimachinery v0.37.1/go.mod h1:jF84AyUi/IRIXRot5f+lm6MpxoWI+F1XgjaMmwCdTFw=
k8s.io/client-go v0.37.1 h1:QTv/5ha4jAHtW9qxxVBkQVFBRDb4jHfFopQqqMdc+wM=
k8s.io/client-go v0.37.1/go.mod h1:dnAPtTnCNY38Ho04D2KdY1F4IKausa9UbqaAZKl60SY=
k8s.io/klog/v2 v2.140.0 h1:Tf+J3AH7xnUzZyVVXhTgGhEKnFqye14aadWv7bzXdzc=
k8s.io/klog/v2 v2.140.0/go.mod h1:o+/RWfJ6PwpnFn7OyAG3QnO47BFsymfEfrz6XyYSSp0=
k8s.io/kube-openapi v0.0.0-20260501160325-927ab1f70cd6 h1:ngxu1nL4SbFuXwu1EY7cSKcVqSjTQPVbYQT6WNjTXaU=
k8s.io/kube-openapi v0.0.0-20260501160325-927ab1f70cd6/go.mod h1:uGBT7iTA6c6MvqUvSXIaYZo9ukscABYi2btjhvgKGZ0=
k8s.io/streaming v0.36.3 h1:9rAaqBk0C0Pc7+/fqGekj07NV+/Xrew58p647A0JT8w=
k8s.io/streaming v0.36.3/go.mod h1:z6fV3D+NVkoeqRMtWwlUZK6U17SY/LqNzOxWL6GyR/s=
k8s.io/utils v0.0.0-20260319190234-28399d86e0b5 h1:kBawHLSnx/mYHmRnNUf9d4CpjREbeZuxoSGOX/J+aYM=
k8s.io/utils v0.0.0-20260319190234-28399d86e0b5/go.mod h1:xDxuJ0whA3d0I4mf/C4ppKHxXynQ+fxnkmQH0vTHnuk=
k8s.io/kube-openapi v0.0.0-20260721132016-d427ff9ee9ad h1:oXImqH8mQNk7PmvzKhmN3ddJoY6OnyM225MXwGHPm0A=
k8s.io/kube-openapi v0.0.0-20260721132016-d427ff9ee9ad/go.mod h1:0/mqHCVhlumdJ3BhCfnjSZQE037nAhNodh1/hK0T8/I=
k8s.io/streaming v0.37.1 h1:TpzVfQeFuVndn2g9mFqxy1UcUYPwDzqjUmwR/IzJCWc=
k8s.io/streaming v0.37.1/go.mod h1:APlJR26ZWRcVy5bIEj0QRrKUXROtBHPcxl2NT7EAzPU=
k8s.io/utils v0.0.0-20260626114624-be93311217bd h1:Ea7fgQ5we8Y9T0OX5o0dAHzQOBRI07D/dEYRaB9ZZEs=
k8s.io/utils v0.0.0-20260626114624-be93311217bd/go.mod h1:xDxuJ0whA3d0I4mf/C4ppKHxXynQ+fxnkmQH0vTHnuk=
knative.dev/networking v0.0.0-20251217020127-11890a5dabea h1:CsVi1M+NbPIfvBPWI9DQOwlzBG6+w+mAfhUDqw1jeXM=
knative.dev/networking v0.0.0-20251217020127-11890a5dabea/go.mod h1:gPzztUiSYDSB3yHx85xr4j2ZccEdiZDWlLsYHr7fQtg=
knative.dev/pkg v0.0.0-20251216153728-9c8140b780d1 h1:pSZ4sRKm/Kq1ec+7Yhow6jUH0FKZjzrUHpPsy6Lu8pE=
@@ -2013,18 +2011,20 @@ 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/controller-runtime v0.24.1 h1:miPEwrmirImAvgME1L9qebGHrOnGJoVmVdtOU9fRfo4=
sigs.k8s.io/controller-runtime v0.24.1/go.mod h1:vFkfY5fGt5xAC/sKb8IBFKgWPNKG9OUG29dR8Y2wImw=
sigs.k8s.io/gateway-api v1.6.3 h1:lKpJa5bGlraC/QeACvCpsHLdmO6y0iKfzVl6gzaFEYc=
sigs.k8s.io/gateway-api v1.6.3/go.mod h1:FVfx3t389ybeXOqvDghLbdvJdSCfI/PReqCUI3lu3mY=
sigs.k8s.io/gateway-api/conformance v1.6.3 h1:UxhSb1GrDsyl+PdKe3g8a/BFWgP6hzy2PPFmZRgqeMQ=
sigs.k8s.io/gateway-api/conformance v1.6.3/go.mod h1:JD6CHFrpzVyvgivIzhu0My27sOk3I3IphxJe4CIjGb4=
sigs.k8s.io/controller-runtime v0.25.2 h1:bEkK3PVOIVK9X8QWLGVhJgmFc++47vfT6wakSzAOLsQ=
sigs.k8s.io/controller-runtime v0.25.2/go.mod h1:4QqLdT6z/L6Olj8JJCtvztid4/fnIiYsfaTFScegctc=
sigs.k8s.io/gateway-api v1.7.0-rc.3 h1:AkVo9SIFc5EWyPd/cpm9SSJ4s0hQajJKeNevhRMXDoQ=
sigs.k8s.io/gateway-api v1.7.0-rc.3/go.mod h1:ihME72ink97/HnDMFNpNf9bH/mAcdTAVw0GR35iiZvA=
sigs.k8s.io/gateway-api-conformance-images v0.2.0 h1:TltEF71GuCQzHAVxpjIZM/JgJdd5RJKxWwttWMp4uZY=
sigs.k8s.io/gateway-api-conformance-images v0.2.0/go.mod h1:YOHMYwk30yhyqLgXRRxY9lj3f9voQvk/t0MAyT46Pss=
sigs.k8s.io/gateway-api/conformance v1.7.0-rc.3 h1:lxwEq7URgwMuCqpc5qXlgOHPHfq5vczfTlEB/ZWwrqU=
sigs.k8s.io/gateway-api/conformance v1.7.0-rc.3/go.mod h1:nLxWKSpnluoybVmeQ0Mj2rFqHO1mzKrrzwIY6jTtUGA=
sigs.k8s.io/json v0.0.0-20250730193827-2d320260d730 h1:IpInykpT6ceI+QxKBbEflcR5EXP7sU1kvOlxwZh5txg=
sigs.k8s.io/json v0.0.0-20250730193827-2d320260d730/go.mod h1:mdzfpAEoE6DHQEN0uh9ZbOCuHbLK5wOm7dK4ctXE9Tg=
sigs.k8s.io/randfill v1.0.0 h1:JfjMILfT8A6RbawdsK2JXGBR5AQVfd+9TbzrlneTyrU=
sigs.k8s.io/randfill v1.0.0/go.mod h1:XeLlZ/jmk4i1HRopwe7/aU3H5n1zNUcX6TM94b3QxOY=
sigs.k8s.io/structured-merge-diff/v6 v6.4.0 h1:qmp2e3ZfFi1/jJbDGpD4mt3wyp6PE1NfKHCYLqgNQJo=
sigs.k8s.io/structured-merge-diff/v6 v6.4.0/go.mod h1:M3W8sfWvn2HhQDIbGWj3S099YozAsymCo/wrT5ohRUE=
sigs.k8s.io/structured-merge-diff/v6 v6.4.2 h1:qdOxHwrl2Kaag1aQEarlYcOA9vSyGCp3CIki3aW8c4Q=
sigs.k8s.io/structured-merge-diff/v6 v6.4.2/go.mod h1:M3W8sfWvn2HhQDIbGWj3S099YozAsymCo/wrT5ohRUE=
sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc=
sigs.k8s.io/yaml v1.6.0 h1:G8fkbMSAFqgEFgh4b1wmtzDnioxFCUgTZhlbj5P9QYs=
sigs.k8s.io/yaml v1.6.0/go.mod h1:796bPqUfzR/0jLAl6XjHl3Ck7MiyVv8dbTdyT3/pMf4=
+10 -10
View File
@@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.21.0
controller-gen.kubebuilder.io/version: v0.23.0
name: ingressroutes.traefik.io
spec:
group: traefik.io
@@ -528,7 +528,7 @@ apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.21.0
controller-gen.kubebuilder.io/version: v0.23.0
name: ingressroutetcps.traefik.io
spec:
group: traefik.io
@@ -791,7 +791,7 @@ apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.21.0
controller-gen.kubebuilder.io/version: v0.23.0
name: ingressrouteudps.traefik.io
spec:
group: traefik.io
@@ -907,7 +907,7 @@ apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.21.0
controller-gen.kubebuilder.io/version: v0.23.0
name: middlewares.traefik.io
spec:
group: traefik.io
@@ -2950,7 +2950,7 @@ apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.21.0
controller-gen.kubebuilder.io/version: v0.23.0
name: middlewaretcps.traefik.io
spec:
group: traefik.io
@@ -3039,7 +3039,7 @@ apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.21.0
controller-gen.kubebuilder.io/version: v0.23.0
name: serverstransports.traefik.io
spec:
group: traefik.io
@@ -3259,7 +3259,7 @@ apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.21.0
controller-gen.kubebuilder.io/version: v0.23.0
name: serverstransporttcps.traefik.io
spec:
group: traefik.io
@@ -3432,7 +3432,7 @@ apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.21.0
controller-gen.kubebuilder.io/version: v0.23.0
name: tlsoptions.traefik.io
spec:
group: traefik.io
@@ -3551,7 +3551,7 @@ apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.21.0
controller-gen.kubebuilder.io/version: v0.23.0
name: tlsstores.traefik.io
spec:
group: traefik.io
@@ -3648,7 +3648,7 @@ apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.21.0
controller-gen.kubebuilder.io/version: v0.23.0
name: traefikservices.traefik.io
spec:
group: traefik.io
@@ -1,7 +1,7 @@
apiVersion: gateway.networking.k8s.io/v1
date: "2026-10-23T14:22:24+02:00"
date: "2026-10-26T10:33:25+01:00"
gatewayAPIChannel: experimental
gatewayAPIVersion: v1.6.3
gatewayAPIVersion: v1.7.0-rc.3
implementation:
contact:
- '@traefik/maintainers'
@@ -16,15 +16,17 @@ profiles:
result: success
statistics:
Failed: 0
Passed: 14
Passed: 17
Skipped: 0
extended:
result: success
statistics:
Failed: 0
Passed: 11
Passed: 12
Skipped: 0
supportedFeatures:
- BackendTLSPolicy
- BackendTLSPolicySANValidation
- GatewayAddressEmpty
- GatewayFrontendClientCertificateValidation
- GatewayFrontendClientCertificateValidationInsecureFallback
@@ -35,20 +37,25 @@ profiles:
- GatewayStaticAddresses
- ListenerSet
unsupportedFeatures:
- ClusterTrustBundle
- GatewayAddressRoutability
- GatewayAddressRoutabilityCluster
- GatewayBackendClientCertificate
- GatewayListenerFilters
- GatewayRouteHostnameIntersectionPrecedence
name: GATEWAY-GRPC
summary: Core tests succeeded. Extended tests succeeded.
- core:
result: success
statistics:
Failed: 0
Passed: 36
Passed: 40
Skipped: 0
extended:
result: success
statistics:
Failed: 0
Passed: 52
Passed: 54
Skipped: 0
supportedFeatures:
- BackendTLSPolicy
@@ -68,6 +75,7 @@ profiles:
- HTTPRouteBackendProtocolWebSocket
- HTTPRouteBackendRequestHeaderModification
- HTTPRouteBackendTimeout
- HTTPRouteBackendURLRewrite
- HTTPRouteCORS
- HTTPRouteDestinationPortMatching
- HTTPRouteHostRewrite
@@ -83,12 +91,16 @@ profiles:
- HTTPRouteSchemeRedirect
- ListenerSet
unsupportedFeatures:
- ClusterTrustBundle
- GatewayAddressRoutability
- GatewayAddressRoutabilityCluster
- GatewayBackendClientCertificate
- GatewayListenerFilters
- GatewayRouteHostnameIntersectionPrecedence
- HTTPRouteRequestMirror
- HTTPRouteRequestMultipleMirrors
- HTTPRouteRequestPercentageMirror
- HTTPRouteRetry
- HTTPRouteRetryBackendTimeout
- HTTPRouteRetryCodes
- HTTPRouteRetryConnectionError
name: GATEWAY-HTTP
summary: Core tests succeeded. Extended tests succeeded.
@@ -96,7 +108,7 @@ profiles:
result: success
statistics:
Failed: 0
Passed: 18
Passed: 20
Skipped: 0
extended:
result: success
@@ -116,22 +128,29 @@ profiles:
- ListenerSet
- TCPRoute
unsupportedFeatures:
- ClusterTrustBundle
- GatewayAddressRoutability
- GatewayAddressRoutabilityCluster
- GatewayBackendClientCertificate
- GatewayListenerFilters
- GatewayRouteHostnameIntersectionPrecedence
name: GATEWAY-TCP
summary: Core tests succeeded. Extended tests succeeded.
- core:
result: success
statistics:
Failed: 0
Passed: 19
Passed: 21
Skipped: 0
extended:
result: success
statistics:
Failed: 0
Passed: 16
Passed: 17
Skipped: 0
supportedFeatures:
- BackendTLSPolicy
- BackendTLSPolicySANValidation
- GatewayAddressEmpty
- GatewayFrontendClientCertificateValidation
- GatewayFrontendClientCertificateValidationInsecureFallback
@@ -144,6 +163,16 @@ profiles:
- TLSRouteModeMixed
- TLSRouteModeTerminate
unsupportedFeatures:
- ClusterTrustBundle
- GatewayAddressRoutability
- GatewayAddressRoutabilityCluster
- GatewayBackendClientCertificate
- GatewayListenerFilters
- GatewayRouteHostnameIntersectionPrecedence
name: GATEWAY-TLS
summary: Core tests succeeded. Extended tests succeeded.
succeededProvisionalTests:
- BackendTLSPolicyPreserveForeignStatus
- GatewayPreserveForeignConditions
- HTTPRouteBackendURLRewrite
- HTTPRoutePreserveForeignStatus
@@ -1,7 +1,7 @@
apiVersion: gateway.networking.k8s.io/v1
date: "2026-10-23T14:25:00+02:00"
date: "2026-10-26T10:40:18+01:00"
gatewayAPIChannel: experimental
gatewayAPIVersion: v1.6.3
gatewayAPIVersion: v1.7.0-rc.3
implementation:
contact:
- '@traefik/maintainers'
@@ -13,20 +13,24 @@ kind: ConformanceReport
mode: merged
profiles:
- core:
result: success
result: partial
skippedTests:
- GRPCRouteMultipleGateways
statistics:
Failed: 0
Passed: 14
Skipped: 0
Passed: 16
Skipped: 1
extended:
result: partial
skippedTests:
- GatewayInfrastructureMetadata
statistics:
Failed: 0
Passed: 8
Passed: 9
Skipped: 1
supportedFeatures:
- BackendTLSPolicy
- BackendTLSPolicySANValidation
- GatewayFrontendClientCertificateValidation
- GatewayFrontendClientCertificateValidationInsecureFallback
- GatewayHTTPListenerIsolation
@@ -35,18 +39,24 @@ profiles:
- GatewayPort8080
- ListenerSet
unsupportedFeatures:
- ClusterTrustBundle
- GatewayAddressEmpty
- GatewayAddressRoutability
- GatewayAddressRoutabilityCluster
- GatewayBackendClientCertificate
- GatewayListenerFilters
- GatewayRouteHostnameIntersectionPrecedence
- GatewayStaticAddresses
name: GATEWAY-GRPC
summary: Core tests succeeded. Extended tests partially succeeded with 1 test skips.
summary: Core tests partially succeeded with 1 test skips. Extended tests partially
succeeded with 1 test skips.
- core:
result: partial
skippedTests:
- HTTPRouteMultipleGateways
statistics:
Failed: 0
Passed: 35
Passed: 39
Skipped: 1
extended:
result: partial
@@ -58,7 +68,7 @@ profiles:
- GatewayInvalidFrontendClientCertificateValidation
statistics:
Failed: 0
Passed: 45
Passed: 47
Skipped: 5
supportedFeatures:
- BackendTLSPolicy
@@ -76,6 +86,7 @@ profiles:
- HTTPRouteBackendProtocolWebSocket
- HTTPRouteBackendRequestHeaderModification
- HTTPRouteBackendTimeout
- HTTPRouteBackendURLRewrite
- HTTPRouteCORS
- HTTPRouteDestinationPortMatching
- HTTPRouteHostRewrite
@@ -91,14 +102,18 @@ profiles:
- HTTPRouteSchemeRedirect
- ListenerSet
unsupportedFeatures:
- ClusterTrustBundle
- GatewayAddressEmpty
- GatewayAddressRoutability
- GatewayAddressRoutabilityCluster
- GatewayBackendClientCertificate
- GatewayListenerFilters
- GatewayRouteHostnameIntersectionPrecedence
- GatewayStaticAddresses
- HTTPRouteRequestMirror
- HTTPRouteRequestMultipleMirrors
- HTTPRouteRequestPercentageMirror
- HTTPRouteRetry
- HTTPRouteRetryBackendTimeout
- HTTPRouteRetryCodes
- HTTPRouteRetryConnectionError
name: GATEWAY-HTTP
summary: Core tests partially succeeded with 1 test skips. Extended tests partially
@@ -107,7 +122,7 @@ profiles:
result: success
statistics:
Failed: 0
Passed: 18
Passed: 20
Skipped: 0
extended:
result: partial
@@ -127,8 +142,13 @@ profiles:
- ListenerSet
- TCPRoute
unsupportedFeatures:
- ClusterTrustBundle
- GatewayAddressEmpty
- GatewayAddressRoutability
- GatewayAddressRoutabilityCluster
- GatewayBackendClientCertificate
- GatewayListenerFilters
- GatewayRouteHostnameIntersectionPrecedence
- GatewayStaticAddresses
name: GATEWAY-TCP
summary: Core tests succeeded. Extended tests partially succeeded with 1 test skips.
@@ -138,7 +158,7 @@ profiles:
- TLSRouteHostnameIntersection
statistics:
Failed: 0
Passed: 18
Passed: 20
Skipped: 1
extended:
result: partial
@@ -146,9 +166,11 @@ profiles:
- GatewayInfrastructureMetadata
statistics:
Failed: 0
Passed: 13
Passed: 14
Skipped: 1
supportedFeatures:
- BackendTLSPolicy
- BackendTLSPolicySANValidation
- GatewayFrontendClientCertificateValidation
- GatewayFrontendClientCertificateValidationInsecureFallback
- GatewayHTTPListenerIsolation
@@ -159,9 +181,19 @@ profiles:
- TLSRouteModeMixed
- TLSRouteModeTerminate
unsupportedFeatures:
- ClusterTrustBundle
- GatewayAddressEmpty
- GatewayAddressRoutability
- GatewayAddressRoutabilityCluster
- GatewayBackendClientCertificate
- GatewayListenerFilters
- GatewayRouteHostnameIntersectionPrecedence
- GatewayStaticAddresses
name: GATEWAY-TLS
summary: Core tests partially succeeded with 1 test skips. Extended tests partially
succeeded with 1 test skips.
succeededProvisionalTests:
- BackendTLSPolicyPreserveForeignStatus
- GatewayPreserveForeignConditions
- HTTPRouteBackendURLRewrite
- HTTPRoutePreserveForeignStatus
@@ -82,7 +82,7 @@ func (s *GatewayAPIConformanceMergedSuite) SetupSuite() {
s.k3sContainer, err = k3s.Run(
ctx,
k3sImage,
k3s.WithManifest("./fixtures/gateway-api-conformance/00-experimental-v1.6.3.yml"),
k3s.WithManifest("./fixtures/gateway-api-conformance/00-experimental-v1.7.0-rc.3.yml"),
k3s.WithManifest("./fixtures/gateway-api-conformance/merged/01-rbac.yml"),
k3s.WithManifest("./fixtures/gateway-api-conformance/merged/02-traefik.yml"),
network.WithNetwork(nil, s.network),
@@ -192,6 +192,7 @@ func (s *GatewayAPIConformanceMergedSuite) TestK8sGatewayAPIConformanceMerged()
// cannot satisfy in merged mode cause they enforce having an operator.
SkipTests: []string{
tests.HTTPRouteMultipleGateways.ShortName,
tests.GRPCRouteMultipleGateways.ShortName,
tests.TLSRouteHostnameIntersection.ShortName,
tests.GatewayInfrastructureMetadata.ShortName,
tests.GatewayFrontendClientCertificateValidation.ShortName,
+1 -1
View File
@@ -113,7 +113,7 @@ func (s *GatewayAPIConformanceSuite) SetupSuite() {
// which a single node cannot do for the several port 80 Services the
// operator provisions. nodeLoadBalancer assigns their addresses.
testcontainers.WithCmdArgs("--disable=servicelb"),
k3s.WithManifest("./fixtures/gateway-api-conformance/00-experimental-v1.6.3.yml"),
k3s.WithManifest("./fixtures/gateway-api-conformance/00-experimental-v1.7.0-rc.3.yml"),
k3s.WithManifest("./fixtures/gateway-api-conformance/operator/01-operator.yml"),
k3s.WithManifest("./fixtures/gateway-api-conformance/operator/02-gatewayclass.yml"),
k3s.WithManifest("./fixtures/gateway-api-conformance/operator/03-bootstrap-gateway.yml"),
+1 -1
View File
@@ -32,7 +32,7 @@ func (s *GatewayAPISuite) TestGatewayConfiguration() {
ctx := s.T().Context()
k3sContainer, err := k3s.Run(ctx, k3sImage,
k3s.WithManifest("./fixtures/k8s-gateway/00-experimental-v1.6.3.yml"),
k3s.WithManifest("./fixtures/k8s-gateway/00-experimental-v1.7.0-rc.3.yml"),
k3s.WithManifest("./fixtures/k8s-gateway/01-services.yml"),
k3s.WithManifest("./fixtures/k8s-gateway/02-gateway.yml"),
k3s.WithManifest("./fixtures/k8s-gateway/03-tcproute.yml"),
@@ -32,7 +32,7 @@ package v1alpha1
// ClientTLSWithCAOptional holds the client TLS configuration.
// TODO: This has to be removed once the CAOptional option is removed.
type ClientTLSWithCAOptionalApplyConfiguration struct {
ClientTLSApplyConfiguration `json:",inline"`
ClientTLSApplyConfiguration `json:""`
// Deprecated: TLS client authentication is a server side option (see https://github.com/golang/go/blob/740a490f71d026bb7d2d13cb8fa2d6d6e0572b70/src/crypto/tls/common.go#L634).
CAOptional *bool `json:"caOptional,omitempty"`
}
@@ -37,7 +37,7 @@ import (
//
// IngressRoute is the CRD implementation of a Traefik HTTP Router.
type IngressRouteApplyConfiguration struct {
v1.TypeMetaApplyConfiguration `json:",inline"`
v1.TypeMetaApplyConfiguration `json:""`
// Standard object's metadata.
// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
*v1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
@@ -37,7 +37,7 @@ import (
//
// IngressRouteTCP is the CRD implementation of a Traefik TCP Router.
type IngressRouteTCPApplyConfiguration struct {
v1.TypeMetaApplyConfiguration `json:",inline"`
v1.TypeMetaApplyConfiguration `json:""`
// Standard object's metadata.
// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
*v1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
@@ -37,7 +37,7 @@ import (
//
// IngressRouteUDP is a CRD implementation of a Traefik UDP Router.
type IngressRouteUDPApplyConfiguration struct {
v1.TypeMetaApplyConfiguration `json:",inline"`
v1.TypeMetaApplyConfiguration `json:""`
// Standard object's metadata.
// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
*v1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
@@ -38,7 +38,7 @@ import (
// Middleware is the CRD implementation of a Traefik Middleware.
// More info: https://doc.traefik.io/traefik/v3.7/reference/routing-configuration/http/middlewares/overview/
type MiddlewareApplyConfiguration struct {
v1.TypeMetaApplyConfiguration `json:",inline"`
v1.TypeMetaApplyConfiguration `json:""`
// Standard object's metadata.
// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
*v1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
@@ -38,7 +38,7 @@ import (
// MiddlewareTCP is the CRD implementation of a Traefik TCP middleware.
// More info: https://doc.traefik.io/traefik/v3.7/reference/routing-configuration/tcp/middlewares/overview/
type MiddlewareTCPApplyConfiguration struct {
v1.TypeMetaApplyConfiguration `json:",inline"`
v1.TypeMetaApplyConfiguration `json:""`
// Standard object's metadata.
// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
*v1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
@@ -37,7 +37,7 @@ import (
// Mirroring holds the mirroring service configuration.
// More info: https://doc.traefik.io/traefik/v3.7/reference/routing-configuration/http/load-balancing/service/#mirroring
type MirroringApplyConfiguration struct {
LoadBalancerSpecApplyConfiguration `json:",inline"`
LoadBalancerSpecApplyConfiguration `json:""`
// MirrorBody defines whether the body of the request should be mirrored.
// Default value is true.
MirrorBody *bool `json:"mirrorBody,omitempty"`
@@ -36,7 +36,7 @@ import (
//
// MirrorService holds the mirror configuration.
type MirrorServiceApplyConfiguration struct {
LoadBalancerSpecApplyConfiguration `json:",inline"`
LoadBalancerSpecApplyConfiguration `json:""`
// Percent defines the part of the traffic to mirror.
// Supported values: 0 to 100.
Percent *int `json:"percent,omitempty"`
@@ -40,7 +40,7 @@ import (
// The default@internal serversTransport is created from the static configuration.
// More info: https://doc.traefik.io/traefik/v3.7/reference/routing-configuration/http/load-balancing/serverstransport/
type ServersTransportApplyConfiguration struct {
v1.TypeMetaApplyConfiguration `json:",inline"`
v1.TypeMetaApplyConfiguration `json:""`
// Standard object's metadata.
// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
*v1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
@@ -40,7 +40,7 @@ import (
// The default@internal tcpServersTransport can be configured in the static configuration.
// More info: https://doc.traefik.io/traefik/v3.7/reference/routing-configuration/tcp/serverstransport/
type ServersTransportTCPApplyConfiguration struct {
v1.TypeMetaApplyConfiguration `json:",inline"`
v1.TypeMetaApplyConfiguration `json:""`
// Standard object's metadata.
// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
*v1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
@@ -36,7 +36,7 @@ import (
//
// Service defines an upstream HTTP service to proxy traffic to.
type ServiceApplyConfiguration struct {
LoadBalancerSpecApplyConfiguration `json:",inline"`
LoadBalancerSpecApplyConfiguration `json:""`
}
// ServiceApplyConfiguration constructs a declarative configuration of the Service type for use with
@@ -36,7 +36,7 @@ import (
// TapResponse holds the configuration of the response records sent by the tap middleware.
// A response record is configured like a request record, with the request headers on top.
type TapResponseApplyConfiguration struct {
TapRequestApplyConfiguration `json:",inline"`
TapRequestApplyConfiguration `json:""`
// RequestHeaders defines the request headers described in the records, along with the request line.
// It allows a response record to be understood, and correlated, without the matching request record.
RequestHeaders []string `json:"requestHeaders,omitempty"`
@@ -38,7 +38,7 @@ import (
// TLSOption is the CRD implementation of a Traefik TLS Option, allowing to configure some parameters of the TLS connection.
// More info: https://doc.traefik.io/traefik/v3.7/reference/routing-configuration/http/tls/tls-certificates/#certificates-stores#tls-options
type TLSOptionApplyConfiguration struct {
v1.TypeMetaApplyConfiguration `json:",inline"`
v1.TypeMetaApplyConfiguration `json:""`
// Standard object's metadata.
// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
*v1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
@@ -40,7 +40,7 @@ import (
// This means that you cannot have two stores that are named default in different Kubernetes namespaces.
// More info: https://doc.traefik.io/traefik/v3.7/reference/routing-configuration/http/tls/tls-certificates/#certificates-stores#certificates-stores
type TLSStoreApplyConfiguration struct {
v1.TypeMetaApplyConfiguration `json:",inline"`
v1.TypeMetaApplyConfiguration `json:""`
// Standard object's metadata.
// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
*v1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
@@ -41,7 +41,7 @@ import (
// - Mirror traffic on services
// More info: https://doc.traefik.io/traefik/v3.7/reference/routing-configuration/kubernetes/crd/http/traefikservice/
type TraefikServiceApplyConfiguration struct {
v1.TypeMetaApplyConfiguration `json:",inline"`
v1.TypeMetaApplyConfiguration `json:""`
// Standard object's metadata.
// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
*v1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
@@ -37,7 +37,7 @@ import (
)
type Interface interface {
Discovery() discovery.DiscoveryInterface
Discovery() discovery.DiscoveryInterfaces
TraefikV1alpha1() traefikv1alpha1.TraefikV1alpha1Interface
}
@@ -53,7 +53,7 @@ func (c *Clientset) TraefikV1alpha1() traefikv1alpha1.TraefikV1alpha1Interface {
}
// Discovery retrieves the DiscoveryClient
func (c *Clientset) Discovery() discovery.DiscoveryInterface {
func (c *Clientset) Discovery() discovery.DiscoveryInterfaces {
if c == nil {
return nil
}
@@ -80,7 +80,7 @@ type Clientset struct {
tracker testing.ObjectTracker
}
func (c *Clientset) Discovery() discovery.DiscoveryInterface {
func (c *Clientset) Discovery() discovery.DiscoveryInterfaces {
return c.discovery
}
@@ -261,7 +261,7 @@ func (f *sharedInformerFactory) InformerFor(obj runtime.Object, newFunc internal
// ctx, cancel := context.WithCancel(context.Background())
// defer cancel()
// factory := NewSharedInformerFactory(client, resyncPeriod)
// defer factory.WaitForStop() // Returns immediately if nothing was started.
// defer factory.Shutdown() // Returns immediately if nothing was started.
// genericInformer := factory.ForResource(resource)
// typedInformer := factory.SomeAPIGroup().V1().SomeType()
// handle, err := typeInformer.Informer().AddEventHandler(...)
@@ -319,7 +319,7 @@ type SharedInformerFactory interface {
// WaitForCacheSync blocks until all started informers' caches were synced
// or the stop channel gets closed.
//
// Contextual logging: WaitForCacheSync should be used instead of WaitForCacheSync in code which supports contextual logging. It also returns a more useful result.
// Contextual logging: WaitForCacheSyncWithContext should be used instead of WaitForCacheSync in code which supports contextual logging. It also returns a more useful result.
WaitForCacheSync(stopCh <-chan struct{}) map[reflect.Type]bool
// WaitForCacheSyncWithContext blocks until all started informers' caches were synced
@@ -42,12 +42,40 @@ import (
)
// IngressRouteInformer provides access to a shared informer and lister for
// IngressRoutes.
// IngressRoutes. Prefer using the type-safe variant (see [TypedIngressRouteInformer]).
type IngressRouteInformer interface {
Informer() cache.SharedIndexInformer
Lister() traefikiov1alpha1.IngressRouteLister
}
// TypedIngressRouteInformer provides access to a shared informer and lister for
// IngressRoutes, including the type-safe TypedInformer variant.
// It is a superset of IngressRouteInformer.
type TypedIngressRouteInformer interface {
Informer() cache.SharedIndexInformer
TypedInformer() IngressRouteIndexInformer
Lister() traefikiov1alpha1.IngressRouteLister
}
// IngressRouteIndexInformer is a wrapper around the underlying [cache.SharedIndexInformer]
// with type-safe variants of several methods.
type IngressRouteIndexInformer cache.TypedSharedIndexInformer[*crdtraefikiov1alpha1.IngressRoute]
// IngressRouteHandlerFuncs is a specialization of [cache.TypedResourceEventHandlerFuncs] for IngressRoute.
type IngressRouteHandlerFuncs = cache.TypedResourceEventHandlerFuncs[*crdtraefikiov1alpha1.IngressRoute]
// IngressRouteDetailedHandlerFuncs is a specialization of [cache.TypedResourceEventHandlerDetailedFuncs] for IngressRoute.
type IngressRouteDetailedHandlerFuncs = cache.TypedResourceEventHandlerDetailedFuncs[*crdtraefikiov1alpha1.IngressRoute]
// IngressRouteFilteringHandler is a specialization of [cache.TypedFilteringResourceEventHandler] for IngressRoute.
type IngressRouteFilteringHandler = cache.TypedFilteringResourceEventHandler[*crdtraefikiov1alpha1.IngressRoute]
// IngressRouteIndexers is a specialization of [cache.TypedIndexers] for IngressRoute.
type IngressRouteIndexers = cache.TypedIndexers[*crdtraefikiov1alpha1.IngressRoute]
// DeletedIngressRoute is a specialization of [cache.DeletedObject] for IngressRoute.
type DeletedIngressRoute = cache.DeletedObject[*crdtraefikiov1alpha1.IngressRoute]
type ingressRouteInformer struct {
factory internalinterfaces.SharedInformerFactory
tweakListOptions internalinterfaces.TweakListOptionsFunc
@@ -57,25 +85,49 @@ type ingressRouteInformer struct {
// NewIngressRouteInformer constructs a new informer for IngressRoute type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
// If you really need an independent one, prefer using the type-safe variant (see [NewTypedIngressRouteInformer]).
func NewIngressRouteInformer(client versioned.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
return NewIngressRouteInformerWithOptions(client, namespace, internalinterfaces.InformerOptions{ResyncPeriod: resyncPeriod, Indexers: indexers})
}
// NewTypedIngressRouteInformer constructs a new informer for IngressRoute type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewTypedIngressRouteInformer(client versioned.Interface, namespace string, resyncPeriod time.Duration, indexers IngressRouteIndexers) IngressRouteIndexInformer {
return NewTypedIngressRouteInformerWithOptions(client, namespace, internalinterfaces.InformerOptions{ResyncPeriod: resyncPeriod, Indexers: cache.TypedIndexersToIndexers(indexers)})
}
// NewFilteredIngressRouteInformer constructs a new informer for IngressRoute type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
// If you really need an independent one, prefer using the type-safe variant (see [NewTypedFilteredIngressRouteInformer]).
func NewFilteredIngressRouteInformer(client versioned.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
return NewIngressRouteInformerWithOptions(client, namespace, internalinterfaces.InformerOptions{ResyncPeriod: resyncPeriod, Indexers: indexers, TweakListOptions: tweakListOptions})
return NewTypedIngressRouteInformerWithOptions(client, namespace, internalinterfaces.InformerOptions{ResyncPeriod: resyncPeriod, Indexers: indexers, TweakListOptions: tweakListOptions})
}
// NewTypedFilteredIngressRouteInformer constructs a new informer for IngressRoute type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewTypedFilteredIngressRouteInformer(client versioned.Interface, namespace string, resyncPeriod time.Duration, indexers IngressRouteIndexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) IngressRouteIndexInformer {
return NewTypedIngressRouteInformerWithOptions(client, namespace, internalinterfaces.InformerOptions{ResyncPeriod: resyncPeriod, Indexers: cache.TypedIndexersToIndexers(indexers), TweakListOptions: tweakListOptions})
}
// NewIngressRouteInformerWithOptions constructs a new informer for IngressRoute type with additional options.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
// If you really need an independent one, prefer using the type-safe variant (see [NewTypedIngressRouteInformerWithOptions]).
func NewIngressRouteInformerWithOptions(client versioned.Interface, namespace string, options internalinterfaces.InformerOptions) cache.SharedIndexInformer {
return NewTypedIngressRouteInformerWithOptions(client, namespace, options)
}
// NewTypedIngressRouteInformerWithOptions constructs a new informer for IngressRoute type with additional options.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewTypedIngressRouteInformerWithOptions(client versioned.Interface, namespace string, options internalinterfaces.InformerOptions) IngressRouteIndexInformer {
gvr := schema.GroupVersionResource{Group: "traefik.io", Version: "v1alpha1", Resource: "ingressroutes"}
identifier := options.InformerName.WithResource(gvr)
tweakListOptions := options.TweakListOptions
return cache.NewSharedIndexInformerWithOptions(
return cache.NewTypedSharedIndexInformer[*crdtraefikiov1alpha1.IngressRoute](cache.NewSharedIndexInformerWithOptions(
cache.ToListWatcherWithWatchListSemantics(&cache.ListWatch{
ListFunc: func(opts v1.ListOptions) (runtime.Object, error) {
if tweakListOptions != nil {
@@ -108,17 +160,57 @@ func NewIngressRouteInformerWithOptions(client versioned.Interface, namespace st
Indexers: options.Indexers,
Identifier: identifier,
},
)
))
}
func (f *ingressRouteInformer) defaultInformer(client versioned.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
return NewIngressRouteInformerWithOptions(client, f.namespace, internalinterfaces.InformerOptions{ResyncPeriod: resyncPeriod, Indexers: cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, InformerName: f.factory.InformerName(), TweakListOptions: f.tweakListOptions})
return NewTypedIngressRouteInformerWithOptions(client, f.namespace, internalinterfaces.InformerOptions{ResyncPeriod: resyncPeriod, Indexers: cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, InformerName: f.factory.InformerName(), TweakListOptions: f.tweakListOptions})
}
func (f *ingressRouteInformer) Informer() cache.SharedIndexInformer {
return f.factory.InformerFor(&crdtraefikiov1alpha1.IngressRoute{}, f.defaultInformer)
return f.TypedInformer()
}
func (f *ingressRouteInformer) TypedInformer() IngressRouteIndexInformer {
return cache.NewTypedSharedIndexInformer[*crdtraefikiov1alpha1.IngressRoute](f.factory.InformerFor(&crdtraefikiov1alpha1.IngressRoute{}, f.defaultInformer))
}
func (f *ingressRouteInformer) Lister() traefikiov1alpha1.IngressRouteLister {
return traefikiov1alpha1.NewIngressRouteLister(f.Informer().GetIndexer())
}
// ToTypedIngressRouteInformer converts an untyped informer into a TypedIngressRouteInformer.
//
// WARNING: this conversion is only safe if the informer handles objects of type
// *IngressRoute. If that is not the case, calling type-safe methods of the returned
// TypedIngressRouteInformer leads to runtime panics. A safer alternative is to pass
// around a TypedIngressRouteInformer instances that was obtained from a
// SharedInformerFactory.
func ToTypedIngressRouteInformer(informer IngressRouteInformer) TypedIngressRouteInformer {
if informer, ok := informer.(TypedIngressRouteInformer); ok {
return informer
}
return &ingressRouteTypedInformerAdapter{informer}
}
type ingressRouteTypedInformerAdapter struct {
IngressRouteInformer
}
func (a *ingressRouteTypedInformerAdapter) TypedInformer() IngressRouteIndexInformer {
return cache.NewTypedSharedIndexInformer[*crdtraefikiov1alpha1.IngressRoute](a.Informer())
}
// ToIngressRouteIndexInformer converts an untyped informer into a IngressRouteIndexInformer.
//
// WARNING: this conversion is only safe if the informer handles objects of type
// *IngressRoute. If that is not the case, calling type-safe methods of the returned
// IngressRouteIndexInformer leads to runtime panics. A safer alternative is to pass
// around a IngressRouteIndexInformer instances that was obtained from a
// SharedInformerFactory.
func ToIngressRouteIndexInformer(informer cache.SharedIndexInformer) IngressRouteIndexInformer {
if informer, ok := informer.(IngressRouteIndexInformer); ok {
return informer
}
return cache.NewTypedSharedIndexInformer[*crdtraefikiov1alpha1.IngressRoute](informer)
}
@@ -42,12 +42,40 @@ import (
)
// IngressRouteTCPInformer provides access to a shared informer and lister for
// IngressRouteTCPs.
// IngressRouteTCPs. Prefer using the type-safe variant (see [TypedIngressRouteTCPInformer]).
type IngressRouteTCPInformer interface {
Informer() cache.SharedIndexInformer
Lister() traefikiov1alpha1.IngressRouteTCPLister
}
// TypedIngressRouteTCPInformer provides access to a shared informer and lister for
// IngressRouteTCPs, including the type-safe TypedInformer variant.
// It is a superset of IngressRouteTCPInformer.
type TypedIngressRouteTCPInformer interface {
Informer() cache.SharedIndexInformer
TypedInformer() IngressRouteTCPIndexInformer
Lister() traefikiov1alpha1.IngressRouteTCPLister
}
// IngressRouteTCPIndexInformer is a wrapper around the underlying [cache.SharedIndexInformer]
// with type-safe variants of several methods.
type IngressRouteTCPIndexInformer cache.TypedSharedIndexInformer[*crdtraefikiov1alpha1.IngressRouteTCP]
// IngressRouteTCPHandlerFuncs is a specialization of [cache.TypedResourceEventHandlerFuncs] for IngressRouteTCP.
type IngressRouteTCPHandlerFuncs = cache.TypedResourceEventHandlerFuncs[*crdtraefikiov1alpha1.IngressRouteTCP]
// IngressRouteTCPDetailedHandlerFuncs is a specialization of [cache.TypedResourceEventHandlerDetailedFuncs] for IngressRouteTCP.
type IngressRouteTCPDetailedHandlerFuncs = cache.TypedResourceEventHandlerDetailedFuncs[*crdtraefikiov1alpha1.IngressRouteTCP]
// IngressRouteTCPFilteringHandler is a specialization of [cache.TypedFilteringResourceEventHandler] for IngressRouteTCP.
type IngressRouteTCPFilteringHandler = cache.TypedFilteringResourceEventHandler[*crdtraefikiov1alpha1.IngressRouteTCP]
// IngressRouteTCPIndexers is a specialization of [cache.TypedIndexers] for IngressRouteTCP.
type IngressRouteTCPIndexers = cache.TypedIndexers[*crdtraefikiov1alpha1.IngressRouteTCP]
// DeletedIngressRouteTCP is a specialization of [cache.DeletedObject] for IngressRouteTCP.
type DeletedIngressRouteTCP = cache.DeletedObject[*crdtraefikiov1alpha1.IngressRouteTCP]
type ingressRouteTCPInformer struct {
factory internalinterfaces.SharedInformerFactory
tweakListOptions internalinterfaces.TweakListOptionsFunc
@@ -57,25 +85,49 @@ type ingressRouteTCPInformer struct {
// NewIngressRouteTCPInformer constructs a new informer for IngressRouteTCP type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
// If you really need an independent one, prefer using the type-safe variant (see [NewTypedIngressRouteTCPInformer]).
func NewIngressRouteTCPInformer(client versioned.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
return NewIngressRouteTCPInformerWithOptions(client, namespace, internalinterfaces.InformerOptions{ResyncPeriod: resyncPeriod, Indexers: indexers})
}
// NewTypedIngressRouteTCPInformer constructs a new informer for IngressRouteTCP type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewTypedIngressRouteTCPInformer(client versioned.Interface, namespace string, resyncPeriod time.Duration, indexers IngressRouteTCPIndexers) IngressRouteTCPIndexInformer {
return NewTypedIngressRouteTCPInformerWithOptions(client, namespace, internalinterfaces.InformerOptions{ResyncPeriod: resyncPeriod, Indexers: cache.TypedIndexersToIndexers(indexers)})
}
// NewFilteredIngressRouteTCPInformer constructs a new informer for IngressRouteTCP type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
// If you really need an independent one, prefer using the type-safe variant (see [NewTypedFilteredIngressRouteTCPInformer]).
func NewFilteredIngressRouteTCPInformer(client versioned.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
return NewIngressRouteTCPInformerWithOptions(client, namespace, internalinterfaces.InformerOptions{ResyncPeriod: resyncPeriod, Indexers: indexers, TweakListOptions: tweakListOptions})
return NewTypedIngressRouteTCPInformerWithOptions(client, namespace, internalinterfaces.InformerOptions{ResyncPeriod: resyncPeriod, Indexers: indexers, TweakListOptions: tweakListOptions})
}
// NewTypedFilteredIngressRouteTCPInformer constructs a new informer for IngressRouteTCP type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewTypedFilteredIngressRouteTCPInformer(client versioned.Interface, namespace string, resyncPeriod time.Duration, indexers IngressRouteTCPIndexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) IngressRouteTCPIndexInformer {
return NewTypedIngressRouteTCPInformerWithOptions(client, namespace, internalinterfaces.InformerOptions{ResyncPeriod: resyncPeriod, Indexers: cache.TypedIndexersToIndexers(indexers), TweakListOptions: tweakListOptions})
}
// NewIngressRouteTCPInformerWithOptions constructs a new informer for IngressRouteTCP type with additional options.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
// If you really need an independent one, prefer using the type-safe variant (see [NewTypedIngressRouteTCPInformerWithOptions]).
func NewIngressRouteTCPInformerWithOptions(client versioned.Interface, namespace string, options internalinterfaces.InformerOptions) cache.SharedIndexInformer {
return NewTypedIngressRouteTCPInformerWithOptions(client, namespace, options)
}
// NewTypedIngressRouteTCPInformerWithOptions constructs a new informer for IngressRouteTCP type with additional options.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewTypedIngressRouteTCPInformerWithOptions(client versioned.Interface, namespace string, options internalinterfaces.InformerOptions) IngressRouteTCPIndexInformer {
gvr := schema.GroupVersionResource{Group: "traefik.io", Version: "v1alpha1", Resource: "ingressroutetcps"}
identifier := options.InformerName.WithResource(gvr)
tweakListOptions := options.TweakListOptions
return cache.NewSharedIndexInformerWithOptions(
return cache.NewTypedSharedIndexInformer[*crdtraefikiov1alpha1.IngressRouteTCP](cache.NewSharedIndexInformerWithOptions(
cache.ToListWatcherWithWatchListSemantics(&cache.ListWatch{
ListFunc: func(opts v1.ListOptions) (runtime.Object, error) {
if tweakListOptions != nil {
@@ -108,17 +160,57 @@ func NewIngressRouteTCPInformerWithOptions(client versioned.Interface, namespace
Indexers: options.Indexers,
Identifier: identifier,
},
)
))
}
func (f *ingressRouteTCPInformer) defaultInformer(client versioned.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
return NewIngressRouteTCPInformerWithOptions(client, f.namespace, internalinterfaces.InformerOptions{ResyncPeriod: resyncPeriod, Indexers: cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, InformerName: f.factory.InformerName(), TweakListOptions: f.tweakListOptions})
return NewTypedIngressRouteTCPInformerWithOptions(client, f.namespace, internalinterfaces.InformerOptions{ResyncPeriod: resyncPeriod, Indexers: cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, InformerName: f.factory.InformerName(), TweakListOptions: f.tweakListOptions})
}
func (f *ingressRouteTCPInformer) Informer() cache.SharedIndexInformer {
return f.factory.InformerFor(&crdtraefikiov1alpha1.IngressRouteTCP{}, f.defaultInformer)
return f.TypedInformer()
}
func (f *ingressRouteTCPInformer) TypedInformer() IngressRouteTCPIndexInformer {
return cache.NewTypedSharedIndexInformer[*crdtraefikiov1alpha1.IngressRouteTCP](f.factory.InformerFor(&crdtraefikiov1alpha1.IngressRouteTCP{}, f.defaultInformer))
}
func (f *ingressRouteTCPInformer) Lister() traefikiov1alpha1.IngressRouteTCPLister {
return traefikiov1alpha1.NewIngressRouteTCPLister(f.Informer().GetIndexer())
}
// ToTypedIngressRouteTCPInformer converts an untyped informer into a TypedIngressRouteTCPInformer.
//
// WARNING: this conversion is only safe if the informer handles objects of type
// *IngressRouteTCP. If that is not the case, calling type-safe methods of the returned
// TypedIngressRouteTCPInformer leads to runtime panics. A safer alternative is to pass
// around a TypedIngressRouteTCPInformer instances that was obtained from a
// SharedInformerFactory.
func ToTypedIngressRouteTCPInformer(informer IngressRouteTCPInformer) TypedIngressRouteTCPInformer {
if informer, ok := informer.(TypedIngressRouteTCPInformer); ok {
return informer
}
return &ingressRouteTCPTypedInformerAdapter{informer}
}
type ingressRouteTCPTypedInformerAdapter struct {
IngressRouteTCPInformer
}
func (a *ingressRouteTCPTypedInformerAdapter) TypedInformer() IngressRouteTCPIndexInformer {
return cache.NewTypedSharedIndexInformer[*crdtraefikiov1alpha1.IngressRouteTCP](a.Informer())
}
// ToIngressRouteTCPIndexInformer converts an untyped informer into a IngressRouteTCPIndexInformer.
//
// WARNING: this conversion is only safe if the informer handles objects of type
// *IngressRouteTCP. If that is not the case, calling type-safe methods of the returned
// IngressRouteTCPIndexInformer leads to runtime panics. A safer alternative is to pass
// around a IngressRouteTCPIndexInformer instances that was obtained from a
// SharedInformerFactory.
func ToIngressRouteTCPIndexInformer(informer cache.SharedIndexInformer) IngressRouteTCPIndexInformer {
if informer, ok := informer.(IngressRouteTCPIndexInformer); ok {
return informer
}
return cache.NewTypedSharedIndexInformer[*crdtraefikiov1alpha1.IngressRouteTCP](informer)
}
@@ -42,12 +42,40 @@ import (
)
// IngressRouteUDPInformer provides access to a shared informer and lister for
// IngressRouteUDPs.
// IngressRouteUDPs. Prefer using the type-safe variant (see [TypedIngressRouteUDPInformer]).
type IngressRouteUDPInformer interface {
Informer() cache.SharedIndexInformer
Lister() traefikiov1alpha1.IngressRouteUDPLister
}
// TypedIngressRouteUDPInformer provides access to a shared informer and lister for
// IngressRouteUDPs, including the type-safe TypedInformer variant.
// It is a superset of IngressRouteUDPInformer.
type TypedIngressRouteUDPInformer interface {
Informer() cache.SharedIndexInformer
TypedInformer() IngressRouteUDPIndexInformer
Lister() traefikiov1alpha1.IngressRouteUDPLister
}
// IngressRouteUDPIndexInformer is a wrapper around the underlying [cache.SharedIndexInformer]
// with type-safe variants of several methods.
type IngressRouteUDPIndexInformer cache.TypedSharedIndexInformer[*crdtraefikiov1alpha1.IngressRouteUDP]
// IngressRouteUDPHandlerFuncs is a specialization of [cache.TypedResourceEventHandlerFuncs] for IngressRouteUDP.
type IngressRouteUDPHandlerFuncs = cache.TypedResourceEventHandlerFuncs[*crdtraefikiov1alpha1.IngressRouteUDP]
// IngressRouteUDPDetailedHandlerFuncs is a specialization of [cache.TypedResourceEventHandlerDetailedFuncs] for IngressRouteUDP.
type IngressRouteUDPDetailedHandlerFuncs = cache.TypedResourceEventHandlerDetailedFuncs[*crdtraefikiov1alpha1.IngressRouteUDP]
// IngressRouteUDPFilteringHandler is a specialization of [cache.TypedFilteringResourceEventHandler] for IngressRouteUDP.
type IngressRouteUDPFilteringHandler = cache.TypedFilteringResourceEventHandler[*crdtraefikiov1alpha1.IngressRouteUDP]
// IngressRouteUDPIndexers is a specialization of [cache.TypedIndexers] for IngressRouteUDP.
type IngressRouteUDPIndexers = cache.TypedIndexers[*crdtraefikiov1alpha1.IngressRouteUDP]
// DeletedIngressRouteUDP is a specialization of [cache.DeletedObject] for IngressRouteUDP.
type DeletedIngressRouteUDP = cache.DeletedObject[*crdtraefikiov1alpha1.IngressRouteUDP]
type ingressRouteUDPInformer struct {
factory internalinterfaces.SharedInformerFactory
tweakListOptions internalinterfaces.TweakListOptionsFunc
@@ -57,25 +85,49 @@ type ingressRouteUDPInformer struct {
// NewIngressRouteUDPInformer constructs a new informer for IngressRouteUDP type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
// If you really need an independent one, prefer using the type-safe variant (see [NewTypedIngressRouteUDPInformer]).
func NewIngressRouteUDPInformer(client versioned.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
return NewIngressRouteUDPInformerWithOptions(client, namespace, internalinterfaces.InformerOptions{ResyncPeriod: resyncPeriod, Indexers: indexers})
}
// NewTypedIngressRouteUDPInformer constructs a new informer for IngressRouteUDP type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewTypedIngressRouteUDPInformer(client versioned.Interface, namespace string, resyncPeriod time.Duration, indexers IngressRouteUDPIndexers) IngressRouteUDPIndexInformer {
return NewTypedIngressRouteUDPInformerWithOptions(client, namespace, internalinterfaces.InformerOptions{ResyncPeriod: resyncPeriod, Indexers: cache.TypedIndexersToIndexers(indexers)})
}
// NewFilteredIngressRouteUDPInformer constructs a new informer for IngressRouteUDP type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
// If you really need an independent one, prefer using the type-safe variant (see [NewTypedFilteredIngressRouteUDPInformer]).
func NewFilteredIngressRouteUDPInformer(client versioned.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
return NewIngressRouteUDPInformerWithOptions(client, namespace, internalinterfaces.InformerOptions{ResyncPeriod: resyncPeriod, Indexers: indexers, TweakListOptions: tweakListOptions})
return NewTypedIngressRouteUDPInformerWithOptions(client, namespace, internalinterfaces.InformerOptions{ResyncPeriod: resyncPeriod, Indexers: indexers, TweakListOptions: tweakListOptions})
}
// NewTypedFilteredIngressRouteUDPInformer constructs a new informer for IngressRouteUDP type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewTypedFilteredIngressRouteUDPInformer(client versioned.Interface, namespace string, resyncPeriod time.Duration, indexers IngressRouteUDPIndexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) IngressRouteUDPIndexInformer {
return NewTypedIngressRouteUDPInformerWithOptions(client, namespace, internalinterfaces.InformerOptions{ResyncPeriod: resyncPeriod, Indexers: cache.TypedIndexersToIndexers(indexers), TweakListOptions: tweakListOptions})
}
// NewIngressRouteUDPInformerWithOptions constructs a new informer for IngressRouteUDP type with additional options.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
// If you really need an independent one, prefer using the type-safe variant (see [NewTypedIngressRouteUDPInformerWithOptions]).
func NewIngressRouteUDPInformerWithOptions(client versioned.Interface, namespace string, options internalinterfaces.InformerOptions) cache.SharedIndexInformer {
return NewTypedIngressRouteUDPInformerWithOptions(client, namespace, options)
}
// NewTypedIngressRouteUDPInformerWithOptions constructs a new informer for IngressRouteUDP type with additional options.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewTypedIngressRouteUDPInformerWithOptions(client versioned.Interface, namespace string, options internalinterfaces.InformerOptions) IngressRouteUDPIndexInformer {
gvr := schema.GroupVersionResource{Group: "traefik.io", Version: "v1alpha1", Resource: "ingressrouteudps"}
identifier := options.InformerName.WithResource(gvr)
tweakListOptions := options.TweakListOptions
return cache.NewSharedIndexInformerWithOptions(
return cache.NewTypedSharedIndexInformer[*crdtraefikiov1alpha1.IngressRouteUDP](cache.NewSharedIndexInformerWithOptions(
cache.ToListWatcherWithWatchListSemantics(&cache.ListWatch{
ListFunc: func(opts v1.ListOptions) (runtime.Object, error) {
if tweakListOptions != nil {
@@ -108,17 +160,57 @@ func NewIngressRouteUDPInformerWithOptions(client versioned.Interface, namespace
Indexers: options.Indexers,
Identifier: identifier,
},
)
))
}
func (f *ingressRouteUDPInformer) defaultInformer(client versioned.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
return NewIngressRouteUDPInformerWithOptions(client, f.namespace, internalinterfaces.InformerOptions{ResyncPeriod: resyncPeriod, Indexers: cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, InformerName: f.factory.InformerName(), TweakListOptions: f.tweakListOptions})
return NewTypedIngressRouteUDPInformerWithOptions(client, f.namespace, internalinterfaces.InformerOptions{ResyncPeriod: resyncPeriod, Indexers: cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, InformerName: f.factory.InformerName(), TweakListOptions: f.tweakListOptions})
}
func (f *ingressRouteUDPInformer) Informer() cache.SharedIndexInformer {
return f.factory.InformerFor(&crdtraefikiov1alpha1.IngressRouteUDP{}, f.defaultInformer)
return f.TypedInformer()
}
func (f *ingressRouteUDPInformer) TypedInformer() IngressRouteUDPIndexInformer {
return cache.NewTypedSharedIndexInformer[*crdtraefikiov1alpha1.IngressRouteUDP](f.factory.InformerFor(&crdtraefikiov1alpha1.IngressRouteUDP{}, f.defaultInformer))
}
func (f *ingressRouteUDPInformer) Lister() traefikiov1alpha1.IngressRouteUDPLister {
return traefikiov1alpha1.NewIngressRouteUDPLister(f.Informer().GetIndexer())
}
// ToTypedIngressRouteUDPInformer converts an untyped informer into a TypedIngressRouteUDPInformer.
//
// WARNING: this conversion is only safe if the informer handles objects of type
// *IngressRouteUDP. If that is not the case, calling type-safe methods of the returned
// TypedIngressRouteUDPInformer leads to runtime panics. A safer alternative is to pass
// around a TypedIngressRouteUDPInformer instances that was obtained from a
// SharedInformerFactory.
func ToTypedIngressRouteUDPInformer(informer IngressRouteUDPInformer) TypedIngressRouteUDPInformer {
if informer, ok := informer.(TypedIngressRouteUDPInformer); ok {
return informer
}
return &ingressRouteUDPTypedInformerAdapter{informer}
}
type ingressRouteUDPTypedInformerAdapter struct {
IngressRouteUDPInformer
}
func (a *ingressRouteUDPTypedInformerAdapter) TypedInformer() IngressRouteUDPIndexInformer {
return cache.NewTypedSharedIndexInformer[*crdtraefikiov1alpha1.IngressRouteUDP](a.Informer())
}
// ToIngressRouteUDPIndexInformer converts an untyped informer into a IngressRouteUDPIndexInformer.
//
// WARNING: this conversion is only safe if the informer handles objects of type
// *IngressRouteUDP. If that is not the case, calling type-safe methods of the returned
// IngressRouteUDPIndexInformer leads to runtime panics. A safer alternative is to pass
// around a IngressRouteUDPIndexInformer instances that was obtained from a
// SharedInformerFactory.
func ToIngressRouteUDPIndexInformer(informer cache.SharedIndexInformer) IngressRouteUDPIndexInformer {
if informer, ok := informer.(IngressRouteUDPIndexInformer); ok {
return informer
}
return cache.NewTypedSharedIndexInformer[*crdtraefikiov1alpha1.IngressRouteUDP](informer)
}
@@ -33,25 +33,25 @@ import (
// Interface provides access to all the informers in this group version.
type Interface interface {
// IngressRoutes returns a IngressRouteInformer.
IngressRoutes() IngressRouteInformer
IngressRoutes() TypedIngressRouteInformer
// IngressRouteTCPs returns a IngressRouteTCPInformer.
IngressRouteTCPs() IngressRouteTCPInformer
IngressRouteTCPs() TypedIngressRouteTCPInformer
// IngressRouteUDPs returns a IngressRouteUDPInformer.
IngressRouteUDPs() IngressRouteUDPInformer
IngressRouteUDPs() TypedIngressRouteUDPInformer
// Middlewares returns a MiddlewareInformer.
Middlewares() MiddlewareInformer
Middlewares() TypedMiddlewareInformer
// MiddlewareTCPs returns a MiddlewareTCPInformer.
MiddlewareTCPs() MiddlewareTCPInformer
MiddlewareTCPs() TypedMiddlewareTCPInformer
// ServersTransports returns a ServersTransportInformer.
ServersTransports() ServersTransportInformer
ServersTransports() TypedServersTransportInformer
// ServersTransportTCPs returns a ServersTransportTCPInformer.
ServersTransportTCPs() ServersTransportTCPInformer
ServersTransportTCPs() TypedServersTransportTCPInformer
// TLSOptions returns a TLSOptionInformer.
TLSOptions() TLSOptionInformer
TLSOptions() TypedTLSOptionInformer
// TLSStores returns a TLSStoreInformer.
TLSStores() TLSStoreInformer
TLSStores() TypedTLSStoreInformer
// TraefikServices returns a TraefikServiceInformer.
TraefikServices() TraefikServiceInformer
TraefikServices() TypedTraefikServiceInformer
}
type version struct {
@@ -65,52 +65,52 @@ func New(f internalinterfaces.SharedInformerFactory, namespace string, tweakList
return &version{factory: f, namespace: namespace, tweakListOptions: tweakListOptions}
}
// IngressRoutes returns a IngressRouteInformer.
func (v *version) IngressRoutes() IngressRouteInformer {
// IngressRoutes returns a TypedIngressRouteInformer.
func (v *version) IngressRoutes() TypedIngressRouteInformer {
return &ingressRouteInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions}
}
// IngressRouteTCPs returns a IngressRouteTCPInformer.
func (v *version) IngressRouteTCPs() IngressRouteTCPInformer {
// IngressRouteTCPs returns a TypedIngressRouteTCPInformer.
func (v *version) IngressRouteTCPs() TypedIngressRouteTCPInformer {
return &ingressRouteTCPInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions}
}
// IngressRouteUDPs returns a IngressRouteUDPInformer.
func (v *version) IngressRouteUDPs() IngressRouteUDPInformer {
// IngressRouteUDPs returns a TypedIngressRouteUDPInformer.
func (v *version) IngressRouteUDPs() TypedIngressRouteUDPInformer {
return &ingressRouteUDPInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions}
}
// Middlewares returns a MiddlewareInformer.
func (v *version) Middlewares() MiddlewareInformer {
// Middlewares returns a TypedMiddlewareInformer.
func (v *version) Middlewares() TypedMiddlewareInformer {
return &middlewareInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions}
}
// MiddlewareTCPs returns a MiddlewareTCPInformer.
func (v *version) MiddlewareTCPs() MiddlewareTCPInformer {
// MiddlewareTCPs returns a TypedMiddlewareTCPInformer.
func (v *version) MiddlewareTCPs() TypedMiddlewareTCPInformer {
return &middlewareTCPInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions}
}
// ServersTransports returns a ServersTransportInformer.
func (v *version) ServersTransports() ServersTransportInformer {
// ServersTransports returns a TypedServersTransportInformer.
func (v *version) ServersTransports() TypedServersTransportInformer {
return &serversTransportInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions}
}
// ServersTransportTCPs returns a ServersTransportTCPInformer.
func (v *version) ServersTransportTCPs() ServersTransportTCPInformer {
// ServersTransportTCPs returns a TypedServersTransportTCPInformer.
func (v *version) ServersTransportTCPs() TypedServersTransportTCPInformer {
return &serversTransportTCPInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions}
}
// TLSOptions returns a TLSOptionInformer.
func (v *version) TLSOptions() TLSOptionInformer {
// TLSOptions returns a TypedTLSOptionInformer.
func (v *version) TLSOptions() TypedTLSOptionInformer {
return &tLSOptionInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions}
}
// TLSStores returns a TLSStoreInformer.
func (v *version) TLSStores() TLSStoreInformer {
// TLSStores returns a TypedTLSStoreInformer.
func (v *version) TLSStores() TypedTLSStoreInformer {
return &tLSStoreInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions}
}
// TraefikServices returns a TraefikServiceInformer.
func (v *version) TraefikServices() TraefikServiceInformer {
// TraefikServices returns a TypedTraefikServiceInformer.
func (v *version) TraefikServices() TypedTraefikServiceInformer {
return &traefikServiceInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions}
}
@@ -42,12 +42,40 @@ import (
)
// MiddlewareInformer provides access to a shared informer and lister for
// Middlewares.
// Middlewares. Prefer using the type-safe variant (see [TypedMiddlewareInformer]).
type MiddlewareInformer interface {
Informer() cache.SharedIndexInformer
Lister() traefikiov1alpha1.MiddlewareLister
}
// TypedMiddlewareInformer provides access to a shared informer and lister for
// Middlewares, including the type-safe TypedInformer variant.
// It is a superset of MiddlewareInformer.
type TypedMiddlewareInformer interface {
Informer() cache.SharedIndexInformer
TypedInformer() MiddlewareIndexInformer
Lister() traefikiov1alpha1.MiddlewareLister
}
// MiddlewareIndexInformer is a wrapper around the underlying [cache.SharedIndexInformer]
// with type-safe variants of several methods.
type MiddlewareIndexInformer cache.TypedSharedIndexInformer[*crdtraefikiov1alpha1.Middleware]
// MiddlewareHandlerFuncs is a specialization of [cache.TypedResourceEventHandlerFuncs] for Middleware.
type MiddlewareHandlerFuncs = cache.TypedResourceEventHandlerFuncs[*crdtraefikiov1alpha1.Middleware]
// MiddlewareDetailedHandlerFuncs is a specialization of [cache.TypedResourceEventHandlerDetailedFuncs] for Middleware.
type MiddlewareDetailedHandlerFuncs = cache.TypedResourceEventHandlerDetailedFuncs[*crdtraefikiov1alpha1.Middleware]
// MiddlewareFilteringHandler is a specialization of [cache.TypedFilteringResourceEventHandler] for Middleware.
type MiddlewareFilteringHandler = cache.TypedFilteringResourceEventHandler[*crdtraefikiov1alpha1.Middleware]
// MiddlewareIndexers is a specialization of [cache.TypedIndexers] for Middleware.
type MiddlewareIndexers = cache.TypedIndexers[*crdtraefikiov1alpha1.Middleware]
// DeletedMiddleware is a specialization of [cache.DeletedObject] for Middleware.
type DeletedMiddleware = cache.DeletedObject[*crdtraefikiov1alpha1.Middleware]
type middlewareInformer struct {
factory internalinterfaces.SharedInformerFactory
tweakListOptions internalinterfaces.TweakListOptionsFunc
@@ -57,25 +85,49 @@ type middlewareInformer struct {
// NewMiddlewareInformer constructs a new informer for Middleware type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
// If you really need an independent one, prefer using the type-safe variant (see [NewTypedMiddlewareInformer]).
func NewMiddlewareInformer(client versioned.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
return NewMiddlewareInformerWithOptions(client, namespace, internalinterfaces.InformerOptions{ResyncPeriod: resyncPeriod, Indexers: indexers})
}
// NewTypedMiddlewareInformer constructs a new informer for Middleware type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewTypedMiddlewareInformer(client versioned.Interface, namespace string, resyncPeriod time.Duration, indexers MiddlewareIndexers) MiddlewareIndexInformer {
return NewTypedMiddlewareInformerWithOptions(client, namespace, internalinterfaces.InformerOptions{ResyncPeriod: resyncPeriod, Indexers: cache.TypedIndexersToIndexers(indexers)})
}
// NewFilteredMiddlewareInformer constructs a new informer for Middleware type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
// If you really need an independent one, prefer using the type-safe variant (see [NewTypedFilteredMiddlewareInformer]).
func NewFilteredMiddlewareInformer(client versioned.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
return NewMiddlewareInformerWithOptions(client, namespace, internalinterfaces.InformerOptions{ResyncPeriod: resyncPeriod, Indexers: indexers, TweakListOptions: tweakListOptions})
return NewTypedMiddlewareInformerWithOptions(client, namespace, internalinterfaces.InformerOptions{ResyncPeriod: resyncPeriod, Indexers: indexers, TweakListOptions: tweakListOptions})
}
// NewTypedFilteredMiddlewareInformer constructs a new informer for Middleware type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewTypedFilteredMiddlewareInformer(client versioned.Interface, namespace string, resyncPeriod time.Duration, indexers MiddlewareIndexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) MiddlewareIndexInformer {
return NewTypedMiddlewareInformerWithOptions(client, namespace, internalinterfaces.InformerOptions{ResyncPeriod: resyncPeriod, Indexers: cache.TypedIndexersToIndexers(indexers), TweakListOptions: tweakListOptions})
}
// NewMiddlewareInformerWithOptions constructs a new informer for Middleware type with additional options.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
// If you really need an independent one, prefer using the type-safe variant (see [NewTypedMiddlewareInformerWithOptions]).
func NewMiddlewareInformerWithOptions(client versioned.Interface, namespace string, options internalinterfaces.InformerOptions) cache.SharedIndexInformer {
return NewTypedMiddlewareInformerWithOptions(client, namespace, options)
}
// NewTypedMiddlewareInformerWithOptions constructs a new informer for Middleware type with additional options.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewTypedMiddlewareInformerWithOptions(client versioned.Interface, namespace string, options internalinterfaces.InformerOptions) MiddlewareIndexInformer {
gvr := schema.GroupVersionResource{Group: "traefik.io", Version: "v1alpha1", Resource: "middlewares"}
identifier := options.InformerName.WithResource(gvr)
tweakListOptions := options.TweakListOptions
return cache.NewSharedIndexInformerWithOptions(
return cache.NewTypedSharedIndexInformer[*crdtraefikiov1alpha1.Middleware](cache.NewSharedIndexInformerWithOptions(
cache.ToListWatcherWithWatchListSemantics(&cache.ListWatch{
ListFunc: func(opts v1.ListOptions) (runtime.Object, error) {
if tweakListOptions != nil {
@@ -108,17 +160,57 @@ func NewMiddlewareInformerWithOptions(client versioned.Interface, namespace stri
Indexers: options.Indexers,
Identifier: identifier,
},
)
))
}
func (f *middlewareInformer) defaultInformer(client versioned.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
return NewMiddlewareInformerWithOptions(client, f.namespace, internalinterfaces.InformerOptions{ResyncPeriod: resyncPeriod, Indexers: cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, InformerName: f.factory.InformerName(), TweakListOptions: f.tweakListOptions})
return NewTypedMiddlewareInformerWithOptions(client, f.namespace, internalinterfaces.InformerOptions{ResyncPeriod: resyncPeriod, Indexers: cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, InformerName: f.factory.InformerName(), TweakListOptions: f.tweakListOptions})
}
func (f *middlewareInformer) Informer() cache.SharedIndexInformer {
return f.factory.InformerFor(&crdtraefikiov1alpha1.Middleware{}, f.defaultInformer)
return f.TypedInformer()
}
func (f *middlewareInformer) TypedInformer() MiddlewareIndexInformer {
return cache.NewTypedSharedIndexInformer[*crdtraefikiov1alpha1.Middleware](f.factory.InformerFor(&crdtraefikiov1alpha1.Middleware{}, f.defaultInformer))
}
func (f *middlewareInformer) Lister() traefikiov1alpha1.MiddlewareLister {
return traefikiov1alpha1.NewMiddlewareLister(f.Informer().GetIndexer())
}
// ToTypedMiddlewareInformer converts an untyped informer into a TypedMiddlewareInformer.
//
// WARNING: this conversion is only safe if the informer handles objects of type
// *Middleware. If that is not the case, calling type-safe methods of the returned
// TypedMiddlewareInformer leads to runtime panics. A safer alternative is to pass
// around a TypedMiddlewareInformer instances that was obtained from a
// SharedInformerFactory.
func ToTypedMiddlewareInformer(informer MiddlewareInformer) TypedMiddlewareInformer {
if informer, ok := informer.(TypedMiddlewareInformer); ok {
return informer
}
return &middlewareTypedInformerAdapter{informer}
}
type middlewareTypedInformerAdapter struct {
MiddlewareInformer
}
func (a *middlewareTypedInformerAdapter) TypedInformer() MiddlewareIndexInformer {
return cache.NewTypedSharedIndexInformer[*crdtraefikiov1alpha1.Middleware](a.Informer())
}
// ToMiddlewareIndexInformer converts an untyped informer into a MiddlewareIndexInformer.
//
// WARNING: this conversion is only safe if the informer handles objects of type
// *Middleware. If that is not the case, calling type-safe methods of the returned
// MiddlewareIndexInformer leads to runtime panics. A safer alternative is to pass
// around a MiddlewareIndexInformer instances that was obtained from a
// SharedInformerFactory.
func ToMiddlewareIndexInformer(informer cache.SharedIndexInformer) MiddlewareIndexInformer {
if informer, ok := informer.(MiddlewareIndexInformer); ok {
return informer
}
return cache.NewTypedSharedIndexInformer[*crdtraefikiov1alpha1.Middleware](informer)
}
@@ -42,12 +42,40 @@ import (
)
// MiddlewareTCPInformer provides access to a shared informer and lister for
// MiddlewareTCPs.
// MiddlewareTCPs. Prefer using the type-safe variant (see [TypedMiddlewareTCPInformer]).
type MiddlewareTCPInformer interface {
Informer() cache.SharedIndexInformer
Lister() traefikiov1alpha1.MiddlewareTCPLister
}
// TypedMiddlewareTCPInformer provides access to a shared informer and lister for
// MiddlewareTCPs, including the type-safe TypedInformer variant.
// It is a superset of MiddlewareTCPInformer.
type TypedMiddlewareTCPInformer interface {
Informer() cache.SharedIndexInformer
TypedInformer() MiddlewareTCPIndexInformer
Lister() traefikiov1alpha1.MiddlewareTCPLister
}
// MiddlewareTCPIndexInformer is a wrapper around the underlying [cache.SharedIndexInformer]
// with type-safe variants of several methods.
type MiddlewareTCPIndexInformer cache.TypedSharedIndexInformer[*crdtraefikiov1alpha1.MiddlewareTCP]
// MiddlewareTCPHandlerFuncs is a specialization of [cache.TypedResourceEventHandlerFuncs] for MiddlewareTCP.
type MiddlewareTCPHandlerFuncs = cache.TypedResourceEventHandlerFuncs[*crdtraefikiov1alpha1.MiddlewareTCP]
// MiddlewareTCPDetailedHandlerFuncs is a specialization of [cache.TypedResourceEventHandlerDetailedFuncs] for MiddlewareTCP.
type MiddlewareTCPDetailedHandlerFuncs = cache.TypedResourceEventHandlerDetailedFuncs[*crdtraefikiov1alpha1.MiddlewareTCP]
// MiddlewareTCPFilteringHandler is a specialization of [cache.TypedFilteringResourceEventHandler] for MiddlewareTCP.
type MiddlewareTCPFilteringHandler = cache.TypedFilteringResourceEventHandler[*crdtraefikiov1alpha1.MiddlewareTCP]
// MiddlewareTCPIndexers is a specialization of [cache.TypedIndexers] for MiddlewareTCP.
type MiddlewareTCPIndexers = cache.TypedIndexers[*crdtraefikiov1alpha1.MiddlewareTCP]
// DeletedMiddlewareTCP is a specialization of [cache.DeletedObject] for MiddlewareTCP.
type DeletedMiddlewareTCP = cache.DeletedObject[*crdtraefikiov1alpha1.MiddlewareTCP]
type middlewareTCPInformer struct {
factory internalinterfaces.SharedInformerFactory
tweakListOptions internalinterfaces.TweakListOptionsFunc
@@ -57,25 +85,49 @@ type middlewareTCPInformer struct {
// NewMiddlewareTCPInformer constructs a new informer for MiddlewareTCP type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
// If you really need an independent one, prefer using the type-safe variant (see [NewTypedMiddlewareTCPInformer]).
func NewMiddlewareTCPInformer(client versioned.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
return NewMiddlewareTCPInformerWithOptions(client, namespace, internalinterfaces.InformerOptions{ResyncPeriod: resyncPeriod, Indexers: indexers})
}
// NewTypedMiddlewareTCPInformer constructs a new informer for MiddlewareTCP type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewTypedMiddlewareTCPInformer(client versioned.Interface, namespace string, resyncPeriod time.Duration, indexers MiddlewareTCPIndexers) MiddlewareTCPIndexInformer {
return NewTypedMiddlewareTCPInformerWithOptions(client, namespace, internalinterfaces.InformerOptions{ResyncPeriod: resyncPeriod, Indexers: cache.TypedIndexersToIndexers(indexers)})
}
// NewFilteredMiddlewareTCPInformer constructs a new informer for MiddlewareTCP type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
// If you really need an independent one, prefer using the type-safe variant (see [NewTypedFilteredMiddlewareTCPInformer]).
func NewFilteredMiddlewareTCPInformer(client versioned.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
return NewMiddlewareTCPInformerWithOptions(client, namespace, internalinterfaces.InformerOptions{ResyncPeriod: resyncPeriod, Indexers: indexers, TweakListOptions: tweakListOptions})
return NewTypedMiddlewareTCPInformerWithOptions(client, namespace, internalinterfaces.InformerOptions{ResyncPeriod: resyncPeriod, Indexers: indexers, TweakListOptions: tweakListOptions})
}
// NewTypedFilteredMiddlewareTCPInformer constructs a new informer for MiddlewareTCP type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewTypedFilteredMiddlewareTCPInformer(client versioned.Interface, namespace string, resyncPeriod time.Duration, indexers MiddlewareTCPIndexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) MiddlewareTCPIndexInformer {
return NewTypedMiddlewareTCPInformerWithOptions(client, namespace, internalinterfaces.InformerOptions{ResyncPeriod: resyncPeriod, Indexers: cache.TypedIndexersToIndexers(indexers), TweakListOptions: tweakListOptions})
}
// NewMiddlewareTCPInformerWithOptions constructs a new informer for MiddlewareTCP type with additional options.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
// If you really need an independent one, prefer using the type-safe variant (see [NewTypedMiddlewareTCPInformerWithOptions]).
func NewMiddlewareTCPInformerWithOptions(client versioned.Interface, namespace string, options internalinterfaces.InformerOptions) cache.SharedIndexInformer {
return NewTypedMiddlewareTCPInformerWithOptions(client, namespace, options)
}
// NewTypedMiddlewareTCPInformerWithOptions constructs a new informer for MiddlewareTCP type with additional options.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewTypedMiddlewareTCPInformerWithOptions(client versioned.Interface, namespace string, options internalinterfaces.InformerOptions) MiddlewareTCPIndexInformer {
gvr := schema.GroupVersionResource{Group: "traefik.io", Version: "v1alpha1", Resource: "middlewaretcps"}
identifier := options.InformerName.WithResource(gvr)
tweakListOptions := options.TweakListOptions
return cache.NewSharedIndexInformerWithOptions(
return cache.NewTypedSharedIndexInformer[*crdtraefikiov1alpha1.MiddlewareTCP](cache.NewSharedIndexInformerWithOptions(
cache.ToListWatcherWithWatchListSemantics(&cache.ListWatch{
ListFunc: func(opts v1.ListOptions) (runtime.Object, error) {
if tweakListOptions != nil {
@@ -108,17 +160,57 @@ func NewMiddlewareTCPInformerWithOptions(client versioned.Interface, namespace s
Indexers: options.Indexers,
Identifier: identifier,
},
)
))
}
func (f *middlewareTCPInformer) defaultInformer(client versioned.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
return NewMiddlewareTCPInformerWithOptions(client, f.namespace, internalinterfaces.InformerOptions{ResyncPeriod: resyncPeriod, Indexers: cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, InformerName: f.factory.InformerName(), TweakListOptions: f.tweakListOptions})
return NewTypedMiddlewareTCPInformerWithOptions(client, f.namespace, internalinterfaces.InformerOptions{ResyncPeriod: resyncPeriod, Indexers: cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, InformerName: f.factory.InformerName(), TweakListOptions: f.tweakListOptions})
}
func (f *middlewareTCPInformer) Informer() cache.SharedIndexInformer {
return f.factory.InformerFor(&crdtraefikiov1alpha1.MiddlewareTCP{}, f.defaultInformer)
return f.TypedInformer()
}
func (f *middlewareTCPInformer) TypedInformer() MiddlewareTCPIndexInformer {
return cache.NewTypedSharedIndexInformer[*crdtraefikiov1alpha1.MiddlewareTCP](f.factory.InformerFor(&crdtraefikiov1alpha1.MiddlewareTCP{}, f.defaultInformer))
}
func (f *middlewareTCPInformer) Lister() traefikiov1alpha1.MiddlewareTCPLister {
return traefikiov1alpha1.NewMiddlewareTCPLister(f.Informer().GetIndexer())
}
// ToTypedMiddlewareTCPInformer converts an untyped informer into a TypedMiddlewareTCPInformer.
//
// WARNING: this conversion is only safe if the informer handles objects of type
// *MiddlewareTCP. If that is not the case, calling type-safe methods of the returned
// TypedMiddlewareTCPInformer leads to runtime panics. A safer alternative is to pass
// around a TypedMiddlewareTCPInformer instances that was obtained from a
// SharedInformerFactory.
func ToTypedMiddlewareTCPInformer(informer MiddlewareTCPInformer) TypedMiddlewareTCPInformer {
if informer, ok := informer.(TypedMiddlewareTCPInformer); ok {
return informer
}
return &middlewareTCPTypedInformerAdapter{informer}
}
type middlewareTCPTypedInformerAdapter struct {
MiddlewareTCPInformer
}
func (a *middlewareTCPTypedInformerAdapter) TypedInformer() MiddlewareTCPIndexInformer {
return cache.NewTypedSharedIndexInformer[*crdtraefikiov1alpha1.MiddlewareTCP](a.Informer())
}
// ToMiddlewareTCPIndexInformer converts an untyped informer into a MiddlewareTCPIndexInformer.
//
// WARNING: this conversion is only safe if the informer handles objects of type
// *MiddlewareTCP. If that is not the case, calling type-safe methods of the returned
// MiddlewareTCPIndexInformer leads to runtime panics. A safer alternative is to pass
// around a MiddlewareTCPIndexInformer instances that was obtained from a
// SharedInformerFactory.
func ToMiddlewareTCPIndexInformer(informer cache.SharedIndexInformer) MiddlewareTCPIndexInformer {
if informer, ok := informer.(MiddlewareTCPIndexInformer); ok {
return informer
}
return cache.NewTypedSharedIndexInformer[*crdtraefikiov1alpha1.MiddlewareTCP](informer)
}
@@ -42,12 +42,40 @@ import (
)
// ServersTransportInformer provides access to a shared informer and lister for
// ServersTransports.
// ServersTransports. Prefer using the type-safe variant (see [TypedServersTransportInformer]).
type ServersTransportInformer interface {
Informer() cache.SharedIndexInformer
Lister() traefikiov1alpha1.ServersTransportLister
}
// TypedServersTransportInformer provides access to a shared informer and lister for
// ServersTransports, including the type-safe TypedInformer variant.
// It is a superset of ServersTransportInformer.
type TypedServersTransportInformer interface {
Informer() cache.SharedIndexInformer
TypedInformer() ServersTransportIndexInformer
Lister() traefikiov1alpha1.ServersTransportLister
}
// ServersTransportIndexInformer is a wrapper around the underlying [cache.SharedIndexInformer]
// with type-safe variants of several methods.
type ServersTransportIndexInformer cache.TypedSharedIndexInformer[*crdtraefikiov1alpha1.ServersTransport]
// ServersTransportHandlerFuncs is a specialization of [cache.TypedResourceEventHandlerFuncs] for ServersTransport.
type ServersTransportHandlerFuncs = cache.TypedResourceEventHandlerFuncs[*crdtraefikiov1alpha1.ServersTransport]
// ServersTransportDetailedHandlerFuncs is a specialization of [cache.TypedResourceEventHandlerDetailedFuncs] for ServersTransport.
type ServersTransportDetailedHandlerFuncs = cache.TypedResourceEventHandlerDetailedFuncs[*crdtraefikiov1alpha1.ServersTransport]
// ServersTransportFilteringHandler is a specialization of [cache.TypedFilteringResourceEventHandler] for ServersTransport.
type ServersTransportFilteringHandler = cache.TypedFilteringResourceEventHandler[*crdtraefikiov1alpha1.ServersTransport]
// ServersTransportIndexers is a specialization of [cache.TypedIndexers] for ServersTransport.
type ServersTransportIndexers = cache.TypedIndexers[*crdtraefikiov1alpha1.ServersTransport]
// DeletedServersTransport is a specialization of [cache.DeletedObject] for ServersTransport.
type DeletedServersTransport = cache.DeletedObject[*crdtraefikiov1alpha1.ServersTransport]
type serversTransportInformer struct {
factory internalinterfaces.SharedInformerFactory
tweakListOptions internalinterfaces.TweakListOptionsFunc
@@ -57,25 +85,49 @@ type serversTransportInformer struct {
// NewServersTransportInformer constructs a new informer for ServersTransport type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
// If you really need an independent one, prefer using the type-safe variant (see [NewTypedServersTransportInformer]).
func NewServersTransportInformer(client versioned.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
return NewServersTransportInformerWithOptions(client, namespace, internalinterfaces.InformerOptions{ResyncPeriod: resyncPeriod, Indexers: indexers})
}
// NewTypedServersTransportInformer constructs a new informer for ServersTransport type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewTypedServersTransportInformer(client versioned.Interface, namespace string, resyncPeriod time.Duration, indexers ServersTransportIndexers) ServersTransportIndexInformer {
return NewTypedServersTransportInformerWithOptions(client, namespace, internalinterfaces.InformerOptions{ResyncPeriod: resyncPeriod, Indexers: cache.TypedIndexersToIndexers(indexers)})
}
// NewFilteredServersTransportInformer constructs a new informer for ServersTransport type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
// If you really need an independent one, prefer using the type-safe variant (see [NewTypedFilteredServersTransportInformer]).
func NewFilteredServersTransportInformer(client versioned.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
return NewServersTransportInformerWithOptions(client, namespace, internalinterfaces.InformerOptions{ResyncPeriod: resyncPeriod, Indexers: indexers, TweakListOptions: tweakListOptions})
return NewTypedServersTransportInformerWithOptions(client, namespace, internalinterfaces.InformerOptions{ResyncPeriod: resyncPeriod, Indexers: indexers, TweakListOptions: tweakListOptions})
}
// NewTypedFilteredServersTransportInformer constructs a new informer for ServersTransport type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewTypedFilteredServersTransportInformer(client versioned.Interface, namespace string, resyncPeriod time.Duration, indexers ServersTransportIndexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) ServersTransportIndexInformer {
return NewTypedServersTransportInformerWithOptions(client, namespace, internalinterfaces.InformerOptions{ResyncPeriod: resyncPeriod, Indexers: cache.TypedIndexersToIndexers(indexers), TweakListOptions: tweakListOptions})
}
// NewServersTransportInformerWithOptions constructs a new informer for ServersTransport type with additional options.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
// If you really need an independent one, prefer using the type-safe variant (see [NewTypedServersTransportInformerWithOptions]).
func NewServersTransportInformerWithOptions(client versioned.Interface, namespace string, options internalinterfaces.InformerOptions) cache.SharedIndexInformer {
return NewTypedServersTransportInformerWithOptions(client, namespace, options)
}
// NewTypedServersTransportInformerWithOptions constructs a new informer for ServersTransport type with additional options.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewTypedServersTransportInformerWithOptions(client versioned.Interface, namespace string, options internalinterfaces.InformerOptions) ServersTransportIndexInformer {
gvr := schema.GroupVersionResource{Group: "traefik.io", Version: "v1alpha1", Resource: "serverstransports"}
identifier := options.InformerName.WithResource(gvr)
tweakListOptions := options.TweakListOptions
return cache.NewSharedIndexInformerWithOptions(
return cache.NewTypedSharedIndexInformer[*crdtraefikiov1alpha1.ServersTransport](cache.NewSharedIndexInformerWithOptions(
cache.ToListWatcherWithWatchListSemantics(&cache.ListWatch{
ListFunc: func(opts v1.ListOptions) (runtime.Object, error) {
if tweakListOptions != nil {
@@ -108,17 +160,57 @@ func NewServersTransportInformerWithOptions(client versioned.Interface, namespac
Indexers: options.Indexers,
Identifier: identifier,
},
)
))
}
func (f *serversTransportInformer) defaultInformer(client versioned.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
return NewServersTransportInformerWithOptions(client, f.namespace, internalinterfaces.InformerOptions{ResyncPeriod: resyncPeriod, Indexers: cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, InformerName: f.factory.InformerName(), TweakListOptions: f.tweakListOptions})
return NewTypedServersTransportInformerWithOptions(client, f.namespace, internalinterfaces.InformerOptions{ResyncPeriod: resyncPeriod, Indexers: cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, InformerName: f.factory.InformerName(), TweakListOptions: f.tweakListOptions})
}
func (f *serversTransportInformer) Informer() cache.SharedIndexInformer {
return f.factory.InformerFor(&crdtraefikiov1alpha1.ServersTransport{}, f.defaultInformer)
return f.TypedInformer()
}
func (f *serversTransportInformer) TypedInformer() ServersTransportIndexInformer {
return cache.NewTypedSharedIndexInformer[*crdtraefikiov1alpha1.ServersTransport](f.factory.InformerFor(&crdtraefikiov1alpha1.ServersTransport{}, f.defaultInformer))
}
func (f *serversTransportInformer) Lister() traefikiov1alpha1.ServersTransportLister {
return traefikiov1alpha1.NewServersTransportLister(f.Informer().GetIndexer())
}
// ToTypedServersTransportInformer converts an untyped informer into a TypedServersTransportInformer.
//
// WARNING: this conversion is only safe if the informer handles objects of type
// *ServersTransport. If that is not the case, calling type-safe methods of the returned
// TypedServersTransportInformer leads to runtime panics. A safer alternative is to pass
// around a TypedServersTransportInformer instances that was obtained from a
// SharedInformerFactory.
func ToTypedServersTransportInformer(informer ServersTransportInformer) TypedServersTransportInformer {
if informer, ok := informer.(TypedServersTransportInformer); ok {
return informer
}
return &serversTransportTypedInformerAdapter{informer}
}
type serversTransportTypedInformerAdapter struct {
ServersTransportInformer
}
func (a *serversTransportTypedInformerAdapter) TypedInformer() ServersTransportIndexInformer {
return cache.NewTypedSharedIndexInformer[*crdtraefikiov1alpha1.ServersTransport](a.Informer())
}
// ToServersTransportIndexInformer converts an untyped informer into a ServersTransportIndexInformer.
//
// WARNING: this conversion is only safe if the informer handles objects of type
// *ServersTransport. If that is not the case, calling type-safe methods of the returned
// ServersTransportIndexInformer leads to runtime panics. A safer alternative is to pass
// around a ServersTransportIndexInformer instances that was obtained from a
// SharedInformerFactory.
func ToServersTransportIndexInformer(informer cache.SharedIndexInformer) ServersTransportIndexInformer {
if informer, ok := informer.(ServersTransportIndexInformer); ok {
return informer
}
return cache.NewTypedSharedIndexInformer[*crdtraefikiov1alpha1.ServersTransport](informer)
}
@@ -42,12 +42,40 @@ import (
)
// ServersTransportTCPInformer provides access to a shared informer and lister for
// ServersTransportTCPs.
// ServersTransportTCPs. Prefer using the type-safe variant (see [TypedServersTransportTCPInformer]).
type ServersTransportTCPInformer interface {
Informer() cache.SharedIndexInformer
Lister() traefikiov1alpha1.ServersTransportTCPLister
}
// TypedServersTransportTCPInformer provides access to a shared informer and lister for
// ServersTransportTCPs, including the type-safe TypedInformer variant.
// It is a superset of ServersTransportTCPInformer.
type TypedServersTransportTCPInformer interface {
Informer() cache.SharedIndexInformer
TypedInformer() ServersTransportTCPIndexInformer
Lister() traefikiov1alpha1.ServersTransportTCPLister
}
// ServersTransportTCPIndexInformer is a wrapper around the underlying [cache.SharedIndexInformer]
// with type-safe variants of several methods.
type ServersTransportTCPIndexInformer cache.TypedSharedIndexInformer[*crdtraefikiov1alpha1.ServersTransportTCP]
// ServersTransportTCPHandlerFuncs is a specialization of [cache.TypedResourceEventHandlerFuncs] for ServersTransportTCP.
type ServersTransportTCPHandlerFuncs = cache.TypedResourceEventHandlerFuncs[*crdtraefikiov1alpha1.ServersTransportTCP]
// ServersTransportTCPDetailedHandlerFuncs is a specialization of [cache.TypedResourceEventHandlerDetailedFuncs] for ServersTransportTCP.
type ServersTransportTCPDetailedHandlerFuncs = cache.TypedResourceEventHandlerDetailedFuncs[*crdtraefikiov1alpha1.ServersTransportTCP]
// ServersTransportTCPFilteringHandler is a specialization of [cache.TypedFilteringResourceEventHandler] for ServersTransportTCP.
type ServersTransportTCPFilteringHandler = cache.TypedFilteringResourceEventHandler[*crdtraefikiov1alpha1.ServersTransportTCP]
// ServersTransportTCPIndexers is a specialization of [cache.TypedIndexers] for ServersTransportTCP.
type ServersTransportTCPIndexers = cache.TypedIndexers[*crdtraefikiov1alpha1.ServersTransportTCP]
// DeletedServersTransportTCP is a specialization of [cache.DeletedObject] for ServersTransportTCP.
type DeletedServersTransportTCP = cache.DeletedObject[*crdtraefikiov1alpha1.ServersTransportTCP]
type serversTransportTCPInformer struct {
factory internalinterfaces.SharedInformerFactory
tweakListOptions internalinterfaces.TweakListOptionsFunc
@@ -57,25 +85,49 @@ type serversTransportTCPInformer struct {
// NewServersTransportTCPInformer constructs a new informer for ServersTransportTCP type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
// If you really need an independent one, prefer using the type-safe variant (see [NewTypedServersTransportTCPInformer]).
func NewServersTransportTCPInformer(client versioned.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
return NewServersTransportTCPInformerWithOptions(client, namespace, internalinterfaces.InformerOptions{ResyncPeriod: resyncPeriod, Indexers: indexers})
}
// NewTypedServersTransportTCPInformer constructs a new informer for ServersTransportTCP type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewTypedServersTransportTCPInformer(client versioned.Interface, namespace string, resyncPeriod time.Duration, indexers ServersTransportTCPIndexers) ServersTransportTCPIndexInformer {
return NewTypedServersTransportTCPInformerWithOptions(client, namespace, internalinterfaces.InformerOptions{ResyncPeriod: resyncPeriod, Indexers: cache.TypedIndexersToIndexers(indexers)})
}
// NewFilteredServersTransportTCPInformer constructs a new informer for ServersTransportTCP type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
// If you really need an independent one, prefer using the type-safe variant (see [NewTypedFilteredServersTransportTCPInformer]).
func NewFilteredServersTransportTCPInformer(client versioned.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
return NewServersTransportTCPInformerWithOptions(client, namespace, internalinterfaces.InformerOptions{ResyncPeriod: resyncPeriod, Indexers: indexers, TweakListOptions: tweakListOptions})
return NewTypedServersTransportTCPInformerWithOptions(client, namespace, internalinterfaces.InformerOptions{ResyncPeriod: resyncPeriod, Indexers: indexers, TweakListOptions: tweakListOptions})
}
// NewTypedFilteredServersTransportTCPInformer constructs a new informer for ServersTransportTCP type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewTypedFilteredServersTransportTCPInformer(client versioned.Interface, namespace string, resyncPeriod time.Duration, indexers ServersTransportTCPIndexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) ServersTransportTCPIndexInformer {
return NewTypedServersTransportTCPInformerWithOptions(client, namespace, internalinterfaces.InformerOptions{ResyncPeriod: resyncPeriod, Indexers: cache.TypedIndexersToIndexers(indexers), TweakListOptions: tweakListOptions})
}
// NewServersTransportTCPInformerWithOptions constructs a new informer for ServersTransportTCP type with additional options.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
// If you really need an independent one, prefer using the type-safe variant (see [NewTypedServersTransportTCPInformerWithOptions]).
func NewServersTransportTCPInformerWithOptions(client versioned.Interface, namespace string, options internalinterfaces.InformerOptions) cache.SharedIndexInformer {
return NewTypedServersTransportTCPInformerWithOptions(client, namespace, options)
}
// NewTypedServersTransportTCPInformerWithOptions constructs a new informer for ServersTransportTCP type with additional options.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewTypedServersTransportTCPInformerWithOptions(client versioned.Interface, namespace string, options internalinterfaces.InformerOptions) ServersTransportTCPIndexInformer {
gvr := schema.GroupVersionResource{Group: "traefik.io", Version: "v1alpha1", Resource: "serverstransporttcps"}
identifier := options.InformerName.WithResource(gvr)
tweakListOptions := options.TweakListOptions
return cache.NewSharedIndexInformerWithOptions(
return cache.NewTypedSharedIndexInformer[*crdtraefikiov1alpha1.ServersTransportTCP](cache.NewSharedIndexInformerWithOptions(
cache.ToListWatcherWithWatchListSemantics(&cache.ListWatch{
ListFunc: func(opts v1.ListOptions) (runtime.Object, error) {
if tweakListOptions != nil {
@@ -108,17 +160,57 @@ func NewServersTransportTCPInformerWithOptions(client versioned.Interface, names
Indexers: options.Indexers,
Identifier: identifier,
},
)
))
}
func (f *serversTransportTCPInformer) defaultInformer(client versioned.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
return NewServersTransportTCPInformerWithOptions(client, f.namespace, internalinterfaces.InformerOptions{ResyncPeriod: resyncPeriod, Indexers: cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, InformerName: f.factory.InformerName(), TweakListOptions: f.tweakListOptions})
return NewTypedServersTransportTCPInformerWithOptions(client, f.namespace, internalinterfaces.InformerOptions{ResyncPeriod: resyncPeriod, Indexers: cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, InformerName: f.factory.InformerName(), TweakListOptions: f.tweakListOptions})
}
func (f *serversTransportTCPInformer) Informer() cache.SharedIndexInformer {
return f.factory.InformerFor(&crdtraefikiov1alpha1.ServersTransportTCP{}, f.defaultInformer)
return f.TypedInformer()
}
func (f *serversTransportTCPInformer) TypedInformer() ServersTransportTCPIndexInformer {
return cache.NewTypedSharedIndexInformer[*crdtraefikiov1alpha1.ServersTransportTCP](f.factory.InformerFor(&crdtraefikiov1alpha1.ServersTransportTCP{}, f.defaultInformer))
}
func (f *serversTransportTCPInformer) Lister() traefikiov1alpha1.ServersTransportTCPLister {
return traefikiov1alpha1.NewServersTransportTCPLister(f.Informer().GetIndexer())
}
// ToTypedServersTransportTCPInformer converts an untyped informer into a TypedServersTransportTCPInformer.
//
// WARNING: this conversion is only safe if the informer handles objects of type
// *ServersTransportTCP. If that is not the case, calling type-safe methods of the returned
// TypedServersTransportTCPInformer leads to runtime panics. A safer alternative is to pass
// around a TypedServersTransportTCPInformer instances that was obtained from a
// SharedInformerFactory.
func ToTypedServersTransportTCPInformer(informer ServersTransportTCPInformer) TypedServersTransportTCPInformer {
if informer, ok := informer.(TypedServersTransportTCPInformer); ok {
return informer
}
return &serversTransportTCPTypedInformerAdapter{informer}
}
type serversTransportTCPTypedInformerAdapter struct {
ServersTransportTCPInformer
}
func (a *serversTransportTCPTypedInformerAdapter) TypedInformer() ServersTransportTCPIndexInformer {
return cache.NewTypedSharedIndexInformer[*crdtraefikiov1alpha1.ServersTransportTCP](a.Informer())
}
// ToServersTransportTCPIndexInformer converts an untyped informer into a ServersTransportTCPIndexInformer.
//
// WARNING: this conversion is only safe if the informer handles objects of type
// *ServersTransportTCP. If that is not the case, calling type-safe methods of the returned
// ServersTransportTCPIndexInformer leads to runtime panics. A safer alternative is to pass
// around a ServersTransportTCPIndexInformer instances that was obtained from a
// SharedInformerFactory.
func ToServersTransportTCPIndexInformer(informer cache.SharedIndexInformer) ServersTransportTCPIndexInformer {
if informer, ok := informer.(ServersTransportTCPIndexInformer); ok {
return informer
}
return cache.NewTypedSharedIndexInformer[*crdtraefikiov1alpha1.ServersTransportTCP](informer)
}
@@ -42,12 +42,40 @@ import (
)
// TLSOptionInformer provides access to a shared informer and lister for
// TLSOptions.
// TLSOptions. Prefer using the type-safe variant (see [TypedTLSOptionInformer]).
type TLSOptionInformer interface {
Informer() cache.SharedIndexInformer
Lister() traefikiov1alpha1.TLSOptionLister
}
// TypedTLSOptionInformer provides access to a shared informer and lister for
// TLSOptions, including the type-safe TypedInformer variant.
// It is a superset of TLSOptionInformer.
type TypedTLSOptionInformer interface {
Informer() cache.SharedIndexInformer
TypedInformer() TLSOptionIndexInformer
Lister() traefikiov1alpha1.TLSOptionLister
}
// TLSOptionIndexInformer is a wrapper around the underlying [cache.SharedIndexInformer]
// with type-safe variants of several methods.
type TLSOptionIndexInformer cache.TypedSharedIndexInformer[*crdtraefikiov1alpha1.TLSOption]
// TLSOptionHandlerFuncs is a specialization of [cache.TypedResourceEventHandlerFuncs] for TLSOption.
type TLSOptionHandlerFuncs = cache.TypedResourceEventHandlerFuncs[*crdtraefikiov1alpha1.TLSOption]
// TLSOptionDetailedHandlerFuncs is a specialization of [cache.TypedResourceEventHandlerDetailedFuncs] for TLSOption.
type TLSOptionDetailedHandlerFuncs = cache.TypedResourceEventHandlerDetailedFuncs[*crdtraefikiov1alpha1.TLSOption]
// TLSOptionFilteringHandler is a specialization of [cache.TypedFilteringResourceEventHandler] for TLSOption.
type TLSOptionFilteringHandler = cache.TypedFilteringResourceEventHandler[*crdtraefikiov1alpha1.TLSOption]
// TLSOptionIndexers is a specialization of [cache.TypedIndexers] for TLSOption.
type TLSOptionIndexers = cache.TypedIndexers[*crdtraefikiov1alpha1.TLSOption]
// DeletedTLSOption is a specialization of [cache.DeletedObject] for TLSOption.
type DeletedTLSOption = cache.DeletedObject[*crdtraefikiov1alpha1.TLSOption]
type tLSOptionInformer struct {
factory internalinterfaces.SharedInformerFactory
tweakListOptions internalinterfaces.TweakListOptionsFunc
@@ -57,25 +85,49 @@ type tLSOptionInformer struct {
// NewTLSOptionInformer constructs a new informer for TLSOption type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
// If you really need an independent one, prefer using the type-safe variant (see [NewTypedTLSOptionInformer]).
func NewTLSOptionInformer(client versioned.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
return NewTLSOptionInformerWithOptions(client, namespace, internalinterfaces.InformerOptions{ResyncPeriod: resyncPeriod, Indexers: indexers})
}
// NewTypedTLSOptionInformer constructs a new informer for TLSOption type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewTypedTLSOptionInformer(client versioned.Interface, namespace string, resyncPeriod time.Duration, indexers TLSOptionIndexers) TLSOptionIndexInformer {
return NewTypedTLSOptionInformerWithOptions(client, namespace, internalinterfaces.InformerOptions{ResyncPeriod: resyncPeriod, Indexers: cache.TypedIndexersToIndexers(indexers)})
}
// NewFilteredTLSOptionInformer constructs a new informer for TLSOption type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
// If you really need an independent one, prefer using the type-safe variant (see [NewTypedFilteredTLSOptionInformer]).
func NewFilteredTLSOptionInformer(client versioned.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
return NewTLSOptionInformerWithOptions(client, namespace, internalinterfaces.InformerOptions{ResyncPeriod: resyncPeriod, Indexers: indexers, TweakListOptions: tweakListOptions})
return NewTypedTLSOptionInformerWithOptions(client, namespace, internalinterfaces.InformerOptions{ResyncPeriod: resyncPeriod, Indexers: indexers, TweakListOptions: tweakListOptions})
}
// NewTypedFilteredTLSOptionInformer constructs a new informer for TLSOption type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewTypedFilteredTLSOptionInformer(client versioned.Interface, namespace string, resyncPeriod time.Duration, indexers TLSOptionIndexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) TLSOptionIndexInformer {
return NewTypedTLSOptionInformerWithOptions(client, namespace, internalinterfaces.InformerOptions{ResyncPeriod: resyncPeriod, Indexers: cache.TypedIndexersToIndexers(indexers), TweakListOptions: tweakListOptions})
}
// NewTLSOptionInformerWithOptions constructs a new informer for TLSOption type with additional options.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
// If you really need an independent one, prefer using the type-safe variant (see [NewTypedTLSOptionInformerWithOptions]).
func NewTLSOptionInformerWithOptions(client versioned.Interface, namespace string, options internalinterfaces.InformerOptions) cache.SharedIndexInformer {
return NewTypedTLSOptionInformerWithOptions(client, namespace, options)
}
// NewTypedTLSOptionInformerWithOptions constructs a new informer for TLSOption type with additional options.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewTypedTLSOptionInformerWithOptions(client versioned.Interface, namespace string, options internalinterfaces.InformerOptions) TLSOptionIndexInformer {
gvr := schema.GroupVersionResource{Group: "traefik.io", Version: "v1alpha1", Resource: "tlsoptions"}
identifier := options.InformerName.WithResource(gvr)
tweakListOptions := options.TweakListOptions
return cache.NewSharedIndexInformerWithOptions(
return cache.NewTypedSharedIndexInformer[*crdtraefikiov1alpha1.TLSOption](cache.NewSharedIndexInformerWithOptions(
cache.ToListWatcherWithWatchListSemantics(&cache.ListWatch{
ListFunc: func(opts v1.ListOptions) (runtime.Object, error) {
if tweakListOptions != nil {
@@ -108,17 +160,57 @@ func NewTLSOptionInformerWithOptions(client versioned.Interface, namespace strin
Indexers: options.Indexers,
Identifier: identifier,
},
)
))
}
func (f *tLSOptionInformer) defaultInformer(client versioned.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
return NewTLSOptionInformerWithOptions(client, f.namespace, internalinterfaces.InformerOptions{ResyncPeriod: resyncPeriod, Indexers: cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, InformerName: f.factory.InformerName(), TweakListOptions: f.tweakListOptions})
return NewTypedTLSOptionInformerWithOptions(client, f.namespace, internalinterfaces.InformerOptions{ResyncPeriod: resyncPeriod, Indexers: cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, InformerName: f.factory.InformerName(), TweakListOptions: f.tweakListOptions})
}
func (f *tLSOptionInformer) Informer() cache.SharedIndexInformer {
return f.factory.InformerFor(&crdtraefikiov1alpha1.TLSOption{}, f.defaultInformer)
return f.TypedInformer()
}
func (f *tLSOptionInformer) TypedInformer() TLSOptionIndexInformer {
return cache.NewTypedSharedIndexInformer[*crdtraefikiov1alpha1.TLSOption](f.factory.InformerFor(&crdtraefikiov1alpha1.TLSOption{}, f.defaultInformer))
}
func (f *tLSOptionInformer) Lister() traefikiov1alpha1.TLSOptionLister {
return traefikiov1alpha1.NewTLSOptionLister(f.Informer().GetIndexer())
}
// ToTypedTLSOptionInformer converts an untyped informer into a TypedTLSOptionInformer.
//
// WARNING: this conversion is only safe if the informer handles objects of type
// *TLSOption. If that is not the case, calling type-safe methods of the returned
// TypedTLSOptionInformer leads to runtime panics. A safer alternative is to pass
// around a TypedTLSOptionInformer instances that was obtained from a
// SharedInformerFactory.
func ToTypedTLSOptionInformer(informer TLSOptionInformer) TypedTLSOptionInformer {
if informer, ok := informer.(TypedTLSOptionInformer); ok {
return informer
}
return &tLSOptionTypedInformerAdapter{informer}
}
type tLSOptionTypedInformerAdapter struct {
TLSOptionInformer
}
func (a *tLSOptionTypedInformerAdapter) TypedInformer() TLSOptionIndexInformer {
return cache.NewTypedSharedIndexInformer[*crdtraefikiov1alpha1.TLSOption](a.Informer())
}
// ToTLSOptionIndexInformer converts an untyped informer into a TLSOptionIndexInformer.
//
// WARNING: this conversion is only safe if the informer handles objects of type
// *TLSOption. If that is not the case, calling type-safe methods of the returned
// TLSOptionIndexInformer leads to runtime panics. A safer alternative is to pass
// around a TLSOptionIndexInformer instances that was obtained from a
// SharedInformerFactory.
func ToTLSOptionIndexInformer(informer cache.SharedIndexInformer) TLSOptionIndexInformer {
if informer, ok := informer.(TLSOptionIndexInformer); ok {
return informer
}
return cache.NewTypedSharedIndexInformer[*crdtraefikiov1alpha1.TLSOption](informer)
}
@@ -42,12 +42,40 @@ import (
)
// TLSStoreInformer provides access to a shared informer and lister for
// TLSStores.
// TLSStores. Prefer using the type-safe variant (see [TypedTLSStoreInformer]).
type TLSStoreInformer interface {
Informer() cache.SharedIndexInformer
Lister() traefikiov1alpha1.TLSStoreLister
}
// TypedTLSStoreInformer provides access to a shared informer and lister for
// TLSStores, including the type-safe TypedInformer variant.
// It is a superset of TLSStoreInformer.
type TypedTLSStoreInformer interface {
Informer() cache.SharedIndexInformer
TypedInformer() TLSStoreIndexInformer
Lister() traefikiov1alpha1.TLSStoreLister
}
// TLSStoreIndexInformer is a wrapper around the underlying [cache.SharedIndexInformer]
// with type-safe variants of several methods.
type TLSStoreIndexInformer cache.TypedSharedIndexInformer[*crdtraefikiov1alpha1.TLSStore]
// TLSStoreHandlerFuncs is a specialization of [cache.TypedResourceEventHandlerFuncs] for TLSStore.
type TLSStoreHandlerFuncs = cache.TypedResourceEventHandlerFuncs[*crdtraefikiov1alpha1.TLSStore]
// TLSStoreDetailedHandlerFuncs is a specialization of [cache.TypedResourceEventHandlerDetailedFuncs] for TLSStore.
type TLSStoreDetailedHandlerFuncs = cache.TypedResourceEventHandlerDetailedFuncs[*crdtraefikiov1alpha1.TLSStore]
// TLSStoreFilteringHandler is a specialization of [cache.TypedFilteringResourceEventHandler] for TLSStore.
type TLSStoreFilteringHandler = cache.TypedFilteringResourceEventHandler[*crdtraefikiov1alpha1.TLSStore]
// TLSStoreIndexers is a specialization of [cache.TypedIndexers] for TLSStore.
type TLSStoreIndexers = cache.TypedIndexers[*crdtraefikiov1alpha1.TLSStore]
// DeletedTLSStore is a specialization of [cache.DeletedObject] for TLSStore.
type DeletedTLSStore = cache.DeletedObject[*crdtraefikiov1alpha1.TLSStore]
type tLSStoreInformer struct {
factory internalinterfaces.SharedInformerFactory
tweakListOptions internalinterfaces.TweakListOptionsFunc
@@ -57,25 +85,49 @@ type tLSStoreInformer struct {
// NewTLSStoreInformer constructs a new informer for TLSStore type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
// If you really need an independent one, prefer using the type-safe variant (see [NewTypedTLSStoreInformer]).
func NewTLSStoreInformer(client versioned.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
return NewTLSStoreInformerWithOptions(client, namespace, internalinterfaces.InformerOptions{ResyncPeriod: resyncPeriod, Indexers: indexers})
}
// NewTypedTLSStoreInformer constructs a new informer for TLSStore type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewTypedTLSStoreInformer(client versioned.Interface, namespace string, resyncPeriod time.Duration, indexers TLSStoreIndexers) TLSStoreIndexInformer {
return NewTypedTLSStoreInformerWithOptions(client, namespace, internalinterfaces.InformerOptions{ResyncPeriod: resyncPeriod, Indexers: cache.TypedIndexersToIndexers(indexers)})
}
// NewFilteredTLSStoreInformer constructs a new informer for TLSStore type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
// If you really need an independent one, prefer using the type-safe variant (see [NewTypedFilteredTLSStoreInformer]).
func NewFilteredTLSStoreInformer(client versioned.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
return NewTLSStoreInformerWithOptions(client, namespace, internalinterfaces.InformerOptions{ResyncPeriod: resyncPeriod, Indexers: indexers, TweakListOptions: tweakListOptions})
return NewTypedTLSStoreInformerWithOptions(client, namespace, internalinterfaces.InformerOptions{ResyncPeriod: resyncPeriod, Indexers: indexers, TweakListOptions: tweakListOptions})
}
// NewTypedFilteredTLSStoreInformer constructs a new informer for TLSStore type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewTypedFilteredTLSStoreInformer(client versioned.Interface, namespace string, resyncPeriod time.Duration, indexers TLSStoreIndexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) TLSStoreIndexInformer {
return NewTypedTLSStoreInformerWithOptions(client, namespace, internalinterfaces.InformerOptions{ResyncPeriod: resyncPeriod, Indexers: cache.TypedIndexersToIndexers(indexers), TweakListOptions: tweakListOptions})
}
// NewTLSStoreInformerWithOptions constructs a new informer for TLSStore type with additional options.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
// If you really need an independent one, prefer using the type-safe variant (see [NewTypedTLSStoreInformerWithOptions]).
func NewTLSStoreInformerWithOptions(client versioned.Interface, namespace string, options internalinterfaces.InformerOptions) cache.SharedIndexInformer {
return NewTypedTLSStoreInformerWithOptions(client, namespace, options)
}
// NewTypedTLSStoreInformerWithOptions constructs a new informer for TLSStore type with additional options.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewTypedTLSStoreInformerWithOptions(client versioned.Interface, namespace string, options internalinterfaces.InformerOptions) TLSStoreIndexInformer {
gvr := schema.GroupVersionResource{Group: "traefik.io", Version: "v1alpha1", Resource: "tlsstores"}
identifier := options.InformerName.WithResource(gvr)
tweakListOptions := options.TweakListOptions
return cache.NewSharedIndexInformerWithOptions(
return cache.NewTypedSharedIndexInformer[*crdtraefikiov1alpha1.TLSStore](cache.NewSharedIndexInformerWithOptions(
cache.ToListWatcherWithWatchListSemantics(&cache.ListWatch{
ListFunc: func(opts v1.ListOptions) (runtime.Object, error) {
if tweakListOptions != nil {
@@ -108,17 +160,57 @@ func NewTLSStoreInformerWithOptions(client versioned.Interface, namespace string
Indexers: options.Indexers,
Identifier: identifier,
},
)
))
}
func (f *tLSStoreInformer) defaultInformer(client versioned.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
return NewTLSStoreInformerWithOptions(client, f.namespace, internalinterfaces.InformerOptions{ResyncPeriod: resyncPeriod, Indexers: cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, InformerName: f.factory.InformerName(), TweakListOptions: f.tweakListOptions})
return NewTypedTLSStoreInformerWithOptions(client, f.namespace, internalinterfaces.InformerOptions{ResyncPeriod: resyncPeriod, Indexers: cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, InformerName: f.factory.InformerName(), TweakListOptions: f.tweakListOptions})
}
func (f *tLSStoreInformer) Informer() cache.SharedIndexInformer {
return f.factory.InformerFor(&crdtraefikiov1alpha1.TLSStore{}, f.defaultInformer)
return f.TypedInformer()
}
func (f *tLSStoreInformer) TypedInformer() TLSStoreIndexInformer {
return cache.NewTypedSharedIndexInformer[*crdtraefikiov1alpha1.TLSStore](f.factory.InformerFor(&crdtraefikiov1alpha1.TLSStore{}, f.defaultInformer))
}
func (f *tLSStoreInformer) Lister() traefikiov1alpha1.TLSStoreLister {
return traefikiov1alpha1.NewTLSStoreLister(f.Informer().GetIndexer())
}
// ToTypedTLSStoreInformer converts an untyped informer into a TypedTLSStoreInformer.
//
// WARNING: this conversion is only safe if the informer handles objects of type
// *TLSStore. If that is not the case, calling type-safe methods of the returned
// TypedTLSStoreInformer leads to runtime panics. A safer alternative is to pass
// around a TypedTLSStoreInformer instances that was obtained from a
// SharedInformerFactory.
func ToTypedTLSStoreInformer(informer TLSStoreInformer) TypedTLSStoreInformer {
if informer, ok := informer.(TypedTLSStoreInformer); ok {
return informer
}
return &tLSStoreTypedInformerAdapter{informer}
}
type tLSStoreTypedInformerAdapter struct {
TLSStoreInformer
}
func (a *tLSStoreTypedInformerAdapter) TypedInformer() TLSStoreIndexInformer {
return cache.NewTypedSharedIndexInformer[*crdtraefikiov1alpha1.TLSStore](a.Informer())
}
// ToTLSStoreIndexInformer converts an untyped informer into a TLSStoreIndexInformer.
//
// WARNING: this conversion is only safe if the informer handles objects of type
// *TLSStore. If that is not the case, calling type-safe methods of the returned
// TLSStoreIndexInformer leads to runtime panics. A safer alternative is to pass
// around a TLSStoreIndexInformer instances that was obtained from a
// SharedInformerFactory.
func ToTLSStoreIndexInformer(informer cache.SharedIndexInformer) TLSStoreIndexInformer {
if informer, ok := informer.(TLSStoreIndexInformer); ok {
return informer
}
return cache.NewTypedSharedIndexInformer[*crdtraefikiov1alpha1.TLSStore](informer)
}
@@ -42,12 +42,40 @@ import (
)
// TraefikServiceInformer provides access to a shared informer and lister for
// TraefikServices.
// TraefikServices. Prefer using the type-safe variant (see [TypedTraefikServiceInformer]).
type TraefikServiceInformer interface {
Informer() cache.SharedIndexInformer
Lister() traefikiov1alpha1.TraefikServiceLister
}
// TypedTraefikServiceInformer provides access to a shared informer and lister for
// TraefikServices, including the type-safe TypedInformer variant.
// It is a superset of TraefikServiceInformer.
type TypedTraefikServiceInformer interface {
Informer() cache.SharedIndexInformer
TypedInformer() TraefikServiceIndexInformer
Lister() traefikiov1alpha1.TraefikServiceLister
}
// TraefikServiceIndexInformer is a wrapper around the underlying [cache.SharedIndexInformer]
// with type-safe variants of several methods.
type TraefikServiceIndexInformer cache.TypedSharedIndexInformer[*crdtraefikiov1alpha1.TraefikService]
// TraefikServiceHandlerFuncs is a specialization of [cache.TypedResourceEventHandlerFuncs] for TraefikService.
type TraefikServiceHandlerFuncs = cache.TypedResourceEventHandlerFuncs[*crdtraefikiov1alpha1.TraefikService]
// TraefikServiceDetailedHandlerFuncs is a specialization of [cache.TypedResourceEventHandlerDetailedFuncs] for TraefikService.
type TraefikServiceDetailedHandlerFuncs = cache.TypedResourceEventHandlerDetailedFuncs[*crdtraefikiov1alpha1.TraefikService]
// TraefikServiceFilteringHandler is a specialization of [cache.TypedFilteringResourceEventHandler] for TraefikService.
type TraefikServiceFilteringHandler = cache.TypedFilteringResourceEventHandler[*crdtraefikiov1alpha1.TraefikService]
// TraefikServiceIndexers is a specialization of [cache.TypedIndexers] for TraefikService.
type TraefikServiceIndexers = cache.TypedIndexers[*crdtraefikiov1alpha1.TraefikService]
// DeletedTraefikService is a specialization of [cache.DeletedObject] for TraefikService.
type DeletedTraefikService = cache.DeletedObject[*crdtraefikiov1alpha1.TraefikService]
type traefikServiceInformer struct {
factory internalinterfaces.SharedInformerFactory
tweakListOptions internalinterfaces.TweakListOptionsFunc
@@ -57,25 +85,49 @@ type traefikServiceInformer struct {
// NewTraefikServiceInformer constructs a new informer for TraefikService type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
// If you really need an independent one, prefer using the type-safe variant (see [NewTypedTraefikServiceInformer]).
func NewTraefikServiceInformer(client versioned.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
return NewTraefikServiceInformerWithOptions(client, namespace, internalinterfaces.InformerOptions{ResyncPeriod: resyncPeriod, Indexers: indexers})
}
// NewTypedTraefikServiceInformer constructs a new informer for TraefikService type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewTypedTraefikServiceInformer(client versioned.Interface, namespace string, resyncPeriod time.Duration, indexers TraefikServiceIndexers) TraefikServiceIndexInformer {
return NewTypedTraefikServiceInformerWithOptions(client, namespace, internalinterfaces.InformerOptions{ResyncPeriod: resyncPeriod, Indexers: cache.TypedIndexersToIndexers(indexers)})
}
// NewFilteredTraefikServiceInformer constructs a new informer for TraefikService type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
// If you really need an independent one, prefer using the type-safe variant (see [NewTypedFilteredTraefikServiceInformer]).
func NewFilteredTraefikServiceInformer(client versioned.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
return NewTraefikServiceInformerWithOptions(client, namespace, internalinterfaces.InformerOptions{ResyncPeriod: resyncPeriod, Indexers: indexers, TweakListOptions: tweakListOptions})
return NewTypedTraefikServiceInformerWithOptions(client, namespace, internalinterfaces.InformerOptions{ResyncPeriod: resyncPeriod, Indexers: indexers, TweakListOptions: tweakListOptions})
}
// NewTypedFilteredTraefikServiceInformer constructs a new informer for TraefikService type.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewTypedFilteredTraefikServiceInformer(client versioned.Interface, namespace string, resyncPeriod time.Duration, indexers TraefikServiceIndexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) TraefikServiceIndexInformer {
return NewTypedTraefikServiceInformerWithOptions(client, namespace, internalinterfaces.InformerOptions{ResyncPeriod: resyncPeriod, Indexers: cache.TypedIndexersToIndexers(indexers), TweakListOptions: tweakListOptions})
}
// NewTraefikServiceInformerWithOptions constructs a new informer for TraefikService type with additional options.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
// If you really need an independent one, prefer using the type-safe variant (see [NewTypedTraefikServiceInformerWithOptions]).
func NewTraefikServiceInformerWithOptions(client versioned.Interface, namespace string, options internalinterfaces.InformerOptions) cache.SharedIndexInformer {
return NewTypedTraefikServiceInformerWithOptions(client, namespace, options)
}
// NewTypedTraefikServiceInformerWithOptions constructs a new informer for TraefikService type with additional options.
// Always prefer using an informer factory to get a shared informer instead of getting an independent
// one. This reduces memory footprint and number of connections to the server.
func NewTypedTraefikServiceInformerWithOptions(client versioned.Interface, namespace string, options internalinterfaces.InformerOptions) TraefikServiceIndexInformer {
gvr := schema.GroupVersionResource{Group: "traefik.io", Version: "v1alpha1", Resource: "traefikservices"}
identifier := options.InformerName.WithResource(gvr)
tweakListOptions := options.TweakListOptions
return cache.NewSharedIndexInformerWithOptions(
return cache.NewTypedSharedIndexInformer[*crdtraefikiov1alpha1.TraefikService](cache.NewSharedIndexInformerWithOptions(
cache.ToListWatcherWithWatchListSemantics(&cache.ListWatch{
ListFunc: func(opts v1.ListOptions) (runtime.Object, error) {
if tweakListOptions != nil {
@@ -108,17 +160,57 @@ func NewTraefikServiceInformerWithOptions(client versioned.Interface, namespace
Indexers: options.Indexers,
Identifier: identifier,
},
)
))
}
func (f *traefikServiceInformer) defaultInformer(client versioned.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
return NewTraefikServiceInformerWithOptions(client, f.namespace, internalinterfaces.InformerOptions{ResyncPeriod: resyncPeriod, Indexers: cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, InformerName: f.factory.InformerName(), TweakListOptions: f.tweakListOptions})
return NewTypedTraefikServiceInformerWithOptions(client, f.namespace, internalinterfaces.InformerOptions{ResyncPeriod: resyncPeriod, Indexers: cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, InformerName: f.factory.InformerName(), TweakListOptions: f.tweakListOptions})
}
func (f *traefikServiceInformer) Informer() cache.SharedIndexInformer {
return f.factory.InformerFor(&crdtraefikiov1alpha1.TraefikService{}, f.defaultInformer)
return f.TypedInformer()
}
func (f *traefikServiceInformer) TypedInformer() TraefikServiceIndexInformer {
return cache.NewTypedSharedIndexInformer[*crdtraefikiov1alpha1.TraefikService](f.factory.InformerFor(&crdtraefikiov1alpha1.TraefikService{}, f.defaultInformer))
}
func (f *traefikServiceInformer) Lister() traefikiov1alpha1.TraefikServiceLister {
return traefikiov1alpha1.NewTraefikServiceLister(f.Informer().GetIndexer())
}
// ToTypedTraefikServiceInformer converts an untyped informer into a TypedTraefikServiceInformer.
//
// WARNING: this conversion is only safe if the informer handles objects of type
// *TraefikService. If that is not the case, calling type-safe methods of the returned
// TypedTraefikServiceInformer leads to runtime panics. A safer alternative is to pass
// around a TypedTraefikServiceInformer instances that was obtained from a
// SharedInformerFactory.
func ToTypedTraefikServiceInformer(informer TraefikServiceInformer) TypedTraefikServiceInformer {
if informer, ok := informer.(TypedTraefikServiceInformer); ok {
return informer
}
return &traefikServiceTypedInformerAdapter{informer}
}
type traefikServiceTypedInformerAdapter struct {
TraefikServiceInformer
}
func (a *traefikServiceTypedInformerAdapter) TypedInformer() TraefikServiceIndexInformer {
return cache.NewTypedSharedIndexInformer[*crdtraefikiov1alpha1.TraefikService](a.Informer())
}
// ToTraefikServiceIndexInformer converts an untyped informer into a TraefikServiceIndexInformer.
//
// WARNING: this conversion is only safe if the informer handles objects of type
// *TraefikService. If that is not the case, calling type-safe methods of the returned
// TraefikServiceIndexInformer leads to runtime panics. A safer alternative is to pass
// around a TraefikServiceIndexInformer instances that was obtained from a
// SharedInformerFactory.
func ToTraefikServiceIndexInformer(informer cache.SharedIndexInformer) TraefikServiceIndexInformer {
if informer, ok := informer.(TraefikServiceIndexInformer); ok {
return informer
}
return cache.NewTypedSharedIndexInformer[*crdtraefikiov1alpha1.TraefikService](informer)
}
@@ -72,6 +72,7 @@ func extendedHTTPRouteFeatures() sets.Set[features.Feature] {
features.HTTPRouteCORS,
features.HTTPRouteRequestTimeoutFeature,
features.HTTPRouteBackendTimeoutFeature,
features.HTTPRouteBackendURLRewriteFeature,
)
}
@@ -79,6 +80,7 @@ func extendedHTTPRouteFeatures() sets.Set[features.Feature] {
func extendedGRPCRouteFeatures() sets.Set[features.Feature] {
return sets.New(
features.GRPCRouteNamedRouteRule,
features.GRPCRouteRequestHeaderModifier,
)
}
@@ -9026,9 +9026,11 @@ func TestLoadTLSRoutes(t *testing.T) {
Servers: []dynamic.TCPServer{
{
Address: "10.10.0.1:80",
TLS: true,
},
{
Address: "10.10.0.2:80",
TLS: true,
},
},
ServersTransport: "tlsroute-default-tls-app-1-gw-default-my-gateway-ep-tls-0-5c999a999d12ac0531c5-svc-default-whoami-0",
@@ -9114,9 +9116,11 @@ func TestLoadTLSRoutes(t *testing.T) {
Servers: []dynamic.TCPServer{
{
Address: "10.10.0.1:80",
TLS: true,
},
{
Address: "10.10.0.2:80",
TLS: true,
},
},
ServersTransport: "tlsroute-default-tls-app-1-gw-default-my-gateway-ep-tls-0-5c999a999d12ac0531c5-svc-default-whoami-0",
@@ -9201,9 +9205,11 @@ func TestLoadTLSRoutes(t *testing.T) {
Servers: []dynamic.TCPServer{
{
Address: "10.10.0.1:80",
TLS: true,
},
{
Address: "10.10.0.2:80",
TLS: true,
},
},
ServersTransport: "tlsroute-default-tls-app-1-gw-default-my-gateway-ep-tls-0-5c999a999d12ac0531c5-svc-default-whoami-0",
+3 -1
View File
@@ -466,11 +466,13 @@ func (p *Provider) loadTLSServers(gatewayName, gatewayNamespace, namespace strin
}
lb := &dynamic.TCPServersLoadBalancer{}
passthrough := listener.TLS != nil && listener.TLS.Mode != nil && *listener.TLS.Mode == gatev1.TLSModePassthrough
for _, ba := range backendAddresses {
lb.Servers = append(lb.Servers, dynamic.TCPServer{
// TODO determine whether the servers needs TLS, from the port?
Address: net.JoinHostPort(ba.IP, strconv.Itoa(int(ba.Port))),
// The ServersTransport TLS configuration is only used to dial TLS servers.
TLS: serversTransport != nil && serversTransport.TLS != nil && !passthrough,
})
}
return lb, serversTransport, nil
+2 -2
View File
@@ -4,11 +4,11 @@ set -e -o pipefail
PROJECT_MODULE="github.com/traefik/traefik"
MODULE_VERSION="v3"
KUBE_VERSION=v0.36.3
KUBE_VERSION=v0.37.1
CURRENT_DIR="$(pwd)"
go install "k8s.io/code-generator/cmd/deepcopy-gen@${KUBE_VERSION}"
go install sigs.k8s.io/controller-tools/cmd/controller-gen@v0.21.0
go install sigs.k8s.io/controller-tools/cmd/controller-gen@v0.23.0
CODEGEN_PKG="$(go env GOPATH)/pkg/mod/k8s.io/code-generator@${KUBE_VERSION}"
# shellcheck disable=SC1091 # Cannot check source of this file