Skip to content

Commit e8eda40

Browse files
authored
Merge pull request #10147 from sbueringer/pr-fix-apiversion-issue-with-fix
🐛 Restore v1alpha3/v1alpha4 conversion to fix SSA issue & add e2e test coverage
2 parents a1663fb + c5508cf commit e8eda40

File tree

201 files changed

+49028
-246
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

201 files changed

+49028
-246
lines changed

.golangci.yml

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ run:
77
skip-files:
88
- "zz_generated.*\\.go$"
99
- "vendored_openapi\\.go$"
10+
# We don't want to invest time to fix new linter findings in old API types.
11+
- "internal/apis/.*"
1012
allow-parallel-runners: true
1113

1214
linters:
@@ -115,18 +117,38 @@ linters-settings:
115117
- pkg: sigs.k8s.io/controller-runtime
116118
alias: ctrl
117119
# CABPK
120+
- pkg: sigs.k8s.io/cluster-api/internal/apis/bootstrap/kubeadm/v1alpha3
121+
alias: bootstrapv1alpha3
122+
- pkg: sigs.k8s.io/cluster-api/internal/apis/bootstrap/kubeadm/v1alpha4
123+
alias: bootstrapv1alpha4
118124
- pkg: sigs.k8s.io/cluster-api/bootstrap/kubeadm/api/v1beta1
119125
alias: bootstrapv1
120126
# KCP
127+
- pkg: sigs.k8s.io/cluster-api/internal/apis/controlplane/kubeadm/v1alpha3
128+
alias: controlplanev1alpha3
129+
- pkg: sigs.k8s.io/cluster-api/internal/apis/controlplane/kubeadm/v1alpha4
130+
alias: controlplanev1alpha4
121131
- pkg: sigs.k8s.io/cluster-api/controlplane/kubeadm/api/v1beta1
122132
alias: controlplanev1
123133
# CAPI
134+
- pkg: sigs.k8s.io/cluster-api/internal/apis/core/v1alpha3
135+
alias: clusterv1alpha3
136+
- pkg: sigs.k8s.io/cluster-api/internal/apis/core/v1alpha4
137+
alias: clusterv1alpha4
124138
- pkg: sigs.k8s.io/cluster-api/api/v1beta1
125139
alias: clusterv1
126140
# CAPI exp
141+
- pkg: sigs.k8s.io/cluster-api/internal/apis/core/exp/v1alpha3
142+
alias: expv1alpha3
143+
- pkg: sigs.k8s.io/cluster-api/internal/apis/core/exp/v1alpha4
144+
alias: expv1alpha4
127145
- pkg: sigs.k8s.io/cluster-api/exp/api/v1beta1
128146
alias: expv1
129147
# CAPI exp addons
148+
- pkg: sigs.k8s.io/cluster-api/internal/apis/core/exp/addons/v1alpha3
149+
alias: addonsv1alpha3
150+
- pkg: sigs.k8s.io/cluster-api/internal/apis/core/exp/addons/v1alpha4
151+
alias: addonsv1alpha4
130152
- pkg: sigs.k8s.io/cluster-api/exp/addons/api/v1beta1
131153
alias: addonsv1
132154
# CAPI exp IPAM
@@ -148,9 +170,17 @@ linters-settings:
148170
- pkg: sigs.k8s.io/cluster-api/internal/webhooks/runtime
149171
alias: runtimewebhooks
150172
# CAPD
173+
- pkg: sigs.k8s.io/cluster-api/test/infrastructure/docker/api/v1alpha3
174+
alias: infrav1alpha3
175+
- pkg: sigs.k8s.io/cluster-api/test/infrastructure/docker/api/v1alpha4
176+
alias: infrav1alpha4
151177
- pkg: sigs.k8s.io/cluster-api/test/infrastructure/docker/api/v1beta1
152178
alias: infrav1
153179
# CAPD exp
180+
- pkg: sigs.k8s.io/cluster-api/test/infrastructure/docker/exp/api/v1alpha3
181+
alias: infraexpv1alpha3
182+
- pkg: sigs.k8s.io/cluster-api/test/infrastructure/docker/exp/api/v1alpha4
183+
alias: infraexpv1alpha4
154184
- pkg: sigs.k8s.io/cluster-api/test/infrastructure/docker/exp/api/v1beta1
155185
alias: infraexpv1
156186
nolintlint:
@@ -210,6 +240,9 @@ issues:
210240
text: "SA1019: .* is deprecated: This package will be removed in one of the next releases."
211241
# Specific exclude rules for deprecated types that are still part of the codebase. These
212242
# should be removed as the referenced deprecated types are removed from the project.
243+
- linters:
244+
- staticcheck
245+
text: "SA1019: (clusterv1alpha3.*|clusterv1alpha4.*) is deprecated: This type will be removed in one of the next releases."
213246
- linters:
214247
- revive
215248
text: "exported: exported method .*\\.(Reconcile|SetupWithManager|SetupWebhookWithManager) should have comment or be unexported"

