Skip to content

Commit 1c7236b

Browse files
committed
Refactor generate-codegen
This is a manual backport. This commit changes how we run and build codegen. Instead of using a script inside the openapi-gen package, we now build and call the binary directly. This avoids issues where the upstream package is incompatible with the go version we use. The gengo/v2 replace was needed previously due to breaking changes, but k8s.io/code-generator v0.31.12 includes the fix and works with newer gengo. Minor changes to generated code: - api_violations.report: One additional violation detected by newer gengo - zz_generated.openapi.go: Backslash escaping difference (cosmetic) Signed-off-by: Lennart Jern <[email protected]>
1 parent 0556957 commit 1c7236b

File tree

7 files changed

+89
-83
lines changed

7 files changed

+89
-83
lines changed

Makefile

Lines changed: 65 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,11 @@ GOLANGCI_LINT := $(TOOLS_BIN_DIR)/golangci-lint
6969
GOTESTSUM := $(TOOLS_BIN_DIR)/gotestsum
7070
KUSTOMIZE := $(TOOLS_BIN_DIR)/kustomize
7171
MOCKGEN := $(TOOLS_BIN_DIR)/mockgen
72+
OPENAPI_GEN := $(TOOLS_BIN_DIR)/openapi-gen
73+
APPLYCONFIGURATION_GEN := $(TOOLS_BIN_DIR)/applyconfiguration-gen
74+
CLIENT_GEN := $(TOOLS_BIN_DIR)/client-gen
75+
LISTER_GEN := $(TOOLS_BIN_DIR)/lister-gen
76+
INFORMER_GEN := $(TOOLS_BIN_DIR)/informer-gen
7277
RELEASE_NOTES := $(TOOLS_BIN_DIR)/release-notes
7378
SETUP_ENVTEST := $(TOOLS_BIN_DIR)/setup-envtest
7479
GEN_CRD_API_REFERENCE_DOCS := $(TOOLS_BIN_DIR)/gen-crd-api-reference-docs
@@ -304,8 +309,66 @@ generate-controller-gen: $(CONTROLLER_GEN)
304309
object:headerFile=./hack/boilerplate/boilerplate.generatego.txt
305310

