From 382a45a923a72098c3473b775ce451bb53891ed5 Mon Sep 17 00:00:00 2001 From: Tiger Kaovilai Date: Sat, 22 Jun 2024 14:46:54 -0400 Subject: [PATCH 1/3] `make deploy-olm` for 4.16 Updates operator-sdk to versions that can `run bundle` with restricted security-context-config Update controller-gen to v0.14.0 to avoid panic on newer golang and CRD_OPTIONS that works with it. panic log ``` panic: runtime error: invalid memory address or nil pointer dereference [recovered] panic: runtime error: invalid memory address or nil pointer dereference [signal SIGSEGV: segmentation violation code=0x2 addr=0x0 pc=0x102676d94] goroutine 23 [running]: go/types.(*Checker).handleBailout(0x140008ec400, 0x1400323fd18) /opt/homebrew/Cellar/go/1.22.3/libexec/src/go/types/check.go:367 +0x9c panic({0x102936800?, 0x102eb3ce0?}) /opt/homebrew/Cellar/go/1.22.3/libexec/src/runtime/panic.go:770 +0x124 go/types.(*StdSizes).Sizeof(0x0, {0x1029fdb80, 0x102ebc5e0}) /opt/homebrew/Cellar/go/1.22.3/libexec/src/go/types/sizes.go:228 +0x314 go/types.(*Config).sizeof(...) /opt/homebrew/Cellar/go/1.22.3/libexec/src/go/types/sizes.go:333 go/types.representableConst.func1({0x1029fdb80?, 0x102ebc5e0?}) /opt/homebrew/Cellar/go/1.22.3/libexec/src/go/types/const.go:76 +0x9c go/types.representableConst({0x102a03ec0, 0x102e88720}, 0x140008ec400, 0x102ebc5e0, 0x1400323ce78) /opt/homebrew/Cellar/go/1.22.3/libexec/src/go/types/const.go:106 +0x2b0 go/types.(*Checker).representation(0x140008ec400, 0x140013b5800, 0x102ebc5e0) /opt/homebrew/Cellar/go/1.22.3/libexec/src/go/types/const.go:256 +0x68 go/types.(*Checker).representable(0x140008ec400, 0x140013b5800, 0x102ebc5e0) /opt/homebrew/Cellar/go/1.22.3/libexec/src/go/types/const.go:239 +0x28 go/types.(*Checker).shift(0x140008ec400, 0x140013b57c0, 0x140013b5800, {0x102a01ca8, 0x140010360f0}, 0x14) /opt/homebrew/Cellar/go/1.22.3/libexec/src/go/types/expr.go:650 +0x1d8 go/types.(*Checker).binary(0x140008ec400, 0x140013b57c0, {0x102a01ca8, 0x140010360f0}, {0x102a021b8, 0x14001026ba0}, {0x102a021b8, 0x14001026bc0}, 0x14, 0xa6c0) /opt/homebrew/Cellar/go/1.22.3/libexec/src/go/types/expr.go:796 +0x100 go/types.(*Checker).exprInternal(0x140008ec400, 0x0, 0x140013b57c0, {0x102a01ca8, 0x140010360f0}, {0x0, 0x0}) /opt/homebrew/Cellar/go/1.22.3/libexec/src/go/types/expr.go:1416 +0x1d4 go/types.(*Checker).rawExpr(0x140008ec400, 0x0, 0x140013b57c0, {0x102a01ca8?, 0x140010360f0?}, {0x0?, 0x0?}, 0x0) /opt/homebrew/Cellar/go/1.22.3/libexec/src/go/types/expr.go:979 +0x12c go/types.(*Checker).expr(0x140008ec400, 0x102114d7c?, 0x140013b57c0, {0x102a01ca8?, 0x140010360f0?}) /opt/homebrew/Cellar/go/1.22.3/libexec/src/go/types/expr.go:1513 +0x38 go/types.(*Checker).constDecl(0x140008ec400, 0x140013d2d80, {0x0, 0x0}, {0x102a01ca8, 0x140010360f0}, 0x0) /opt/homebrew/Cellar/go/1.22.3/libexec/src/go/types/decl.go:488 +0x23c go/types.(*Checker).objDecl(0x140008ec400, {0x102a08e40, 0x140013d2d80}, 0x0) /opt/homebrew/Cellar/go/1.22.3/libexec/src/go/types/decl.go:191 +0x84c go/types.(*Checker).ident(0x140008ec400, 0x140013b5780, 0x14001026620, 0x0, 0x0) /opt/homebrew/Cellar/go/1.22.3/libexec/src/go/types/typexpr.go:62 +0x1f0 go/types.(*Checker).exprInternal(0x140008ec400, 0x0, 0x140013b5780, {0x102a00808, 0x14001026620}, {0x0, 0x0}) /opt/homebrew/Cellar/go/1.22.3/libexec/src/go/types/expr.go:1033 +0x114 go/types.(*Checker).rawExpr(0x140008ec400, 0x0, 0x140013b5780, {0x102a00808?, 0x14001026620?}, {0x0?, 0x0?}, 0x0) /opt/homebrew/Cellar/go/1.22.3/libexec/src/go/types/expr.go:979 +0x12c go/types.(*Checker).expr(0x140008ec400, 0x2200010342430a?, 0x140013b5780, {0x102a00808?, 0x14001026620?}) /opt/homebrew/Cellar/go/1.22.3/libexec/src/go/types/expr.go:1513 +0x38 go/types.(*Checker).binary(0x140008ec400, 0x140013b5740, {0x102a01ca8, 0x14001036030}, {0x102a00808, 0x14001026600}, {0x102a00808, 0x14001026620}, 0xc, 0x9e41) /opt/homebrew/Cellar/go/1.22.3/libexec/src/go/types/expr.go:784 +0x88 go/types.(*Checker).exprInternal(0x140008ec400, 0x0, 0x140013b5740, {0x102a01ca8, 0x14001036030}, {0x0, 0x0}) /opt/homebrew/Cellar/go/1.22.3/libexec/src/go/types/expr.go:1416 +0x1d4 go/types.(*Checker).rawExpr(0x140008ec400, 0x0, 0x140013b5740, {0x102a01ca8?, 0x14001036030?}, {0x0?, 0x0?}, 0x0) /opt/homebrew/Cellar/go/1.22.3/libexec/src/go/types/expr.go:979 +0x12c go/types.(*Checker).expr(0x140008ec400, 0x140013a3200?, 0x140013b5740, {0x102a01ca8?, 0x14001036030?}) /opt/homebrew/Cellar/go/1.22.3/libexec/src/go/types/expr.go:1513 +0x38 go/types.(*Checker).constDecl(0x140008ec400, 0x140013a32c0, {0x0, 0x0}, {0x102a01ca8, 0x14001036030}, 0x0) /opt/homebrew/Cellar/go/1.22.3/libexec/src/go/types/decl.go:488 +0x23c go/types.(*Checker).objDecl(0x140008ec400, {0x102a08e40, 0x140013a32c0}, 0x0) /opt/homebrew/Cellar/go/1.22.3/libexec/src/go/types/decl.go:191 +0x84c go/types.(*Checker).packageObjects(0x140008ec400) /opt/homebrew/Cellar/go/1.22.3/libexec/src/go/types/resolver.go:693 +0x468 go/types.(*Checker).checkFiles(0x140008ec400, {0x14000191540, 0xa, 0xa}) /opt/homebrew/Cellar/go/1.22.3/libexec/src/go/types/check.go:408 +0x164 go/types.(*Checker).Files(...) /opt/homebrew/Cellar/go/1.22.3/libexec/src/go/types/check.go:372 sigs.k8s.io/controller-tools/pkg/loader.(*loader).typeCheck(0x140002c8fc0, 0x14002f09c40) /Users/tiger/go/pkg/mod/sigs.k8s.io/controller-tools@v0.6.1/pkg/loader/loader.go:283 +0x2d8 sigs.k8s.io/controller-tools/pkg/loader.(*Package).NeedTypesInfo(0x14002f09c40) /Users/tiger/go/pkg/mod/sigs.k8s.io/controller-tools@v0.6.1/pkg/loader/loader.go:96 +0x44 sigs.k8s.io/controller-tools/pkg/loader.(*TypeChecker).check(0x14000fb1110, 0x14002f09c40) /Users/tiger/go/pkg/mod/sigs.k8s.io/controller-tools@v0.6.1/pkg/loader/refs.go:263 +0x304 sigs.k8s.io/controller-tools/pkg/loader.(*TypeChecker).check.func1(0x0?) /Users/tiger/go/pkg/mod/sigs.k8s.io/controller-tools@v0.6.1/pkg/loader/refs.go:257 +0x58 created by sigs.k8s.io/controller-tools/pkg/loader.(*TypeChecker).check in goroutine 1 /Users/tiger/go/pkg/mod/sigs.k8s.io/controller-tools@v0.6.1/pkg/loader/refs.go:255 +0x230 make[1]: *** [manifests] Error 2 ``` Signed-off-by: Tiger Kaovilai Upgrade controller-gen so `make manifests` runs Signed-off-by: Tiger Kaovilai --- Makefile | 23 +- api/v1alpha1/zz_generated.deepcopy.go | 1 - build/Dockerfile.bundle | 2 +- bundle.Dockerfile | 2 +- .../oadp-operator.clusterserviceversion.yaml | 4 +- .../oadp.openshift.io_cloudstorages.yaml | 30 +- ...enshift.io_dataprotectionapplications.yaml | 394 +++++++++++++---- bundle/metadata/annotations.yaml | 2 +- .../oadp.openshift.io_cloudstorages.yaml | 34 +- ...enshift.io_dataprotectionapplications.yaml | 398 ++++++++++++++---- pkg/klog/zz_generated.deepcopy.go | 1 - pkg/velero/client/zz_generated.deepcopy.go | 1 - pkg/velero/server/zz_generated.deepcopy.go | 1 - 13 files changed, 688 insertions(+), 205 deletions(-) diff --git a/Makefile b/Makefile index 2013334cf51..7464f9efbe9 100644 --- a/Makefile +++ b/Makefile @@ -110,7 +110,7 @@ BUNDLE_IMG ?= $(IMAGE_TAG_BASE)-bundle:v$(VERSION) # Image URL to use all building/pushing image targets IMG ?= quay.io/konveyor/oadp-operator:oadp-1.3 # Produce CRDs that work back to Kubernetes 1.11 (no version conversion) -CRD_OPTIONS ?= "crd:trivialVersions=true,preserveUnknownFields=false" +CRD_OPTIONS ?= "crd" # Get the currently used golang install path (in GOPATH/bin, unless GOBIN is set) ifeq (,$(shell go env GOBIN)) @@ -228,14 +228,14 @@ docker-push: ## Push docker image with the manager. ##@ Deployment -install: manifests kustomize ## Install CRDs into the K8s cluster specified in ~/.kube/config. +install: manifests ## Install CRDs into the K8s cluster specified in ~/.kube/config. $(KUSTOMIZE) build config/crd | kubectl apply -f - -uninstall: manifests kustomize ## Uninstall CRDs from the K8s cluster specified in ~/.kube/config. +uninstall: manifests ## Uninstall CRDs from the K8s cluster specified in ~/.kube/config. $(KUSTOMIZE) build config/crd | kubectl delete -f - VELERO_ROLE_TMP?=/tmp/oadp-make-deploy -velero-role-tmp: kustomize +velero-role-tmp: mkdir -p $(VELERO_ROLE_TMP) sed -e 's/namespace: system/namespace: $(OADP_TEST_NAMESPACE)/g' config/velero/velero-service_account.yaml > $(VELERO_ROLE_TMP)/velero-service_account.yaml sed -e 's/namespace: system/namespace: $(OADP_TEST_NAMESPACE)/g' config/velero/velero-role.yaml > $(VELERO_ROLE_TMP)/velero-role.yaml @@ -259,11 +259,10 @@ build-deploy: ## Build current branch image and deploy controller to the k8s clu CONTROLLER_GEN = $(shell pwd)/bin/controller-gen controller-gen: ## Download controller-gen locally if necessary. - $(call go-install-tool,$(CONTROLLER_GEN),sigs.k8s.io/controller-tools/cmd/controller-gen@v0.6.1) + $(call go-install-tool,$(CONTROLLER_GEN),sigs.k8s.io/controller-tools/cmd/controller-gen@v0.14.0) -KUSTOMIZE = $(shell pwd)/bin/kustomize -kustomize: ## Download kustomize locally if necessary. - $(call go-install-tool,$(KUSTOMIZE),sigs.k8s.io/kustomize/kustomize/v4@v4.5.5) +# kustomize from go install wouldn't run in my env so replacing with go run. +KUSTOMIZE = go run sigs.k8s.io/kustomize/kustomize/v4@v4.5.7 # Codecov OS String for use in download url ifeq ($(OS),Windows_NT) @@ -314,12 +313,12 @@ operator-sdk: # Download operator-sdk locally if does not exist if [ ! -f $(OPERATOR_SDK) ]; then \ mkdir -p bin ;\ - curl -Lo $(OPERATOR_SDK) https://github.com/operator-framework/operator-sdk/releases/download/v1.23.0/operator-sdk_$(shell go env GOOS)_$(shell go env GOARCH) ; \ + curl -Lo $(OPERATOR_SDK) https://github.com/operator-framework/operator-sdk/releases/download/v1.31.0/operator-sdk_$(shell go env GOOS)_$(shell go env GOARCH) ; \ chmod +x $(OPERATOR_SDK); \ fi .PHONY: bundle -bundle: manifests kustomize operator-sdk ## Generate bundle manifests and metadata, then validate generated files. +bundle: manifests operator-sdk ## Generate bundle manifests and metadata, then validate generated files. GOFLAGS="-mod=mod" $(OPERATOR_SDK) generate kustomize manifests -q cd config/manager && GOFLAGS="-mod=mod" $(KUSTOMIZE) edit set image controller=$(IMG) GOFLAGS="-mod=mod" $(KUSTOMIZE) build config/manifests | GOFLAGS="-mod=mod" $(OPERATOR_SDK) generate bundle -q --extra-service-accounts "velero" --overwrite --version $(VERSION) $(BUNDLE_METADATA_OPTS) @@ -328,6 +327,8 @@ bundle: manifests kustomize operator-sdk ## Generate bundle manifests and metada # TODO: update CI to use generated one cp bundle.Dockerfile build/Dockerfile.bundle GOFLAGS="-mod=mod" $(OPERATOR_SDK) bundle validate ./bundle + sed -e 's/ createdAt: .*/$(shell grep -I '^ createdAt: ' bundle/manifests/oadp-operator.clusterserviceversion.yaml)/' bundle/manifests/oadp-operator.clusterserviceversion.yaml > bundle/manifests/oadp-operator.clusterserviceversion.yaml.tmp + mv bundle/manifests/oadp-operator.clusterserviceversion.yaml.tmp bundle/manifests/oadp-operator.clusterserviceversion.yaml .PHONY: nullables nullables: @@ -389,7 +390,7 @@ deploy-olm: operator-sdk undeploy-olm ## Build current branch operator image, bu IMG=$(THIS_OPERATOR_IMAGE) BUNDLE_IMG=$(THIS_BUNDLE_IMAGE) \ make docker-build docker-push bundle bundle-build bundle-push; \ rm -rf $(DEPLOY_TMP) - $(OPERATOR_SDK) run bundle $(THIS_BUNDLE_IMAGE) --namespace $(OADP_TEST_NAMESPACE) + $(OPERATOR_SDK) run bundle $(THIS_BUNDLE_IMAGE) --namespace $(OADP_TEST_NAMESPACE) --security-context-config restricted .PHONY: undeploy-olm undeploy-olm: login-required ## Uninstall current branch operator via OLM diff --git a/api/v1alpha1/zz_generated.deepcopy.go b/api/v1alpha1/zz_generated.deepcopy.go index dea30121633..20a65ab8990 100644 --- a/api/v1alpha1/zz_generated.deepcopy.go +++ b/api/v1alpha1/zz_generated.deepcopy.go @@ -1,5 +1,4 @@ //go:build !ignore_autogenerated -// +build !ignore_autogenerated /* Copyright 2021. diff --git a/build/Dockerfile.bundle b/build/Dockerfile.bundle index 8b499056960..efc0abc365c 100644 --- a/build/Dockerfile.bundle +++ b/build/Dockerfile.bundle @@ -7,7 +7,7 @@ LABEL operators.operatorframework.io.bundle.metadata.v1=metadata/ LABEL operators.operatorframework.io.bundle.package.v1=oadp-operator LABEL operators.operatorframework.io.bundle.channels.v1=stable-1.3 LABEL operators.operatorframework.io.bundle.channel.default.v1=stable-1.3 -LABEL operators.operatorframework.io.metrics.builder=operator-sdk-v1.23.0 +LABEL operators.operatorframework.io.metrics.builder=operator-sdk-v1.34.2 LABEL operators.operatorframework.io.metrics.mediatype.v1=metrics+v1 LABEL operators.operatorframework.io.metrics.project_layout=go.kubebuilder.io/v3 diff --git a/bundle.Dockerfile b/bundle.Dockerfile index 8b499056960..efc0abc365c 100644 --- a/bundle.Dockerfile +++ b/bundle.Dockerfile @@ -7,7 +7,7 @@ LABEL operators.operatorframework.io.bundle.metadata.v1=metadata/ LABEL operators.operatorframework.io.bundle.package.v1=oadp-operator LABEL operators.operatorframework.io.bundle.channels.v1=stable-1.3 LABEL operators.operatorframework.io.bundle.channel.default.v1=stable-1.3 -LABEL operators.operatorframework.io.metrics.builder=operator-sdk-v1.23.0 +LABEL operators.operatorframework.io.metrics.builder=operator-sdk-v1.34.2 LABEL operators.operatorframework.io.metrics.mediatype.v1=metrics+v1 LABEL operators.operatorframework.io.metrics.project_layout=go.kubebuilder.io/v3 diff --git a/bundle/manifests/oadp-operator.clusterserviceversion.yaml b/bundle/manifests/oadp-operator.clusterserviceversion.yaml index 14580c51204..68b95d02ab4 100644 --- a/bundle/manifests/oadp-operator.clusterserviceversion.yaml +++ b/bundle/manifests/oadp-operator.clusterserviceversion.yaml @@ -153,7 +153,7 @@ metadata: Cloud Provider,Developer Tools,Modernization & Migration,OpenShift Optional,Storage certified: "false" containerImage: quay.io/konveyor/oadp-operator:oadp-1.3 - createdAt: "2020-09-08T12:21:00Z" + createdAt: "2024-06-22T19:34:33Z" description: OADP (OpenShift API for Data Protection) operator sets up and installs Data Protection Applications on the OpenShift platform. features.operators.openshift.io/cnf: "false" @@ -172,7 +172,7 @@ metadata: operators.openshift.io/infrastructure-features: '["Disconnected"]' operators.openshift.io/valid-subscription: '["OpenShift Kubernetes Engine", "OpenShift Container Platform", "OpenShift Platform Plus"]' - operators.operatorframework.io/builder: operator-sdk-v1.23.0 + operators.operatorframework.io/builder: operator-sdk-v1.34.2 operators.operatorframework.io/project_layout: go.kubebuilder.io/v3 repository: https://github.com/openshift/oadp-operator support: Red Hat diff --git a/bundle/manifests/oadp.openshift.io_cloudstorages.yaml b/bundle/manifests/oadp.openshift.io_cloudstorages.yaml index ee3b5c1f504..8a0a5081032 100644 --- a/bundle/manifests/oadp.openshift.io_cloudstorages.yaml +++ b/bundle/manifests/oadp.openshift.io_cloudstorages.yaml @@ -2,7 +2,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.6.1 + controller-gen.kubebuilder.io/version: v0.14.0 creationTimestamp: null name: cloudstorages.oadp.openshift.io spec: @@ -19,14 +19,19 @@ spec: openAPIV3Schema: properties: apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + description: |- + APIVersion defines the versioned schema of this representation of an object. + Servers should convert recognized schemas to the latest internal value, and + may reject unrecognized values. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources type: string kind: - description: 'Kind is a string value representing the REST resource this - object represents. Servers may infer this from the endpoint the client - submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + description: |- + Kind is a string value representing the REST resource this object represents. + Servers may infer this from the endpoint the client submits requests to. + Cannot be updated. + In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds type: string metadata: type: object @@ -41,8 +46,10 @@ spec: valid secret key. type: string name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' + description: |- + Name of the referent. + More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid? type: string optional: description: Specify whether the Secret or its key must be defined @@ -50,6 +57,7 @@ spec: required: - key type: object + x-kubernetes-map-type: atomic enableSharedConfig: description: enableSharedConfig enable the use of shared config loading for AWS Buckets @@ -96,5 +104,5 @@ status: acceptedNames: kind: "" plural: "" - conditions: [] - storedVersions: [] + conditions: null + storedVersions: null diff --git a/bundle/manifests/oadp.openshift.io_dataprotectionapplications.yaml b/bundle/manifests/oadp.openshift.io_dataprotectionapplications.yaml index 3dde9df5b63..5738c47c500 100644 --- a/bundle/manifests/oadp.openshift.io_dataprotectionapplications.yaml +++ b/bundle/manifests/oadp.openshift.io_dataprotectionapplications.yaml @@ -2,7 +2,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.6.1 + controller-gen.kubebuilder.io/version: v0.14.0 creationTimestamp: null name: dataprotectionapplications.oadp.openshift.io spec: @@ -22,10 +22,19 @@ spec: description: DataProtectionApplication is the Schema for the dpa API properties: apiVersion: - description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + description: |- + APIVersion defines the versioned schema of this representation of an object. + Servers should convert recognized schemas to the latest internal value, and + may reject unrecognized values. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources type: string kind: - description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + description: |- + Kind is a string value representing the REST resource this object represents. + Servers may infer this from the endpoint the client submits requests to. + Cannot be updated. + In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds type: string metadata: type: object @@ -52,12 +61,18 @@ spec: format: byte type: string cloudStorageRef: - description: LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace. + description: |- + LocalObjectReference contains enough information to let you locate the + referenced object inside the same namespace. properties: name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + description: |- + Name of the referent. + More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid? type: string type: object + x-kubernetes-map-type: atomic config: additionalProperties: type: string @@ -70,7 +85,10 @@ spec: description: The key of the secret to select from. Must be a valid secret key. type: string name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + description: |- + Name of the referent. + More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid? type: string optional: description: Specify whether the Secret or its key must be defined @@ -78,6 +96,7 @@ spec: required: - key type: object + x-kubernetes-map-type: atomic default: description: default indicates this location is the default backup storage location. type: boolean @@ -114,7 +133,10 @@ spec: description: The key of the secret to select from. Must be a valid secret key. type: string name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + description: |- + Name of the referent. + More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid? type: string optional: description: Specify whether the Secret or its key must be defined @@ -122,6 +144,7 @@ spec: required: - key type: object + x-kubernetes-map-type: atomic default: description: Default indicates this location is the default backup storage location. type: boolean @@ -161,7 +184,9 @@ spec: description: NodeAgent is needed to allow selection between kopia or restic properties: enable: - description: enable defines a boolean pointer whether we want the daemonset to exist or not + description: |- + enable defines a boolean pointer whether we want the daemonset to + exist or not type: boolean podConfig: description: Pod specific configuration @@ -175,7 +200,16 @@ spec: description: Name of the environment variable. Must be a C_IDENTIFIER. type: string value: - description: 'Variable references $(VAR_NAME) are expanded using the previously defined environment variables in the container and any service environment variables. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless of whether the variable exists or not. Defaults to "".' + description: |- + Variable references $(VAR_NAME) are expanded + using the previously defined environment variables in the container and + any service environment variables. If a variable cannot be resolved, + the reference in the input string will be unchanged. Double $$ are reduced + to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. + "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)". + Escaped references will never be expanded, regardless of whether the variable + exists or not. + Defaults to "". type: string valueFrom: description: Source for the environment variable's value. Cannot be used if value is not empty. @@ -187,7 +221,10 @@ spec: description: The key to select. type: string name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + description: |- + Name of the referent. + More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid? type: string optional: description: Specify whether the ConfigMap or its key must be defined @@ -195,8 +232,11 @@ spec: required: - key type: object + x-kubernetes-map-type: atomic fieldRef: - description: 'Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['''']`, `metadata.annotations['''']`, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.' + description: |- + Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['']`, `metadata.annotations['']`, + spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs. properties: apiVersion: description: Version of the schema the FieldPath is written in terms of, defaults to "v1". @@ -207,8 +247,11 @@ spec: required: - fieldPath type: object + x-kubernetes-map-type: atomic resourceFieldRef: - description: 'Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.' + description: |- + Selects a resource of the container: only resources limits and requests + (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported. properties: containerName: description: 'Container name: required for volumes, optional for env vars' @@ -226,6 +269,7 @@ spec: required: - resource type: object + x-kubernetes-map-type: atomic secretKeyRef: description: Selects a key of a secret in the pod's namespace properties: @@ -233,7 +277,10 @@ spec: description: The key of the secret to select from. Must be a valid secret key. type: string name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + description: |- + Name of the referent. + More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid? type: string optional: description: Specify whether the Secret or its key must be defined @@ -241,6 +288,7 @@ spec: required: - key type: object + x-kubernetes-map-type: atomic type: object required: - name @@ -267,7 +315,9 @@ spec: - type: string pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true - description: 'Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' + description: |- + Limits describes the maximum amount of compute resources allowed. + More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ type: object requests: additionalProperties: @@ -276,29 +326,49 @@ spec: - type: string pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true - description: 'Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' + description: |- + Requests describes the minimum amount of compute resources required. + If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, + otherwise to an implementation-defined value. + More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ type: object type: object tolerations: description: tolerations defines the list of tolerations to be applied to daemonset items: - description: The pod this Toleration is attached to tolerates any taint that matches the triple using the matching operator . + description: |- + The pod this Toleration is attached to tolerates any taint that matches + the triple using the matching operator . properties: effect: - description: Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute. + description: |- + Effect indicates the taint effect to match. Empty means match all taint effects. + When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute. type: string key: - description: Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys. + description: |- + Key is the taint key that the toleration applies to. Empty means match all taint keys. + If the key is empty, operator must be Exists; this combination means to match all values and all keys. type: string operator: - description: Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category. + description: |- + Operator represents a key's relationship to the value. + Valid operators are Exists and Equal. Defaults to Equal. + Exists is equivalent to wildcard for value, so that a pod can + tolerate all taints of a particular category. type: string tolerationSeconds: - description: TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system. + description: |- + TolerationSeconds represents the period of time the toleration (which must be + of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, + it is not set, which means tolerate the taint forever (do not evict). Zero and + negative values will be treated as 0 (evict immediately) by the system. format: int64 type: integer value: - description: Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string. + description: |- + Value is the taint value the toleration matches to. + If the operator is Exists, the value should be empty, otherwise just a regular string. type: string type: object type: array @@ -322,10 +392,15 @@ spec: - uploaderType type: object restic: - description: (deprecation warning) ResticConfig is the configuration for restic DaemonSet. restic is for backwards compatibility and is replaced by the nodeAgent restic will be removed with the OADP 1.4 + description: |- + (deprecation warning) ResticConfig is the configuration for restic DaemonSet. + restic is for backwards compatibility and is replaced by the nodeAgent + restic will be removed with the OADP 1.4 properties: enable: - description: enable defines a boolean pointer whether we want the daemonset to exist or not + description: |- + enable defines a boolean pointer whether we want the daemonset to + exist or not type: boolean podConfig: description: Pod specific configuration @@ -339,7 +414,16 @@ spec: description: Name of the environment variable. Must be a C_IDENTIFIER. type: string value: - description: 'Variable references $(VAR_NAME) are expanded using the previously defined environment variables in the container and any service environment variables. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless of whether the variable exists or not. Defaults to "".' + description: |- + Variable references $(VAR_NAME) are expanded + using the previously defined environment variables in the container and + any service environment variables. If a variable cannot be resolved, + the reference in the input string will be unchanged. Double $$ are reduced + to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. + "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)". + Escaped references will never be expanded, regardless of whether the variable + exists or not. + Defaults to "". type: string valueFrom: description: Source for the environment variable's value. Cannot be used if value is not empty. @@ -351,7 +435,10 @@ spec: description: The key to select. type: string name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + description: |- + Name of the referent. + More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid? type: string optional: description: Specify whether the ConfigMap or its key must be defined @@ -359,8 +446,11 @@ spec: required: - key type: object + x-kubernetes-map-type: atomic fieldRef: - description: 'Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['''']`, `metadata.annotations['''']`, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.' + description: |- + Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['']`, `metadata.annotations['']`, + spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs. properties: apiVersion: description: Version of the schema the FieldPath is written in terms of, defaults to "v1". @@ -371,8 +461,11 @@ spec: required: - fieldPath type: object + x-kubernetes-map-type: atomic resourceFieldRef: - description: 'Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.' + description: |- + Selects a resource of the container: only resources limits and requests + (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported. properties: containerName: description: 'Container name: required for volumes, optional for env vars' @@ -390,6 +483,7 @@ spec: required: - resource type: object + x-kubernetes-map-type: atomic secretKeyRef: description: Selects a key of a secret in the pod's namespace properties: @@ -397,7 +491,10 @@ spec: description: The key of the secret to select from. Must be a valid secret key. type: string name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + description: |- + Name of the referent. + More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid? type: string optional: description: Specify whether the Secret or its key must be defined @@ -405,6 +502,7 @@ spec: required: - key type: object + x-kubernetes-map-type: atomic type: object required: - name @@ -432,7 +530,9 @@ spec: pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true nullable: true - description: 'Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' + description: |- + Limits describes the maximum amount of compute resources allowed. + More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ type: object nullable: true requests: @@ -443,30 +543,50 @@ spec: pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true nullable: true - description: 'Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' + description: |- + Requests describes the minimum amount of compute resources required. + If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, + otherwise to an implementation-defined value. + More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ type: object nullable: true type: object tolerations: description: tolerations defines the list of tolerations to be applied to daemonset items: - description: The pod this Toleration is attached to tolerates any taint that matches the triple using the matching operator . + description: |- + The pod this Toleration is attached to tolerates any taint that matches + the triple using the matching operator . properties: effect: - description: Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute. + description: |- + Effect indicates the taint effect to match. Empty means match all taint effects. + When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute. type: string key: - description: Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys. + description: |- + Key is the taint key that the toleration applies to. Empty means match all taint keys. + If the key is empty, operator must be Exists; this combination means to match all values and all keys. type: string operator: - description: Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category. + description: |- + Operator represents a key's relationship to the value. + Valid operators are Exists and Equal. Defaults to Equal. + Exists is equivalent to wildcard for value, so that a pod can + tolerate all taints of a particular category. type: string tolerationSeconds: - description: TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system. + description: |- + TolerationSeconds represents the period of time the toleration (which must be + of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, + it is not set, which means tolerate the taint forever (do not evict). Zero and + negative values will be treated as 0 (evict immediately) by the system. format: int64 type: integer value: - description: Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string. + description: |- + Value is the taint value the toleration matches to. + If the operator is Exists, the value should be empty, otherwise just a regular string. type: string type: object type: array @@ -503,7 +623,9 @@ spec: description: Page size of requests by the server to the Kubernetes API when listing objects during a backup. Set to 0 to disable paging. type: integer client-qps: - description: Maximum number of requests per second by the server to the Kubernetes API once the burst limit has been reached. this will be validated as a valid float32 + description: |- + Maximum number of requests per second by the server to the Kubernetes API once the burst limit has been reached. + this will be validated as a valid float32 type: string colorized: description: Show colored output in TTY @@ -574,7 +696,10 @@ spec: minimum: 0 type: integer logtostderr: - description: 'Boolean flags. Not handled atomically because the flag.Value interface does not let us avoid the =true, and that shorthand is necessary for compatibility. TODO: does this matter enough to fix? Seems unlikely.' + description: |- + Boolean flags. Not handled atomically because the flag.Value interface + does not let us avoid the =true, and that shorthand is necessary for + compatibility. TODO: does this matter enough to fix? Seems unlikely. type: boolean max-concurrent-k8s-connections: description: Max concurrent connections number that Velero can create with kube-apiserver. Default is 30. (default 30) @@ -690,7 +815,16 @@ spec: description: Name of the environment variable. Must be a C_IDENTIFIER. type: string value: - description: 'Variable references $(VAR_NAME) are expanded using the previously defined environment variables in the container and any service environment variables. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless of whether the variable exists or not. Defaults to "".' + description: |- + Variable references $(VAR_NAME) are expanded + using the previously defined environment variables in the container and + any service environment variables. If a variable cannot be resolved, + the reference in the input string will be unchanged. Double $$ are reduced + to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. + "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)". + Escaped references will never be expanded, regardless of whether the variable + exists or not. + Defaults to "". type: string valueFrom: description: Source for the environment variable's value. Cannot be used if value is not empty. @@ -702,7 +836,10 @@ spec: description: The key to select. type: string name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + description: |- + Name of the referent. + More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid? type: string optional: description: Specify whether the ConfigMap or its key must be defined @@ -710,8 +847,11 @@ spec: required: - key type: object + x-kubernetes-map-type: atomic fieldRef: - description: 'Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['''']`, `metadata.annotations['''']`, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.' + description: |- + Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['']`, `metadata.annotations['']`, + spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs. properties: apiVersion: description: Version of the schema the FieldPath is written in terms of, defaults to "v1". @@ -722,8 +862,11 @@ spec: required: - fieldPath type: object + x-kubernetes-map-type: atomic resourceFieldRef: - description: 'Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.' + description: |- + Selects a resource of the container: only resources limits and requests + (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported. properties: containerName: description: 'Container name: required for volumes, optional for env vars' @@ -741,6 +884,7 @@ spec: required: - resource type: object + x-kubernetes-map-type: atomic secretKeyRef: description: Selects a key of a secret in the pod's namespace properties: @@ -748,7 +892,10 @@ spec: description: The key of the secret to select from. Must be a valid secret key. type: string name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + description: |- + Name of the referent. + More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid? type: string optional: description: Specify whether the Secret or its key must be defined @@ -756,6 +903,7 @@ spec: required: - key type: object + x-kubernetes-map-type: atomic type: object required: - name @@ -783,7 +931,9 @@ spec: pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true nullable: true - description: 'Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' + description: |- + Limits describes the maximum amount of compute resources allowed. + More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ type: object nullable: true requests: @@ -794,39 +944,64 @@ spec: pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true nullable: true - description: 'Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' + description: |- + Requests describes the minimum amount of compute resources required. + If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, + otherwise to an implementation-defined value. + More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ type: object nullable: true type: object tolerations: description: tolerations defines the list of tolerations to be applied to daemonset items: - description: The pod this Toleration is attached to tolerates any taint that matches the triple using the matching operator . + description: |- + The pod this Toleration is attached to tolerates any taint that matches + the triple using the matching operator . properties: effect: - description: Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute. + description: |- + Effect indicates the taint effect to match. Empty means match all taint effects. + When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute. type: string key: - description: Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys. + description: |- + Key is the taint key that the toleration applies to. Empty means match all taint keys. + If the key is empty, operator must be Exists; this combination means to match all values and all keys. type: string operator: - description: Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category. + description: |- + Operator represents a key's relationship to the value. + Valid operators are Exists and Equal. Defaults to Equal. + Exists is equivalent to wildcard for value, so that a pod can + tolerate all taints of a particular category. type: string tolerationSeconds: - description: TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system. + description: |- + TolerationSeconds represents the period of time the toleration (which must be + of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, + it is not set, which means tolerate the taint forever (do not evict). Zero and + negative values will be treated as 0 (evict immediately) by the system. format: int64 type: integer value: - description: Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string. + description: |- + Value is the taint value the toleration matches to. + If the operator is Exists, the value should be empty, otherwise just a regular string. type: string type: object type: array type: object resourceTimeout: - description: resourceTimeout defines how long to wait for several Velero resources before timeout occurs, such as Velero CRD availability, volumeSnapshot deletion, and repo availability. Default is 10m + description: |- + resourceTimeout defines how long to wait for several Velero resources before timeout occurs, + such as Velero CRD availability, volumeSnapshot deletion, and repo availability. + Default is 10m type: string restoreResourcesVersionPriority: - description: restoreResourceVersionPriority represents a configmap that will be created if defined for use in conjunction with EnableAPIGroupVersions feature flag Defining this field automatically add EnableAPIGroupVersions to the velero server feature flag + description: |- + restoreResourceVersionPriority represents a configmap that will be created if defined for use in conjunction with EnableAPIGroupVersions feature flag + Defining this field automatically add EnableAPIGroupVersions to the velero server feature flag type: string type: object type: object @@ -834,7 +1009,10 @@ spec: description: features defines the configuration for the DPA to enable the OADP tech preview features properties: dataMover: - description: (do not use warning) Contains data mover specific configurations dataMover is for backwards compatibility and is not necessary in OADP 1.3 dataMover will be removed with the OADP 1.4 + description: |- + (do not use warning) Contains data mover specific configurations + dataMover is for backwards compatibility and is not necessary in OADP 1.3 + dataMover will be removed with the OADP 1.4 properties: credentialName: description: User supplied Restic Secret name @@ -852,7 +1030,12 @@ spec: description: defines how often (in days) to prune the datamover snapshots from the repository type: string schedule: - description: 'schedule is a cronspec (https://en.wikipedia.org/wiki/Cron#Overview) that can be used to schedule datamover(volsync) synchronization to occur at regular, time-based intervals. For example, in order to enforce datamover SnapshotRetainPolicy at a regular interval you need to specify this Schedule trigger as a cron expression, by default the trigger is a manual trigger. For more details on Volsync triggers, refer: https://volsync.readthedocs.io/en/stable/usage/triggers.html' + description: |- + schedule is a cronspec (https://en.wikipedia.org/wiki/Cron#Overview) that + can be used to schedule datamover(volsync) synchronization to occur at regular, time-based + intervals. For example, in order to enforce datamover SnapshotRetainPolicy at a regular interval you need to + specify this Schedule trigger as a cron expression, by default the trigger is a manual trigger. For more details + on Volsync triggers, refer: https://volsync.readthedocs.io/en/stable/usage/triggers.html pattern: ^(\d+|\*)(/\d+)?(\s+(\d+|\*)(/\d+)?){4}$ type: string snapshotRetainPolicy: @@ -887,7 +1070,9 @@ spec: description: VolumeOptions defines configurations for VolSync options properties: accessMode: - description: accessMode can be used to override the accessMode of the source or destination PVC + description: |- + accessMode can be used to override the accessMode of the source or + destination PVC type: string cacheAccessMode: description: cacheAccessMode is the access mode to be used to provision the cache volume @@ -896,17 +1081,23 @@ spec: description: cacheCapacity determines the size of the restic metadata cache volume type: string cacheStorageClassName: - description: cacheStorageClassName is the storageClass that should be used when provisioning the data mover cache volume + description: |- + cacheStorageClassName is the storageClass that should be used when provisioning + the data mover cache volume type: string storageClassName: - description: storageClassName can be used to override the StorageClass of the source or destination PVC + description: |- + storageClassName can be used to override the StorageClass of the source + or destination PVC type: string type: object sourceVolumeOptions: description: VolumeOptions defines configurations for VolSync options properties: accessMode: - description: accessMode can be used to override the accessMode of the source or destination PVC + description: |- + accessMode can be used to override the accessMode of the source or + destination PVC type: string cacheAccessMode: description: cacheAccessMode is the access mode to be used to provision the cache volume @@ -915,10 +1106,14 @@ spec: description: cacheCapacity determines the size of the restic metadata cache volume type: string cacheStorageClassName: - description: cacheStorageClassName is the storageClass that should be used when provisioning the data mover cache volume + description: |- + cacheStorageClassName is the storageClass that should be used when provisioning + the data mover cache volume type: string storageClassName: - description: storageClassName can be used to override the StorageClass of the source or destination PVC + description: |- + storageClassName can be used to override the StorageClass of the source + or destination PVC type: string type: object type: object @@ -932,15 +1127,25 @@ spec: description: add annotations to pods deployed by operator type: object podDnsConfig: - description: podDnsConfig defines the DNS parameters of a pod in addition to those generated from DNSPolicy. https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/#pod-dns-config + description: |- + podDnsConfig defines the DNS parameters of a pod in addition to + those generated from DNSPolicy. + https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/#pod-dns-config properties: nameservers: - description: A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed. + description: |- + A list of DNS name server IP addresses. + This will be appended to the base nameservers generated from DNSPolicy. + Duplicated nameservers will be removed. items: type: string type: array options: - description: A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy. + description: |- + A list of DNS resolver options. + This will be merged with the base options generated from DNSPolicy. + Duplicated entries will be removed. Resolution options given in Options + will override those that appear in the base DNSPolicy. items: description: PodDNSConfigOption defines DNS resolver options of a pod. properties: @@ -952,13 +1157,18 @@ spec: type: object type: array searches: - description: A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed. + description: |- + A list of DNS search domains for host-name lookup. + This will be appended to the base search paths generated from DNSPolicy. + Duplicated search paths will be removed. items: type: string type: array type: object podDnsPolicy: - description: podDnsPolicy defines how a pod's DNS will be configured. https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/#pod-s-dns-policy + description: |- + podDnsPolicy defines how a pod's DNS will be configured. + https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/#pod-s-dns-policy type: string snapshotLocations: description: snapshotLocations defines the list of desired configuration to use for VolumeSnapshotLocations @@ -980,7 +1190,10 @@ spec: description: The key of the secret to select from. Must be a valid secret key. type: string name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + description: |- + Name of the referent. + More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid? type: string optional: description: Specify whether the Secret or its key must be defined @@ -988,6 +1201,7 @@ spec: required: - key type: object + x-kubernetes-map-type: atomic provider: description: Provider is the provider of the volume storage. type: string @@ -1001,7 +1215,18 @@ spec: unsupportedOverrides: additionalProperties: type: string - description: 'unsupportedOverrides can be used to override images used in deployments. Available keys are: - veleroImageFqin - awsPluginImageFqin - openshiftPluginImageFqin - azurePluginImageFqin - gcpPluginImageFqin - csiPluginImageFqin - resticRestoreImageFqin - kubevirtPluginImageFqin - operator-type' + description: |- + unsupportedOverrides can be used to override images used in deployments. + Available keys are: + - veleroImageFqin + - awsPluginImageFqin + - openshiftPluginImageFqin + - azurePluginImageFqin + - gcpPluginImageFqin + - csiPluginImageFqin + - resticRestoreImageFqin + - kubevirtPluginImageFqin + - operator-type type: object required: - configuration @@ -1011,23 +1236,35 @@ spec: properties: conditions: items: - description: "Condition contains details for one aspect of the current state of this API Resource. --- This struct is intended for direct use as an array at the field path .status.conditions. For example, \n \ttype FooStatus struct{ \t // Represents the observations of a foo's current state. \t // Known .status.conditions.type are: \"Available\", \"Progressing\", and \"Degraded\" \t // +patchMergeKey=type \t // +patchStrategy=merge \t // +listType=map \t // +listMapKey=type \t Conditions []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` \n \t // other fields \t}" + description: "Condition contains details for one aspect of the current state of this API Resource.\n---\nThis struct is intended for direct use as an array at the field path .status.conditions. For example,\n\n\n\ttype FooStatus struct{\n\t // Represents the observations of a foo's current state.\n\t // Known .status.conditions.type are: \"Available\", \"Progressing\", and \"Degraded\"\n\t // +patchMergeKey=type\n\t // +patchStrategy=merge\n\t // +listType=map\n\t // +listMapKey=type\n\t Conditions []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"`\n\n\n\t // other fields\n\t}" properties: lastTransitionTime: - description: lastTransitionTime is the last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. + description: |- + lastTransitionTime is the last time the condition transitioned from one status to another. + This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. format: date-time type: string message: - description: message is a human readable message indicating details about the transition. This may be an empty string. + description: |- + message is a human readable message indicating details about the transition. + This may be an empty string. maxLength: 32768 type: string observedGeneration: - description: observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance. + description: |- + observedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. format: int64 minimum: 0 type: integer reason: - description: reason contains a programmatic identifier indicating the reason for the condition's last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. The value should be a CamelCase string. This field may not be empty. + description: |- + reason contains a programmatic identifier indicating the reason for the condition's last transition. + Producers of specific condition types may define expected values and meanings for this field, + and whether the values are considered a guaranteed API. + The value should be a CamelCase string. + This field may not be empty. maxLength: 1024 minLength: 1 pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ @@ -1040,7 +1277,12 @@ spec: - Unknown type: string type: - description: type of condition in CamelCase or in foo.example.com/CamelCase. --- Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be useful (see .node.status.conditions), the ability to deconflict is important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) + description: |- + type of condition in CamelCase or in foo.example.com/CamelCase. + --- + Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be + useful (see .node.status.conditions), the ability to deconflict is important. + The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) maxLength: 316 pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ type: string @@ -1062,5 +1304,5 @@ status: acceptedNames: kind: "" plural: "" - conditions: [] - storedVersions: [] + conditions: null + storedVersions: null diff --git a/bundle/metadata/annotations.yaml b/bundle/metadata/annotations.yaml index 59ab5f052f5..8471379a828 100644 --- a/bundle/metadata/annotations.yaml +++ b/bundle/metadata/annotations.yaml @@ -6,7 +6,7 @@ annotations: operators.operatorframework.io.bundle.package.v1: oadp-operator operators.operatorframework.io.bundle.channels.v1: stable-1.3 operators.operatorframework.io.bundle.channel.default.v1: stable-1.3 - operators.operatorframework.io.metrics.builder: operator-sdk-v1.23.0 + operators.operatorframework.io.metrics.builder: operator-sdk-v1.34.2 operators.operatorframework.io.metrics.mediatype.v1: metrics+v1 operators.operatorframework.io.metrics.project_layout: go.kubebuilder.io/v3 diff --git a/config/crd/bases/oadp.openshift.io_cloudstorages.yaml b/config/crd/bases/oadp.openshift.io_cloudstorages.yaml index 75620e09039..c7fbad0ff05 100644 --- a/config/crd/bases/oadp.openshift.io_cloudstorages.yaml +++ b/config/crd/bases/oadp.openshift.io_cloudstorages.yaml @@ -1,11 +1,9 @@ - --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.6.1 - creationTimestamp: null + controller-gen.kubebuilder.io/version: v0.14.0 name: cloudstorages.oadp.openshift.io spec: group: oadp.openshift.io @@ -21,14 +19,19 @@ spec: openAPIV3Schema: properties: apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + description: |- + APIVersion defines the versioned schema of this representation of an object. + Servers should convert recognized schemas to the latest internal value, and + may reject unrecognized values. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources type: string kind: - description: 'Kind is a string value representing the REST resource this - object represents. Servers may infer this from the endpoint the client - submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + description: |- + Kind is a string value representing the REST resource this object represents. + Servers may infer this from the endpoint the client submits requests to. + Cannot be updated. + In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds type: string metadata: type: object @@ -43,8 +46,10 @@ spec: valid secret key. type: string name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' + description: |- + Name of the referent. + More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid? type: string optional: description: Specify whether the Secret or its key must be defined @@ -52,6 +57,7 @@ spec: required: - key type: object + x-kubernetes-map-type: atomic enableSharedConfig: description: enableSharedConfig enable the use of shared config loading for AWS Buckets @@ -94,9 +100,3 @@ spec: storage: true subresources: status: {} -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] diff --git a/config/crd/bases/oadp.openshift.io_dataprotectionapplications.yaml b/config/crd/bases/oadp.openshift.io_dataprotectionapplications.yaml index 3dde9df5b63..32dd44a1b80 100644 --- a/config/crd/bases/oadp.openshift.io_dataprotectionapplications.yaml +++ b/config/crd/bases/oadp.openshift.io_dataprotectionapplications.yaml @@ -1,9 +1,9 @@ +--- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.6.1 - creationTimestamp: null + controller-gen.kubebuilder.io/version: v0.14.0 name: dataprotectionapplications.oadp.openshift.io spec: group: oadp.openshift.io @@ -22,10 +22,19 @@ spec: description: DataProtectionApplication is the Schema for the dpa API properties: apiVersion: - description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + description: |- + APIVersion defines the versioned schema of this representation of an object. + Servers should convert recognized schemas to the latest internal value, and + may reject unrecognized values. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources type: string kind: - description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + description: |- + Kind is a string value representing the REST resource this object represents. + Servers may infer this from the endpoint the client submits requests to. + Cannot be updated. + In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds type: string metadata: type: object @@ -52,12 +61,18 @@ spec: format: byte type: string cloudStorageRef: - description: LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace. + description: |- + LocalObjectReference contains enough information to let you locate the + referenced object inside the same namespace. properties: name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + description: |- + Name of the referent. + More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid? type: string type: object + x-kubernetes-map-type: atomic config: additionalProperties: type: string @@ -70,7 +85,10 @@ spec: description: The key of the secret to select from. Must be a valid secret key. type: string name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + description: |- + Name of the referent. + More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid? type: string optional: description: Specify whether the Secret or its key must be defined @@ -78,6 +96,7 @@ spec: required: - key type: object + x-kubernetes-map-type: atomic default: description: default indicates this location is the default backup storage location. type: boolean @@ -114,7 +133,10 @@ spec: description: The key of the secret to select from. Must be a valid secret key. type: string name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + description: |- + Name of the referent. + More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid? type: string optional: description: Specify whether the Secret or its key must be defined @@ -122,6 +144,7 @@ spec: required: - key type: object + x-kubernetes-map-type: atomic default: description: Default indicates this location is the default backup storage location. type: boolean @@ -161,7 +184,9 @@ spec: description: NodeAgent is needed to allow selection between kopia or restic properties: enable: - description: enable defines a boolean pointer whether we want the daemonset to exist or not + description: |- + enable defines a boolean pointer whether we want the daemonset to + exist or not type: boolean podConfig: description: Pod specific configuration @@ -175,7 +200,16 @@ spec: description: Name of the environment variable. Must be a C_IDENTIFIER. type: string value: - description: 'Variable references $(VAR_NAME) are expanded using the previously defined environment variables in the container and any service environment variables. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless of whether the variable exists or not. Defaults to "".' + description: |- + Variable references $(VAR_NAME) are expanded + using the previously defined environment variables in the container and + any service environment variables. If a variable cannot be resolved, + the reference in the input string will be unchanged. Double $$ are reduced + to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. + "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)". + Escaped references will never be expanded, regardless of whether the variable + exists or not. + Defaults to "". type: string valueFrom: description: Source for the environment variable's value. Cannot be used if value is not empty. @@ -187,7 +221,10 @@ spec: description: The key to select. type: string name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + description: |- + Name of the referent. + More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid? type: string optional: description: Specify whether the ConfigMap or its key must be defined @@ -195,8 +232,11 @@ spec: required: - key type: object + x-kubernetes-map-type: atomic fieldRef: - description: 'Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['''']`, `metadata.annotations['''']`, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.' + description: |- + Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['']`, `metadata.annotations['']`, + spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs. properties: apiVersion: description: Version of the schema the FieldPath is written in terms of, defaults to "v1". @@ -207,8 +247,11 @@ spec: required: - fieldPath type: object + x-kubernetes-map-type: atomic resourceFieldRef: - description: 'Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.' + description: |- + Selects a resource of the container: only resources limits and requests + (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported. properties: containerName: description: 'Container name: required for volumes, optional for env vars' @@ -226,6 +269,7 @@ spec: required: - resource type: object + x-kubernetes-map-type: atomic secretKeyRef: description: Selects a key of a secret in the pod's namespace properties: @@ -233,7 +277,10 @@ spec: description: The key of the secret to select from. Must be a valid secret key. type: string name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + description: |- + Name of the referent. + More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid? type: string optional: description: Specify whether the Secret or its key must be defined @@ -241,6 +288,7 @@ spec: required: - key type: object + x-kubernetes-map-type: atomic type: object required: - name @@ -267,7 +315,9 @@ spec: - type: string pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true - description: 'Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' + description: |- + Limits describes the maximum amount of compute resources allowed. + More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ type: object requests: additionalProperties: @@ -276,29 +326,49 @@ spec: - type: string pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true - description: 'Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' + description: |- + Requests describes the minimum amount of compute resources required. + If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, + otherwise to an implementation-defined value. + More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ type: object type: object tolerations: description: tolerations defines the list of tolerations to be applied to daemonset items: - description: The pod this Toleration is attached to tolerates any taint that matches the triple using the matching operator . + description: |- + The pod this Toleration is attached to tolerates any taint that matches + the triple using the matching operator . properties: effect: - description: Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute. + description: |- + Effect indicates the taint effect to match. Empty means match all taint effects. + When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute. type: string key: - description: Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys. + description: |- + Key is the taint key that the toleration applies to. Empty means match all taint keys. + If the key is empty, operator must be Exists; this combination means to match all values and all keys. type: string operator: - description: Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category. + description: |- + Operator represents a key's relationship to the value. + Valid operators are Exists and Equal. Defaults to Equal. + Exists is equivalent to wildcard for value, so that a pod can + tolerate all taints of a particular category. type: string tolerationSeconds: - description: TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system. + description: |- + TolerationSeconds represents the period of time the toleration (which must be + of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, + it is not set, which means tolerate the taint forever (do not evict). Zero and + negative values will be treated as 0 (evict immediately) by the system. format: int64 type: integer value: - description: Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string. + description: |- + Value is the taint value the toleration matches to. + If the operator is Exists, the value should be empty, otherwise just a regular string. type: string type: object type: array @@ -322,10 +392,15 @@ spec: - uploaderType type: object restic: - description: (deprecation warning) ResticConfig is the configuration for restic DaemonSet. restic is for backwards compatibility and is replaced by the nodeAgent restic will be removed with the OADP 1.4 + description: |- + (deprecation warning) ResticConfig is the configuration for restic DaemonSet. + restic is for backwards compatibility and is replaced by the nodeAgent + restic will be removed with the OADP 1.4 properties: enable: - description: enable defines a boolean pointer whether we want the daemonset to exist or not + description: |- + enable defines a boolean pointer whether we want the daemonset to + exist or not type: boolean podConfig: description: Pod specific configuration @@ -339,7 +414,16 @@ spec: description: Name of the environment variable. Must be a C_IDENTIFIER. type: string value: - description: 'Variable references $(VAR_NAME) are expanded using the previously defined environment variables in the container and any service environment variables. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless of whether the variable exists or not. Defaults to "".' + description: |- + Variable references $(VAR_NAME) are expanded + using the previously defined environment variables in the container and + any service environment variables. If a variable cannot be resolved, + the reference in the input string will be unchanged. Double $$ are reduced + to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. + "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)". + Escaped references will never be expanded, regardless of whether the variable + exists or not. + Defaults to "". type: string valueFrom: description: Source for the environment variable's value. Cannot be used if value is not empty. @@ -351,7 +435,10 @@ spec: description: The key to select. type: string name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + description: |- + Name of the referent. + More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid? type: string optional: description: Specify whether the ConfigMap or its key must be defined @@ -359,8 +446,11 @@ spec: required: - key type: object + x-kubernetes-map-type: atomic fieldRef: - description: 'Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['''']`, `metadata.annotations['''']`, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.' + description: |- + Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['']`, `metadata.annotations['']`, + spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs. properties: apiVersion: description: Version of the schema the FieldPath is written in terms of, defaults to "v1". @@ -371,8 +461,11 @@ spec: required: - fieldPath type: object + x-kubernetes-map-type: atomic resourceFieldRef: - description: 'Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.' + description: |- + Selects a resource of the container: only resources limits and requests + (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported. properties: containerName: description: 'Container name: required for volumes, optional for env vars' @@ -390,6 +483,7 @@ spec: required: - resource type: object + x-kubernetes-map-type: atomic secretKeyRef: description: Selects a key of a secret in the pod's namespace properties: @@ -397,7 +491,10 @@ spec: description: The key of the secret to select from. Must be a valid secret key. type: string name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + description: |- + Name of the referent. + More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid? type: string optional: description: Specify whether the Secret or its key must be defined @@ -405,6 +502,7 @@ spec: required: - key type: object + x-kubernetes-map-type: atomic type: object required: - name @@ -432,7 +530,9 @@ spec: pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true nullable: true - description: 'Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' + description: |- + Limits describes the maximum amount of compute resources allowed. + More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ type: object nullable: true requests: @@ -443,30 +543,50 @@ spec: pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true nullable: true - description: 'Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' + description: |- + Requests describes the minimum amount of compute resources required. + If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, + otherwise to an implementation-defined value. + More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ type: object nullable: true type: object tolerations: description: tolerations defines the list of tolerations to be applied to daemonset items: - description: The pod this Toleration is attached to tolerates any taint that matches the triple using the matching operator . + description: |- + The pod this Toleration is attached to tolerates any taint that matches + the triple using the matching operator . properties: effect: - description: Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute. + description: |- + Effect indicates the taint effect to match. Empty means match all taint effects. + When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute. type: string key: - description: Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys. + description: |- + Key is the taint key that the toleration applies to. Empty means match all taint keys. + If the key is empty, operator must be Exists; this combination means to match all values and all keys. type: string operator: - description: Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category. + description: |- + Operator represents a key's relationship to the value. + Valid operators are Exists and Equal. Defaults to Equal. + Exists is equivalent to wildcard for value, so that a pod can + tolerate all taints of a particular category. type: string tolerationSeconds: - description: TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system. + description: |- + TolerationSeconds represents the period of time the toleration (which must be + of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, + it is not set, which means tolerate the taint forever (do not evict). Zero and + negative values will be treated as 0 (evict immediately) by the system. format: int64 type: integer value: - description: Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string. + description: |- + Value is the taint value the toleration matches to. + If the operator is Exists, the value should be empty, otherwise just a regular string. type: string type: object type: array @@ -503,7 +623,9 @@ spec: description: Page size of requests by the server to the Kubernetes API when listing objects during a backup. Set to 0 to disable paging. type: integer client-qps: - description: Maximum number of requests per second by the server to the Kubernetes API once the burst limit has been reached. this will be validated as a valid float32 + description: |- + Maximum number of requests per second by the server to the Kubernetes API once the burst limit has been reached. + this will be validated as a valid float32 type: string colorized: description: Show colored output in TTY @@ -574,7 +696,10 @@ spec: minimum: 0 type: integer logtostderr: - description: 'Boolean flags. Not handled atomically because the flag.Value interface does not let us avoid the =true, and that shorthand is necessary for compatibility. TODO: does this matter enough to fix? Seems unlikely.' + description: |- + Boolean flags. Not handled atomically because the flag.Value interface + does not let us avoid the =true, and that shorthand is necessary for + compatibility. TODO: does this matter enough to fix? Seems unlikely. type: boolean max-concurrent-k8s-connections: description: Max concurrent connections number that Velero can create with kube-apiserver. Default is 30. (default 30) @@ -690,7 +815,16 @@ spec: description: Name of the environment variable. Must be a C_IDENTIFIER. type: string value: - description: 'Variable references $(VAR_NAME) are expanded using the previously defined environment variables in the container and any service environment variables. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless of whether the variable exists or not. Defaults to "".' + description: |- + Variable references $(VAR_NAME) are expanded + using the previously defined environment variables in the container and + any service environment variables. If a variable cannot be resolved, + the reference in the input string will be unchanged. Double $$ are reduced + to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. + "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)". + Escaped references will never be expanded, regardless of whether the variable + exists or not. + Defaults to "". type: string valueFrom: description: Source for the environment variable's value. Cannot be used if value is not empty. @@ -702,7 +836,10 @@ spec: description: The key to select. type: string name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + description: |- + Name of the referent. + More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid? type: string optional: description: Specify whether the ConfigMap or its key must be defined @@ -710,8 +847,11 @@ spec: required: - key type: object + x-kubernetes-map-type: atomic fieldRef: - description: 'Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['''']`, `metadata.annotations['''']`, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.' + description: |- + Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['']`, `metadata.annotations['']`, + spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs. properties: apiVersion: description: Version of the schema the FieldPath is written in terms of, defaults to "v1". @@ -722,8 +862,11 @@ spec: required: - fieldPath type: object + x-kubernetes-map-type: atomic resourceFieldRef: - description: 'Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.' + description: |- + Selects a resource of the container: only resources limits and requests + (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported. properties: containerName: description: 'Container name: required for volumes, optional for env vars' @@ -741,6 +884,7 @@ spec: required: - resource type: object + x-kubernetes-map-type: atomic secretKeyRef: description: Selects a key of a secret in the pod's namespace properties: @@ -748,7 +892,10 @@ spec: description: The key of the secret to select from. Must be a valid secret key. type: string name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + description: |- + Name of the referent. + More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid? type: string optional: description: Specify whether the Secret or its key must be defined @@ -756,6 +903,7 @@ spec: required: - key type: object + x-kubernetes-map-type: atomic type: object required: - name @@ -783,7 +931,9 @@ spec: pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true nullable: true - description: 'Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' + description: |- + Limits describes the maximum amount of compute resources allowed. + More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ type: object nullable: true requests: @@ -794,39 +944,64 @@ spec: pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true nullable: true - description: 'Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' + description: |- + Requests describes the minimum amount of compute resources required. + If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, + otherwise to an implementation-defined value. + More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ type: object nullable: true type: object tolerations: description: tolerations defines the list of tolerations to be applied to daemonset items: - description: The pod this Toleration is attached to tolerates any taint that matches the triple using the matching operator . + description: |- + The pod this Toleration is attached to tolerates any taint that matches + the triple using the matching operator . properties: effect: - description: Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute. + description: |- + Effect indicates the taint effect to match. Empty means match all taint effects. + When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute. type: string key: - description: Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys. + description: |- + Key is the taint key that the toleration applies to. Empty means match all taint keys. + If the key is empty, operator must be Exists; this combination means to match all values and all keys. type: string operator: - description: Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category. + description: |- + Operator represents a key's relationship to the value. + Valid operators are Exists and Equal. Defaults to Equal. + Exists is equivalent to wildcard for value, so that a pod can + tolerate all taints of a particular category. type: string tolerationSeconds: - description: TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system. + description: |- + TolerationSeconds represents the period of time the toleration (which must be + of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, + it is not set, which means tolerate the taint forever (do not evict). Zero and + negative values will be treated as 0 (evict immediately) by the system. format: int64 type: integer value: - description: Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string. + description: |- + Value is the taint value the toleration matches to. + If the operator is Exists, the value should be empty, otherwise just a regular string. type: string type: object type: array type: object resourceTimeout: - description: resourceTimeout defines how long to wait for several Velero resources before timeout occurs, such as Velero CRD availability, volumeSnapshot deletion, and repo availability. Default is 10m + description: |- + resourceTimeout defines how long to wait for several Velero resources before timeout occurs, + such as Velero CRD availability, volumeSnapshot deletion, and repo availability. + Default is 10m type: string restoreResourcesVersionPriority: - description: restoreResourceVersionPriority represents a configmap that will be created if defined for use in conjunction with EnableAPIGroupVersions feature flag Defining this field automatically add EnableAPIGroupVersions to the velero server feature flag + description: |- + restoreResourceVersionPriority represents a configmap that will be created if defined for use in conjunction with EnableAPIGroupVersions feature flag + Defining this field automatically add EnableAPIGroupVersions to the velero server feature flag type: string type: object type: object @@ -834,7 +1009,10 @@ spec: description: features defines the configuration for the DPA to enable the OADP tech preview features properties: dataMover: - description: (do not use warning) Contains data mover specific configurations dataMover is for backwards compatibility and is not necessary in OADP 1.3 dataMover will be removed with the OADP 1.4 + description: |- + (do not use warning) Contains data mover specific configurations + dataMover is for backwards compatibility and is not necessary in OADP 1.3 + dataMover will be removed with the OADP 1.4 properties: credentialName: description: User supplied Restic Secret name @@ -852,7 +1030,12 @@ spec: description: defines how often (in days) to prune the datamover snapshots from the repository type: string schedule: - description: 'schedule is a cronspec (https://en.wikipedia.org/wiki/Cron#Overview) that can be used to schedule datamover(volsync) synchronization to occur at regular, time-based intervals. For example, in order to enforce datamover SnapshotRetainPolicy at a regular interval you need to specify this Schedule trigger as a cron expression, by default the trigger is a manual trigger. For more details on Volsync triggers, refer: https://volsync.readthedocs.io/en/stable/usage/triggers.html' + description: |- + schedule is a cronspec (https://en.wikipedia.org/wiki/Cron#Overview) that + can be used to schedule datamover(volsync) synchronization to occur at regular, time-based + intervals. For example, in order to enforce datamover SnapshotRetainPolicy at a regular interval you need to + specify this Schedule trigger as a cron expression, by default the trigger is a manual trigger. For more details + on Volsync triggers, refer: https://volsync.readthedocs.io/en/stable/usage/triggers.html pattern: ^(\d+|\*)(/\d+)?(\s+(\d+|\*)(/\d+)?){4}$ type: string snapshotRetainPolicy: @@ -887,7 +1070,9 @@ spec: description: VolumeOptions defines configurations for VolSync options properties: accessMode: - description: accessMode can be used to override the accessMode of the source or destination PVC + description: |- + accessMode can be used to override the accessMode of the source or + destination PVC type: string cacheAccessMode: description: cacheAccessMode is the access mode to be used to provision the cache volume @@ -896,17 +1081,23 @@ spec: description: cacheCapacity determines the size of the restic metadata cache volume type: string cacheStorageClassName: - description: cacheStorageClassName is the storageClass that should be used when provisioning the data mover cache volume + description: |- + cacheStorageClassName is the storageClass that should be used when provisioning + the data mover cache volume type: string storageClassName: - description: storageClassName can be used to override the StorageClass of the source or destination PVC + description: |- + storageClassName can be used to override the StorageClass of the source + or destination PVC type: string type: object sourceVolumeOptions: description: VolumeOptions defines configurations for VolSync options properties: accessMode: - description: accessMode can be used to override the accessMode of the source or destination PVC + description: |- + accessMode can be used to override the accessMode of the source or + destination PVC type: string cacheAccessMode: description: cacheAccessMode is the access mode to be used to provision the cache volume @@ -915,10 +1106,14 @@ spec: description: cacheCapacity determines the size of the restic metadata cache volume type: string cacheStorageClassName: - description: cacheStorageClassName is the storageClass that should be used when provisioning the data mover cache volume + description: |- + cacheStorageClassName is the storageClass that should be used when provisioning + the data mover cache volume type: string storageClassName: - description: storageClassName can be used to override the StorageClass of the source or destination PVC + description: |- + storageClassName can be used to override the StorageClass of the source + or destination PVC type: string type: object type: object @@ -932,15 +1127,25 @@ spec: description: add annotations to pods deployed by operator type: object podDnsConfig: - description: podDnsConfig defines the DNS parameters of a pod in addition to those generated from DNSPolicy. https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/#pod-dns-config + description: |- + podDnsConfig defines the DNS parameters of a pod in addition to + those generated from DNSPolicy. + https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/#pod-dns-config properties: nameservers: - description: A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed. + description: |- + A list of DNS name server IP addresses. + This will be appended to the base nameservers generated from DNSPolicy. + Duplicated nameservers will be removed. items: type: string type: array options: - description: A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy. + description: |- + A list of DNS resolver options. + This will be merged with the base options generated from DNSPolicy. + Duplicated entries will be removed. Resolution options given in Options + will override those that appear in the base DNSPolicy. items: description: PodDNSConfigOption defines DNS resolver options of a pod. properties: @@ -952,13 +1157,18 @@ spec: type: object type: array searches: - description: A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed. + description: |- + A list of DNS search domains for host-name lookup. + This will be appended to the base search paths generated from DNSPolicy. + Duplicated search paths will be removed. items: type: string type: array type: object podDnsPolicy: - description: podDnsPolicy defines how a pod's DNS will be configured. https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/#pod-s-dns-policy + description: |- + podDnsPolicy defines how a pod's DNS will be configured. + https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/#pod-s-dns-policy type: string snapshotLocations: description: snapshotLocations defines the list of desired configuration to use for VolumeSnapshotLocations @@ -980,7 +1190,10 @@ spec: description: The key of the secret to select from. Must be a valid secret key. type: string name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + description: |- + Name of the referent. + More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid? type: string optional: description: Specify whether the Secret or its key must be defined @@ -988,6 +1201,7 @@ spec: required: - key type: object + x-kubernetes-map-type: atomic provider: description: Provider is the provider of the volume storage. type: string @@ -1001,7 +1215,18 @@ spec: unsupportedOverrides: additionalProperties: type: string - description: 'unsupportedOverrides can be used to override images used in deployments. Available keys are: - veleroImageFqin - awsPluginImageFqin - openshiftPluginImageFqin - azurePluginImageFqin - gcpPluginImageFqin - csiPluginImageFqin - resticRestoreImageFqin - kubevirtPluginImageFqin - operator-type' + description: |- + unsupportedOverrides can be used to override images used in deployments. + Available keys are: + - veleroImageFqin + - awsPluginImageFqin + - openshiftPluginImageFqin + - azurePluginImageFqin + - gcpPluginImageFqin + - csiPluginImageFqin + - resticRestoreImageFqin + - kubevirtPluginImageFqin + - operator-type type: object required: - configuration @@ -1011,23 +1236,35 @@ spec: properties: conditions: items: - description: "Condition contains details for one aspect of the current state of this API Resource. --- This struct is intended for direct use as an array at the field path .status.conditions. For example, \n \ttype FooStatus struct{ \t // Represents the observations of a foo's current state. \t // Known .status.conditions.type are: \"Available\", \"Progressing\", and \"Degraded\" \t // +patchMergeKey=type \t // +patchStrategy=merge \t // +listType=map \t // +listMapKey=type \t Conditions []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` \n \t // other fields \t}" + description: "Condition contains details for one aspect of the current state of this API Resource.\n---\nThis struct is intended for direct use as an array at the field path .status.conditions. For example,\n\n\n\ttype FooStatus struct{\n\t // Represents the observations of a foo's current state.\n\t // Known .status.conditions.type are: \"Available\", \"Progressing\", and \"Degraded\"\n\t // +patchMergeKey=type\n\t // +patchStrategy=merge\n\t // +listType=map\n\t // +listMapKey=type\n\t Conditions []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"`\n\n\n\t // other fields\n\t}" properties: lastTransitionTime: - description: lastTransitionTime is the last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. + description: |- + lastTransitionTime is the last time the condition transitioned from one status to another. + This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. format: date-time type: string message: - description: message is a human readable message indicating details about the transition. This may be an empty string. + description: |- + message is a human readable message indicating details about the transition. + This may be an empty string. maxLength: 32768 type: string observedGeneration: - description: observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance. + description: |- + observedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. format: int64 minimum: 0 type: integer reason: - description: reason contains a programmatic identifier indicating the reason for the condition's last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. The value should be a CamelCase string. This field may not be empty. + description: |- + reason contains a programmatic identifier indicating the reason for the condition's last transition. + Producers of specific condition types may define expected values and meanings for this field, + and whether the values are considered a guaranteed API. + The value should be a CamelCase string. + This field may not be empty. maxLength: 1024 minLength: 1 pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ @@ -1040,7 +1277,12 @@ spec: - Unknown type: string type: - description: type of condition in CamelCase or in foo.example.com/CamelCase. --- Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be useful (see .node.status.conditions), the ability to deconflict is important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) + description: |- + type of condition in CamelCase or in foo.example.com/CamelCase. + --- + Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be + useful (see .node.status.conditions), the ability to deconflict is important. + The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) maxLength: 316 pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ type: string @@ -1058,9 +1300,3 @@ spec: storage: true subresources: status: {} -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] diff --git a/pkg/klog/zz_generated.deepcopy.go b/pkg/klog/zz_generated.deepcopy.go index 54abd9feb94..f5a84381635 100644 --- a/pkg/klog/zz_generated.deepcopy.go +++ b/pkg/klog/zz_generated.deepcopy.go @@ -1,5 +1,4 @@ //go:build !ignore_autogenerated -// +build !ignore_autogenerated /* Copyright 2021. diff --git a/pkg/velero/client/zz_generated.deepcopy.go b/pkg/velero/client/zz_generated.deepcopy.go index 75a8a9e82c9..3da1b7d81d8 100644 --- a/pkg/velero/client/zz_generated.deepcopy.go +++ b/pkg/velero/client/zz_generated.deepcopy.go @@ -1,5 +1,4 @@ //go:build !ignore_autogenerated -// +build !ignore_autogenerated /* Copyright 2021. diff --git a/pkg/velero/server/zz_generated.deepcopy.go b/pkg/velero/server/zz_generated.deepcopy.go index 8ec36935673..ee9291ec0cf 100644 --- a/pkg/velero/server/zz_generated.deepcopy.go +++ b/pkg/velero/server/zz_generated.deepcopy.go @@ -1,5 +1,4 @@ //go:build !ignore_autogenerated -// +build !ignore_autogenerated /* Copyright 2021. From d19f956b56a7bf8c8a2c08bf0f56ba212a072f45 Mon Sep 17 00:00:00 2001 From: Mateus Oliveira Date: Fri, 26 Jul 2024 10:19:01 -0300 Subject: [PATCH 2/3] fix: make deploy-olm on ARM clusters Signed-off-by: Mateus Oliveira Signed-off-by: Tiger Kaovilai --- Dockerfile | 6 ++++-- Makefile | 8 ++++++-- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/Dockerfile b/Dockerfile index 54e4a62c37e..404ab6deaea 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,7 @@ # Build the manager binary -FROM quay.io/konveyor/builder:ubi9-v1.20 AS builder +FROM --platform=${BUILDPLATFORM} quay.io/konveyor/builder:ubi9-v1.20 AS builder +ARG TARGETOS +ARG TARGETARCH WORKDIR /go/src/github.com/openshift/oadp-operator # Copy the Go Modules manifests @@ -16,7 +18,7 @@ COPY pkg/ pkg/ COPY controllers/ controllers/ # Build -RUN CGO_ENABLED=0 GOOS=linux go build -mod=mod -a -o /go/src/manager main.go +RUN CGO_ENABLED=0 GOOS=${TARGETOS:-linux} GOARCH=${TARGETARCH} go build -mod=mod -a -o /go/src/manager main.go # Use distroless as minimal base image to package the manager binary # Refer to https://github.com/GoogleContainerTools/distroless for more details diff --git a/Makefile b/Makefile index 7464f9efbe9..8157b58bf39 100644 --- a/Makefile +++ b/Makefile @@ -39,6 +39,8 @@ endif # makes CLUSTER_TYPE quieter when unauthenticated CLUSTER_TYPE_SHELL := $(shell $(OC_CLI) get infrastructures cluster -o jsonpath='{.status.platform}' 2> /dev/null | tr A-Z a-z) CLUSTER_TYPE ?= $(CLUSTER_TYPE_SHELL) +CLUSTER_OS = $(shell $(OC_CLI) get node -o jsonpath='{.items[0].status.nodeInfo.operatingSystem}' 2> /dev/null) +CLUSTER_ARCH = $(shell $(OC_CLI) get node -o jsonpath='{.items[0].status.nodeInfo.architecture}' 2> /dev/null) ifeq ($(CLUSTER_TYPE), gcp) CI_CRED_FILE = ${CLUSTER_PROFILE_DIR}/gce.json @@ -165,6 +167,7 @@ vet: ## Run go vet against code. ENVTEST := $(shell pwd)/bin/setup-envtest ENVTESTPATH = $(shell $(ENVTEST) use $(ENVTEST_K8S_VERSION) -p path) ifeq ($(shell $(ENVTEST) list | grep $(ENVTEST_K8S_VERSION)),) +# TODO what --arch=amd64 does here? ENVTESTPATH = $(shell $(ENVTEST) --arch=amd64 use $(ENVTEST_K8S_VERSION) -p path) endif $(ENVTEST): ## Download envtest-setup locally if necessary. @@ -213,13 +216,14 @@ build: generate fmt vet ## Build manager binary. run: manifests generate fmt vet ## Run a controller from your host. go run ./main.go -# Development clusters require linux/amd64 OCI image -# Set platform to linux/amd64 regardless of host platform. # If using podman machine, and host platform is not linux/amd64 run # - podman machine ssh sudo rpm-ostree install qemu-user-static && sudo systemctl reboot # from: https://github.com/containers/podman/issues/12144#issuecomment-955760527 # related enhancements that may remove the need to manually install qemu-user-static https://bugzilla.redhat.com/show_bug.cgi?id=2061584 DOCKER_BUILD_ARGS ?= --platform=linux/amd64 +ifneq ($(CLUSTER_TYPE),) + DOCKER_BUILD_ARGS = --platform=$(CLUSTER_OS)/$(CLUSTER_ARCH) +endif docker-build: ## Build docker image with the manager. docker build -t $(IMG) . $(DOCKER_BUILD_ARGS) From 9fa02514f994d607a932c23d35046f14f7db7af2 Mon Sep 17 00:00:00 2001 From: Tiger Kaovilai Date: Mon, 30 Sep 2024 22:39:41 -0400 Subject: [PATCH 3/3] operator-sdk v1.31.0 Signed-off-by: Tiger Kaovilai --- build/Dockerfile.bundle | 2 +- bundle.Dockerfile | 2 +- bundle/manifests/oadp-operator.clusterserviceversion.yaml | 2 +- bundle/metadata/annotations.yaml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/build/Dockerfile.bundle b/build/Dockerfile.bundle index efc0abc365c..7d9fcbdcc40 100644 --- a/build/Dockerfile.bundle +++ b/build/Dockerfile.bundle @@ -7,7 +7,7 @@ LABEL operators.operatorframework.io.bundle.metadata.v1=metadata/ LABEL operators.operatorframework.io.bundle.package.v1=oadp-operator LABEL operators.operatorframework.io.bundle.channels.v1=stable-1.3 LABEL operators.operatorframework.io.bundle.channel.default.v1=stable-1.3 -LABEL operators.operatorframework.io.metrics.builder=operator-sdk-v1.34.2 +LABEL operators.operatorframework.io.metrics.builder=operator-sdk-v1.31.0 LABEL operators.operatorframework.io.metrics.mediatype.v1=metrics+v1 LABEL operators.operatorframework.io.metrics.project_layout=go.kubebuilder.io/v3 diff --git a/bundle.Dockerfile b/bundle.Dockerfile index efc0abc365c..7d9fcbdcc40 100644 --- a/bundle.Dockerfile +++ b/bundle.Dockerfile @@ -7,7 +7,7 @@ LABEL operators.operatorframework.io.bundle.metadata.v1=metadata/ LABEL operators.operatorframework.io.bundle.package.v1=oadp-operator LABEL operators.operatorframework.io.bundle.channels.v1=stable-1.3 LABEL operators.operatorframework.io.bundle.channel.default.v1=stable-1.3 -LABEL operators.operatorframework.io.metrics.builder=operator-sdk-v1.34.2 +LABEL operators.operatorframework.io.metrics.builder=operator-sdk-v1.31.0 LABEL operators.operatorframework.io.metrics.mediatype.v1=metrics+v1 LABEL operators.operatorframework.io.metrics.project_layout=go.kubebuilder.io/v3 diff --git a/bundle/manifests/oadp-operator.clusterserviceversion.yaml b/bundle/manifests/oadp-operator.clusterserviceversion.yaml index 68b95d02ab4..38bf98472ed 100644 --- a/bundle/manifests/oadp-operator.clusterserviceversion.yaml +++ b/bundle/manifests/oadp-operator.clusterserviceversion.yaml @@ -172,7 +172,7 @@ metadata: operators.openshift.io/infrastructure-features: '["Disconnected"]' operators.openshift.io/valid-subscription: '["OpenShift Kubernetes Engine", "OpenShift Container Platform", "OpenShift Platform Plus"]' - operators.operatorframework.io/builder: operator-sdk-v1.34.2 + operators.operatorframework.io/builder: operator-sdk-v1.31.0 operators.operatorframework.io/project_layout: go.kubebuilder.io/v3 repository: https://github.com/openshift/oadp-operator support: Red Hat diff --git a/bundle/metadata/annotations.yaml b/bundle/metadata/annotations.yaml index 8471379a828..0ad5d029899 100644 --- a/bundle/metadata/annotations.yaml +++ b/bundle/metadata/annotations.yaml @@ -6,7 +6,7 @@ annotations: operators.operatorframework.io.bundle.package.v1: oadp-operator operators.operatorframework.io.bundle.channels.v1: stable-1.3 operators.operatorframework.io.bundle.channel.default.v1: stable-1.3 - operators.operatorframework.io.metrics.builder: operator-sdk-v1.34.2 + operators.operatorframework.io.metrics.builder: operator-sdk-v1.31.0 operators.operatorframework.io.metrics.mediatype.v1: metrics+v1 operators.operatorframework.io.metrics.project_layout: go.kubebuilder.io/v3