Makefile

Lines changed: 63 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -283,6 +283,7 @@ generate-manifests-core: $(CONTROLLER_GEN) $(KUSTOMIZE) ## Generate manifests e.
283283
$(CONTROLLER_GEN) \
284284
paths=./ \
285285
paths=./api/... \
286+
paths=./internal/apis/core/... \
286287
paths=./internal/controllers/... \
287288
paths=./internal/webhooks/... \
288289
paths=./$(EXP_DIR)/api/... \
@@ -314,6 +315,7 @@ generate-manifests-kubeadm-bootstrap: $(CONTROLLER_GEN) ## Generate manifests e.
314315
paths=./bootstrap/kubeadm/api/... \
315316
paths=./bootstrap/kubeadm/internal/controllers/... \
316317
paths=./bootstrap/kubeadm/internal/webhooks/... \
318+
paths=./internal/apis/bootstrap/kubeadm/... \
317319
crd:crdVersions=v1 \
318320
rbac:roleName=manager-role \
319321
output:crd:dir=./bootstrap/kubeadm/config/crd/bases \
@@ -329,6 +331,7 @@ generate-manifests-kubeadm-control-plane: $(CONTROLLER_GEN) ## Generate manifest
329331
paths=./controlplane/kubeadm/api/... \
330332
paths=./controlplane/kubeadm/internal/controllers/... \
331333
paths=./controlplane/kubeadm/internal/webhooks/... \
334+
paths=./internal/apis/controlplane/kubeadm/... \
332335
crd:crdVersions=v1 \
333336
rbac:roleName=manager-role \
334337
output:crd:dir=./controlplane/kubeadm/config/crd/bases \
@@ -441,15 +444,34 @@ generate-go-conversions-core: ## Run all generate-go-conversions-core-* targets
441444

442445
.PHONY: generate-go-conversions-core-api
443446
generate-go-conversions-core-api: $(CONVERSION_GEN) ## Generate conversions go code for core api
447+
$(MAKE) clean-generated-conversions SRC_DIRS="./internal/apis/core/v1alpha3,./internal/apis/core/v1alpha4"
448+
$(CONVERSION_GEN) \
449+
--input-dirs=./internal/apis/core/v1alpha3 \
450+
--input-dirs=./internal/apis/core/v1alpha4 \
451+
--build-tag=ignore_autogenerated_core \
452+
--output-file-base=zz_generated.conversion $(CONVERSION_GEN_OUTPUT_BASE) \
453+
--go-header-file=./hack/boilerplate/boilerplate.generatego.txt
444454

445455
.PHONY: generate-go-conversions-core-exp
446456
generate-go-conversions-core-exp: $(CONVERSION_GEN) ## Generate conversions go code for core exp
457+
$(MAKE) clean-generated-conversions SRC_DIRS="./internal/apis/core/exp/v1alpha3,./internal/apis/core/exp/addons/v1alpha3,./internal/apis/core/exp/v1alpha4,./internal/apis/core/exp/addons/v1alpha4"
458+
$(CONVERSION_GEN) \
459+
--input-dirs=./internal/apis/core/exp/v1alpha3 \
460+
--input-dirs=./internal/apis/core/exp/v1alpha4 \
461+
--input-dirs=./internal/apis/core/exp/addons/v1alpha3 \
462+
--input-dirs=./internal/apis/core/exp/addons/v1alpha4 \
463+
--build-tag=ignore_autogenerated_core_exp \
464+
--extra-peer-dirs=sigs.k8s.io/cluster-api/internal/apis/core/v1alpha3 \
465+
--extra-peer-dirs=sigs.k8s.io/cluster-api/internal/apis/core/v1alpha4 \
466+
--output-file-base=zz_generated.conversion $(CONVERSION_GEN_OUTPUT_BASE) \
467+
--go-header-file=./hack/boilerplate/boilerplate.generatego.txt
447468

