Skip to content

Commit 0163b33

Browse files
committed
fix: Enable OpenAPI schema generation and update code generation tooling and dependencies.
1 parent d21cc0b commit 0163b33

File tree

10 files changed

+571
-236
lines changed

10 files changed

+571
-236
lines changed

Taskfile.yaml

Lines changed: 4 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -127,33 +127,13 @@ tasks:
127127
silent: true
128128

129129
generate:openapi:
130-
desc: Generate OpenAPI definitions for search API types
131-
deps:
132-
- task: install-go-tool
133-
vars:
134-
NAME: openapi-gen
135-
PACKAGE: k8s.io/code-generator/cmd/openapi-gen
136-
VERSION: v0.23.0
130+
desc: Generate Kubernetes OpenAPI definitions
137131
cmds:
138-
- echo "Generating OpenAPI definitions..."
139132
- |
140133
set -e
141-
# Packages to generate OpenAPI for
142-
PACKAGES=(
143-
"pkg/apis/search/v1alpha1"
144-
)
145-
146-
for REL_DIR in "${PACKAGES[@]}"; do
147-
PKG="go.miloapis.net/search/$REL_DIR"
148-
echo "Generating OpenAPI for $PKG..."
149-
150-
"{{.TOOL_DIR}}/openapi-gen" \
151-
--input-dirs "$PKG,k8s.io/apimachinery/pkg/apis/meta/v1,k8s.io/apimachinery/pkg/runtime,k8s.io/apimachinery/pkg/version" \
152-
--output-package "$REL_DIR" \
153-
--output-base "." \
154-
--output-file-base "zz_generated.openapi" \
155-
--go-header-file "hack/boilerplate.go.txt"
156-
done
134+
echo "🔄 Generating Kubernetes OpenAPI definitions..."
135+
./hack/update-codegen.sh
136+
echo "✅ OpenAPI generation complete"
157137
silent: true
158138

159139
# Test tasks

cmd/search/main.go