306311
.PHONY: generate-codegen
307-
generate-codegen: generate-controller-gen
308-
./hack/update-codegen.sh
312+
generate-codegen: generate-controller-gen $(OPENAPI_GEN) $(APPLYCONFIGURATION_GEN) $(CLIENT_GEN) $(LISTER_GEN) $(INFORMER_GEN)
313+
@echo "** Generating OpenAPI definitions **"
314+
# The package list includes:
315+
# - CAPO's own API packages (v1alpha1, v1alpha7, v1beta1) that have // +k8s:openapi-gen= markers
316+
# - Dependency packages from CAPI and k8s.io that are referenced by CAPO's APIs
317+
# - Base k8s.io/apimachinery packages
318+
$(OPENAPI_GEN) \
319+
--go-header-file=./hack/boilerplate.go.txt \
320+
--output-file=zz_generated.openapi.go \
321+
--output-dir=./cmd/models-schema \
322+
--output-pkg=main \
323+
--report-filename=./api_violations.report \
324+
sigs.k8s.io/cluster-api-provider-openstack/api/v1alpha1 \
325+
sigs.k8s.io/cluster-api-provider-openstack/api/v1alpha7 \
326+
sigs.k8s.io/cluster-api-provider-openstack/api/v1beta1 \
327+
sigs.k8s.io/cluster-api/api/v1beta1 \
328+
k8s.io/api/core/v1 \
329+
k8s.io/apimachinery/pkg/apis/meta/v1 \
330+
k8s.io/apimachinery/pkg/runtime \
331+
k8s.io/apimachinery/pkg/version
332+
@echo "** Generating openapi.json **"
333+
go run ./cmd/models-schema | jq > ./openapi.json
334+
@echo "** Generating applyconfiguration code **"
335+
$(APPLYCONFIGURATION_GEN) \
336+
--go-header-file=./hack/boilerplate.go.txt \
337+
--output-dir=./pkg/generated/applyconfiguration \
338+
--output-pkg=sigs.k8s.io/cluster-api-provider-openstack/pkg/generated/applyconfiguration \
339+
--openapi-schema=./openapi.json \
340+
sigs.k8s.io/cluster-api-provider-openstack/api/v1alpha1 \
341+
sigs.k8s.io/cluster-api-provider-openstack/api/v1alpha7 \
342+
sigs.k8s.io/cluster-api-provider-openstack/api/v1beta1
343+
@echo "** Generating clientset code **"
344+
$(CLIENT_GEN) \
345+
--go-header-file=./hack/boilerplate.go.txt \
346+
--output-dir=./pkg/generated/clientset \
347+
--output-pkg=sigs.k8s.io/cluster-api-provider-openstack/pkg/generated/clientset \
348+
--clientset-name=clientset \
349+
--input-base=sigs.k8s.io/cluster-api-provider-openstack \
350+
--apply-configuration-package=sigs.k8s.io/cluster-api-provider-openstack/pkg/generated/applyconfiguration \
351+
--input=api/v1alpha1 \
352+
--input=api/v1alpha7 \
353+
--input=api/v1beta1
354+
@echo "** Generating lister code **"
355+
$(LISTER_GEN) \
356+
--go-header-file=./hack/boilerplate.go.txt \
357+
--output-dir=./pkg/generated/listers \
358+
--output-pkg=sigs.k8s.io/cluster-api-provider-openstack/pkg/generated/listers \
359+
sigs.k8s.io/cluster-api-provider-openstack/api/v1alpha1 \
360+
sigs.k8s.io/cluster-api-provider-openstack/api/v1alpha7 \
361+
sigs.k8s.io/cluster-api-provider-openstack/api/v1beta1
362+
@echo "** Generating informer code **"
363+
$(INFORMER_GEN) \
364+
--go-header-file=./hack/boilerplate.go.txt \
365+
--output-dir=./pkg/generated/informers \
366+
--output-pkg=sigs.k8s.io/cluster-api-provider-openstack/pkg/generated/informers \
367+
--versioned-clientset-package=sigs.k8s.io/cluster-api-provider-openstack/pkg/generated/clientset/clientset \
368+
--listers-package=sigs.k8s.io/cluster-api-provider-openstack/pkg/generated/listers \
369+
sigs.k8s.io/cluster-api-provider-openstack/api/v1alpha1 \
370+
sigs.k8s.io/cluster-api-provider-openstack/api/v1alpha7 \
371+
sigs.k8s.io/cluster-api-provider-openstack/api/v1beta1
309372

310373
.PHONY: generate-conversion-gen
311374
generate-conversion-gen: $(CONVERSION_GEN)

api_violations.report

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,3 +122,4 @@ API rule violation: names_match,sigs.k8s.io/cluster-api/api/v1beta1,MachineDeplo
122122
API rule violation: names_match,sigs.k8s.io/cluster-api/api/v1beta1,MachineHealthCheckStatus,V1Beta2
123123
API rule violation: names_match,sigs.k8s.io/cluster-api/api/v1beta1,MachineSetStatus,V1Beta2
124124
API rule violation: names_match,sigs.k8s.io/cluster-api/api/v1beta1,MachineStatus,V1Beta2
125+
API rule violation: names_match,sigs.k8s.io/cluster-api/api/v1beta1,MachineTemplateSpec,ObjectMeta

cmd/models-schema/zz_generated.openapi.go

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

hack/tools/Makefile

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,26 @@ CONVERSION_GEN := $(BIN_DIR)/conversion-gen
7171
$(CONVERSION_GEN): go.mod go.sum | $(BIN_DIR)
7272
go build -tags=tools -o $@ k8s.io/code-generator/cmd/conversion-gen
7373

