Skip to content

Commit 56364aa

Browse files
committed
Refactor generate-codegen
This commit changes how to 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 (as seen currently on release-0.12). Signed-off-by: Lennart Jern <[email protected]>
1 parent c8837ac commit 56364aa

File tree

3 files changed

+83
-79
lines changed

3 files changed

+83
-79
lines changed

Makefile

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

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

311372
.PHONY: generate-manifests
312373
generate-manifests: $(CONTROLLER_GEN) ## Generate manifests e.g. CRD, RBAC etc.

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/update-codegen.sh

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

0 commit comments

Comments
 (0)