Skip to content

Commit e313aaa

Browse files
Merge branch 'master' into default-shutdown-delay
Signed-off-by: Andrii Chubatiuk <achubatiuk@victoriametrics.com>
2 parents b2cc252 + f539cb9 commit e313aaa

21 files changed

Lines changed: 341 additions & 190 deletions

File tree

.github/workflows/crds.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ jobs:
3232
path: __vm-charts-repo
3333

3434
- name: Import GPG key
35-
uses: crazy-max/ghaction-import-gpg@v6
35+
uses: crazy-max/ghaction-import-gpg@v7
3636
id: import-gpg
3737
with:
3838
gpg_private_key: ${{ secrets.VM_BOT_GPG_PRIVATE_KEY }}

.github/workflows/docs.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ jobs:
4242

4343
- name: Import GPG key
4444
id: import-gpg
45-
uses: crazy-max/ghaction-import-gpg@v6
45+
uses: crazy-max/ghaction-import-gpg@v7
4646
with:
4747
gpg_private_key: ${{ secrets.VM_BOT_GPG_PRIVATE_KEY }}
4848
passphrase: ${{ secrets.VM_BOT_PASSPHRASE }}

.github/workflows/operatorhub.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ jobs:
4141
path: __k8s-operatorhub-repo
4242

4343
- name: Import GPG key
44-
uses: crazy-max/ghaction-import-gpg@v6
44+
uses: crazy-max/ghaction-import-gpg@v7
4545
id: import-gpg
4646
with:
4747
gpg_private_key: ${{ secrets.VM_BOT_GPG_PRIVATE_KEY }}

.github/workflows/sandbox.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ jobs:
4848
path: __vm-ops-repo
4949

5050
- name: Import GPG key
51-
uses: crazy-max/ghaction-import-gpg@v6
51+
uses: crazy-max/ghaction-import-gpg@v7
5252
id: import-gpg
5353
with:
5454
gpg_private_key: ${{ secrets.VM_BOT_GPG_PRIVATE_KEY }}

Makefile

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ LOCAL_REGISTRY_PORT ?= 5001
2323
LOCAL_REGISTRY_DIR = "/etc/containerd/certs.d/localhost:$(LOCAL_REGISTRY_PORT)"
2424

2525
# ENVTEST_K8S_VERSION refers to the version of kubebuilder assets to be downloaded by envtest binary.
26-
ENVTEST_K8S_VERSION = 1.35.1
26+
ENVTEST_K8S_VERSION = 1.35.2
2727
PLATFORM = $(shell uname -o)
2828

2929
# Get the currently used golang install path (in GOPATH/bin, unless GOBIN is set)
@@ -398,11 +398,11 @@ KUSTOMIZE_VERSION ?= v5.8.1
398398
CONTROLLER_TOOLS_VERSION ?= v0.20.1
399399
ENVTEST_VERSION ?= release-0.23
400400
GOLANGCI_LINT_VERSION ?= v2.10.1
401-
CODEGENERATOR_VERSION ?= v0.35.1
401+
CODEGENERATOR_VERSION ?= v0.35.2
402402
KIND_VERSION ?= v0.31.0
403403
OLM_VERSION ?= 0.40.0
404404
OPERATOR_SDK_VERSION ?= v1.42.0
405-
OPM_VERSION ?= v1.63.0
405+
OPM_VERSION ?= v1.64.0
406406
YQ_VERSION ?= v4.52.4
407407
GINKGO_VERSION ?= v2.28.1
408408
CRUST_GATHER_VERSION ?= v0.12.1

api/go.mod

Lines changed: 15 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -5,29 +5,28 @@ module github.com/VictoriaMetrics/operator/api
55
go 1.26.0
66