448469
.PHONY: generate-go-conversions-core-exp-ipam
449470
generate-go-conversions-core-exp-ipam: $(CONVERSION_GEN) ## Generate conversions go code for core exp IPAM
450471
$(MAKE) clean-generated-conversions SRC_DIRS="./$(EXP_DIR)/ipam/api/v1alpha1"
451472
$(CONVERSION_GEN) \
452473
--input-dirs=./$(EXP_DIR)/ipam/api/v1alpha1 \
474+
--build-tag=ignore_autogenerated_core_exp_ipam \
453475
--output-file-base=zz_generated.conversion $(CONVERSION_GEN_OUTPUT_BASE) \
454476
--go-header-file=./hack/boilerplate/boilerplate.generatego.txt
455477

@@ -459,12 +481,21 @@ generate-go-conversions-core-runtime: $(CONVERSION_GEN) ## Generate conversions
459481
$(CONVERSION_GEN) \
460482
--input-dirs=./internal/runtime/test/v1alpha1 \
461483
--input-dirs=./internal/runtime/test/v1alpha2 \
462-
--build-tag=ignore_autogenerated_runtime \
484+
--build-tag=ignore_autogenerated_core_runtime \
463485
--output-file-base=zz_generated.conversion $(CONVERSION_GEN_OUTPUT_BASE) \
464486
--go-header-file=./hack/boilerplate/boilerplate.generatego.txt
465487

466488
.PHONY: generate-go-conversions-kubeadm-bootstrap
467489
generate-go-conversions-kubeadm-bootstrap: $(CONVERSION_GEN) ## Generate conversions go code for kubeadm bootstrap
490+
$(MAKE) clean-generated-conversions SRC_DIRS="./internal/apis/bootstrap/kubeadm"
491+
$(CONVERSION_GEN) \
492+
--input-dirs=./internal/apis/bootstrap/kubeadm/v1alpha3 \
493+
--input-dirs=./internal/apis/bootstrap/kubeadm/v1alpha4 \
494+
--build-tag=ignore_autogenerated_kubeadm_bootstrap \
495+
--extra-peer-dirs=sigs.k8s.io/cluster-api/internal/apis/core/v1alpha3 \
496+
--extra-peer-dirs=sigs.k8s.io/cluster-api/internal/apis/core/v1alpha4 \
497+
--output-file-base=zz_generated.conversion $(CONVERSION_GEN_OUTPUT_BASE) \
498+
--go-header-file=./hack/boilerplate/boilerplate.generatego.txt
468499
$(MAKE) clean-generated-conversions SRC_DIRS="./bootstrap/kubeadm/types/upstreamv1beta2,./bootstrap/kubeadm/types/upstreamv1beta3"
469500
$(CONVERSION_GEN) \
470501
--input-dirs=./bootstrap/kubeadm/types/upstreamv1beta2 \
@@ -475,12 +506,34 @@ generate-go-conversions-kubeadm-bootstrap: $(CONVERSION_GEN) ## Generate convers
475506

476507
.PHONY: generate-go-conversions-kubeadm-control-plane
477508
generate-go-conversions-kubeadm-control-plane: $(CONVERSION_GEN) ## Generate conversions go code for kubeadm control plane
509+
$(MAKE) clean-generated-conversions SRC_DIRS="./internal/apis/controlplane/kubeadm"
510+
$(CONVERSION_GEN) \
511+
--input-dirs=./internal/apis/controlplane/kubeadm/v1alpha3 \
512+
--input-dirs=./internal/apis/controlplane/kubeadm/v1alpha4 \
513+
--build-tag=ignore_autogenerated_kubeadm_controlplane \
514+
--extra-peer-dirs=sigs.k8s.io/cluster-api/internal/apis/core/v1alpha3 \
515+
--extra-peer-dirs=sigs.k8s.io/cluster-api/internal/apis/core/v1alpha4 \
516+
--extra-peer-dirs=sigs.k8s.io/cluster-api/internal/apis/bootstrap/kubeadm/v1alpha3 \
517+
--extra-peer-dirs=sigs.k8s.io/cluster-api/internal/apis/bootstrap/kubeadm/v1alpha4 \
518+
--output-file-base=zz_generated.conversion $(CONVERSION_GEN_OUTPUT_BASE) \
519+
--go-header-file=./hack/boilerplate/boilerplate.generatego.txt
478520

