@@ -27,7 +27,7 @@ unexport GOPATH
2727TRACE ?= 0
2828
2929# Go
30- GO_VERSION ?= 1.24.4
30+ GO_VERSION ?= 1.24.9
3131
3232# Directories.
3333ARTIFACTS ?= $(REPO_ROOT ) /_artifacts
@@ -68,6 +68,11 @@ GOLANGCI_LINT := $(TOOLS_BIN_DIR)/golangci-lint
6868GOTESTSUM := $(TOOLS_BIN_DIR ) /gotestsum
6969KUSTOMIZE := $(TOOLS_BIN_DIR ) /kustomize
7070MOCKGEN := $(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
7176RELEASE_NOTES := $(TOOLS_BIN_DIR ) /release-notes
7277SETUP_ENVTEST := $(TOOLS_BIN_DIR ) /setup-envtest
7378GEN_CRD_API_REFERENCE_DOCS := $(TOOLS_BIN_DIR ) /gen-crd-api-reference-docs
@@ -184,10 +189,12 @@ e2e-templates: $(addprefix $(E2E_NO_ARTIFACT_TEMPLATES_DIR)/, \
184189 cluster-template-without-lb.yaml \
185190 cluster-template.yaml \
186191 cluster-template-flatcar.yaml \
187- cluster-template-k8s-upgrade.yaml \
192+ cluster-template-k8s-upgrade.yaml \
188193 cluster-template-flatcar-sysext.yaml \
189194 cluster-template-no-bastion.yaml \
190- cluster-template-health-monitor.yaml)
195+ cluster-template-health-monitor.yaml \
196+ cluster-template-capi-v1beta1.yaml \
197+ cluster-template-cluster-identity.yaml)
191198# Currently no templates that require CI artifacts
192199# $(addprefix $(E2E_TEMPLATES_DIR)/, add-templates-here.yaml) \
193200
@@ -304,8 +311,64 @@ generate-controller-gen: $(CONTROLLER_GEN)
304311 object:headerFile=./hack/boilerplate/boilerplate.generatego.txt
305312
306313.PHONY : generate-codegen
307- generate-codegen : generate-controller-gen
308- ./hack/update-codegen.sh
314+ generate-codegen : generate-controller-gen $(OPENAPI_GEN ) $(APPLYCONFIGURATION_GEN ) $(CLIENT_GEN ) $(LISTER_GEN ) $(INFORMER_GEN )
315+ @echo " ** Generating OpenAPI definitions **"
316+ # The package list includes:
317+ # - CAPO's own API packages (v1alpha1, v1beta1) that have // +k8s:openapi-gen= markers
318+ # - Dependency packages from CAPI and k8s.io that are referenced by CAPO's APIs
319+ # - Base k8s.io/apimachinery packages
320+ $(OPENAPI_GEN ) \
321+ --go-header-file=./hack/boilerplate.go.txt \
322+ --output-file=zz_generated.openapi.go \
323+ --output-dir=./cmd/models-schema \
324+ --output-pkg=main \
325+ --report-filename=./api_violations.report \
326+ sigs.k8s.io/cluster-api-provider-openstack/api/v1alpha1 \
327+ sigs.k8s.io/cluster-api-provider-openstack/api/v1beta1 \
328+ sigs.k8s.io/cluster-api/api/core/v1beta2 \
329+ sigs.k8s.io/cluster-api/api/ipam/v1beta2 \
330+ sigs.k8s.io/cluster-api/api/core/v1beta1 \
331+ sigs.k8s.io/cluster-api/api/ipam/v1beta1 \
332+ k8s.io/api/core/v1 \
333+ k8s.io/apimachinery/pkg/apis/meta/v1 \
334+ k8s.io/apimachinery/pkg/runtime \
335+ k8s.io/apimachinery/pkg/version
336+ @echo " ** Generating openapi.json **"
337+ go run ./cmd/models-schema | jq > ./openapi.json
338+ @echo " ** Generating applyconfiguration code **"
339+ $(APPLYCONFIGURATION_GEN ) \
340+ --go-header-file=./hack/boilerplate.go.txt \
341+ --output-dir=./pkg/generated/applyconfiguration \
342+ --output-pkg=sigs.k8s.io/cluster-api-provider-openstack/pkg/generated/applyconfiguration \
343+ --openapi-schema=./openapi.json \
344+ sigs.k8s.io/cluster-api-provider-openstack/api/v1alpha1 \
345+ sigs.k8s.io/cluster-api-provider-openstack/api/v1beta1
346+ @echo " ** Generating clientset code **"
347+ $(CLIENT_GEN ) \
348+ --go-header-file=./hack/boilerplate.go.txt \
349+ --output-dir=./pkg/generated/clientset \
350+ --output-pkg=sigs.k8s.io/cluster-api-provider-openstack/pkg/generated/clientset \
351+ --clientset-name=clientset \
352+ --input-base=sigs.k8s.io/cluster-api-provider-openstack \
353+ --apply-configuration-package=sigs.k8s.io/cluster-api-provider-openstack/pkg/generated/applyconfiguration \
354+ --input=api/v1alpha1 \
355+ --input=api/v1beta1
356+ @echo " ** Generating lister code **"
357+ $(LISTER_GEN ) \
358+ --go-header-file=./hack/boilerplate.go.txt \
359+ --output-dir=./pkg/generated/listers \
360+ --output-pkg=sigs.k8s.io/cluster-api-provider-openstack/pkg/generated/listers \
361+ sigs.k8s.io/cluster-api-provider-openstack/api/v1alpha1 \
362+ sigs.k8s.io/cluster-api-provider-openstack/api/v1beta1
363+ @echo " ** Generating informer code **"
364+ $(INFORMER_GEN ) \
365+ --go-header-file=./hack/boilerplate.go.txt \
366+ --output-dir=./pkg/generated/informers \
367+ --output-pkg=sigs.k8s.io/cluster-api-provider-openstack/pkg/generated/informers \
368+ --versioned-clientset-package=sigs.k8s.io/cluster-api-provider-openstack/pkg/generated/clientset/clientset \
369+ --listers-package=sigs.k8s.io/cluster-api-provider-openstack/pkg/generated/listers \
370+ sigs.k8s.io/cluster-api-provider-openstack/api/v1alpha1 \
371+ sigs.k8s.io/cluster-api-provider-openstack/api/v1beta1
309372
310373.PHONY : generate-manifests
311374generate-manifests : $(CONTROLLER_GEN ) # # Generate manifests e.g. CRD, RBAC etc.
@@ -339,7 +402,16 @@ generate-api-docs-%: $(GEN_CRD_API_REFERENCE_DOCS) FORCE
339402
340403.PHONY : docker-build
341404docker-build : # # Build the docker image for controller-manager
342- docker build -f Dockerfile --build-arg GO_VERSION=$(GO_VERSION ) --build-arg goproxy=$(GOPROXY ) --build-arg ARCH=$(ARCH ) --build-arg ldflags=" $( LDFLAGS) " . -t $(CONTROLLER_IMG_TAG )
405+ docker build -f Dockerfile --build-arg GO_VERSION=$(GO_VERSION ) \
406+ --build-arg goproxy=$(GOPROXY ) \
407+ --build-arg ARCH=$(ARCH ) . -t $(CONTROLLER_IMG_TAG )
408+
409+ .PHONY : docker-build-debug
410+ docker-build-debug : # # Build the docker image for controller-manager with debug info
411+ docker build -f Dockerfile --build-arg GO_VERSION=$(GO_VERSION ) \
412+ --build-arg goproxy=$(GOPROXY ) \
413+ --build-arg ARCH=$(ARCH ) \
414+ --build-arg ldflags=" -extldflags=-static" . -t $(CONTROLLER_IMG_TAG )
343415
344416.PHONY : docker-push
345417docker-push : # # Push the docker image
@@ -477,14 +549,17 @@ generate-release-notes: $(RELEASE_NOTES_DIR) $(RELEASE_NOTES)
477549 if [ -n " ${PRE_RELEASE} " ]; then \
478550 echo -e " :rotating_light: This is a RELEASE CANDIDATE. Use it only for testing purposes. If you find any bugs, file an [issue](https://github.com/kubernetes-sigs/cluster-api-provider-openstack/issues/new/choose).\n" >> $(RELEASE_NOTES_DIR ) /$(RELEASE_TAG ) .md; \
479551 fi
480- " $( RELEASE_NOTES) " --from=$(PREVIOUS_TAG ) >> $(RELEASE_NOTES_DIR ) /$(RELEASE_TAG ) .md
552+ " $( RELEASE_NOTES) " --repository=kubernetes-sigs/cluster-api-provider-openstack \
553+ --prefix-area-label=false --add-kubernetes-version-support=false \
554+ --from=$(PREVIOUS_TAG ) --release=$(RELEASE_TAG ) >> $(RELEASE_NOTES_DIR ) /$(RELEASE_TAG ) .md
481555
482556.PHONY : templates
483557templates : # # Generate cluster templates
484558templates : templates/cluster-template.yaml \
485559 templates/cluster-template-without-lb.yaml \
486560 templates/cluster-template-flatcar.yaml \
487- templates/cluster-template-flatcar-sysext.yaml
561+ templates/cluster-template-flatcar-sysext.yaml \
562+ templates/cluster-template-capi-v1beta1.yaml
488563
489564templates/cluster-template.yaml : kustomize/v1beta1/default $(KUSTOMIZE ) FORCE
490565 $(KUSTOMIZE ) build " $<" > " $@ "
0 commit comments