74+
OPENAPI_GEN := $(BIN_DIR)/openapi-gen
75+
$(OPENAPI_GEN): go.mod go.sum | $(BIN_DIR)
76+
go build -tags=tools -o $@ k8s.io/kube-openapi/cmd/openapi-gen
77+
78+
APPLYCONFIGURATION_GEN := $(BIN_DIR)/applyconfiguration-gen
79+
$(APPLYCONFIGURATION_GEN): go.mod go.sum | $(BIN_DIR)
80+
go build -tags=tools -o $@ k8s.io/code-generator/cmd/applyconfiguration-gen
81+
82+
CLIENT_GEN := $(BIN_DIR)/client-gen
83+
$(CLIENT_GEN): go.mod go.sum | $(BIN_DIR)
84+
go build -tags=tools -o $@ k8s.io/code-generator/cmd/client-gen
85+
86+
LISTER_GEN := $(BIN_DIR)/lister-gen
87+
$(LISTER_GEN): go.mod go.sum | $(BIN_DIR)
88+
go build -tags=tools -o $@ k8s.io/code-generator/cmd/lister-gen
89+
90+
INFORMER_GEN := $(BIN_DIR)/informer-gen
91+
$(INFORMER_GEN): go.mod go.sum | $(BIN_DIR)
92+
go build -tags=tools -o $@ k8s.io/code-generator/cmd/informer-gen
93+
7494
ENVSUBST := $(BIN_DIR)/envsubst
7595
$(ENVSUBST): go.mod go.sum | $(BIN_DIR) # Build envsubst from tools folder.
7696
go build -tags=tools -o $@ github.com/a8m/envsubst/cmd/envsubst

hack/tools/go.mod

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,3 @@ require (
147147
)
148148

149149
replace sigs.k8s.io/cluster-api-provider-openstack => ../..
150-
151-
// Remove it once we have a new version of code-generator that is compatible with latest gengo.
152-
// See https://github.com/kubernetes/gengo/issues/286
153-
replace k8s.io/gengo/v2 => k8s.io/gengo/v2 v2.0.0-20240228010128-51d4e06bde70

hack/tools/go.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -462,8 +462,8 @@ k8s.io/component-base v0.31.12 h1:Z7SYHg782bY1NLGezTJYRZGPeywWVtFpE35iOEam//4=
462462
k8s.io/component-base v0.31.12/go.mod h1:r6wrhZ7BrjAUhGZttUT6MNJdn0McPWF5RPz/xcQY3xI=
463463
k8s.io/gengo v0.0.0-20201203183100-97869a43a9d9 h1:1bLA4Agvs1DILmc+q2Bbcqjx6jOHO7YEFA+G+0aTZoc=
464464
k8s.io/gengo v0.0.0-20201203183100-97869a43a9d9/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E=
465-
k8s.io/gengo/v2 v2.0.0-20240228010128-51d4e06bde70 h1:NGrVE502P0s0/1hudf8zjgwki1X/TByhmAoILTarmzo=
466-
k8s.io/gengo/v2 v2.0.0-20240228010128-51d4e06bde70/go.mod h1:VH3AT8AaQOqiGjMF9p0/IM1Dj+82ZwjfxUP1IxaHE+8=
465+
k8s.io/gengo/v2 v2.0.0-20240826214909-a7b603a56eb7 h1:cErOOTkQ3JW19o4lo91fFurouhP8NcoBvb7CkvhZZpk=
466+
k8s.io/gengo/v2 v2.0.0-20240826214909-a7b603a56eb7/go.mod h1:EJykeLsmFC60UQbYJezXkEsG2FLrt0GPNkU5iK5GWxU=
467467
k8s.io/klog v0.2.0 h1:0ElL0OHzF3N+OhoJTL0uca20SxtYt4X4+bzHeqrB83c=
468468
k8s.io/klog v0.2.0/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk=
469469
k8s.io/klog/v2 v2.2.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y=

hack/update-codegen.sh

Lines changed: 0 additions & 74 deletions
This file was deleted.

0 commit comments

Comments
 (0)