479521
.PHONY: generate-go-conversions-docker-infrastructure
480522
generate-go-conversions-docker-infrastructure: $(CONVERSION_GEN) ## Generate conversions go code for docker infrastructure provider
523+
cd $(CAPD_DIR); $(CONVERSION_GEN) \
524+
--input-dirs=./api/v1alpha3 \
525+
--input-dirs=./api/v1alpha4 \
526+
--input-dirs=./$(EXP_DIR)/api/v1alpha3 \
527+
--input-dirs=./$(EXP_DIR)/api/v1alpha4 \
528+
--build-tag=ignore_autogenerated_capd \
529+
--extra-peer-dirs=sigs.k8s.io/cluster-api/internal/apis/core/v1alpha3 \
530+
--extra-peer-dirs=sigs.k8s.io/cluster-api/internal/apis/core/v1alpha4 \
531+
--output-file-base=zz_generated.conversion $(CONVERSION_GEN_OUTPUT_BASE_CAPD) \
532+
--go-header-file=../../../hack/boilerplate/boilerplate.generatego.txt
481533

482534
.PHONY: generate-go-conversions-in-memory-infrastructure
483535
generate-go-conversions-in-memory-infrastructure: $(CONVERSION_GEN) ## Generate conversions go code for in-memory infrastructure provider
536+
cd $(CAPIM_DIR)
484537

485538
.PHONY: generate-go-conversions-test-extension
486539
generate-go-conversions-test-extension: $(CONVERSION_GEN) ## Generate conversions go code for in-memory infrastructure provider
@@ -511,11 +564,19 @@ generate-doctoc:
511564
TRACE=$(TRACE) ./hack/generate-doctoc.sh
512565

513566
.PHONY: generate-e2e-templates
514-
generate-e2e-templates: $(KUSTOMIZE) $(addprefix generate-e2e-templates-, v1.0 v1.5 v1.6 main) ## Generate cluster templates for all versions
567+
generate-e2e-templates: $(KUSTOMIZE) $(addprefix generate-e2e-templates-, v0.3 v0.4 v1.0 v1.5 v1.6 main) ## Generate cluster templates for all versions
515568

516569
DOCKER_TEMPLATES := test/e2e/data/infrastructure-docker
517570
INMEMORY_TEMPLATES := test/e2e/data/infrastructure-inmemory
518571

572+
.PHONY: generate-e2e-templates-v0.3
573+
generate-e2e-templates-v0.3: $(KUSTOMIZE)
574+
$(KUSTOMIZE) build $(DOCKER_TEMPLATES)/v0.3/cluster-template --load-restrictor LoadRestrictionsNone > $(DOCKER_TEMPLATES)/v0.3/cluster-template.yaml
575+
576+
.PHONY: generate-e2e-templates-v0.4
577+
generate-e2e-templates-v0.4: $(KUSTOMIZE)
578+
$(KUSTOMIZE) build $(DOCKER_TEMPLATES)/v0.4/cluster-template --load-restrictor LoadRestrictionsNone > $(DOCKER_TEMPLATES)/v0.4/cluster-template.yaml
579+
519580
.PHONY: generate-e2e-templates-v1.0
520581
generate-e2e-templates-v1.0: $(KUSTOMIZE)
521582
$(KUSTOMIZE) build $(DOCKER_TEMPLATES)/v1.0/cluster-template --load-restrictor LoadRestrictionsNone > $(DOCKER_TEMPLATES)/v1.0/cluster-template.yaml

0 commit comments

Comments
 (0)