Lines changed: 15 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,16 @@ import (
44
"context"
55
"fmt"
66
"os"
7-
"strings"
87
"time"
98

109
"github.com/google/uuid"
1110
"github.com/spf13/cobra"
1211
"github.com/spf13/pflag"
12+
1313
searchapiserver "go.miloapis.net/search/internal/apiserver"
1414
"go.miloapis.net/search/internal/version"
1515
searchv1alpha1 "go.miloapis.net/search/pkg/apis/search/v1alpha1"
16+
"go.miloapis.net/search/pkg/generated/openapi"
1617
"k8s.io/apimachinery/pkg/runtime"
1718
utilruntime "k8s.io/apimachinery/pkg/util/runtime"
1819
apiopenapi "k8s.io/apiserver/pkg/endpoints/openapi"
@@ -24,7 +25,8 @@ import (
2425
"k8s.io/component-base/logs"
2526
logsapi "k8s.io/component-base/logs/api/v1"
2627
"k8s.io/klog/v2"
27-
"k8s.io/kube-openapi/pkg/common"
28+
openapiutil "k8s.io/kube-openapi/pkg/util"
29+
"k8s.io/kube-openapi/pkg/validation/spec"
2830
runtimecache "sigs.k8s.io/controller-runtime/pkg/cache"
2931
ctrllog "sigs.k8s.io/controller-runtime/pkg/log"
3032

@@ -43,31 +45,6 @@ func init() {
4345
utilfeature.DefaultMutableFeatureGate.Set("RemoteRequestHeaderUID=true")
4446
}
4547

46-
func GetOpenAPIDefinitions(cb common.ReferenceCallback) map[string]common.OpenAPIDefinition {
47-
defs := make(map[string]common.OpenAPIDefinition)
48-
49-
merge := func(pkgDefs map[string]common.OpenAPIDefinition) {
50-
for k, v := range pkgDefs {
51-
// For k8s.io types, store both the original key and the transformed key
52-
// because the namer behavior is inconsistent across different types
53-
if strings.HasPrefix(k, "k8s.io/") {
54-
// Store original key (with slashes)
55-
defs[k] = v
56-
// Also store transformed key (io.k8s with dots)
57-
newK := "io.k8s." + k[7:]
58-
newK = strings.ReplaceAll(newK, "/", ".")
59-
defs[newK] = v
60-
} else {
61-
// For non-k8s.io types, keep as-is
62-
defs[k] = v
63-
}
64-
}
65-
}
66-
67-
merge(searchv1alpha1.GetOpenAPIDefinitions(cb))
68-
return defs
69-
}
70-
7148
func main() {
7249
cmd := NewSearchServerCommand()
7350
code := cli.Run(cmd)
@@ -203,17 +180,25 @@ func (o *SearchServerOptions) Config() (*searchapiserver.Config, error) {
203180
genericConfig := genericapiserver.NewRecommendedConfig(searchapiserver.Codecs)
204181

205182
// Set effective version to match the Kubernetes version we're built against.
206-
genericConfig.EffectiveVersion = basecompatibility.NewEffectiveVersionFromString("1.34", "", "")
183+
genericConfig.EffectiveVersion = basecompatibility.NewEffectiveVersionFromString("1.35", "", "")
207184

208185
namer := apiopenapi.NewDefinitionNamer(searchapiserver.Scheme)
209-
genericConfig.OpenAPIV3Config = genericapiserver.DefaultOpenAPIV3Config(GetOpenAPIDefinitions, namer)
186+
genericConfig.OpenAPIV3Config = genericapiserver.DefaultOpenAPIV3Config(openapi.GetOpenAPIDefinitions, namer)
210187
genericConfig.OpenAPIV3Config.Info.Title = "Search"
211188
genericConfig.OpenAPIV3Config.Info.Version = version.Version
189+
genericConfig.OpenAPIV3Config.GetDefinitionName = func(name string) (string, spec.Extensions) {
190+
friendlyName, extensions := namer.GetDefinitionName(name)
191+
return openapiutil.ToRESTFriendlyName(friendlyName), extensions
192+
}
212193

213194
// Configure OpenAPI v2
214-
genericConfig.OpenAPIConfig = genericapiserver.DefaultOpenAPIConfig(GetOpenAPIDefinitions, namer)
195+
genericConfig.OpenAPIConfig = genericapiserver.DefaultOpenAPIConfig(openapi.GetOpenAPIDefinitions, namer)
215196
genericConfig.OpenAPIConfig.Info.Title = "Search"
216197
genericConfig.OpenAPIConfig.Info.Version = version.Version
198+
genericConfig.OpenAPIConfig.GetDefinitionName = func(name string) (string, spec.Extensions) {
199+
friendlyName, extensions := namer.GetDefinitionName(name)
200+
return openapiutil.ToRESTFriendlyName(friendlyName), extensions
201+
}
217202

218203
if err := o.RecommendedOptions.ApplyTo(genericConfig); err != nil {
219204
return nil, fmt.Errorf("failed to apply recommended options: %w", err)

go.mod

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,18 +4,19 @@ go 1.25.0
44

55
require (
66
github.com/go-logr/logr v1.4.3
7+
github.com/golang-jwt/jwt/v5 v5.3.1
78
github.com/google/cel-go v0.27.0
89
github.com/google/uuid v1.6.0
910
github.com/meilisearch/meilisearch-go v0.36.1
1011
github.com/nats-io/nats.go v1.48.0
1112
github.com/spf13/cobra v1.10.2
1213
github.com/spf13/pflag v1.0.10
1314
github.com/stretchr/testify v1.11.1
14-
k8s.io/api v0.35.1
15-
k8s.io/apimachinery v0.35.1
16-
k8s.io/apiserver v0.35.1
17-
k8s.io/client-go v0.35.1
18-
k8s.io/component-base v0.35.1
15+
k8s.io/api v0.35.2
16+
k8s.io/apimachinery v0.35.2
17+
k8s.io/apiserver v0.35.2
18+
k8s.io/client-go v0.35.2
19+
k8s.io/component-base v0.35.2
1920
k8s.io/klog/v2 v2.130.1
2021
k8s.io/kube-openapi v0.0.0-20260127142750-a19766b6e2d4
2122
sigs.k8s.io/controller-runtime v0.23.1
@@ -45,7 +46,6 @@ require (
4546
github.com/go-openapi/swag v0.23.0 // indirect
4647
github.com/go-openapi/swag/jsonname v0.25.4 // indirect
4748
github.com/gogo/protobuf v1.3.2 // indirect
48-
github.com/golang-jwt/jwt/v5 v5.3.1 // indirect
4949
github.com/golang/protobuf v1.5.4 // indirect
5050
github.com/google/btree v1.1.3 // indirect
5151
github.com/google/gnostic-models v0.7.0 // indirect
@@ -68,7 +68,6 @@ require (
6868
github.com/prometheus/client_model v0.6.2 // indirect
6969
github.com/prometheus/common v0.66.1 // indirect
7070
github.com/prometheus/procfs v0.16.1 // indirect
71-
github.com/stoewer/go-strcase v1.3.0 // indirect
7271
github.com/stretchr/objx v0.5.2 // indirect
7372
github.com/x448/float16 v0.8.4 // indirect
7473
go.etcd.io/etcd/api/v3 v3.6.5 // indirect
@@ -109,9 +108,9 @@ require (
109108
gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect
110109
gopkg.in/yaml.v3 v3.0.1 // indirect
111110
k8s.io/apiextensions-apiserver v0.35.0 // indirect
112-
k8s.io/code-generator v0.35.1 // indirect
111+
k8s.io/code-generator v0.35.2 // indirect
113112
k8s.io/gengo/v2 v2.0.0-20250922181213-ec3ebc5fd46b // indirect
114-
k8s.io/kms v0.35.1 // indirect
113+
k8s.io/kms v0.35.2 // indirect
115114
k8s.io/utils v0.0.0-20251002143259-bc988d571ff4 // indirect
116115
sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.31.2 // indirect
117116
sigs.k8s.io/json v0.0.0-20250730193827-2d320260d730 // indirect

go.sum

Lines changed: 14 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
cel.dev/expr v0.24.0 h1:56OvJKSH3hDGL0ml5uSxZmz3/3Pq4tJ+fb1unVLAFcY=
2-
cel.dev/expr v0.24.0/go.mod h1:hLPLo1W4QUmuYdA72RBX06QTs6MXw941piREPl3Yfiw=
31
cel.dev/expr v0.25.1 h1:1KrZg61W6TWSxuNZ37Xy49ps13NUovb66QLprthtwi4=
42
cel.dev/expr v0.25.1/go.mod h1:hrXvqGP6G6gyx8UAHSHJ5RGk//1Oj5nXQ2NI02Nrsg4=
53
github.com/Masterminds/semver/v3 v3.4.0 h1:Zog+i5UMtVoCU8oKka5P7i9q9HgrJeGzI9SA1Xbatp0=
@@ -8,8 +6,6 @@ github.com/NYTimes/gziphandler v1.1.1 h1:ZUDjpQae29j0ryrS0u/B8HZfJBtBQHjqw2rQ2cq
86
github.com/NYTimes/gziphandler v1.1.1/go.mod h1:n/CVRwUEOgIxrgPvAQhUUr9oeUtvrhMomdKFjzJNB0c=
97
github.com/andybalholm/brotli v1.1.1 h1:PR2pgnyFznKEugtsUo0xLdDop5SKXd5Qf5ysW+7XdTA=
108
github.com/andybalholm/brotli v1.1.1/go.mod h1:05ib4cKhjx3OQYUY22hTVd34Bc8upXjOLL2rKwwZBoA=
11-
github.com/antlr4-go/antlr/v4 v4.13.0 h1:lxCg3LAv+EUK6t1i0y1V6/SLeUi0eKEKdhQAlS8TVTI=
12-
github.com/antlr4-go/antlr/v4 v4.13.0/go.mod h1:pfChB/xh/Unjila75QW7+VU4TSnWnnk9UTnmpPaOR2g=
139
github.com/antlr4-go/antlr/v4 v4.13.1 h1:SqQKkuVZ+zWkMMNkjy5FZe5mr5WURWnlpmOuzYWrPrQ=
1410
github.com/antlr4-go/antlr/v4 v4.13.1/go.mod h1:GKmUxMtwp6ZgGwZSva4eWPC5mS6vUAmOABFgjdkM7Nw=
1511
github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
@@ -65,16 +61,12 @@ github.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZ
6561
github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
6662
github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
6763
github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
68-
github.com/golang-jwt/jwt/v5 v5.3.0 h1:pv4AsKCKKZuqlgs5sUmn4x8UlGa0kEVt/puTpKx9vvo=
69-
github.com/golang-jwt/jwt/v5 v5.3.0/go.mod h1:fxCRLWMO43lRc8nhHWY6LGqRcf+1gQWArsqaEUEa5bE=
7064
github.com/golang-jwt/jwt/v5 v5.3.1 h1:kYf81DTWFe7t+1VvL7eS+jKFVWaUnK9cB1qbwn63YCY=
7165
github.com/golang-jwt/jwt/v5 v5.3.1/go.mod h1:fxCRLWMO43lRc8nhHWY6LGqRcf+1gQWArsqaEUEa5bE=
7266
github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek=
7367
github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps=
7468
github.com/google/btree v1.1.3 h1:CVpQJjYgC4VbzxeGVHfvZrv1ctoYCAI8vbl07Fcxlyg=
7569
github.com/google/btree v1.1.3/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4=
76-
github.com/google/cel-go v0.26.0 h1:DPGjXackMpJWH680oGY4lZhYjIameYmR+/6RBdDGmaI=
77-
github.com/google/cel-go v0.26.0/go.mod h1:A9O8OU9rdvrK5MQyrqfIxo1a0u4g3sF8KB6PUIaryMM=
7870
github.com/google/cel-go v0.27.0 h1:e7ih85+4qVrBuqQWTW4FKSqZYokVuc3HnhH5keboFTo=
7971
github.com/google/cel-go v0.27.0/go.mod h1:tTJ11FWqnhw5KKpnWpvW9CJC3Y9GK4EIS0WXnBbebzw=
8072
github.com/google/gnostic-models v0.7.0 h1:qwTtogB15McXDaNqTZdzPJRHvaVJlAl+HVQnLmJEJxo=
@@ -118,8 +110,6 @@ github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0
118110
github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw=
119111
github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0=
120112
github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
121-
github.com/meilisearch/meilisearch-go v0.36.0 h1:N1etykTektXt5KPcSbhBO0d5Xx5NaKj4pJWEM7WA5dI=
122-
github.com/meilisearch/meilisearch-go v0.36.0/go.mod h1:HBfHzKMxcSbTOvqdfuRA/yf6Vk9IivcwKocWRuW7W78=
123113
github.com/meilisearch/meilisearch-go v0.36.1 h1:mJTCJE5g7tRvaqKco6DfqOuJEjX+rRltDEnkEC02Y0M=
124114
github.com/meilisearch/meilisearch-go v0.36.1/go.mod h1:hWcR0MuWLSzHfbz9GGzIr3s9rnXLm1jqkmHkJPbUSvM=
125115
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
@@ -164,17 +154,10 @@ github.com/spf13/cobra v1.10.2/go.mod h1:7C1pvHqHw5A4vrJfjNwvOdzYu0Gml16OCs2GRiT
164154
github.com/spf13/pflag v1.0.9/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
165155
github.com/spf13/pflag v1.0.10 h1:4EBh2KAYBwaONj6b2Ye1GiHfwjqyROoF4RwYO+vPwFk=
166156
github.com/spf13/pflag v1.0.10/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
167-
github.com/stoewer/go-strcase v1.3.0 h1:g0eASXYtp+yvN9fK8sH94oCIk0fau9uV1/ZdJ0AVEzs=
168-
github.com/stoewer/go-strcase v1.3.0/go.mod h1:fAH5hQ5pehh+j3nZfvwdk2RgEgQjAoM8wodgtPmh1xo=
169157
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
170-
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
171-
github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
172158
github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY=
173159
github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA=
174160
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
175-
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
176-
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
177-
github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
178161
github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U=
179162
github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U=
180163
github.com/tmc/grpc-websocket-proxy v0.0.0-20220101234140-673ab2c3ae75 h1:6fotK7otjonDflCTK0BCfls4SPy3NcCVb5dqqmbRknE=
@@ -238,8 +221,6 @@ golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8U
238221
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
239222
golang.org/x/crypto v0.46.0 h1:cKRW/pmt1pKAfetfu+RCEvjvZkA9RimPbh7bhFjGVBU=
240223
golang.org/x/crypto v0.46.0/go.mod h1:Evb/oLKmMraqjZ2iQTwDwvCtJkczlDuTmdJXoZVzqU0=
241-
golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 h1:2dVuKD2vS7b0QIHQbpyTISPd0LeHDbnYEryqj5Q1ug8=
242-
golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56/go.mod h1:M4RDyNAINzryxdtnbRXRL/OHtkFuWGRjvuhBJpk2IlY=
243224
golang.org/x/exp v0.0.0-20240823005443-9b4947da3948 h1:kx6Ds3MlpiUHKj7syVnbp57++8WpuKPcR5yjLBjvLEA=
244225
golang.org/x/exp v0.0.0-20240823005443-9b4947da3948/go.mod h1:akd2r19cwCdwSwWeIdzYQGa/EZZyqcOdwWiwj5L5eKQ=
245226
golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
@@ -307,42 +288,28 @@ gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc=
307288
gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw=
308289
gopkg.in/natefinch/lumberjack.v2 v2.2.1 h1:bBRl1b0OH9s/DuPhuXpNl+VtCaJXFZ5/uEFST95x9zc=
309290
gopkg.in/natefinch/lumberjack.v2 v2.2.1/go.mod h1:YD8tP3GAjkrDg1eZH7EGmyESg/lsYskCTPBJVb9jqSc=
310-
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
311291
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
312292
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
313-
k8s.io/api v0.35.0 h1:iBAU5LTyBI9vw3L5glmat1njFK34srdLmktWwLTprlY=
314-
k8s.io/api v0.35.0/go.mod h1:AQ0SNTzm4ZAczM03QH42c7l3bih1TbAXYo0DkF8ktnA=
315-
k8s.io/api v0.35.1 h1:0PO/1FhlK/EQNVK5+txc4FuhQibV25VLSdLMmGpDE/Q=
316-
k8s.io/api v0.35.1/go.mod h1:28uR9xlXWml9eT0uaGo6y71xK86JBELShLy4wR1XtxM=
293+
k8s.io/api v0.35.2 h1:tW7mWc2RpxW7HS4CoRXhtYHSzme1PN1UjGHJ1bdrtdw=
294+
k8s.io/api v0.35.2/go.mod h1:7AJfqGoAZcwSFhOjcGM7WV05QxMMgUaChNfLTXDRE60=
317295
k8s.io/apiextensions-apiserver v0.35.0 h1:3xHk2rTOdWXXJM+RDQZJvdx0yEOgC0FgQ1PlJatA5T4=
318296
k8s.io/apiextensions-apiserver v0.35.0/go.mod h1:E1Ahk9SADaLQ4qtzYFkwUqusXTcaV2uw3l14aqpL2LU=
319-
k8s.io/apimachinery v0.35.0 h1:Z2L3IHvPVv/MJ7xRxHEtk6GoJElaAqDCCU0S6ncYok8=
320-
k8s.io/apimachinery v0.35.0/go.mod h1:jQCgFZFR1F4Ik7hvr2g84RTJSZegBc8yHgFWKn//hns=
321-
k8s.io/apimachinery v0.35.1 h1:yxO6gV555P1YV0SANtnTjXYfiivaTPvCTKX6w6qdDsU=
322-
k8s.io/apimachinery v0.35.1/go.mod h1:jQCgFZFR1F4Ik7hvr2g84RTJSZegBc8yHgFWKn//hns=
323-
k8s.io/apiserver v0.35.0 h1:CUGo5o+7hW9GcAEF3x3usT3fX4f9r8xmgQeCBDaOgX4=
324-
k8s.io/apiserver v0.35.0/go.mod h1:QUy1U4+PrzbJaM3XGu2tQ7U9A4udRRo5cyxkFX0GEds=
325-
k8s.io/apiserver v0.35.1 h1:potxdhhTL4i6AYAa2QCwtlhtB1eCdWQFvJV6fXgJzxs=
326-
k8s.io/apiserver v0.35.1/go.mod h1:BiL6Dd3A2I/0lBnteXfWmCFobHM39vt5+hJQd7Lbpi4=
327-
k8s.io/client-go v0.35.0 h1:IAW0ifFbfQQwQmga0UdoH0yvdqrbwMdq9vIFEhRpxBE=
328-
k8s.io/client-go v0.35.0/go.mod h1:q2E5AAyqcbeLGPdoRB+Nxe3KYTfPce1Dnu1myQdqz9o=
329-
k8s.io/client-go v0.35.1 h1:+eSfZHwuo/I19PaSxqumjqZ9l5XiTEKbIaJ+j1wLcLM=
330-
k8s.io/client-go v0.35.1/go.mod h1:1p1KxDt3a0ruRfc/pG4qT/3oHmUj1AhSHEcxNSGg+OA=
331-
k8s.io/code-generator v0.35.0 h1:TvrtfKYZTm9oDF2z+veFKSCcgZE3Igv0svY+ehCmjHQ=
332-
k8s.io/code-generator v0.35.0/go.mod h1:iS1gvVf3c/T71N5DOGYO+Gt3PdJ6B9LYSvIyQ4FHzgc=
333-
k8s.io/code-generator v0.35.1/go.mod h1:F2Fhm7aA69tC/VkMXLDokdovltXEF026Tb9yfQXQWKg=
334-
k8s.io/component-base v0.35.0 h1:+yBrOhzri2S1BVqyVSvcM3PtPyx5GUxCK2tinZz1G94=
335-
k8s.io/component-base v0.35.0/go.mod h1:85SCX4UCa6SCFt6p3IKAPej7jSnF3L8EbfSyMZayJR0=
336-
k8s.io/component-base v0.35.1 h1:XgvpRf4srp037QWfGBLFsYMUQJkE5yMa94UsJU7pmcE=
337-
k8s.io/component-base v0.35.1/go.mod h1:HI/6jXlwkiOL5zL9bqA3en1Ygv60F03oEpnuU1G56Bs=
297+
k8s.io/apimachinery v0.35.2 h1:NqsM/mmZA7sHW02JZ9RTtk3wInRgbVxL8MPfzSANAK8=
298+
k8s.io/apimachinery v0.35.2/go.mod h1:jQCgFZFR1F4Ik7hvr2g84RTJSZegBc8yHgFWKn//hns=
299+
k8s.io/apiserver v0.35.2 h1:rb52v0CZGEL0FkhjS+I6jHflAp7fZ4MIaKcEHX7wmDk=
300+
k8s.io/apiserver v0.35.2/go.mod h1:CROJUAu0tfjZLyYgSeBsBan2T7LUJGh0ucWwTCSSk7g=
301+
k8s.io/client-go v0.35.2 h1:YUfPefdGJA4aljDdayAXkc98DnPkIetMl4PrKX97W9o=
302+
k8s.io/client-go v0.35.2/go.mod h1:4QqEwh4oQpeK8AaefZ0jwTFJw/9kIjdQi0jpKeYvz7g=
303+
k8s.io/code-generator v0.35.2 h1:3874swbO2c26VWTf6lKD4NWGyHIfyBeTCk7caCG3TuU=
304+
k8s.io/code-generator v0.35.2/go.mod h1:id4XLCm0yAQq5nlvyfAKibMOKnMjzlesAwGw6kM3Adc=
305+
k8s.io/component-base v0.35.2 h1:btgR+qNrpWuRSuvWSnQYsZy88yf5gVwemvz0yw79pGc=
306+
k8s.io/component-base v0.35.2/go.mod h1:B1iBJjooe6xIJYUucAxb26RwhAjzx0gHnqO9htWIX+0=
338307
k8s.io/gengo/v2 v2.0.0-20250922181213-ec3ebc5fd46b h1:gMplByicHV/TJBizHd9aVEsTYoJBnnUAT5MHlTkbjhQ=
339308
k8s.io/gengo/v2 v2.0.0-20250922181213-ec3ebc5fd46b/go.mod h1:CgujABENc3KuTrcsdpGmrrASjtQsWCT7R99mEV4U/fM=
340309
k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk=
341310
k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE=
342-
k8s.io/kms v0.35.0 h1:/x87FED2kDSo66csKtcYCEHsxF/DBlNl7LfJ1fVQs1o=
343-
k8s.io/kms v0.35.0/go.mod h1:VT+4ekZAdrZDMgShK37vvlyHUVhwI9t/9tvh0AyCWmQ=
344-
k8s.io/kms v0.35.1 h1:kjv2r9g1mY7uL+l1RhyAZvWVZIA/4qIfBHXyjFGLRhU=
345-
k8s.io/kms v0.35.1/go.mod h1:VT+4ekZAdrZDMgShK37vvlyHUVhwI9t/9tvh0AyCWmQ=
311+
k8s.io/kms v0.35.2 h1:XPlj7QmLBfzm8gGQnc3+Y95hZLiJs3DjA0IyFOV5Z7g=
312+
k8s.io/kms v0.35.2/go.mod h1:VT+4ekZAdrZDMgShK37vvlyHUVhwI9t/9tvh0AyCWmQ=
346313
k8s.io/kube-openapi v0.0.0-20260127142750-a19766b6e2d4 h1:HhDfevmPS+OalTjQRKbTHppRIz01AWi8s45TMXStgYY=
347314
k8s.io/kube-openapi v0.0.0-20260127142750-a19766b6e2d4/go.mod h1:kdmbQkyfwUagLfXIad1y2TdrjPFWp2Q89B3qkRwf/pQ=
348315
k8s.io/utils v0.0.0-20251002143259-bc988d571ff4 h1:SjGebBtkBqHFOli+05xYbK8YF1Dzkbzn+gDM4X9T4Ck=

hack/update-codegen.sh

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
#!/usr/bin/env bash
2+
set -o errexit
3+
set -o nounset
4+
set -o pipefail
5+
6+
SCRIPT_ROOT=$(dirname "${BASH_SOURCE[0]}")/..
7+
MODULE_NAME="go.miloapis.net/search"
8+
9+
# Find code-generator
10+
CODEGEN_PKG=$(go list -m -f '{{.Dir}}' k8s.io/code-generator 2>/dev/null)
11+
12+
if [ -z "${CODEGEN_PKG}" ]; then
13+
echo "ERROR: k8s.io/code-generator not found in go.mod"
14+
echo "Run: go get k8s.io/code-generator"
15+
exit 1
16+
fi
17+
18+
echo "Using code-generator from: ${CODEGEN_PKG}"
19+
20+
# Source the code generation helper
21+
source "${CODEGEN_PKG}/kube_codegen.sh"
22+
23+
# Generate deepcopy
24+
echo "Generating deepcopy..."
25+
kube::codegen::gen_helpers \
26+
--boilerplate "${SCRIPT_ROOT}/hack/boilerplate.go.txt" \
27+
"${SCRIPT_ROOT}/pkg/apis"
28+
29+
# Generate OpenAPI definitions
30+
echo "Generating OpenAPI definitions..."
31+
go run k8s.io/kube-openapi/cmd/openapi-gen \
32+
--go-header-file "${SCRIPT_ROOT}/hack/boilerplate.go.txt" \
33+
--output-dir "${SCRIPT_ROOT}/pkg/generated/openapi" \
34+
--output-pkg "${MODULE_NAME}/pkg/generated/openapi" \
35+
--output-file zz_generated.openapi.go \
36+
--report-filename /dev/null \
37+
"${MODULE_NAME}/pkg/apis/search/v1alpha1" \
38+
"k8s.io/apimachinery/pkg/apis/meta/v1" \
39+
"k8s.io/apimachinery/pkg/api/resource" \
40+
"k8s.io/apimachinery/pkg/runtime" \
41+
"k8s.io/apimachinery/pkg/version"
42+
43+
echo ""
44+
echo "Code generation complete!"
45+
echo ""
46+
echo "Generated:"
47+
echo " - Deepcopy functions: pkg/apis/search/v1alpha1/zz_generated.deepcopy.go"
48+
echo " - OpenAPI: pkg/generated/openapi/"

pkg/apis/search/v1alpha1/policy_types.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import (
55
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
66
)
77

8+
// +k8s:openapi-gen=true
89
// +kubebuilder:object:root=true
910
// +kubebuilder:subresource:status
1011
// +kubebuilder:resource:scope=Cluster

pkg/apis/search/v1alpha1/types.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import (
66
"k8s.io/apimachinery/pkg/runtime"
77
)
88

9+
// +k8s:openapi-gen=true
910
// +genclient
1011
// +genclient:nonNamespaced
1112
// +genclient:onlyVerbs=create

0 commit comments

Comments
 (0)