Skip to content

Commit 145ae15

Browse files
authored
[Maintenance] Generate CRD with Schemas (#1875)
1 parent a83ece3 commit 145ae15

11 files changed

+303367
-539
lines changed

CHANGELOG.md

+1
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
- (Feature) Backup Retry Until and BackupPolicy Until Propagation feature
1616
- (Bugfix) Improve Profile Tolerations Merge
1717
- (Maintenance) Update Envoy to v1.32.5
18+
- (Maintenance) Generate CRD with Schemas
1819

1920
## [1.2.47](https://github.com/arangodb/kube-arangodb/tree/1.2.47) (2025-03-28)
2021
- (Bugfix) Use Profile Annotations

Makefile

+37-5
Original file line numberDiff line numberDiff line change
@@ -163,6 +163,8 @@ endif
163163

164164
ifeq ($(RELEASE_MODE),community)
165165
MANIFESTPATHCRD := manifests/arango-crd$(MANIFESTSUFFIX).yaml
166+
MANIFESTPATHCRDBASIC := manifests/arango-crd-basic$(MANIFESTSUFFIX).yaml
167+
MANIFESTPATHCRDALL := manifests/arango-crd-all$(MANIFESTSUFFIX).yaml
166168
MANIFESTPATHDEPLOYMENT := manifests/arango-deployment$(MANIFESTSUFFIX).yaml
167169
MANIFESTPATHDEPLOYMENTREPLICATION := manifests/arango-deployment-replication$(MANIFESTSUFFIX).yaml
168170
MANIFESTPATHBACKUP := manifests/arango-backup$(MANIFESTSUFFIX).yaml
@@ -172,6 +174,8 @@ MANIFESTPATHK2KCLUSTERSYNC := manifests/arango-k2kclustersync$(MANIFESTSUFFIX).y
172174
MANIFESTPATHSTORAGE := manifests/arango-storage$(MANIFESTSUFFIX).yaml
173175
MANIFESTPATHALL := manifests/arango-all$(MANIFESTSUFFIX).yaml
174176
KUSTOMIZEPATHCRD := manifests/kustomize/crd/arango-crd$(MANIFESTSUFFIX).yaml
177+
KUSTOMIZEPATHCRDBASIC := manifests/kustomize/crd/arango-crd-basic$(MANIFESTSUFFIX).yaml
178+
KUSTOMIZEPATHCRDALL := manifests/kustomize/crd/arango-crd-all$(MANIFESTSUFFIX).yaml
175179
KUSTOMIZEPATHDEPLOYMENT := manifests/kustomize/deployment/arango-deployment$(MANIFESTSUFFIX).yaml
176180
KUSTOMIZEPATHDEPLOYMENTREPLICATION := manifests/kustomize/deployment-replication/arango-deployment-replication$(MANIFESTSUFFIX).yaml
177181
KUSTOMIZEPATHBACKUP := manifests/kustomize/backup/arango-backup$(MANIFESTSUFFIX).yaml
@@ -182,6 +186,8 @@ KUSTOMIZEPATHSTORAGE := manifests/kustomize/storage/arango-storage$(MANIFESTSUFF
182186
KUSTOMIZEPATHALL := manifests/kustomize/all/arango-all$(MANIFESTSUFFIX).yaml
183187
else
184188
MANIFESTPATHCRD := manifests/enterprise-crd$(MANIFESTSUFFIX).yaml
189+
MANIFESTPATHCRDBASIC := manifests/enterprise-crd-basic$(MANIFESTSUFFIX).yaml
190+
MANIFESTPATHCRDALL := manifests/enterprise-crd-all$(MANIFESTSUFFIX).yaml
185191
MANIFESTPATHDEPLOYMENT := manifests/enterprise-deployment$(MANIFESTSUFFIX).yaml
186192
MANIFESTPATHDEPLOYMENTREPLICATION := manifests/enterprise-deployment-replication$(MANIFESTSUFFIX).yaml
187193
MANIFESTPATHBACKUP := manifests/enterprise-backup$(MANIFESTSUFFIX).yaml
@@ -191,6 +197,8 @@ MANIFESTPATHK2KCLUSTERSYNC := manifests/enterprise-k2kclustersync$(MANIFESTSUFFI
191197
MANIFESTPATHSTORAGE := manifests/enterprise-storage$(MANIFESTSUFFIX).yaml
192198
MANIFESTPATHALL := manifests/enterprise-all$(MANIFESTSUFFIX).yaml
193199
KUSTOMIZEPATHCRD := manifests/kustomize-enterprise/crd/enterprise-crd$(MANIFESTSUFFIX).yaml
200+
KUSTOMIZEPATHCRDBASIC := manifests/kustomize-enterprise/crd/enterprise-crd-basic$(MANIFESTSUFFIX).yaml
201+
KUSTOMIZEPATHCRDALL := manifests/kustomize-enterprise/crd/enterprise-crd-all$(MANIFESTSUFFIX).yaml
194202
KUSTOMIZEPATHDEPLOYMENT := manifests/kustomize-enterprise/deployment/enterprise-deployment$(MANIFESTSUFFIX).yaml
195203
KUSTOMIZEPATHDEPLOYMENTREPLICATION := manifests/kustomize-enterprise/deployment-replication/enterprise-deployment-replication$(MANIFESTSUFFIX).yaml
196204
KUSTOMIZEPATHBACKUP := manifests/kustomize-enterprise/backup/enterprise-backup$(MANIFESTSUFFIX).yaml
@@ -524,16 +532,40 @@ manifests:
524532
.PHONY: manifests-crd-file
525533
manifests-crd-file:
526534
@echo Building manifests for CRD - $(MANIFESTPATHCRD)
527-
@printf "" > $(MANIFESTPATHCRD)
528-
@$(foreach FILE,$(CRDS),printf '%s\n# File: chart/kube-arangodb/crds/%s.yaml\n' '---' $(FILE) >> $(MANIFESTPATHCRD) && \
529-
cat '$(ROOT)/chart/kube-arangodb/crds/$(FILE).yaml' >> $(MANIFESTPATHCRD);)
530-
manifests: manifests-crd-file
535+
@go run ${GOBUILDARGS} --tags "$(GOBUILDTAGS)" '$(ROOT)/cmd/main-ops/' crd generate --crd.validation-schema 'all=false' --crd.skip arangolocalstorages.storage.arangodb.com > $(MANIFESTPATHCRD)
536+
manifests-crd: manifests-crd-file
537+
538+
.PHONY: manifests-crd-all-file
539+
manifests-crd-all-file:
540+
@echo Building manifests for CRD with schemas - $(MANIFESTPATHCRDALL)
541+
@go run ${GOBUILDARGS} --tags "$(GOBUILDTAGS)" '$(ROOT)/cmd/main-ops/' crd generate --crd.validation-schema 'all=true' > $(MANIFESTPATHCRDALL)
542+
manifests-crd: manifests-crd-all-file
543+
544+
.PHONY: manifests-crd-basic-file
545+
manifests-crd-basic-file:
546+
@echo Building manifests for CRD with basic schemas - $(MANIFESTPATHCRDBASIC)
547+
@go run ${GOBUILDARGS} --tags "$(GOBUILDTAGS)" '$(ROOT)/cmd/main-ops/' crd generate > $(MANIFESTPATHCRDBASIC)
548+
manifests-crd: manifests-crd-basic-file
531549

532550
.PHONY: manifests-crd-kustomize
533551
manifests-crd-kustomize: manifests-crd-file
534552
@echo Building manifests for CRD - $(KUSTOMIZEPATHCRD)
535553
@cp "$(MANIFESTPATHCRD)" "$(KUSTOMIZEPATHCRD)"
536-
manifests: manifests-crd-kustomize
554+
manifests-crd: manifests-crd-kustomize
555+
556+
.PHONY: manifests-crd-basic-kustomize
557+
manifests-crd-basic-kustomize: manifests-crd-basic-file
558+
@echo Building manifests for CRD with schemas - $(KUSTOMIZEPATHCRDBASIC)
559+
@cp "$(MANIFESTPATHCRDBASIC)" "$(KUSTOMIZEPATHCRDBASIC)"
560+
manifests-crd: manifests-crd-basic-kustomize
561+
562+
.PHONY: manifests-crd-all-kustomize
563+
manifests-crd-all-kustomize: manifests-crd-all-file
564+
@echo Building manifests for CRD with schemas - $(KUSTOMIZEPATHCRDALL)
565+
@cp "$(MANIFESTPATHCRDALL)" "$(KUSTOMIZEPATHCRDALL)"
566+
manifests-crd: manifests-crd-all-kustomize
567+
568+
manifests: manifests-crd
537569

538570
$(eval $(call manifest-generator, deployment, kube-arangodb, \
539571
--set "operator.features.deployment=true" \

cmd/crd.go

+4-2
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ var (
6464
crdInstallOptions struct {
6565
validationSchema []string
6666
preserveUnknownFields []string
67+
skip []string
6768
force bool
6869
}
6970
)
@@ -79,6 +80,7 @@ func init() {
7980
f := cmdCRD.PersistentFlags()
8081
f.StringArrayVar(&crdInstallOptions.validationSchema, "crd.validation-schema", defaultValidationSchemaEnabled, "Controls which CRD should have validation schema <crd-name>=<true/false>.")
8182
f.StringArrayVar(&crdInstallOptions.preserveUnknownFields, "crd.preserve-unknown-fields", nil, "Controls which CRD should have enabled preserve unknown fields in validation schema <crd-name>=<true/false>.")
83+
f.StringArrayVar(&crdInstallOptions.skip, "crd.skip", nil, "Controls which CRD should be skipped.")
8284
f.BoolVar(&crdInstallOptions.force, "crd.force-update", false, "Enforce CRD Schema update")
8385

8486
cmdCRD.AddCommand(cmdCRDInstall)
@@ -191,7 +193,7 @@ func cmdCRDInstallRun(cmd *cobra.Command, args []string) {
191193
ctx, cancel := context.WithTimeout(shutdown.Context(), time.Minute)
192194
defer cancel()
193195

194-
err = crd.EnsureCRDWithOptions(ctx, client, crd.EnsureCRDOptions{IgnoreErrors: false, CRDOptions: crdOpts, ForceUpdate: crdInstallOptions.force})
196+
err = crd.EnsureCRDWithOptions(ctx, client, crd.EnsureCRDOptions{IgnoreErrors: false, CRDOptions: crdOpts, ForceUpdate: crdInstallOptions.force, Skip: crdInstallOptions.skip})
195197
if err != nil {
196198
os.Exit(1)
197199
}
@@ -204,7 +206,7 @@ func cmdCRDGenerateRun(cmd *cobra.Command, args []string) {
204206
return
205207
}
206208

207-
err = crd.GenerateCRDYAMLWithOptions(crd.EnsureCRDOptions{IgnoreErrors: false, CRDOptions: crdOpts, ForceUpdate: crdInstallOptions.force}, cmd.OutOrStdout())
209+
err = crd.GenerateCRDYAMLWithOptions(crd.EnsureCRDOptions{IgnoreErrors: false, CRDOptions: crdOpts, ForceUpdate: crdInstallOptions.force, Skip: crdInstallOptions.skip}, cmd.OutOrStdout())
208210
if err != nil {
209211
os.Exit(1)
210212
}

docs/cli/arangodb_operator_ops.md

+3
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ Available Commands:
4343
Flags:
4444
--crd.force-update Enforce CRD Schema update
4545
--crd.preserve-unknown-fields stringArray Controls which CRD should have enabled preserve unknown fields in validation schema <crd-name>=<true/false>.
46+
--crd.skip stringArray Controls which CRD should be skipped.
4647
--crd.validation-schema stringArray Controls which CRD should have validation schema <crd-name>=<true/false>.
4748
-h, --help help for crd
4849
@@ -65,6 +66,7 @@ Flags:
6566
Global Flags:
6667
--crd.force-update Enforce CRD Schema update
6768
--crd.preserve-unknown-fields stringArray Controls which CRD should have enabled preserve unknown fields in validation schema <crd-name>=<true/false>.
69+
--crd.skip stringArray Controls which CRD should be skipped.
6870
--crd.validation-schema stringArray Controls which CRD should have validation schema <crd-name>=<true/false>.
6971
```
7072
[END_INJECT]: # (arangodb_operator_ops_cmd_crd_install)
@@ -84,6 +86,7 @@ Flags:
8486
Global Flags:
8587
--crd.force-update Enforce CRD Schema update
8688
--crd.preserve-unknown-fields stringArray Controls which CRD should have enabled preserve unknown fields in validation schema <crd-name>=<true/false>.
89+
--crd.skip stringArray Controls which CRD should be skipped.
8790
--crd.validation-schema stringArray Controls which CRD should have validation schema <crd-name>=<true/false>.
8891
```
8992
[END_INJECT]: # (arangodb_operator_ops_cmd_crd_generate)

0 commit comments

Comments
 (0)