77
require (
8-
github.com/VictoriaMetrics/VictoriaMetrics v1.136.0
8+
github.com/VictoriaMetrics/VictoriaMetrics v1.137.0
99
github.com/prometheus/alertmanager v0.31.1
1010
github.com/stretchr/testify v1.11.1
1111
gopkg.in/yaml.v2 v2.4.0
12-
gopkg.in/yaml.v3 v3.0.1
13-
k8s.io/api v0.35.1
14-
k8s.io/apiextensions-apiserver v0.35.1
15-
k8s.io/apimachinery v0.35.1
12+
k8s.io/api v0.35.2
13+
k8s.io/apiextensions-apiserver v0.35.2
14+
k8s.io/apimachinery v0.35.2
1615
k8s.io/autoscaler/vertical-pod-autoscaler v1.6.0
17-
k8s.io/client-go v0.35.1
16+
k8s.io/client-go v0.35.2
1817
k8s.io/utils v0.0.0-20260210185600-b8788abfbbc2
1918
sigs.k8s.io/controller-runtime v0.23.1
20-
sigs.k8s.io/gateway-api v1.4.1
19+
sigs.k8s.io/gateway-api v1.5.0
2120
)
2221

2322
require (
2423
github.com/VictoriaMetrics/VictoriaLogs v1.43.1 // indirect
25-
github.com/VictoriaMetrics/easyproto v1.1.3 // indirect
26-
github.com/VictoriaMetrics/metrics v1.40.2 // indirect
27-
github.com/VictoriaMetrics/metricsql v0.84.10 // indirect
24+
github.com/VictoriaMetrics/easyproto v1.2.0 // indirect
25+
github.com/VictoriaMetrics/metrics v1.41.2 // indirect
26+
github.com/VictoriaMetrics/metricsql v0.85.0 // indirect
2827
github.com/aws/aws-sdk-go-v2 v1.41.1 // indirect
29-
github.com/aws/aws-sdk-go-v2/config v1.32.7 // indirect
30-
github.com/aws/aws-sdk-go-v2/credentials v1.19.7 // indirect
28+
github.com/aws/aws-sdk-go-v2/config v1.32.8 // indirect
29+
github.com/aws/aws-sdk-go-v2/credentials v1.19.8 // indirect
3130
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.17 // indirect
3231
github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.17 // indirect
3332
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.17 // indirect
@@ -36,7 +35,7 @@ require (
3635
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.17 // indirect
3736
github.com/aws/aws-sdk-go-v2/service/signin v1.0.5 // indirect
3837
github.com/aws/aws-sdk-go-v2/service/sso v1.30.9 // indirect
39-
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.13 // indirect
38+
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.14 // indirect
4039
github.com/aws/aws-sdk-go-v2/service/sts v1.41.6 // indirect
4140
github.com/aws/smithy-go v1.24.0 // indirect
4241
github.com/beorn7/perks v1.0.1 // indirect
@@ -73,15 +72,14 @@ require (
7372
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
7473
github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f // indirect
7574
github.com/onsi/ginkgo/v2 v2.28.1 // indirect
76-
github.com/onsi/gomega v1.39.1 // indirect
7775
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect
7876
github.com/prometheus/client_golang v1.23.2 // indirect
7977
github.com/prometheus/client_model v0.6.2 // indirect
8078
github.com/prometheus/common v0.67.5 // indirect
8179
github.com/prometheus/procfs v0.19.2 // indirect
8280
github.com/prometheus/sigv4 v0.4.1 // indirect
8381
github.com/valyala/bytebufferpool v1.0.0 // indirect
84-
github.com/valyala/fastjson v1.6.7 // indirect
82+
github.com/valyala/fastjson v1.6.10 // indirect
8583
github.com/valyala/fastrand v1.1.0 // indirect
8684
github.com/valyala/fasttemplate v1.2.2 // indirect
8785
github.com/valyala/gozstd v1.24.0 // indirect
@@ -90,7 +88,7 @@ require (
9088
github.com/x448/float16 v0.8.4 // indirect
9189
go.yaml.in/yaml/v2 v2.4.3 // indirect
9290
go.yaml.in/yaml/v3 v3.0.4 // indirect
93-
golang.org/x/net v0.50.0 // indirect
91+
golang.org/x/net v0.51.0 // indirect
9492
golang.org/x/oauth2 v0.35.0 // indirect
9593
golang.org/x/sys v0.41.0 // indirect
9694
golang.org/x/term v0.40.0 // indirect
@@ -99,6 +97,7 @@ require (
9997
google.golang.org/protobuf v1.36.11 // indirect
10098
gopkg.in/evanphx/json-patch.v4 v4.13.0 // indirect
10199
gopkg.in/inf.v0 v0.9.1 // indirect
100+
gopkg.in/yaml.v3 v3.0.1 // indirect
102101
k8s.io/klog/v2 v2.130.1 // indirect
103102
k8s.io/kube-openapi v0.0.0-20260127142750-a19766b6e2d4 // indirect
104103
sigs.k8s.io/json v0.0.0-20250730193827-2d320260d730 // indirect

api/go.sum

Lines changed: 28 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,21 @@
1-
github.com/Masterminds/semver v1.5.0 h1:H65muMkzWKEuNDnfl9d70GUjFniHKHRbFPGBuZ3QEww=
21
github.com/Masterminds/semver/v3 v3.4.0 h1:Zog+i5UMtVoCU8oKka5P7i9q9HgrJeGzI9SA1Xbatp0=
32
github.com/Masterminds/semver/v3 v3.4.0/go.mod h1:4V+yj/TJE1HU9XfppCwVMZq3I84lprf4nC11bSS5beM=
43
github.com/VictoriaMetrics/VictoriaLogs v1.43.1 h1:qbTvuyL7hnvFJ/iU2p7+gBa3svPy6O33TqU+HBHP+B0=
54
github.com/VictoriaMetrics/VictoriaLogs v1.43.1/go.mod h1:h2A8euPqsnGZg1IJJQYtwPLng2OvWqj3fyxMXCgVZig=
6-
github.com/VictoriaMetrics/VictoriaMetrics v1.136.0 h1:0g+mfM+qjQpYq4jwnpRBGlH9o+Xu/bc8rOkkjiXmERQ=
7-
github.com/VictoriaMetrics/VictoriaMetrics v1.136.0/go.mod h1:Q/hcAhXVVLKs/yMuVIvPkhBXH2CPHuECwT32aJyPKOE=
8-
github.com/VictoriaMetrics/easyproto v1.1.3 h1:gRSA3ZQs7n4+5I+SniDWD59jde1jVq4JmgQ9HUUyvk4=
9-
github.com/VictoriaMetrics/easyproto v1.1.3/go.mod h1:QlGlzaJnDfFd8Lk6Ci/fuLxfTo3/GThPs2KH23mv710=
10-
github.com/VictoriaMetrics/metrics v1.40.2 h1:OVSjKcQEx6JAwGeu8/KQm9Su5qJ72TMEW4xYn5vw3Ac=
11-
github.com/VictoriaMetrics/metrics v1.40.2/go.mod h1:XE4uudAAIRaJE614Tl5HMrtoEU6+GDZO4QTnNSsZRuA=
12-
github.com/VictoriaMetrics/metricsql v0.84.10 h1:P5cEnLxZlPn5DaIoQUUGqyb9TfLIWwbJXYtgOuzbHsg=
13-
github.com/VictoriaMetrics/metricsql v0.84.10/go.mod h1:d4EisFO6ONP/HIGDYTAtwrejJBBeKGQYiRl095bS4QQ=
5+
github.com/VictoriaMetrics/VictoriaMetrics v1.137.0 h1:uBhbluw1D1jw+fJfexc0FsGk9zSJni9tafHTHtoy2EA=
6+
github.com/VictoriaMetrics/VictoriaMetrics v1.137.0/go.mod h1:LJpBKAGtKgX1cgwP4zT55gBrT8k+cFunsNkmE7MCOwI=
7+
github.com/VictoriaMetrics/easyproto v1.2.0 h1:FJT9uNXA2isppFuJErbLqD306KoFlehl7Wn2dg/6oIE=
8+
github.com/VictoriaMetrics/easyproto v1.2.0/go.mod h1:QlGlzaJnDfFd8Lk6Ci/fuLxfTo3/GThPs2KH23mv710=
9+
github.com/VictoriaMetrics/metrics v1.41.2 h1:pLQ4Mw9TqXFq3ZsZVJkz88JHpjL9LY5NHTY3v2gBNAw=
10+
github.com/VictoriaMetrics/metrics v1.41.2/go.mod h1:xDM82ULLYCYdFRgQ2JBxi8Uf1+8En1So9YUwlGTOqTc=
11+
github.com/VictoriaMetrics/metricsql v0.85.0 h1:xI+EfqsOgY0T2yd7p8hcYQ52LOtf+1i8fQQzQ+RGtZM=
12+
github.com/VictoriaMetrics/metricsql v0.85.0/go.mod h1:d4EisFO6ONP/HIGDYTAtwrejJBBeKGQYiRl095bS4QQ=
1413
github.com/aws/aws-sdk-go-v2 v1.41.1 h1:ABlyEARCDLN034NhxlRUSZr4l71mh+T5KAeGh6cerhU=
1514
github.com/aws/aws-sdk-go-v2 v1.41.1/go.mod h1:MayyLB8y+buD9hZqkCW3kX1AKq07Y5pXxtgB+rRFhz0=
16-
github.com/aws/aws-sdk-go-v2/config v1.32.7 h1:vxUyWGUwmkQ2g19n7JY/9YL8MfAIl7bTesIUykECXmY=
17-
github.com/aws/aws-sdk-go-v2/config v1.32.7/go.mod h1:2/Qm5vKUU/r7Y+zUk/Ptt2MDAEKAfUtKc1+3U1Mo3oY=
18-
github.com/aws/aws-sdk-go-v2/credentials v1.19.7 h1:tHK47VqqtJxOymRrNtUXN5SP/zUTvZKeLx4tH6PGQc8=
19-
github.com/aws/aws-sdk-go-v2/credentials v1.19.7/go.mod h1:qOZk8sPDrxhf+4Wf4oT2urYJrYt3RejHSzgAquYeppw=
15+
github.com/aws/aws-sdk-go-v2/config v1.32.8 h1:iu+64gwDKEoKnyTQskSku72dAwggKI5sV6rNvgSMpMs=
16+
github.com/aws/aws-sdk-go-v2/config v1.32.8/go.mod h1:MI2XvA+qDi3i9AJxX1E2fu730syEBzp/jnXrjxuHwgI=
17+
github.com/aws/aws-sdk-go-v2/credentials v1.19.8 h1:Jp2JYH1lRT3KhX4mshHPvVYsR5qqRec3hGvEarNYoR0=
18+
github.com/aws/aws-sdk-go-v2/credentials v1.19.8/go.mod h1:fZG9tuvyVfxknv1rKibIz3DobRaFw1Poe8IKtXB3XYY=
2019
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.17 h1:I0GyV8wiYrP8XpA70g1HBcQO1JlQxCMTW9npl5UbDHY=
2120
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.17/go.mod h1:tyw7BOl5bBe/oqvoIeECFJjMdzXoa/dfVz3QQ5lgHGA=
2221
github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.17 h1:xOLELNKGp2vsiteLsvLPwxC+mYmO6OZ8PYgiuPJzF8U=
@@ -33,8 +32,8 @@ github.com/aws/aws-sdk-go-v2/service/signin v1.0.5 h1:VrhDvQib/i0lxvr3zqlUwLwJP4
3332
github.com/aws/aws-sdk-go-v2/service/signin v1.0.5/go.mod h1:k029+U8SY30/3/ras4G/Fnv/b88N4mAfliNn08Dem4M=
3433
github.com/aws/aws-sdk-go-v2/service/sso v1.30.9 h1:v6EiMvhEYBoHABfbGB4alOYmCIrcgyPPiBE1wZAEbqk=
3534
github.com/aws/aws-sdk-go-v2/service/sso v1.30.9/go.mod h1:yifAsgBxgJWn3ggx70A3urX2AN49Y5sJTD1UQFlfqBw=
36-
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.13 h1:gd84Omyu9JLriJVCbGApcLzVR3XtmC4ZDPcAI6Ftvds=
37-
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.13/go.mod h1:sTGThjphYE4Ohw8vJiRStAcu3rbjtXRsdNB0TvZ5wwo=
35+
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.14 h1:0jbJeuEHlwKJ9PfXtpSFc4MF+WIWORdhN1n30ITZGFM=
36+
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.14/go.mod h1:sTGThjphYE4Ohw8vJiRStAcu3rbjtXRsdNB0TvZ5wwo=
3837
github.com/aws/aws-sdk-go-v2/service/sts v1.41.6 h1:5fFjR/ToSOzB2OQ/XqWpZBmNvmP/pJ1jOWYlFDJTjRQ=
3938
github.com/aws/aws-sdk-go-v2/service/sts v1.41.6/go.mod h1:qgFDZQSD/Kys7nJnVqYlWKnh0SSdMjAi0uSwON4wgYQ=
4039
github.com/aws/smithy-go v1.24.0 h1:LpilSUItNPFr1eY85RYgTIg5eIEPtvFbskaFcmmIUnk=
@@ -159,8 +158,8 @@ github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu
159158
github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U=
160159
github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw=
161160
github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc=
162-
github.com/valyala/fastjson v1.6.7 h1:ZE4tRy0CIkh+qDc5McjatheGX2czdn8slQjomexVpBM=
163-
github.com/valyala/fastjson v1.6.7/go.mod h1:CLCAqky6SMuOcxStkYQvblddUtoRxhYMGLrsQns1aXY=
161+
github.com/valyala/fastjson v1.6.10 h1:/yjJg8jaVQdYR3arGxPE2X5z89xrlhS0eGXdv+ADTh4=
162+
github.com/valyala/fastjson v1.6.10/go.mod h1:e6FubmQouUNP73jtMLmcbxS6ydWIpOfhz34TSfO3JaE=
164163
github.com/valyala/fastrand v1.1.0 h1:f+5HkLW4rsgzdNoleUOB69hyT9IlD2ZQh9GyDMfb5G8=
165164
github.com/valyala/fastrand v1.1.0/go.mod h1:HWqCzkrkg6QXT8V2EXWvXCoow7vLwOFN002oeRzjapQ=
166165
github.com/valyala/fasttemplate v1.2.2 h1:lxLXG0uE3Qnshl9QyaK6XJxMXlQZELvChBOCmQD0Loo=
@@ -185,8 +184,8 @@ go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc=
185184
go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg=
186185
golang.org/x/mod v0.33.0 h1:tHFzIWbBifEmbwtGz65eaWyGiGZatSrT9prnU8DbVL8=
187186
golang.org/x/mod v0.33.0/go.mod h1:swjeQEj+6r7fODbD2cqrnje9PnziFuw4bmLbBZFrQ5w=
188-
golang.org/x/net v0.50.0 h1:ucWh9eiCGyDR3vtzso0WMQinm2Dnt8cFMuQa9K33J60=
189-
golang.org/x/net v0.50.0/go.mod h1:UgoSli3F/pBgdJBHCTc+tp3gmrU4XswgGRgtnwWTfyM=
187+
golang.org/x/net v0.51.0 h1:94R/GTO7mt3/4wIKpcR5gkGmRLOuE/2hNGeWq/GBIFo=
188+
golang.org/x/net v0.51.0/go.mod h1:aamm+2QF5ogm02fjy5Bb7CQ0WMt1/WVM7FtyaTLlA9Y=
190189
golang.org/x/oauth2 v0.35.0 h1:Mv2mzuHuZuY2+bkyWXIHMfhNdJAdwW3FuWeCPYN5GVQ=
191190
golang.org/x/oauth2 v0.35.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA=
192191
golang.org/x/sync v0.19.0 h1:vV+1eWNmZ5geRlYjzm2adRgW2/mcpevXNg50YZtPCE4=
@@ -214,16 +213,16 @@ gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
214213
gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
215214
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
216215
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
217-
k8s.io/api v0.35.1 h1:0PO/1FhlK/EQNVK5+txc4FuhQibV25VLSdLMmGpDE/Q=
218-
k8s.io/api v0.35.1/go.mod h1:28uR9xlXWml9eT0uaGo6y71xK86JBELShLy4wR1XtxM=
219-
k8s.io/apiextensions-apiserver v0.35.1 h1:p5vvALkknlOcAqARwjS20kJffgzHqwyQRM8vHLwgU7w=
220-
k8s.io/apiextensions-apiserver v0.35.1/go.mod h1:2CN4fe1GZ3HMe4wBr25qXyJnJyZaquy4nNlNmb3R7AQ=
221-
k8s.io/apimachinery v0.35.1 h1:yxO6gV555P1YV0SANtnTjXYfiivaTPvCTKX6w6qdDsU=
222-
k8s.io/apimachinery v0.35.1/go.mod h1:jQCgFZFR1F4Ik7hvr2g84RTJSZegBc8yHgFWKn//hns=
216+
k8s.io/api v0.35.2 h1:tW7mWc2RpxW7HS4CoRXhtYHSzme1PN1UjGHJ1bdrtdw=
217+
k8s.io/api v0.35.2/go.mod h1:7AJfqGoAZcwSFhOjcGM7WV05QxMMgUaChNfLTXDRE60=
218+
k8s.io/apiextensions-apiserver v0.35.2 h1:iyStXHoJZsUXPh/nFAsjC29rjJWdSgUmG1XpApE29c0=
219+
k8s.io/apiextensions-apiserver v0.35.2/go.mod h1:OdyGvcO1FtMDWQ+rRh/Ei3b6X3g2+ZDHd0MSRGeS8rU=
220+
k8s.io/apimachinery v0.35.2 h1:NqsM/mmZA7sHW02JZ9RTtk3wInRgbVxL8MPfzSANAK8=
221+
k8s.io/apimachinery v0.35.2/go.mod h1:jQCgFZFR1F4Ik7hvr2g84RTJSZegBc8yHgFWKn//hns=
223222
k8s.io/autoscaler/vertical-pod-autoscaler v1.6.0 h1:JC2YsVS6njOY8+a2mr8YX2FwZCpWfe7oVzjk98YPKZg=
224223
k8s.io/autoscaler/vertical-pod-autoscaler v1.6.0/go.mod h1:w7pOVKXZAZsct/dXWsGJflrGOTkMpBxI75KyQjUYg7Y=
225-
k8s.io/client-go v0.35.1 h1:+eSfZHwuo/I19PaSxqumjqZ9l5XiTEKbIaJ+j1wLcLM=
226-
k8s.io/client-go v0.35.1/go.mod h1:1p1KxDt3a0ruRfc/pG4qT/3oHmUj1AhSHEcxNSGg+OA=
224+
k8s.io/client-go v0.35.2 h1:YUfPefdGJA4aljDdayAXkc98DnPkIetMl4PrKX97W9o=
225+
k8s.io/client-go v0.35.2/go.mod h1:4QqEwh4oQpeK8AaefZ0jwTFJw/9kIjdQi0jpKeYvz7g=
227226
k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk=
228227
k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE=
229228
k8s.io/kube-openapi v0.0.0-20260127142750-a19766b6e2d4 h1:HhDfevmPS+OalTjQRKbTHppRIz01AWi8s45TMXStgYY=
@@ -232,8 +231,8 @@ k8s.io/utils v0.0.0-20260210185600-b8788abfbbc2 h1:AZYQSJemyQB5eRxqcPky+/7EdBj0x
232231
k8s.io/utils v0.0.0-20260210185600-b8788abfbbc2/go.mod h1:xDxuJ0whA3d0I4mf/C4ppKHxXynQ+fxnkmQH0vTHnuk=
233232
sigs.k8s.io/controller-runtime v0.23.1 h1:TjJSM80Nf43Mg21+RCy3J70aj/W6KyvDtOlpKf+PupE=
234233
sigs.k8s.io/controller-runtime v0.23.1/go.mod h1:B6COOxKptp+YaUT5q4l6LqUJTRpizbgf9KSRNdQGns0=
235-
sigs.k8s.io/gateway-api v1.4.1 h1:NPxFutNkKNa8UfLd2CMlEuhIPMQgDQ6DXNKG9sHbJU8=
236-
sigs.k8s.io/gateway-api v1.4.1/go.mod h1:AR5RSqciWP98OPckEjOjh2XJhAe2Na4LHyXD2FUY7Qk=
234+
sigs.k8s.io/gateway-api v1.5.0 h1:duoo14Ky/fJXpjpmyMISE2RTBGnfCg8zICfTYLTnBJA=
235+
sigs.k8s.io/gateway-api v1.5.0/go.mod h1:GvCETiaMAlLym5CovLxGjS0NysqFk3+Yuq3/rh6QL2o=
237236
sigs.k8s.io/json v0.0.0-20250730193827-2d320260d730 h1:IpInykpT6ceI+QxKBbEflcR5EXP7sU1kvOlxwZh5txg=
238237
sigs.k8s.io/json v0.0.0-20250730193827-2d320260d730/go.mod h1:mdzfpAEoE6DHQEN0uh9ZbOCuHbLK5wOm7dK4ctXE9Tg=
239238
sigs.k8s.io/randfill v1.0.0 h1:JfjMILfT8A6RbawdsK2JXGBR5AQVfd+9TbzrlneTyrU=

api/operator/v1beta1/vmuser_types.go

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -55,13 +55,17 @@ type VMUserSpec struct {
5555

5656
// TargetRef describes target for user traffic forwarding.
5757
// one of target types can be chosen:
58-
// crd or static per targetRef.
58+
// crds or static per targetRef.
5959
// user can define multiple targetRefs with different ref Types.
6060
type TargetRef struct {
6161
// CRD describes exist operator's CRD object,
6262
// operator generates access url based on CRD params.
6363
// +optional
6464
CRD *CRDRef `json:"crd,omitempty"`
65+
// CRD describes existing operator's CRD objects,
66+
// operator generates access url based on CRD params.
67+
// +optional
68+
CRDs []CRDRef `json:"crds,omitempty"`
6569
// Static - user defined url for traffic forward,
6670
// for instance http://vmsingle:8428
6771
// +optional
@@ -87,11 +91,18 @@ type TargetRef struct {
8791
}
8892

8993
func (r *TargetRef) validate(isRetryCodesSet bool) error {
90-
if r.CRD != nil && r.Static != nil {
91-
return fmt.Errorf("targetRef validation failed, one of `crd` or `static` must be configured, got both")
94+
var refs []string
95+
if r.CRD != nil {
96+
refs = append(refs, "crd")
97+
}
98+
if len(r.CRDs) > 0 {
99+
refs = append(refs, "crds")
92100
}
93-
if r.CRD == nil && r.Static == nil {
94-
return fmt.Errorf("targetRef validation failed, one of `crd` or `static` must be configured, got none")
101+
if r.Static != nil {
102+
refs = append(refs, "static")
103+
}
104+
if len(refs) != 1 {
105+
return fmt.Errorf("targetRef validation failed, exactly one of `crd`, `crds` or `static` must be configured, found: [%s]", strings.Join(refs, ","))
95106
}
96107
if r.Static != nil {
97108
if r.Static.URL == "" && len(r.Static.URLs) == 0 {
@@ -113,6 +124,11 @@ func (r *TargetRef) validate(isRetryCodesSet bool) error {
113124
return fmt.Errorf("crd.name and crd.namespace cannot be empty")
114125
}
115126
}
127+
for i, crd := range r.CRDs {
128+
if crd.Namespace == "" || crd.Name == "" {
129+
return fmt.Errorf("crds[%d].name and crds[%d].namespace cannot be empty", i, i)
130+
}
131+
}
116132
if err := validateHTTPHeaders(r.ResponseHeaders); err != nil {
117133
return fmt.Errorf("failed to parse targetRef response headers: %w", err)
118134
}

api/operator/v1beta1/zz_generated.deepcopy.go

Lines changed: 5 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)