diff --git a/.circleci/continue_config.yml b/.circleci/continue_config.yml index 295f2428e..9f2dae5fd 100644 --- a/.circleci/continue_config.yml +++ b/.circleci/continue_config.yml @@ -16,7 +16,7 @@ parameters: executors: golang-executor: docker: - - image: gcr.io/gcr-for-testing/golang:1.21.8 + - image: gcr.io/gcr-for-testing/golang:1.22.2 machine-executor: machine: image: ubuntu-2204:current diff --git a/.golangci.yaml b/.golangci.yaml index aed60e541..414b5ed1e 100644 --- a/.golangci.yaml +++ b/.golangci.yaml @@ -61,6 +61,10 @@ linters-settings: alias: mlSharedTests - pkg: github.com/arangodb/kube-arangodb/pkg/apis/ml/v1alpha1 alias: mlApi + - pkg: github.com/arangodb/kube-arangodb/integrations/scheduler/v1/definition + alias: pbSchedulerV1 + - pkg: github.com/arangodb/kube-arangodb/integrations/scheduler/v1 + alias: pbImplSchedulerV1 - pkg: github.com/arangodb/kube-arangodb/integrations/shutdown/v1/definition alias: pbShutdownV1 - pkg: github.com/arangodb/kube-arangodb/integrations/shutdown/v1 diff --git a/CHANGELOG.md b/CHANGELOG.md index c9ae5f056..8d7be6442 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,31 @@ ## [master](https://github.com/arangodb/kube-arangodb/tree/master) (N/A) +## [1.2.40](https://github.com/arangodb/kube-arangodb/tree/1.2.40) (2024-04-10) +- (Feature) Add Core fields to the Scheduler Container Spec +- (Feature) Add Metadata fields to the Scheduler Pod Spec +- (Feature) Extend Backup Details in DebugPackage +- (Feature) (ML) Use Scheduler API +- (Feature) (Scheduler) Introduce Scheduler CRD +- (Feature) Discover Namespace in DebugPackage from K8S +- (Feature) Expose Force CRD Install option +- (Maintenance) Move Container utils functions +- (Feature) ArangoProfile Selectors +- (Bugfix) Remove ImagePullSecrets Reference from Container +- (Feature) DebugPackage ArangoProfiles +- (Feature) Scheduler CLI +- (Feature) Parametrize ForceDelete timeout +- (Feature) Scheduler BatchJob Integration Definition +- (Feature) Scheduler CronJob Integration Definition +- (Feature) Scheduler BatchJob Integration Service +- (Maintenance) Update Go to 1.22.2 +- (Feature) Object Checksum +- (Bugfix) Use Rendered Spec in case of scheduling compare +- (Feature) Parametrize Scheduling Graceful Duration +- (Bugfix) Change Accepted Spec Propagation +- (Bugfix) Pass SecurityContext Pod Settings for SELinux and Seccomp +- (Feature) Add ScheduleSpecChanged Condition + ## [1.2.39](https://github.com/arangodb/kube-arangodb/tree/1.2.39) (2024-03-11) - (Feature) Extract Scheduler API - (Bugfix) Fix Image Discovery diff --git a/Makefile b/Makefile index 7d9bfc2d1..74a34e9c2 100644 --- a/Makefile +++ b/Makefile @@ -48,7 +48,7 @@ endif TEST_BUILD ?= 0 GOBUILDARGS ?= -GOBASEVERSION := 1.21.8 +GOBASEVERSION := 1.22.2 GOVERSION := $(GOBASEVERSION)-alpine3.18 DISTRIBUTION := alpine:3.15 GOCOMPAT := $(shell sed -En 's/^go (.*)$$/\1/p' go.mod) @@ -317,7 +317,7 @@ license-range: fmt: @echo ">> Ensuring style of files" @$(GOPATH)/bin/goimports -w $(SOURCES) - @$(GOPATH)/bin/gci write -s "standard" -s "default" -s "prefix(github.com/arangodb)" -s "prefix(github.com/arangodb/kube-arangodb)" $(SOURCES) + @$(GOPATH)/bin/gci write -s "standard" -s "default" -s "prefix(github.com/arangodb)" -s "prefix(github.com/arangodb/kube-arangodb)" $(SOURCES) .PHONY: yamlfmt yamlfmt: @@ -337,7 +337,7 @@ license: .PHONY: fmt-verify fmt-verify: license-verify @echo ">> Verify files style" - @if [ X"$$($(GOPATH)/bin/goimports -l $(SOURCES) | wc -l)" != X"0" ]; then echo ">> Style errors"; $(GOPATH)/bin/goimports -l $(SOURCES); exit 1; fi + @if $(GOPATH)/bin/goimports -l $(SOURCES) | grep -v "^$$"; then echo ">> Style errors"; exit 1; fi .PHONY: linter linter: @@ -729,7 +729,7 @@ tools-min: update-vendor @echo ">> Fetching golangci-lint linter" @GOBIN=$(GOPATH)/bin go install github.com/golangci/golangci-lint/cmd/golangci-lint@v1.56.2 @echo ">> Fetching goimports" - @GOBIN=$(GOPATH)/bin go install golang.org/x/tools/cmd/goimports@0bb7e5c47b1a31f85d4f173edc878a8e049764a5 + @GOBIN=$(GOPATH)/bin go install golang.org/x/tools/cmd/goimports@v0.19.0 @echo ">> Fetching license check" @GOBIN=$(GOPATH)/bin go install github.com/google/addlicense@6d92264d717064f28b32464f0f9693a5b4ef0239 @echo ">> Fetching yamlfmt" @@ -752,7 +752,7 @@ tools: tools-min @GOBIN=$(GOPATH)/bin go install github.com/golang/protobuf/protoc-gen-go@v1.5.2 @GOBIN=$(GOPATH)/bin go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@v1.2 @echo ">> Fetching govulncheck" - @GOBIN=$(GOPATH)/bin go install golang.org/x/vuln/cmd/govulncheck@v0.1.0 + @GOBIN=$(GOPATH)/bin go install golang.org/x/vuln/cmd/govulncheck@v1.0.4 .PHONY: vendor vendor: @@ -856,7 +856,8 @@ CRDS:=apps-job \ backups-backup backups-backuppolicy \ database-clustersynchronization database-deployment database-member database-task \ replication-deploymentreplication \ - ml-storage ml-extension ml-job-batch ml-job-cron + ml-storage ml-extension ml-job-batch ml-job-cron \ + scheduler-profile .PHONY: sync-crds sync-crds: diff --git a/README.md b/README.md index b05a5a8ac..ec38fb9a0 100644 --- a/README.md +++ b/README.md @@ -168,7 +168,7 @@ Flags: --kubernetes.max-batch-size int Size of batch during objects read (default 256) --kubernetes.qps float32 Number of queries per second for k8s API (default 15) --log.format string Set log format. Allowed values: 'pretty', 'JSON'. If empty, default format is used (default "pretty") - --log.level stringArray Set log levels in format or =. Possible loggers: action, agency, api-server, assertion, backup-operator, chaos-monkey, crd, deployment, deployment-ci, deployment-reconcile, deployment-replication, deployment-resilience, deployment-resources, deployment-storage, deployment-storage-pc, deployment-storage-service, http, inspector, integrations, k8s-client, ml-batchjob-operator, ml-cronjob-operator, ml-extension-operator, ml-extension-shutdown, ml-storage-operator, monitor, operator, operator-arangojob-handler, operator-v2, operator-v2-event, operator-v2-worker, panics, pod_compare, root, root-event-recorder, server, server-authentication (default [info]) + --log.level stringArray Set log levels in format or =. Possible loggers: action, agency, api-server, assertion, backup-operator, chaos-monkey, crd, deployment, deployment-ci, deployment-reconcile, deployment-replication, deployment-resilience, deployment-resources, deployment-storage, deployment-storage-pc, deployment-storage-service, http, inspector, integrations, k8s-client, ml-batchjob-operator, ml-cronjob-operator, ml-extension-operator, ml-extension-shutdown, ml-storage-operator, monitor, operator, operator-arangojob-handler, operator-v2, operator-v2-event, operator-v2-worker, panics, pod_compare, root, root-event-recorder, scheduler, server, server-authentication (default [info]) --log.sampling If true, operator will try to minimize duplication of logging events (default true) --memory-limit uint Define memory limit for hard shutdown and the dump of goroutines. Used for testing --metrics.excluded-prefixes stringArray List of the excluded metrics prefixes @@ -196,7 +196,9 @@ Flags: --timeout.arangod-check duration The version check request timeout to the ArangoDB (default 2s) --timeout.backup-arangod duration The request timeout to the ArangoDB during backup calls (default 30s) --timeout.backup-upload duration The request timeout to the ArangoDB during uploading files (default 5m0s) + --timeout.force-delete-pod-grace-period duration Default period when ArangoDB Pod should be forcefully removed after all containers were stopped - set to 0 to disable forceful removals (default 15m0s) --timeout.k8s duration The request timeout to the kubernetes (default 2s) + --timeout.pod-scheduling-grace-period duration Default period when ArangoDB Pod should be deleted in case of scheduling info change - set to 0 to disable (default 15s) --timeout.reconciliation duration The reconciliation timeout to the ArangoDB CR (default 1m0s) --timeout.shard-rebuild duration Timeout after which particular out-synced shard is considered as failed and rebuild is triggered (default 1h0m0s) --timeout.shard-rebuild-retry duration Timeout after which rebuild shards retry flow is triggered (default 4h0m0s) @@ -205,8 +207,8 @@ Flags: ## Installation and Usage Docker images: -- Community Edition: `arangodb/kube-arangodb:1.2.39` -- Enterprise Edition: `arangodb/kube-arangodb-enterprise:1.2.39` +- Community Edition: `arangodb/kube-arangodb:1.2.40` +- Enterprise Edition: `arangodb/kube-arangodb-enterprise:1.2.40` ### Installation of latest release using Kubectl @@ -215,22 +217,22 @@ running ArangoDB deployments. ##### Community Edition ```bash -kubectl apply -f https://raw.githubusercontent.com/arangodb/kube-arangodb/1.2.39/manifests/arango-crd.yaml -kubectl apply -f https://raw.githubusercontent.com/arangodb/kube-arangodb/1.2.39/manifests/arango-deployment.yaml +kubectl apply -f https://raw.githubusercontent.com/arangodb/kube-arangodb/1.2.40/manifests/arango-crd.yaml +kubectl apply -f https://raw.githubusercontent.com/arangodb/kube-arangodb/1.2.40/manifests/arango-deployment.yaml # To use `ArangoLocalStorage`, also run -kubectl apply -f https://raw.githubusercontent.com/arangodb/kube-arangodb/1.2.39/manifests/arango-storage.yaml +kubectl apply -f https://raw.githubusercontent.com/arangodb/kube-arangodb/1.2.40/manifests/arango-storage.yaml # To use `ArangoDeploymentReplication`, also run -kubectl apply -f https://raw.githubusercontent.com/arangodb/kube-arangodb/1.2.39/manifests/arango-deployment-replication.yaml +kubectl apply -f https://raw.githubusercontent.com/arangodb/kube-arangodb/1.2.40/manifests/arango-deployment-replication.yaml ``` ##### Enterprise Edition ```bash -kubectl apply -f https://raw.githubusercontent.com/arangodb/kube-arangodb/1.2.39/manifests/enterprise-crd.yaml -kubectl apply -f https://raw.githubusercontent.com/arangodb/kube-arangodb/1.2.39/manifests/enterprise-deployment.yaml +kubectl apply -f https://raw.githubusercontent.com/arangodb/kube-arangodb/1.2.40/manifests/enterprise-crd.yaml +kubectl apply -f https://raw.githubusercontent.com/arangodb/kube-arangodb/1.2.40/manifests/enterprise-deployment.yaml # To use `ArangoLocalStorage`, also run -kubectl apply -f https://raw.githubusercontent.com/arangodb/kube-arangodb/1.2.39/manifests/enterprise-storage.yaml +kubectl apply -f https://raw.githubusercontent.com/arangodb/kube-arangodb/1.2.40/manifests/enterprise-storage.yaml # To use `ArangoDeploymentReplication`, also run -kubectl apply -f https://raw.githubusercontent.com/arangodb/kube-arangodb/1.2.39/manifests/enterprise-deployment-replication.yaml +kubectl apply -f https://raw.githubusercontent.com/arangodb/kube-arangodb/1.2.40/manifests/enterprise-deployment-replication.yaml ``` ### Installation of latest release using kustomize @@ -270,17 +272,17 @@ Only use this procedure for clean installation of the operator. For upgrades see ##### Community Edition ```bash # The following will install the operator and basic CRDs resources. -helm install --generate-name https://github.com/arangodb/kube-arangodb/releases/download/1.2.39/kube-arangodb-1.2.39.tgz +helm install --generate-name https://github.com/arangodb/kube-arangodb/releases/download/1.2.40/kube-arangodb-1.2.40.tgz # To use `ArangoLocalStorage`, set field `operator.features.storage` to true -helm install --generate-name https://github.com/arangodb/kube-arangodb/releases/download/1.2.39/kube-arangodb-1.2.39.tgz --set "operator.features.storage=true" +helm install --generate-name https://github.com/arangodb/kube-arangodb/releases/download/1.2.40/kube-arangodb-1.2.40.tgz --set "operator.features.storage=true" ``` ##### Enterprise Edition ```bash # The following will install the operator and basic CRDs resources. -helm install --generate-name https://github.com/arangodb/kube-arangodb/releases/download/1.2.39/kube-arangodb-1.2.39.tgz --set "operator.image=arangodb/kube-arangodb-enterprise:1.2.39" +helm install --generate-name https://github.com/arangodb/kube-arangodb/releases/download/1.2.40/kube-arangodb-1.2.40.tgz --set "operator.image=arangodb/kube-arangodb-enterprise:1.2.40" # To use `ArangoLocalStorage`, set field `operator.features.storage` to true -helm install --generate-name https://github.com/arangodb/kube-arangodb/releases/download/1.2.39/kube-arangodb-1.2.39.tgz --set "operator.image=arangodb/kube-arangodb-enterprise:1.2.39" --set "operator.features.storage=true" +helm install --generate-name https://github.com/arangodb/kube-arangodb/releases/download/1.2.40/kube-arangodb-1.2.40.tgz --set "operator.image=arangodb/kube-arangodb-enterprise:1.2.40" --set "operator.features.storage=true" ``` ### Upgrading the operator using Helm @@ -309,17 +311,17 @@ Then you can install the new version with `helm install` as normal: ##### Community Edition ```bash # The following will install the operator and basic CRDs resources. -helm install --generate-name https://github.com/arangodb/kube-arangodb/releases/download/1.2.39/kube-arangodb-1.2.39.tgz +helm install --generate-name https://github.com/arangodb/kube-arangodb/releases/download/1.2.40/kube-arangodb-1.2.40.tgz # To use `ArangoLocalStorage`, set field `operator.features.storage` to true -helm install --generate-name https://github.com/arangodb/kube-arangodb/releases/download/1.2.39/kube-arangodb-1.2.39.tgz --set "operator.features.storage=true" +helm install --generate-name https://github.com/arangodb/kube-arangodb/releases/download/1.2.40/kube-arangodb-1.2.40.tgz --set "operator.features.storage=true" ``` ##### Enterprise Edition ```bash # The following will install the operator and basic CRDs resources. -helm install --generate-name https://github.com/arangodb/kube-arangodb/releases/download/1.2.39/kube-arangodb-1.2.39.tgz --set "operator.image=arangodb/kube-arangodb-enterprise:1.2.39" +helm install --generate-name https://github.com/arangodb/kube-arangodb/releases/download/1.2.40/kube-arangodb-1.2.40.tgz --set "operator.image=arangodb/kube-arangodb-enterprise:1.2.40" # To use `ArangoLocalStorage`, set field `operator.features.storage` to true -helm install --generate-name https://github.com/arangodb/kube-arangodb/releases/download/1.2.39/kube-arangodb-1.2.39.tgz --set "operator.image=arangodb/kube-arangodb-enterprise:1.2.39" --set "operator.features.storage=true" +helm install --generate-name https://github.com/arangodb/kube-arangodb/releases/download/1.2.40/kube-arangodb-1.2.40.tgz --set "operator.image=arangodb/kube-arangodb-enterprise:1.2.40" --set "operator.features.storage=true" ``` ## Building diff --git a/VERSION b/VERSION index 84da4213b..8bd7d689a 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.2.39 \ No newline at end of file +1.2.40 \ No newline at end of file diff --git a/chart/kube-arangodb-crd/Chart.yaml b/chart/kube-arangodb-crd/Chart.yaml index f17b0ce17..92c5aa00e 100644 --- a/chart/kube-arangodb-crd/Chart.yaml +++ b/chart/kube-arangodb-crd/Chart.yaml @@ -1,5 +1,5 @@ name: kube-arangodb-crd -version: 1.2.39 +version: 1.2.40 description: "ArangoDB Kubernetes Custom Resource Definitions (Deprecated)" tillerVersion: ">2.7" appVersion: 3.5.0 diff --git a/chart/kube-arangodb/Chart.yaml b/chart/kube-arangodb/Chart.yaml index 861abc830..c6773f58c 100644 --- a/chart/kube-arangodb/Chart.yaml +++ b/chart/kube-arangodb/Chart.yaml @@ -1,5 +1,5 @@ # do not switch to V2 yet - we still need to support Helm 2 apiVersion: v1 name: kube-arangodb -version: 1.2.39 +version: 1.2.40 description: "ArangoDB Kubernetes Operator" diff --git a/chart/kube-arangodb/crds/scheduler-profile.yaml b/chart/kube-arangodb/crds/scheduler-profile.yaml new file mode 100644 index 000000000..685448169 --- /dev/null +++ b/chart/kube-arangodb/crds/scheduler-profile.yaml @@ -0,0 +1,22 @@ +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + name: arangoprofiles.scheduler.arangodb.com +spec: + group: scheduler.arangodb.com + names: + kind: ArangoProfile + listKind: ArangoProfileList + plural: arangoprofiles + singular: arangoprofile + scope: Namespaced + versions: + - name: v1alpha1 + schema: + openAPIV3Schema: + type: object + x-kubernetes-preserve-unknown-fields: true + served: true + storage: true + subresources: + status: {} diff --git a/chart/kube-arangodb/templates/ml-operator/role.yaml b/chart/kube-arangodb/templates/ml-operator/role.yaml index 9c1bfc8f9..bc628afa4 100644 --- a/chart/kube-arangodb/templates/ml-operator/role.yaml +++ b/chart/kube-arangodb/templates/ml-operator/role.yaml @@ -26,6 +26,13 @@ rules: - "arangomlstorages/status" verbs: - "*" + - apiGroups: + - "scheduler.arangodb.com" + resources: + - "arangoprofiles" + - "arangoprofiles/status" + verbs: + - "*" - apiGroups: - "database.arangodb.com" resources: diff --git a/chart/kube-arangodb/values.yaml b/chart/kube-arangodb/values.yaml index 466ab549c..f8870e155 100644 --- a/chart/kube-arangodb/values.yaml +++ b/chart/kube-arangodb/values.yaml @@ -1,5 +1,5 @@ operator: - image: arangodb/kube-arangodb:1.2.39 + image: arangodb/kube-arangodb:1.2.40 imagePullPolicy: IfNotPresent imagePullSecrets: [] scope: legacy diff --git a/cmd/cmd.go b/cmd/cmd.go index bf85f80dd..f77d3d35f 100644 --- a/cmd/cmd.go +++ b/cmd/cmd.go @@ -75,7 +75,6 @@ const ( defaultServerPort = 8528 defaultAPIHTTPPort = 8628 defaultAPIGRPCPort = 8728 - defaultLogLevel = "info" defaultAdminSecretName = "arangodb-operator-dashboard" defaultAPIJWTSecretName = "arangodb-operator-api-jwt" defaultAPIJWTKeySecretName = "arangodb-operator-api-jwt-key" @@ -96,9 +95,6 @@ var ( hardLimit uint64 } - logFormat string - logLevels []string - logSampling bool serverOptions struct { host string port int @@ -151,15 +147,17 @@ var ( concurrentUploads int } operatorTimeouts struct { - k8s time.Duration - arangoD time.Duration - arangoDCheck time.Duration - reconciliation time.Duration - agency time.Duration - shardRebuild time.Duration - shardRebuildRetry time.Duration - backupArangoD time.Duration - backupUploadArangoD time.Duration + k8s time.Duration + arangoD time.Duration + arangoDCheck time.Duration + reconciliation time.Duration + agency time.Duration + shardRebuild time.Duration + shardRebuildRetry time.Duration + backupArangoD time.Duration + backupUploadArangoD time.Duration + forcePodDeletionGracePeriod time.Duration + podSchedulingGracePeriod time.Duration } operatorImageDiscovery struct { timeout time.Duration @@ -195,9 +193,6 @@ func init() { f.StringVar(&serverOptions.tlsSecretName, "server.tls-secret-name", "", "Name of secret containing tls.crt & tls.key for HTTPS server (if empty, self-signed certificate is used)") f.StringVar(&serverOptions.adminSecretName, "server.admin-secret-name", defaultAdminSecretName, "Name of secret containing username + password for login to the dashboard") f.BoolVar(&serverOptions.allowAnonymous, "server.allow-anonymous-access", false, "Allow anonymous access to the dashboard") - f.StringVar(&logFormat, "log.format", "pretty", "Set log format. Allowed values: 'pretty', 'JSON'. If empty, default format is used") - f.StringArrayVar(&logLevels, "log.level", []string{defaultLogLevel}, fmt.Sprintf("Set log levels in format or =. Possible loggers: %s", strings.Join(logging.Global().Names(), ", "))) - f.BoolVar(&logSampling, "log.sampling", true, "If true, operator will try to minimize duplication of logging events") f.BoolVar(&apiOptions.enabled, "api.enabled", true, "Enable operator HTTP and gRPC API") f.IntVar(&apiOptions.httpPort, "api.http-port", defaultAPIHTTPPort, "HTTP API port to listen on") f.IntVar(&apiOptions.grpcPort, "api.grpc-port", defaultAPIGRPCPort, "gRPC API port to listen on") @@ -231,6 +226,8 @@ func init() { f.DurationVar(&operatorTimeouts.shardRebuildRetry, "timeout.shard-rebuild-retry", globals.DefaultOutSyncedShardRebuildRetryTimeout, "Timeout after which rebuild shards retry flow is triggered") f.DurationVar(&operatorTimeouts.backupArangoD, "timeout.backup-arangod", globals.BackupDefaultArangoClientTimeout, "The request timeout to the ArangoDB during backup calls") f.DurationVar(&operatorTimeouts.backupUploadArangoD, "timeout.backup-upload", globals.BackupUploadArangoClientTimeout, "The request timeout to the ArangoDB during uploading files") + f.DurationVar(&operatorTimeouts.forcePodDeletionGracePeriod, "timeout.force-delete-pod-grace-period", globals.DefaultForcePodDeletionGracePeriodTimeout, "Default period when ArangoDB Pod should be forcefully removed after all containers were stopped - set to 0 to disable forceful removals") + f.DurationVar(&operatorTimeouts.podSchedulingGracePeriod, "timeout.pod-scheduling-grace-period", globals.DefaultPodSchedulingGracePeriod, "Default period when ArangoDB Pod should be deleted in case of scheduling info change - set to 0 to disable") f.DurationVar(&shutdownOptions.delay, "shutdown.delay", defaultShutdownDelay, "The delay before running shutdown handlers") f.DurationVar(&shutdownOptions.timeout, "shutdown.timeout", defaultShutdownTimeout, "Timeout for shutdown handlers") f.DurationVar(&operatorReconciliationRetry.delay, "operator.reconciliation.retry.delay", globals.DefaultOperatorUpdateRetryDelay, "Delay between Object Update operations in the Reconciliation loop") @@ -247,6 +244,9 @@ func init() { f.StringArrayVar(&metricsOptions.excludedMetricPrefixes, "metrics.excluded-prefixes", nil, "List of the excluded metrics prefixes") f.BoolVar(&operatorImageDiscovery.defaultStatusDiscovery, "image.discovery.status", true, "Discover Operator Image from Pod Status by default. When disabled Pod Spec is used.") f.DurationVar(&operatorImageDiscovery.timeout, "image.discovery.timeout", time.Minute, "Timeout for image discovery process") + if err := logging.Init(&cmdMain); err != nil { + panic(err.Error()) + } if err := features.Init(&cmdMain); err != nil { panic(err.Error()) } @@ -295,6 +295,8 @@ func executeMain(cmd *cobra.Command, args []string) { globals.GetGlobalTimeouts().ShardRebuildRetry().Set(operatorTimeouts.shardRebuildRetry) globals.GetGlobalTimeouts().BackupArangoClientTimeout().Set(operatorTimeouts.backupArangoD) globals.GetGlobalTimeouts().BackupArangoClientUploadTimeout().Set(operatorTimeouts.backupUploadArangoD) + globals.GetGlobalTimeouts().ForcePodDeletionGracePeriodTimeout().Set(operatorTimeouts.forcePodDeletionGracePeriod) + globals.GetGlobalTimeouts().PodSchedulingGracePeriod().Set(operatorTimeouts.podSchedulingGracePeriod) globals.GetGlobals().Retry().OperatorUpdateRetryDelay().Set(operatorReconciliationRetry.delay) globals.GetGlobals().Retry().OperatorUpdateRetryCount().Set(operatorReconciliationRetry.count) @@ -308,24 +310,10 @@ func executeMain(cmd *cobra.Command, args []string) { kclient.SetDefaultBurst(operatorKubernetesOptions.burst) // Prepare log service - var err error - - levels, err := logging.ParseLogLevelsFromArgs(logLevels) - if err != nil { - logger.Err(err).Fatal("Unable to parse log level") + if err := logging.Enable(); err != nil { + logger.Err(err).Fatal("Unable to enable logger") } - // Set root logger to stdout (JSON formatted) if not prettified - if strings.ToUpper(logFormat) == "JSON" { - logging.Global().SetRoot(zerolog.New(os.Stdout).With().Timestamp().Logger()) - } else if strings.ToLower(logFormat) != "pretty" && logFormat != "" { - logger.Fatal("Unknown log format: %s", logFormat) - } - logging.Global().Configure(logging.Config{ - Levels: levels, - Sampling: logSampling, - }) - podNameParts := strings.Split(name, "-") operatorID := podNameParts[len(podNameParts)-1] @@ -347,16 +335,16 @@ func executeMain(cmd *cobra.Command, args []string) { !operatorOptions.enableBackup && !operatorOptions.enableApps && !operatorOptions.enableK2KClusterSync && !operatorOptions.enableML { if !operatorOptions.versionOnly { if version.GetVersionV1().IsEnterprise() { - logger.Err(err).Fatal("Turn on --operator.deployment, --operator.deployment-replication, --operator.storage, --operator.backup, --operator.apps, --operator.k2k-cluster-sync, --operator.ml or any combination of these") + logger.Fatal("Turn on --operator.deployment, --operator.deployment-replication, --operator.storage, --operator.backup, --operator.apps, --operator.k2k-cluster-sync, --operator.ml or any combination of these") } else { - logger.Err(err).Fatal("Turn on --operator.deployment, --operator.deployment-replication, --operator.storage, --operator.backup, --operator.apps, --operator.k2k-cluster-sync or any combination of these") + logger.Fatal("Turn on --operator.deployment, --operator.deployment-replication, --operator.storage, --operator.backup, --operator.apps, --operator.k2k-cluster-sync or any combination of these") } } } else if operatorOptions.versionOnly { - logger.Err(err).Fatal("Options --operator.deployment, --operator.deployment-replication, --operator.storage, --operator.backup, --operator.apps, --operator.k2k-cluster-sync, --operator.ml cannot be enabled together with --operator.version") + logger.Fatal("Options --operator.deployment, --operator.deployment-replication, --operator.storage, --operator.backup, --operator.apps, --operator.k2k-cluster-sync, --operator.ml cannot be enabled together with --operator.version") } else if !version.GetVersionV1().IsEnterprise() { if operatorOptions.enableML { - logger.Err(err).Fatal("Options --operator.ml can be enabled only on the Enterprise Operator") + logger.Fatal("Options --operator.ml can be enabled only on the Enterprise Operator") } } @@ -444,7 +432,11 @@ func executeMain(cmd *cobra.Command, args []string) { if err != nil { logger.Err(err).Fatal("Failed to create API server") } - go errors.LogError(logger, "while running API server", apiServer.Run) + go func() { + if err := apiServer.Run(); err != nil { + logger.Err(err).Error("while running API server") + } + }() } listenAddr := net.JoinHostPort(serverOptions.host, strconv.Itoa(serverOptions.port)) @@ -493,7 +485,11 @@ func executeMain(cmd *cobra.Command, args []string) { }); err != nil { logger.Err(err).Fatal("Failed to create HTTP server") } else { - go errors.LogError(logger, "error while starting server", svr.Run) + go func() { + if err := svr.Run(); err != nil { + logger.Err(err).Error("error while starting server") + } + }() } // startChaos(context.Background(), cfg.KubeCli, cfg.Namespace, chaosLevel) diff --git a/cmd/crd.go b/cmd/crd.go index a44329fbc..3c843b258 100644 --- a/cmd/crd.go +++ b/cmd/crd.go @@ -52,6 +52,7 @@ var ( var ( crdInstallOptions struct { validationSchema []string + force bool } ) @@ -65,6 +66,7 @@ func init() { f := cmdCRDInstall.Flags() f.StringArrayVar(&crdInstallOptions.validationSchema, "crd.validation-schema", defaultValidationSchemaEnabled, "Controls which CRD should have validation schema =.") + f.BoolVar(&crdInstallOptions.force, "crd.force-update", false, "Enforce CRD Schema update") cmdCRD.AddCommand(cmdCRDInstall) } @@ -109,7 +111,7 @@ func cmdCRDInstallRun(cmd *cobra.Command, args []string) { ctx, cancel := context.WithTimeout(context.Background(), time.Minute) defer cancel() - err = crd.EnsureCRDWithOptions(ctx, client, crd.EnsureCRDOptions{IgnoreErrors: false, CRDOptions: crdOpts}) + err = crd.EnsureCRDWithOptions(ctx, client, crd.EnsureCRDOptions{IgnoreErrors: false, CRDOptions: crdOpts, ForceUpdate: crdInstallOptions.force}) if err != nil { os.Exit(1) } diff --git a/cmd/debug.go b/cmd/debug.go index e85aca47c..225b9e912 100644 --- a/cmd/debug.go +++ b/cmd/debug.go @@ -1,7 +1,7 @@ // // DISCLAIMER // -// Copyright 2016-2023 ArangoDB GmbH, Cologne, Germany +// Copyright 2016-2024 ArangoDB GmbH, Cologne, Germany // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -32,16 +32,25 @@ import ( func init() { cmdMain.AddCommand(debugPackage) + cmdMain.AddCommand(debugPackageV2) - f := debugPackage.Flags() - - f.StringVarP(&debugPackageInput.Output, "output", "o", "out.tar.gz", "Output of the result gz file. If set to `-` then stdout is used") + debugPackage.Flags().StringVarP(&debugPackageInput.Output, "output", "o", "out.tar.gz", "Output of the result gz file. If set to `-` then stdout is used") + debugPackageV2.Flags().StringVarP(&debugPackageInput.Output, "output", "o", "out.tar.gz", "Output of the result gz file. If set to `-` then stdout is used") debug_package.InitCommand(debugPackage) + debug_package.InitCommand(debugPackageV2) } var debugPackage = &cobra.Command{ - Use: "debugPackage", + Use: "debugPackage", + Short: "Generate debug package for debugging", + RunE: debugPackageFunc, + Hidden: true, + Deprecated: "Use debug-package command instead", +} + +var debugPackageV2 = &cobra.Command{ + Use: "debug-package", Short: "Generate debug package for debugging", RunE: debugPackageFunc, } diff --git a/dashboard/package-lock.json b/dashboard/package-lock.json index abd7be935..f855edbe8 100644 --- a/dashboard/package-lock.json +++ b/dashboard/package-lock.json @@ -4757,58 +4757,6 @@ "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", "dev": true }, - "body-parser": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz", - "integrity": "sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==", - "dev": true, - "requires": { - "bytes": "3.1.2", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.10.3", - "raw-body": "2.5.1", - "type-is": "~1.6.18", - "unpipe": "1.0.0" - }, - "dependencies": { - "bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "dev": true - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - } - } - }, "bonjour-service": { "version": "1.0.14", "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.0.14.tgz", @@ -5289,12 +5237,6 @@ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=" }, - "cookie": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", - "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", - "dev": true - }, "cookie-signature": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", @@ -6810,17 +6752,17 @@ } }, "express": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.1.tgz", - "integrity": "sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==", + "version": "4.19.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", + "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==", "dev": true, "requires": { "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.20.0", + "body-parser": "1.20.2", "content-disposition": "0.5.4", "content-type": "~1.0.4", - "cookie": "0.5.0", + "cookie": "0.6.0", "cookie-signature": "1.0.6", "debug": "2.6.9", "depd": "2.0.0", @@ -6836,7 +6778,7 @@ "parseurl": "~1.3.3", "path-to-regexp": "0.1.7", "proxy-addr": "~2.0.7", - "qs": "6.10.3", + "qs": "6.11.0", "range-parser": "~1.2.1", "safe-buffer": "5.2.1", "send": "0.18.0", @@ -6854,6 +6796,46 @@ "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", "dev": true }, + "body-parser": { + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", + "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", + "dev": true, + "requires": { + "bytes": "3.1.2", + "content-type": "~1.0.5", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.2", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "dependencies": { + "content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "dev": true + } + } + }, + "bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true + }, + "cookie": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", + "dev": true + }, "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", @@ -6875,6 +6857,27 @@ "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", "dev": true }, + "qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dev": true, + "requires": { + "side-channel": "^1.0.4" + } + }, + "raw-body": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "dev": true, + "requires": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + } + }, "safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -7103,9 +7106,9 @@ "integrity": "sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg==" }, "follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", "dev": true }, "fork-ts-checker-webpack-plugin": { @@ -7856,6 +7859,15 @@ "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", "dev": true }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, "icss-utils": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", @@ -12048,15 +12060,6 @@ "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==", "dev": true }, - "qs": { - "version": "6.10.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", - "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", - "dev": true, - "requires": { - "side-channel": "^1.0.4" - } - }, "querystringify": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", @@ -12099,35 +12102,6 @@ "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", "dev": true }, - "raw-body": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", - "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", - "dev": true, - "requires": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "dependencies": { - "bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "dev": true - }, - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - } - } - }, "react": { "version": "16.10.1", "resolved": "https://registry.npmjs.org/react/-/react-16.10.1.tgz", @@ -14849,9 +14823,9 @@ } }, "webpack-dev-middleware": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz", - "integrity": "sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==", + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.4.tgz", + "integrity": "sha512-BVdTqhhs+0IfoeAf7EoH5WE+exCmqGerHfDM0IL096Px60Tq2Mn9MAbnaGUe6HiMa41KMCYF19gyzZmBcq/o4Q==", "dev": true, "requires": { "colorette": "^2.0.10", @@ -14862,9 +14836,9 @@ }, "dependencies": { "ajv": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", - "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", "dev": true, "requires": { "fast-deep-equal": "^3.1.1", @@ -14889,15 +14863,15 @@ "dev": true }, "schema-utils": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", - "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", "dev": true, "requires": { "@types/json-schema": "^7.0.9", - "ajv": "^8.8.0", + "ajv": "^8.9.0", "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.0.0" + "ajv-keywords": "^5.1.0" } } } diff --git a/docs/api/ArangoBackup.V1.md b/docs/api/ArangoBackup.V1.md index 840e74fce..62f2c8440 100644 --- a/docs/api/ArangoBackup.V1.md +++ b/docs/api/ArangoBackup.V1.md @@ -10,7 +10,7 @@ title: ArangoBackup V1 ### .spec.backoff.iterations -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/backup/v1/backup_spec_backoff.go#L31) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/backup/v1/backup_spec_backoff.go#L31) Iterations defines number of iterations before reaching MaxDelay. Default to 5 @@ -18,7 +18,7 @@ Iterations defines number of iterations before reaching MaxDelay. Default to 5 ### .spec.backoff.max_delay -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/backup/v1/backup_spec_backoff.go#L29) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/backup/v1/backup_spec_backoff.go#L29) MaxDelay defines maximum delay in seconds. Default to 600 @@ -26,7 +26,7 @@ MaxDelay defines maximum delay in seconds. Default to 600 ### .spec.backoff.max_iterations -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/backup/v1/backup_spec_backoff.go#L33) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/backup/v1/backup_spec_backoff.go#L33) MaxIterations defines maximum number of iterations after backoff will be disabled. Default to nil (no limit) @@ -34,7 +34,7 @@ MaxIterations defines maximum number of iterations after backoff will be disable ### .spec.backoff.min_delay -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/backup/v1/backup_spec_backoff.go#L27) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/backup/v1/backup_spec_backoff.go#L27) MinDelay defines minimum delay in seconds. Default to 30 @@ -42,7 +42,7 @@ MinDelay defines minimum delay in seconds. Default to 30 ### .spec.deployment.name -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/backup/v1/backup_spec.go#L54) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/backup/v1/backup_spec.go#L54) Name of the ArangoDeployment Custom Resource within same namespace as ArangoBackup Custom Resource. @@ -52,7 +52,7 @@ This field is **immutable**: can't be changed after backup creation ### .spec.download.autoDelete -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/backup/v1/backup_spec.go#L84) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/backup/v1/backup_spec.go#L84) AutoDelete removes the ArangoBackup resource (which removes the backup from the cluster) after successful upload @@ -62,7 +62,7 @@ Default Value: `false` ### .spec.download.credentialsSecretName -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/backup/v1/backup_spec.go#L81) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/backup/v1/backup_spec.go#L81) CredentialsSecretName is the name of the secret used while accessing repository @@ -75,7 +75,7 @@ This field is **immutable**: can't be changed after backup creation ### .spec.download.id -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/backup/v1/backup_spec.go#L92) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/backup/v1/backup_spec.go#L92) ID of the ArangoBackup to be downloaded @@ -85,7 +85,7 @@ This field is **immutable**: can't be changed after backup creation ### .spec.download.repositoryURL -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/backup/v1/backup_spec.go#L77) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/backup/v1/backup_spec.go#L77) RepositoryURL is the URL path for file storage Same repositoryURL needs to be defined in `credentialsSecretName` if protocol is other than local. @@ -106,7 +106,7 @@ This field is **immutable**: can't be changed after backup creation ### .spec.lifetime -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/backup/v1/backup_spec.go#L47) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/backup/v1/backup_spec.go#L47) Lifetime is the time after which the backup will be deleted. Format: "1.5h" or "2h45m". @@ -114,7 +114,7 @@ Lifetime is the time after which the backup will be deleted. Format: "1.5h" or " ### .spec.options.allowInconsistent -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/backup/v1/backup_spec.go#L66) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/backup/v1/backup_spec.go#L66) AllowInconsistent flag for Backup creation request. If this value is set to true, backup is taken even if we are not able to acquire lock. @@ -127,7 +127,7 @@ This field is **immutable**: can't be changed after backup creation ### .spec.options.timeout -Type: `number` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/backup/v1/backup_spec.go#L61) +Type: `number` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/backup/v1/backup_spec.go#L61) Timeout for Backup creation request in seconds. Works only when AsyncBackupCreation feature is set to false. @@ -139,7 +139,7 @@ This field is **immutable**: can't be changed after backup creation ### .spec.policyName -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/backup/v1/backup_spec.go#L42) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/backup/v1/backup_spec.go#L42) PolicyName name of the ArangoBackupPolicy which created this Custom Resource @@ -149,7 +149,7 @@ This field is **immutable**: can't be changed after backup creation ### .spec.upload.autoDelete -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/backup/v1/backup_spec.go#L84) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/backup/v1/backup_spec.go#L84) AutoDelete removes the ArangoBackup resource (which removes the backup from the cluster) after successful upload @@ -159,7 +159,7 @@ Default Value: `false` ### .spec.upload.credentialsSecretName -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/backup/v1/backup_spec.go#L81) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/backup/v1/backup_spec.go#L81) CredentialsSecretName is the name of the secret used while accessing repository @@ -172,7 +172,7 @@ This field is **immutable**: can't be changed after backup creation ### .spec.upload.repositoryURL -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/backup/v1/backup_spec.go#L77) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/backup/v1/backup_spec.go#L77) RepositoryURL is the URL path for file storage Same repositoryURL needs to be defined in `credentialsSecretName` if protocol is other than local. @@ -193,7 +193,7 @@ This field is **immutable**: can't be changed after backup creation ### .status.available -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/backup/v1/backup_status.go#L36) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/backup/v1/backup_status.go#L36) Available Determines if we can restore from ArangoBackup @@ -201,13 +201,13 @@ Available Determines if we can restore from ArangoBackup ### .status.backoff.iterations -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/backup/v1/backup_status_backoff.go#L30) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/backup/v1/backup_status_backoff.go#L30) *** ### .status.backup.downloaded -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/backup/v1/backup_status.go#L66) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/backup/v1/backup_status.go#L66) Downloaded Determines if ArangoBackup has been downloaded. @@ -215,25 +215,25 @@ Downloaded Determines if ArangoBackup has been downloaded. ### .status.backup.id -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/backup/v1/backup_status.go#L56) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/backup/v1/backup_status.go#L56) *** ### .status.backup.imported -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/backup/v1/backup_status.go#L67) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/backup/v1/backup_status.go#L67) *** ### .status.backup.keys -Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/backup/v1/backup_status.go#L70) +Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/backup/v1/backup_status.go#L70) *** ### .status.backup.numberOfDBServers -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/backup/v1/backup_status.go#L62) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/backup/v1/backup_status.go#L62) NumberOfDBServers Cluster size of the Backup in ArangoDB @@ -241,13 +241,13 @@ NumberOfDBServers Cluster size of the Backup in ArangoDB ### .status.backup.potentiallyInconsistent -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/backup/v1/backup_status.go#L58) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/backup/v1/backup_status.go#L58) *** ### .status.backup.sizeInBytes -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/backup/v1/backup_status.go#L60) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/backup/v1/backup_status.go#L60) SizeInBytes Size of the Backup in ArangoDB. @@ -255,7 +255,7 @@ SizeInBytes Size of the Backup in ArangoDB. ### .status.backup.uploaded -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/backup/v1/backup_status.go#L64) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/backup/v1/backup_status.go#L64) Uploaded Determines if ArangoBackup has been uploaded @@ -263,13 +263,13 @@ Uploaded Determines if ArangoBackup has been uploaded ### .status.backup.version -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/backup/v1/backup_status.go#L57) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/backup/v1/backup_status.go#L57) *** ### .status.message -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/backup/v1/backup_state.go#L91) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/backup/v1/backup_state.go#L91) Message for the state this object is in. @@ -277,7 +277,7 @@ Message for the state this object is in. ### .status.progress.jobID -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/backup/v1/backup_state.go#L114) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/backup/v1/backup_state.go#L114) JobID ArangoDB job ID for uploading or downloading @@ -285,7 +285,7 @@ JobID ArangoDB job ID for uploading or downloading ### .status.progress.progress -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/backup/v1/backup_state.go#L117) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/backup/v1/backup_state.go#L117) Progress ArangoDB job progress in percents @@ -298,7 +298,7 @@ Example: ### .status.state -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/backup/v1/backup_state.go#L85) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/backup/v1/backup_state.go#L85) State holds the current high level state of the backup diff --git a/docs/api/ArangoBackupPolicy.V1.md b/docs/api/ArangoBackupPolicy.V1.md index 37ccc5382..bb3921137 100644 --- a/docs/api/ArangoBackupPolicy.V1.md +++ b/docs/api/ArangoBackupPolicy.V1.md @@ -10,7 +10,7 @@ title: ArangoBackupPolicy V1 ### .spec.allowConcurrent -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/backup/v1/backup_policy_spec.go#L35) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/backup/v1/backup_policy_spec.go#L35) AllowConcurrent if false, ArangoBackup will not be created when previous Backups are not finished @@ -20,7 +20,7 @@ Default Value: `true` ### .spec.maxBackups -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/backup/v1/backup_policy_spec.go#L43) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/backup/v1/backup_policy_spec.go#L43) MaxBackups defines how many backups should be kept in history (per deployment). Oldest healthy Backups will be deleted. If not specified or 0 then no limit is applied @@ -31,7 +31,7 @@ Default Value: `0` ### .spec.schedule -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/backup/v1/backup_policy_spec.go#L32) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/backup/v1/backup_policy_spec.go#L32) Schedule is cron-compatible specification of backup schedule Parsed by https://godoc.org/github.com/robfig/cron @@ -40,7 +40,7 @@ Parsed by https://godoc.org/github.com/robfig/cron ### .spec.selector -Type: `meta.LabelSelector` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/backup/v1/backup_policy_spec.go#L39) +Type: `meta.LabelSelector` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/backup/v1/backup_policy_spec.go#L39) DeploymentSelector Selector definition for selecting matching ArangoBackup Custom Resources. @@ -51,7 +51,7 @@ Links: ### .spec.template.backoff.iterations -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/backup/v1/backup_spec_backoff.go#L31) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/backup/v1/backup_spec_backoff.go#L31) Iterations defines number of iterations before reaching MaxDelay. Default to 5 @@ -59,7 +59,7 @@ Iterations defines number of iterations before reaching MaxDelay. Default to 5 ### .spec.template.backoff.max_delay -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/backup/v1/backup_spec_backoff.go#L29) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/backup/v1/backup_spec_backoff.go#L29) MaxDelay defines maximum delay in seconds. Default to 600 @@ -67,7 +67,7 @@ MaxDelay defines maximum delay in seconds. Default to 600 ### .spec.template.backoff.max_iterations -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/backup/v1/backup_spec_backoff.go#L33) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/backup/v1/backup_spec_backoff.go#L33) MaxIterations defines maximum number of iterations after backoff will be disabled. Default to nil (no limit) @@ -75,7 +75,7 @@ MaxIterations defines maximum number of iterations after backoff will be disable ### .spec.template.backoff.min_delay -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/backup/v1/backup_spec_backoff.go#L27) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/backup/v1/backup_spec_backoff.go#L27) MinDelay defines minimum delay in seconds. Default to 30 @@ -83,7 +83,7 @@ MinDelay defines minimum delay in seconds. Default to 30 ### .spec.template.lifetime -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/backup/v1/backup_policy_spec.go#L61) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/backup/v1/backup_policy_spec.go#L61) Lifetime is the time after which the backup will be deleted. Format: "1.5h" or "2h45m". @@ -91,7 +91,7 @@ Lifetime is the time after which the backup will be deleted. Format: "1.5h" or " ### .spec.template.options.allowInconsistent -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/backup/v1/backup_spec.go#L66) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/backup/v1/backup_spec.go#L66) AllowInconsistent flag for Backup creation request. If this value is set to true, backup is taken even if we are not able to acquire lock. @@ -104,7 +104,7 @@ This field is **immutable**: can't be changed after backup creation ### .spec.template.options.timeout -Type: `number` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/backup/v1/backup_spec.go#L61) +Type: `number` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/backup/v1/backup_spec.go#L61) Timeout for Backup creation request in seconds. Works only when AsyncBackupCreation feature is set to false. @@ -116,7 +116,7 @@ This field is **immutable**: can't be changed after backup creation ### .spec.template.upload.autoDelete -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/backup/v1/backup_spec.go#L84) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/backup/v1/backup_spec.go#L84) AutoDelete removes the ArangoBackup resource (which removes the backup from the cluster) after successful upload @@ -126,7 +126,7 @@ Default Value: `false` ### .spec.template.upload.credentialsSecretName -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/backup/v1/backup_spec.go#L81) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/backup/v1/backup_spec.go#L81) CredentialsSecretName is the name of the secret used while accessing repository @@ -139,7 +139,7 @@ This field is **immutable**: can't be changed after backup creation ### .spec.template.upload.repositoryURL -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/backup/v1/backup_spec.go#L77) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/backup/v1/backup_spec.go#L77) RepositoryURL is the URL path for file storage Same repositoryURL needs to be defined in `credentialsSecretName` if protocol is other than local. @@ -160,7 +160,7 @@ This field is **immutable**: can't be changed after backup creation ### .status.message -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/backup/v1/backup_policy_status.go#L33) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/backup/v1/backup_policy_status.go#L33) Message from the operator in case of failures - schedule not valid, ArangoBackupPolicy not valid @@ -168,7 +168,7 @@ Message from the operator in case of failures - schedule not valid, ArangoBackup ### .status.scheduled -Type: `meta.Time` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/backup/v1/backup_policy_status.go#L31) +Type: `meta.Time` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/backup/v1/backup_policy_status.go#L31) Scheduled Next scheduled time in UTC diff --git a/docs/api/ArangoDeployment.V1.md b/docs/api/ArangoDeployment.V1.md index dedc96e3a..73507a3de 100644 --- a/docs/api/ArangoDeployment.V1.md +++ b/docs/api/ArangoDeployment.V1.md @@ -10,7 +10,7 @@ title: ArangoDeployment V1 ### .spec.agents.affinity -Type: `core.PodAffinity` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L185) +Type: `core.PodAffinity` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L185) Affinity specified additional affinity settings in ArangoDB Pod definitions @@ -21,7 +21,7 @@ Links: ### .spec.agents.allowMemberRecreation -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L227) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L227) AllowMemberRecreation allows to recreate member. This setting changes the member recreation logic based on group: @@ -32,7 +32,7 @@ This setting changes the member recreation logic based on group: ### .spec.agents.annotations -Type: `object` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L128) +Type: `object` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L128) Annotations specified the annotations added to Pods in this group. Annotations are merged with `spec.annotations`. @@ -41,7 +41,7 @@ Annotations are merged with `spec.annotations`. ### .spec.agents.annotationsIgnoreList -Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L130) +Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L130) AnnotationsIgnoreList list regexp or plain definitions which annotations should be ignored @@ -49,7 +49,7 @@ AnnotationsIgnoreList list regexp or plain definitions which annotations should ### .spec.agents.annotationsMode -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L132) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L132) AnnotationsMode Define annotations mode which should be use while overriding annotations @@ -57,7 +57,7 @@ AnnotationsMode Define annotations mode which should be use while overriding ann ### .spec.agents.antiAffinity -Type: `core.PodAntiAffinity` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L181) +Type: `core.PodAntiAffinity` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L181) AntiAffinity specified additional antiAffinity settings in ArangoDB Pod definitions @@ -68,7 +68,7 @@ Links: ### .spec.agents.args -Type: `[]string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L86) +Type: `[]string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L86) Args setting specifies additional command-line arguments passed to all servers of this group. @@ -78,7 +78,7 @@ Default Value: `[]` ### .spec.agents.count -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L78) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L78) Count setting specifies the number of servers to start for the given group. For the Agent group, this value must be a positive, odd number. @@ -91,7 +91,7 @@ as for the `dbservers` group. ### .spec.agents.entrypoint -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L88) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L88) Entrypoint overrides container executable @@ -99,19 +99,19 @@ Entrypoint overrides container executable ### .spec.agents.envs\[int\].name -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_env_var.go#L26) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_env_var.go#L26) *** ### .spec.agents.envs\[int\].value -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_env_var.go#L27) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_env_var.go#L27) *** ### .spec.agents.ephemeralVolumes.apps.size -Type: `resource.Quantity` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_ephemeral_volumes.go#L64) +Type: `resource.Quantity` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_ephemeral_volumes.go#L64) Size define size of the ephemeral volume @@ -122,7 +122,7 @@ Links: ### .spec.agents.ephemeralVolumes.temp.size -Type: `resource.Quantity` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_ephemeral_volumes.go#L64) +Type: `resource.Quantity` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_ephemeral_volumes.go#L64) Size define size of the ephemeral volume @@ -133,7 +133,7 @@ Links: ### .spec.agents.exporterPort -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L240) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L240) ExporterPort define Port used by exporter @@ -141,7 +141,7 @@ ExporterPort define Port used by exporter ### .spec.agents.extendedRotationCheck -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L210) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L210) ExtendedRotationCheck extend checks for rotation @@ -149,7 +149,7 @@ ExtendedRotationCheck extend checks for rotation ### .spec.agents.externalPortEnabled -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L222) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L222) ExternalPortEnabled if external port should be enabled. If is set to false, ports needs to be exposed via sidecar. Only for ArangoD members @@ -157,7 +157,7 @@ ExternalPortEnabled if external port should be enabled. If is set to false, port ### .spec.agents.indexMethod -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L233) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L233) IndexMethod define group Indexing method @@ -169,7 +169,7 @@ Possible Values: ### .spec.agents.initContainers.containers -Type: `[]core.Container` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_init_containers.go#L91) +Type: `[]core.Container` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_init_containers.go#L91) Containers contains list of containers @@ -180,7 +180,7 @@ Links: ### .spec.agents.initContainers.mode -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_init_containers.go#L94) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_init_containers.go#L94) Mode keep container replace mode @@ -188,7 +188,7 @@ Mode keep container replace mode ### .spec.agents.internalPort -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L218) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L218) InternalPort define port used in internal communication, can be accessed over localhost via sidecar. Only for ArangoD members @@ -196,7 +196,7 @@ InternalPort define port used in internal communication, can be accessed over lo ### .spec.agents.internalPortProtocol -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L220) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L220) InternalPortProtocol define protocol of port used in internal communication, can be accessed over localhost via sidecar. Only for ArangoD members @@ -204,7 +204,7 @@ InternalPortProtocol define protocol of port used in internal communication, can ### .spec.agents.labels -Type: `object` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L134) +Type: `object` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L134) Labels specified the labels added to Pods in this group. @@ -212,7 +212,7 @@ Labels specified the labels added to Pods in this group. ### .spec.agents.labelsIgnoreList -Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L136) +Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L136) LabelsIgnoreList list regexp or plain definitions which labels should be ignored @@ -220,7 +220,7 @@ LabelsIgnoreList list regexp or plain definitions which labels should be ignored ### .spec.agents.labelsMode -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L138) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L138) LabelsMode Define labels mode which should be use while overriding labels @@ -228,7 +228,7 @@ LabelsMode Define labels mode which should be use while overriding labels ### .spec.agents.maxCount -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L82) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L82) MaxCount specifies a maximum for the count of servers. If set, a specification is invalid if `count > maxCount`. @@ -236,7 +236,7 @@ MaxCount specifies a maximum for the count of servers. If set, a specification i ### .spec.agents.memoryReservation -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L110) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L110) MemoryReservation determines the system reservation of memory while calculating `ARANGODB_OVERRIDE_DETECTED_TOTAL_MEMORY` value. If this field is set, `ARANGODB_OVERRIDE_DETECTED_TOTAL_MEMORY` is reduced by a specified value in percent. @@ -251,7 +251,7 @@ Default Value: `0` ### .spec.agents.minCount -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L80) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L80) MinCount specifies a minimum for the count of servers. If set, a specification is invalid if `count < minCount`. @@ -259,7 +259,7 @@ MinCount specifies a minimum for the count of servers. If set, a specification i ### .spec.agents.nodeAffinity -Type: `core.NodeAffinity` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L189) +Type: `core.NodeAffinity` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L189) NodeAffinity specified additional nodeAffinity settings in ArangoDB Pod definitions @@ -270,7 +270,7 @@ Links: ### .spec.agents.nodeSelector -Type: `map[string]string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L153) +Type: `map[string]string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L153) NodeSelector setting specifies a set of labels to be used as `nodeSelector` for Pods of this node. @@ -281,7 +281,7 @@ Links: ### .spec.agents.numactl.args -Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_numactl_spec.go#L38) +Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_numactl_spec.go#L38) Args define list of the numactl process @@ -291,7 +291,7 @@ Default Value: `[]` ### .spec.agents.numactl.enabled -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_numactl_spec.go#L30) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_numactl_spec.go#L30) Enabled define if numactl should be enabled @@ -301,7 +301,7 @@ Default Value: `false` ### .spec.agents.numactl.path -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_numactl_spec.go#L34) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_numactl_spec.go#L34) Path define numactl path within the container @@ -311,7 +311,7 @@ Default Value: `/usr/bin/numactl` ### .spec.agents.overrideDetectedNumberOfCores -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L116) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L116) > [!IMPORTANT] > **Values set by this feature override user-provided `ARANGODB_OVERRIDE_DETECTED_NUMBER_OF_CORES` Container Environment Variable** @@ -328,7 +328,7 @@ Default Value: `true` ### .spec.agents.overrideDetectedTotalMemory -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L104) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L104) > [!IMPORTANT] > **Values set by this feature override user-provided `ARANGODB_OVERRIDE_DETECTED_TOTAL_MEMORY` Container Environment Variable** @@ -345,19 +345,19 @@ Default Value: `true` ### .spec.agents.podModes.network -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec_pod_modes.go#L31) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec_pod_modes.go#L31) *** ### .spec.agents.podModes.pid -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec_pod_modes.go#L32) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec_pod_modes.go#L32) *** ### .spec.agents.port -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L238) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L238) Port define Port used by member @@ -365,7 +365,7 @@ Port define Port used by member ### .spec.agents.priorityClassName -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L159) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L159) PriorityClassName specifies a priority class name Will be forwarded to the pod spec. @@ -377,7 +377,7 @@ Links: ### .spec.agents.probes.livenessProbeDisabled -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L250) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L250) LivenessProbeDisabled if set to true, the operator does not generate a liveness probe for new pods belonging to this group @@ -387,7 +387,7 @@ Default Value: `false` ### .spec.agents.probes.livenessProbeSpec.failureThreshold -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L300) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L300) FailureThreshold when a Pod starts and the probe fails, Kubernetes will try failureThreshold times before giving up. Giving up means restarting the container. @@ -399,7 +399,7 @@ Default Value: `3` ### .spec.agents.probes.livenessProbeSpec.initialDelaySeconds -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L283) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L283) InitialDelaySeconds specifies number of seconds after the container has started before liveness or readiness probes are initiated. Minimum value is 0. @@ -410,7 +410,7 @@ Default Value: `2` ### .spec.agents.probes.livenessProbeSpec.periodSeconds -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L287) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L287) PeriodSeconds How often (in seconds) to perform the probe. Minimum value is 1. @@ -421,7 +421,7 @@ Default Value: `10` ### .spec.agents.probes.livenessProbeSpec.successThreshold -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L295) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L295) SuccessThreshold Minimum consecutive successes for the probe to be considered successful after having failed. Minimum value is 1. @@ -432,7 +432,7 @@ Default Value: `1` ### .spec.agents.probes.livenessProbeSpec.timeoutSeconds -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L291) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L291) TimeoutSeconds specifies number of seconds after which the probe times out Minimum value is 1. @@ -443,7 +443,7 @@ Default Value: `2` ### .spec.agents.probes.ReadinessProbeDisabled -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L257) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L257) > [!WARNING] > ***DEPRECATED*** @@ -456,7 +456,7 @@ OldReadinessProbeDisabled if true readinessProbes are disabled ### .spec.agents.probes.readinessProbeDisabled -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L259) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L259) ReadinessProbeDisabled override flag for probe disabled in good manner (lowercase) with backward compatibility @@ -464,7 +464,7 @@ ReadinessProbeDisabled override flag for probe disabled in good manner (lowercas ### .spec.agents.probes.readinessProbeSpec.failureThreshold -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L300) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L300) FailureThreshold when a Pod starts and the probe fails, Kubernetes will try failureThreshold times before giving up. Giving up means restarting the container. @@ -476,7 +476,7 @@ Default Value: `3` ### .spec.agents.probes.readinessProbeSpec.initialDelaySeconds -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L283) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L283) InitialDelaySeconds specifies number of seconds after the container has started before liveness or readiness probes are initiated. Minimum value is 0. @@ -487,7 +487,7 @@ Default Value: `2` ### .spec.agents.probes.readinessProbeSpec.periodSeconds -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L287) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L287) PeriodSeconds How often (in seconds) to perform the probe. Minimum value is 1. @@ -498,7 +498,7 @@ Default Value: `10` ### .spec.agents.probes.readinessProbeSpec.successThreshold -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L295) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L295) SuccessThreshold Minimum consecutive successes for the probe to be considered successful after having failed. Minimum value is 1. @@ -509,7 +509,7 @@ Default Value: `1` ### .spec.agents.probes.readinessProbeSpec.timeoutSeconds -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L291) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L291) TimeoutSeconds specifies number of seconds after which the probe times out Minimum value is 1. @@ -520,7 +520,7 @@ Default Value: `2` ### .spec.agents.probes.startupProbeDisabled -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L264) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L264) StartupProbeDisabled if true startupProbes are disabled @@ -528,7 +528,7 @@ StartupProbeDisabled if true startupProbes are disabled ### .spec.agents.probes.startupProbeSpec.failureThreshold -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L300) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L300) FailureThreshold when a Pod starts and the probe fails, Kubernetes will try failureThreshold times before giving up. Giving up means restarting the container. @@ -540,7 +540,7 @@ Default Value: `3` ### .spec.agents.probes.startupProbeSpec.initialDelaySeconds -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L283) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L283) InitialDelaySeconds specifies number of seconds after the container has started before liveness or readiness probes are initiated. Minimum value is 0. @@ -551,7 +551,7 @@ Default Value: `2` ### .spec.agents.probes.startupProbeSpec.periodSeconds -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L287) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L287) PeriodSeconds How often (in seconds) to perform the probe. Minimum value is 1. @@ -562,7 +562,7 @@ Default Value: `10` ### .spec.agents.probes.startupProbeSpec.successThreshold -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L295) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L295) SuccessThreshold Minimum consecutive successes for the probe to be considered successful after having failed. Minimum value is 1. @@ -573,7 +573,7 @@ Default Value: `1` ### .spec.agents.probes.startupProbeSpec.timeoutSeconds -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L291) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L291) TimeoutSeconds specifies number of seconds after which the probe times out Minimum value is 1. @@ -584,7 +584,7 @@ Default Value: `2` ### .spec.agents.pvcResizeMode -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L173) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L173) VolumeResizeMode specified resize mode for PVCs and PVs @@ -596,7 +596,7 @@ Possible Values: ### .spec.agents.resources -Type: `core.ResourceRequirements` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L98) +Type: `core.ResourceRequirements` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L98) Resources holds resource requests & limits @@ -607,7 +607,7 @@ Links: ### .spec.agents.schedulerName -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L90) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L90) SchedulerName define scheduler name used for group @@ -615,7 +615,7 @@ SchedulerName define scheduler name used for group ### .spec.agents.securityContext.addCapabilities -Type: `[]core.Capability` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_security_context_spec.go#L41) +Type: `[]core.Capability` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_security_context_spec.go#L41) AddCapabilities add new capabilities to containers @@ -623,7 +623,7 @@ AddCapabilities add new capabilities to containers ### .spec.agents.securityContext.allowPrivilegeEscalation -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_security_context_spec.go#L44) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_security_context_spec.go#L44) AllowPrivilegeEscalation Controls whether a process can gain more privileges than its parent process. @@ -631,7 +631,7 @@ AllowPrivilegeEscalation Controls whether a process can gain more privileges tha ### .spec.agents.securityContext.dropAllCapabilities -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_security_context_spec.go#L38) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_security_context_spec.go#L38) > [!WARNING] > ***DEPRECATED*** @@ -644,7 +644,7 @@ DropAllCapabilities specifies if capabilities should be dropped for this pod con ### .spec.agents.securityContext.fsGroup -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_security_context_spec.go#L61) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_security_context_spec.go#L61) FSGroup is a special supplemental group that applies to all containers in a pod. @@ -652,7 +652,7 @@ FSGroup is a special supplemental group that applies to all containers in a pod. ### .spec.agents.securityContext.privileged -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_security_context_spec.go#L47) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_security_context_spec.go#L47) Privileged If true, runs container in privileged mode. Processes in privileged containers are essentially equivalent to root on the host. @@ -661,7 +661,7 @@ essentially equivalent to root on the host. ### .spec.agents.securityContext.readOnlyRootFilesystem -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_security_context_spec.go#L49) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_security_context_spec.go#L49) ReadOnlyRootFilesystem if true, mounts the container's root filesystem as read-only. @@ -669,7 +669,7 @@ ReadOnlyRootFilesystem if true, mounts the container's root filesystem as read-o ### .spec.agents.securityContext.runAsGroup -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_security_context_spec.go#L55) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_security_context_spec.go#L55) RunAsGroup is the GID to run the entrypoint of the container process. @@ -677,7 +677,7 @@ RunAsGroup is the GID to run the entrypoint of the container process. ### .spec.agents.securityContext.runAsNonRoot -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_security_context_spec.go#L51) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_security_context_spec.go#L51) RunAsNonRoot if true, indicates that the container must run as a non-root user. @@ -685,7 +685,7 @@ RunAsNonRoot if true, indicates that the container must run as a non-root user. ### .spec.agents.securityContext.runAsUser -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_security_context_spec.go#L53) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_security_context_spec.go#L53) RunAsUser is the UID to run the entrypoint of the container process. @@ -693,7 +693,7 @@ RunAsUser is the UID to run the entrypoint of the container process. ### .spec.agents.securityContext.seccompProfile -Type: `core.SeccompProfile` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_security_context_spec.go#L77) +Type: `core.SeccompProfile` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_security_context_spec.go#L77) SeccompProfile defines a pod/container's seccomp profile settings. Only one profile source may be set. @@ -704,7 +704,7 @@ Links: ### .spec.agents.securityContext.seLinuxOptions -Type: `core.SELinuxOptions` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_security_context_spec.go#L82) +Type: `core.SELinuxOptions` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_security_context_spec.go#L82) SELinuxOptions are the labels to be applied to the container @@ -715,7 +715,7 @@ Links: ### .spec.agents.securityContext.supplementalGroups -Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_security_context_spec.go#L59) +Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_security_context_spec.go#L59) SupplementalGroups is a list of groups applied to the first process run in each container, in addition to the container's primary GID, the fsGroup (if specified), and group memberships defined in the container image for the uid of the container process. @@ -724,7 +724,7 @@ the fsGroup (if specified), and group memberships defined in the container image ### .spec.agents.securityContext.sysctls -Type: `map[string]intstr.IntOrString` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_security_context_spec.go#L72) +Type: `map[string]intstr.IntOrString` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_security_context_spec.go#L72) Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch. @@ -745,7 +745,7 @@ sysctls: ### .spec.agents.serviceAccountName -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L149) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L149) ServiceAccountName setting specifies the `serviceAccountName` for the `Pods` created for each server of this group. If empty, it defaults to using the @@ -760,7 +760,7 @@ to that service account. ### .spec.agents.shutdownDelay -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L216) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L216) ShutdownDelay define how long operator should delay finalizer removal after shutdown @@ -768,7 +768,7 @@ ShutdownDelay define how long operator should delay finalizer removal after shut ### .spec.agents.shutdownMethod -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L214) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L214) ShutdownMethod describe procedure of member shutdown taken by Operator @@ -776,7 +776,7 @@ ShutdownMethod describe procedure of member shutdown taken by Operator ### .spec.agents.sidecarCoreNames -Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L192) +Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L192) SidecarCoreNames is a list of sidecar containers which must run in the pod. Some names (e.g.: "server", "worker") are reserved, and they don't have any impact. @@ -785,7 +785,7 @@ Some names (e.g.: "server", "worker") are reserved, and they don't have any impa ### .spec.agents.sidecars -Type: `[]core.Container` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L196) +Type: `[]core.Container` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L196) Sidecars specifies a list of additional containers to be started @@ -796,7 +796,7 @@ Links: ### .spec.agents.storageClassName -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L94) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L94) > [!WARNING] > ***DEPRECATED*** @@ -809,7 +809,7 @@ StorageClassName specifies the classname for storage of the servers. ### .spec.agents.terminationGracePeriodSeconds -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L229) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L229) TerminationGracePeriodSeconds override default TerminationGracePeriodSeconds for pods - via silent rotation @@ -817,7 +817,7 @@ TerminationGracePeriodSeconds override default TerminationGracePeriodSeconds for ### .spec.agents.tolerations -Type: `[]core.Toleration` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L125) +Type: `[]core.Toleration` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L125) Tolerations specifies the tolerations added to Pods in this group. By default, suitable tolerations are set for the following keys with the `NoExecute` effect: @@ -833,7 +833,7 @@ Links: ### .spec.agents.volumeAllowShrink -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L177) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L177) > [!WARNING] > ***DEPRECATED*** @@ -846,7 +846,7 @@ VolumeAllowShrink allows shrinking of the volume ### .spec.agents.volumeClaimTemplate -Type: `core.PersistentVolumeClaim` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L168) +Type: `core.PersistentVolumeClaim` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L168) VolumeClaimTemplate specifies a volumeClaimTemplate used by operator to create to volume claims for pods of this group. This setting is not available for group `coordinators`, `syncmasters` & `syncworkers`. @@ -862,7 +862,7 @@ Links: ### .spec.agents.volumeMounts -Type: `[]ServerGroupSpecVolumeMount` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L206) +Type: `[]ServerGroupSpecVolumeMount` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L206) VolumeMounts define list of volume mounts mounted into server container @@ -873,7 +873,7 @@ Links: ### .spec.agents.volumes\[int\].configMap -Type: `core.ConfigMapVolumeSource` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_volume.go#L138) +Type: `core.ConfigMapVolumeSource` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_volume.go#L138) ConfigMap which should be mounted into pod @@ -884,7 +884,7 @@ Links: ### .spec.agents.volumes\[int\].emptyDir -Type: `core.EmptyDirVolumeSource` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_volume.go#L143) +Type: `core.EmptyDirVolumeSource` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_volume.go#L143) EmptyDir @@ -895,7 +895,7 @@ Links: ### .spec.agents.volumes\[int\].hostPath -Type: `core.HostPathVolumeSource` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_volume.go#L148) +Type: `core.HostPathVolumeSource` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_volume.go#L148) HostPath @@ -906,7 +906,7 @@ Links: ### .spec.agents.volumes\[int\].name -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_volume.go#L128) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_volume.go#L128) Name of volume @@ -914,7 +914,7 @@ Name of volume ### .spec.agents.volumes\[int\].persistentVolumeClaim -Type: `core.PersistentVolumeClaimVolumeSource` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_volume.go#L153) +Type: `core.PersistentVolumeClaimVolumeSource` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_volume.go#L153) PersistentVolumeClaim @@ -925,7 +925,7 @@ Links: ### .spec.agents.volumes\[int\].secret -Type: `core.SecretVolumeSource` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_volume.go#L133) +Type: `core.SecretVolumeSource` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_volume.go#L133) Secret which should be mounted into pod @@ -936,7 +936,7 @@ Links: ### .spec.allowUnsafeUpgrade -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/deployment_spec.go#L152) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/deployment_spec.go#L152) AllowUnsafeUpgrade determines if upgrade on missing member or with not in sync shards is allowed @@ -944,7 +944,7 @@ AllowUnsafeUpgrade determines if upgrade on missing member or with not in sync s ### .spec.annotations -Type: `object` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/deployment_spec.go#L115) +Type: `object` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/deployment_spec.go#L115) Annotations specifies the annotations added to all ArangoDeployment owned resources (pods, services, PVC’s, PDB’s). @@ -952,7 +952,7 @@ Annotations specifies the annotations added to all ArangoDeployment owned resour ### .spec.annotationsIgnoreList -Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/deployment_spec.go#L118) +Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/deployment_spec.go#L118) AnnotationsIgnoreList list regexp or plain definitions which annotations should be ignored @@ -960,7 +960,7 @@ AnnotationsIgnoreList list regexp or plain definitions which annotations should ### .spec.annotationsMode -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/deployment_spec.go#L124) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/deployment_spec.go#L124) AnnotationsMode defines annotations mode which should be use while overriding annotations. @@ -973,7 +973,7 @@ Possible Values: ### .spec.architecture -Type: `[]string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/deployment_spec.go#L254) +Type: `[]string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/deployment_spec.go#L254) Architecture defines the list of supported architectures. First element on the list is marked as default architecture. @@ -994,7 +994,7 @@ Default Value: `['amd64']` ### .spec.auth.jwtSecretName -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/authentication_spec.go#L38) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/authentication_spec.go#L38) JWTSecretName setting specifies the name of a kubernetes `Secret` that contains a secret key used for generating JWT tokens to access all ArangoDB servers. @@ -1008,7 +1008,7 @@ Changing secret key results in restarting of a whole cluster. ### .spec.bootstrap.passwordSecretNames -Type: `map[string]string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/bootstrap.go#L62) +Type: `map[string]string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/bootstrap.go#L62) PasswordSecretNames contains a map of username to password-secret-name This setting specifies a secret name for the credentials per specific users. @@ -1026,7 +1026,7 @@ Links: ### .spec.chaos.enabled -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/chaos_spec.go#L33) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/chaos_spec.go#L33) Enabled switches the chaos monkey for a deployment on or off. @@ -1034,7 +1034,7 @@ Enabled switches the chaos monkey for a deployment on or off. ### .spec.chaos.interval -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/chaos_spec.go#L35) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/chaos_spec.go#L35) Interval is the time between events @@ -1042,7 +1042,7 @@ Interval is the time between events ### .spec.chaos.kill-pod-probability -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/chaos_spec.go#L37) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/chaos_spec.go#L37) KillPodProbability is the chance of a pod being killed during an event @@ -1050,7 +1050,7 @@ KillPodProbability is the chance of a pod being killed during an event ### .spec.ClusterDomain -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/deployment_spec.go#L226) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/deployment_spec.go#L226) ClusterDomain define domain used in the kubernetes cluster. Required only of domain is not set to default (cluster.local) @@ -1061,7 +1061,7 @@ Default Value: `cluster.local` ### .spec.communicationMethod -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/deployment_spec.go#L234) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/deployment_spec.go#L234) CommunicationMethod define communication method used in deployment @@ -1076,7 +1076,7 @@ Possible Values: ### .spec.coordinators.affinity -Type: `core.PodAffinity` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L185) +Type: `core.PodAffinity` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L185) Affinity specified additional affinity settings in ArangoDB Pod definitions @@ -1087,7 +1087,7 @@ Links: ### .spec.coordinators.allowMemberRecreation -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L227) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L227) AllowMemberRecreation allows to recreate member. This setting changes the member recreation logic based on group: @@ -1098,7 +1098,7 @@ This setting changes the member recreation logic based on group: ### .spec.coordinators.annotations -Type: `object` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L128) +Type: `object` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L128) Annotations specified the annotations added to Pods in this group. Annotations are merged with `spec.annotations`. @@ -1107,7 +1107,7 @@ Annotations are merged with `spec.annotations`. ### .spec.coordinators.annotationsIgnoreList -Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L130) +Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L130) AnnotationsIgnoreList list regexp or plain definitions which annotations should be ignored @@ -1115,7 +1115,7 @@ AnnotationsIgnoreList list regexp or plain definitions which annotations should ### .spec.coordinators.annotationsMode -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L132) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L132) AnnotationsMode Define annotations mode which should be use while overriding annotations @@ -1123,7 +1123,7 @@ AnnotationsMode Define annotations mode which should be use while overriding ann ### .spec.coordinators.antiAffinity -Type: `core.PodAntiAffinity` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L181) +Type: `core.PodAntiAffinity` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L181) AntiAffinity specified additional antiAffinity settings in ArangoDB Pod definitions @@ -1134,7 +1134,7 @@ Links: ### .spec.coordinators.args -Type: `[]string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L86) +Type: `[]string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L86) Args setting specifies additional command-line arguments passed to all servers of this group. @@ -1144,7 +1144,7 @@ Default Value: `[]` ### .spec.coordinators.count -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L78) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L78) Count setting specifies the number of servers to start for the given group. For the Agent group, this value must be a positive, odd number. @@ -1157,7 +1157,7 @@ as for the `dbservers` group. ### .spec.coordinators.entrypoint -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L88) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L88) Entrypoint overrides container executable @@ -1165,19 +1165,19 @@ Entrypoint overrides container executable ### .spec.coordinators.envs\[int\].name -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_env_var.go#L26) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_env_var.go#L26) *** ### .spec.coordinators.envs\[int\].value -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_env_var.go#L27) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_env_var.go#L27) *** ### .spec.coordinators.ephemeralVolumes.apps.size -Type: `resource.Quantity` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_ephemeral_volumes.go#L64) +Type: `resource.Quantity` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_ephemeral_volumes.go#L64) Size define size of the ephemeral volume @@ -1188,7 +1188,7 @@ Links: ### .spec.coordinators.ephemeralVolumes.temp.size -Type: `resource.Quantity` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_ephemeral_volumes.go#L64) +Type: `resource.Quantity` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_ephemeral_volumes.go#L64) Size define size of the ephemeral volume @@ -1199,7 +1199,7 @@ Links: ### .spec.coordinators.exporterPort -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L240) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L240) ExporterPort define Port used by exporter @@ -1207,7 +1207,7 @@ ExporterPort define Port used by exporter ### .spec.coordinators.extendedRotationCheck -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L210) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L210) ExtendedRotationCheck extend checks for rotation @@ -1215,7 +1215,7 @@ ExtendedRotationCheck extend checks for rotation ### .spec.coordinators.externalPortEnabled -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L222) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L222) ExternalPortEnabled if external port should be enabled. If is set to false, ports needs to be exposed via sidecar. Only for ArangoD members @@ -1223,7 +1223,7 @@ ExternalPortEnabled if external port should be enabled. If is set to false, port ### .spec.coordinators.indexMethod -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L233) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L233) IndexMethod define group Indexing method @@ -1235,7 +1235,7 @@ Possible Values: ### .spec.coordinators.initContainers.containers -Type: `[]core.Container` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_init_containers.go#L91) +Type: `[]core.Container` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_init_containers.go#L91) Containers contains list of containers @@ -1246,7 +1246,7 @@ Links: ### .spec.coordinators.initContainers.mode -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_init_containers.go#L94) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_init_containers.go#L94) Mode keep container replace mode @@ -1254,7 +1254,7 @@ Mode keep container replace mode ### .spec.coordinators.internalPort -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L218) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L218) InternalPort define port used in internal communication, can be accessed over localhost via sidecar. Only for ArangoD members @@ -1262,7 +1262,7 @@ InternalPort define port used in internal communication, can be accessed over lo ### .spec.coordinators.internalPortProtocol -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L220) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L220) InternalPortProtocol define protocol of port used in internal communication, can be accessed over localhost via sidecar. Only for ArangoD members @@ -1270,7 +1270,7 @@ InternalPortProtocol define protocol of port used in internal communication, can ### .spec.coordinators.labels -Type: `object` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L134) +Type: `object` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L134) Labels specified the labels added to Pods in this group. @@ -1278,7 +1278,7 @@ Labels specified the labels added to Pods in this group. ### .spec.coordinators.labelsIgnoreList -Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L136) +Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L136) LabelsIgnoreList list regexp or plain definitions which labels should be ignored @@ -1286,7 +1286,7 @@ LabelsIgnoreList list regexp or plain definitions which labels should be ignored ### .spec.coordinators.labelsMode -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L138) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L138) LabelsMode Define labels mode which should be use while overriding labels @@ -1294,7 +1294,7 @@ LabelsMode Define labels mode which should be use while overriding labels ### .spec.coordinators.maxCount -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L82) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L82) MaxCount specifies a maximum for the count of servers. If set, a specification is invalid if `count > maxCount`. @@ -1302,7 +1302,7 @@ MaxCount specifies a maximum for the count of servers. If set, a specification i ### .spec.coordinators.memoryReservation -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L110) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L110) MemoryReservation determines the system reservation of memory while calculating `ARANGODB_OVERRIDE_DETECTED_TOTAL_MEMORY` value. If this field is set, `ARANGODB_OVERRIDE_DETECTED_TOTAL_MEMORY` is reduced by a specified value in percent. @@ -1317,7 +1317,7 @@ Default Value: `0` ### .spec.coordinators.minCount -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L80) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L80) MinCount specifies a minimum for the count of servers. If set, a specification is invalid if `count < minCount`. @@ -1325,7 +1325,7 @@ MinCount specifies a minimum for the count of servers. If set, a specification i ### .spec.coordinators.nodeAffinity -Type: `core.NodeAffinity` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L189) +Type: `core.NodeAffinity` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L189) NodeAffinity specified additional nodeAffinity settings in ArangoDB Pod definitions @@ -1336,7 +1336,7 @@ Links: ### .spec.coordinators.nodeSelector -Type: `map[string]string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L153) +Type: `map[string]string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L153) NodeSelector setting specifies a set of labels to be used as `nodeSelector` for Pods of this node. @@ -1347,7 +1347,7 @@ Links: ### .spec.coordinators.numactl.args -Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_numactl_spec.go#L38) +Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_numactl_spec.go#L38) Args define list of the numactl process @@ -1357,7 +1357,7 @@ Default Value: `[]` ### .spec.coordinators.numactl.enabled -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_numactl_spec.go#L30) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_numactl_spec.go#L30) Enabled define if numactl should be enabled @@ -1367,7 +1367,7 @@ Default Value: `false` ### .spec.coordinators.numactl.path -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_numactl_spec.go#L34) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_numactl_spec.go#L34) Path define numactl path within the container @@ -1377,7 +1377,7 @@ Default Value: `/usr/bin/numactl` ### .spec.coordinators.overrideDetectedNumberOfCores -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L116) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L116) > [!IMPORTANT] > **Values set by this feature override user-provided `ARANGODB_OVERRIDE_DETECTED_NUMBER_OF_CORES` Container Environment Variable** @@ -1394,7 +1394,7 @@ Default Value: `true` ### .spec.coordinators.overrideDetectedTotalMemory -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L104) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L104) > [!IMPORTANT] > **Values set by this feature override user-provided `ARANGODB_OVERRIDE_DETECTED_TOTAL_MEMORY` Container Environment Variable** @@ -1411,19 +1411,19 @@ Default Value: `true` ### .spec.coordinators.podModes.network -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec_pod_modes.go#L31) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec_pod_modes.go#L31) *** ### .spec.coordinators.podModes.pid -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec_pod_modes.go#L32) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec_pod_modes.go#L32) *** ### .spec.coordinators.port -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L238) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L238) Port define Port used by member @@ -1431,7 +1431,7 @@ Port define Port used by member ### .spec.coordinators.priorityClassName -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L159) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L159) PriorityClassName specifies a priority class name Will be forwarded to the pod spec. @@ -1443,7 +1443,7 @@ Links: ### .spec.coordinators.probes.livenessProbeDisabled -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L250) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L250) LivenessProbeDisabled if set to true, the operator does not generate a liveness probe for new pods belonging to this group @@ -1453,7 +1453,7 @@ Default Value: `false` ### .spec.coordinators.probes.livenessProbeSpec.failureThreshold -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L300) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L300) FailureThreshold when a Pod starts and the probe fails, Kubernetes will try failureThreshold times before giving up. Giving up means restarting the container. @@ -1465,7 +1465,7 @@ Default Value: `3` ### .spec.coordinators.probes.livenessProbeSpec.initialDelaySeconds -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L283) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L283) InitialDelaySeconds specifies number of seconds after the container has started before liveness or readiness probes are initiated. Minimum value is 0. @@ -1476,7 +1476,7 @@ Default Value: `2` ### .spec.coordinators.probes.livenessProbeSpec.periodSeconds -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L287) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L287) PeriodSeconds How often (in seconds) to perform the probe. Minimum value is 1. @@ -1487,7 +1487,7 @@ Default Value: `10` ### .spec.coordinators.probes.livenessProbeSpec.successThreshold -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L295) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L295) SuccessThreshold Minimum consecutive successes for the probe to be considered successful after having failed. Minimum value is 1. @@ -1498,7 +1498,7 @@ Default Value: `1` ### .spec.coordinators.probes.livenessProbeSpec.timeoutSeconds -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L291) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L291) TimeoutSeconds specifies number of seconds after which the probe times out Minimum value is 1. @@ -1509,7 +1509,7 @@ Default Value: `2` ### .spec.coordinators.probes.ReadinessProbeDisabled -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L257) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L257) > [!WARNING] > ***DEPRECATED*** @@ -1522,7 +1522,7 @@ OldReadinessProbeDisabled if true readinessProbes are disabled ### .spec.coordinators.probes.readinessProbeDisabled -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L259) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L259) ReadinessProbeDisabled override flag for probe disabled in good manner (lowercase) with backward compatibility @@ -1530,7 +1530,7 @@ ReadinessProbeDisabled override flag for probe disabled in good manner (lowercas ### .spec.coordinators.probes.readinessProbeSpec.failureThreshold -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L300) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L300) FailureThreshold when a Pod starts and the probe fails, Kubernetes will try failureThreshold times before giving up. Giving up means restarting the container. @@ -1542,7 +1542,7 @@ Default Value: `3` ### .spec.coordinators.probes.readinessProbeSpec.initialDelaySeconds -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L283) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L283) InitialDelaySeconds specifies number of seconds after the container has started before liveness or readiness probes are initiated. Minimum value is 0. @@ -1553,7 +1553,7 @@ Default Value: `2` ### .spec.coordinators.probes.readinessProbeSpec.periodSeconds -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L287) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L287) PeriodSeconds How often (in seconds) to perform the probe. Minimum value is 1. @@ -1564,7 +1564,7 @@ Default Value: `10` ### .spec.coordinators.probes.readinessProbeSpec.successThreshold -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L295) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L295) SuccessThreshold Minimum consecutive successes for the probe to be considered successful after having failed. Minimum value is 1. @@ -1575,7 +1575,7 @@ Default Value: `1` ### .spec.coordinators.probes.readinessProbeSpec.timeoutSeconds -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L291) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L291) TimeoutSeconds specifies number of seconds after which the probe times out Minimum value is 1. @@ -1586,7 +1586,7 @@ Default Value: `2` ### .spec.coordinators.probes.startupProbeDisabled -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L264) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L264) StartupProbeDisabled if true startupProbes are disabled @@ -1594,7 +1594,7 @@ StartupProbeDisabled if true startupProbes are disabled ### .spec.coordinators.probes.startupProbeSpec.failureThreshold -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L300) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L300) FailureThreshold when a Pod starts and the probe fails, Kubernetes will try failureThreshold times before giving up. Giving up means restarting the container. @@ -1606,7 +1606,7 @@ Default Value: `3` ### .spec.coordinators.probes.startupProbeSpec.initialDelaySeconds -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L283) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L283) InitialDelaySeconds specifies number of seconds after the container has started before liveness or readiness probes are initiated. Minimum value is 0. @@ -1617,7 +1617,7 @@ Default Value: `2` ### .spec.coordinators.probes.startupProbeSpec.periodSeconds -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L287) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L287) PeriodSeconds How often (in seconds) to perform the probe. Minimum value is 1. @@ -1628,7 +1628,7 @@ Default Value: `10` ### .spec.coordinators.probes.startupProbeSpec.successThreshold -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L295) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L295) SuccessThreshold Minimum consecutive successes for the probe to be considered successful after having failed. Minimum value is 1. @@ -1639,7 +1639,7 @@ Default Value: `1` ### .spec.coordinators.probes.startupProbeSpec.timeoutSeconds -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L291) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L291) TimeoutSeconds specifies number of seconds after which the probe times out Minimum value is 1. @@ -1650,7 +1650,7 @@ Default Value: `2` ### .spec.coordinators.pvcResizeMode -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L173) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L173) VolumeResizeMode specified resize mode for PVCs and PVs @@ -1662,7 +1662,7 @@ Possible Values: ### .spec.coordinators.resources -Type: `core.ResourceRequirements` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L98) +Type: `core.ResourceRequirements` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L98) Resources holds resource requests & limits @@ -1673,7 +1673,7 @@ Links: ### .spec.coordinators.schedulerName -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L90) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L90) SchedulerName define scheduler name used for group @@ -1681,7 +1681,7 @@ SchedulerName define scheduler name used for group ### .spec.coordinators.securityContext.addCapabilities -Type: `[]core.Capability` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_security_context_spec.go#L41) +Type: `[]core.Capability` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_security_context_spec.go#L41) AddCapabilities add new capabilities to containers @@ -1689,7 +1689,7 @@ AddCapabilities add new capabilities to containers ### .spec.coordinators.securityContext.allowPrivilegeEscalation -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_security_context_spec.go#L44) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_security_context_spec.go#L44) AllowPrivilegeEscalation Controls whether a process can gain more privileges than its parent process. @@ -1697,7 +1697,7 @@ AllowPrivilegeEscalation Controls whether a process can gain more privileges tha ### .spec.coordinators.securityContext.dropAllCapabilities -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_security_context_spec.go#L38) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_security_context_spec.go#L38) > [!WARNING] > ***DEPRECATED*** @@ -1710,7 +1710,7 @@ DropAllCapabilities specifies if capabilities should be dropped for this pod con ### .spec.coordinators.securityContext.fsGroup -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_security_context_spec.go#L61) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_security_context_spec.go#L61) FSGroup is a special supplemental group that applies to all containers in a pod. @@ -1718,7 +1718,7 @@ FSGroup is a special supplemental group that applies to all containers in a pod. ### .spec.coordinators.securityContext.privileged -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_security_context_spec.go#L47) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_security_context_spec.go#L47) Privileged If true, runs container in privileged mode. Processes in privileged containers are essentially equivalent to root on the host. @@ -1727,7 +1727,7 @@ essentially equivalent to root on the host. ### .spec.coordinators.securityContext.readOnlyRootFilesystem -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_security_context_spec.go#L49) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_security_context_spec.go#L49) ReadOnlyRootFilesystem if true, mounts the container's root filesystem as read-only. @@ -1735,7 +1735,7 @@ ReadOnlyRootFilesystem if true, mounts the container's root filesystem as read-o ### .spec.coordinators.securityContext.runAsGroup -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_security_context_spec.go#L55) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_security_context_spec.go#L55) RunAsGroup is the GID to run the entrypoint of the container process. @@ -1743,7 +1743,7 @@ RunAsGroup is the GID to run the entrypoint of the container process. ### .spec.coordinators.securityContext.runAsNonRoot -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_security_context_spec.go#L51) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_security_context_spec.go#L51) RunAsNonRoot if true, indicates that the container must run as a non-root user. @@ -1751,7 +1751,7 @@ RunAsNonRoot if true, indicates that the container must run as a non-root user. ### .spec.coordinators.securityContext.runAsUser -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_security_context_spec.go#L53) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_security_context_spec.go#L53) RunAsUser is the UID to run the entrypoint of the container process. @@ -1759,7 +1759,7 @@ RunAsUser is the UID to run the entrypoint of the container process. ### .spec.coordinators.securityContext.seccompProfile -Type: `core.SeccompProfile` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_security_context_spec.go#L77) +Type: `core.SeccompProfile` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_security_context_spec.go#L77) SeccompProfile defines a pod/container's seccomp profile settings. Only one profile source may be set. @@ -1770,7 +1770,7 @@ Links: ### .spec.coordinators.securityContext.seLinuxOptions -Type: `core.SELinuxOptions` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_security_context_spec.go#L82) +Type: `core.SELinuxOptions` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_security_context_spec.go#L82) SELinuxOptions are the labels to be applied to the container @@ -1781,7 +1781,7 @@ Links: ### .spec.coordinators.securityContext.supplementalGroups -Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_security_context_spec.go#L59) +Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_security_context_spec.go#L59) SupplementalGroups is a list of groups applied to the first process run in each container, in addition to the container's primary GID, the fsGroup (if specified), and group memberships defined in the container image for the uid of the container process. @@ -1790,7 +1790,7 @@ the fsGroup (if specified), and group memberships defined in the container image ### .spec.coordinators.securityContext.sysctls -Type: `map[string]intstr.IntOrString` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_security_context_spec.go#L72) +Type: `map[string]intstr.IntOrString` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_security_context_spec.go#L72) Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch. @@ -1811,7 +1811,7 @@ sysctls: ### .spec.coordinators.serviceAccountName -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L149) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L149) ServiceAccountName setting specifies the `serviceAccountName` for the `Pods` created for each server of this group. If empty, it defaults to using the @@ -1826,7 +1826,7 @@ to that service account. ### .spec.coordinators.shutdownDelay -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L216) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L216) ShutdownDelay define how long operator should delay finalizer removal after shutdown @@ -1834,7 +1834,7 @@ ShutdownDelay define how long operator should delay finalizer removal after shut ### .spec.coordinators.shutdownMethod -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L214) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L214) ShutdownMethod describe procedure of member shutdown taken by Operator @@ -1842,7 +1842,7 @@ ShutdownMethod describe procedure of member shutdown taken by Operator ### .spec.coordinators.sidecarCoreNames -Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L192) +Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L192) SidecarCoreNames is a list of sidecar containers which must run in the pod. Some names (e.g.: "server", "worker") are reserved, and they don't have any impact. @@ -1851,7 +1851,7 @@ Some names (e.g.: "server", "worker") are reserved, and they don't have any impa ### .spec.coordinators.sidecars -Type: `[]core.Container` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L196) +Type: `[]core.Container` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L196) Sidecars specifies a list of additional containers to be started @@ -1862,7 +1862,7 @@ Links: ### .spec.coordinators.storageClassName -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L94) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L94) > [!WARNING] > ***DEPRECATED*** @@ -1875,7 +1875,7 @@ StorageClassName specifies the classname for storage of the servers. ### .spec.coordinators.terminationGracePeriodSeconds -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L229) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L229) TerminationGracePeriodSeconds override default TerminationGracePeriodSeconds for pods - via silent rotation @@ -1883,7 +1883,7 @@ TerminationGracePeriodSeconds override default TerminationGracePeriodSeconds for ### .spec.coordinators.tolerations -Type: `[]core.Toleration` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L125) +Type: `[]core.Toleration` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L125) Tolerations specifies the tolerations added to Pods in this group. By default, suitable tolerations are set for the following keys with the `NoExecute` effect: @@ -1899,7 +1899,7 @@ Links: ### .spec.coordinators.volumeAllowShrink -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L177) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L177) > [!WARNING] > ***DEPRECATED*** @@ -1912,7 +1912,7 @@ VolumeAllowShrink allows shrinking of the volume ### .spec.coordinators.volumeClaimTemplate -Type: `core.PersistentVolumeClaim` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L168) +Type: `core.PersistentVolumeClaim` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L168) VolumeClaimTemplate specifies a volumeClaimTemplate used by operator to create to volume claims for pods of this group. This setting is not available for group `coordinators`, `syncmasters` & `syncworkers`. @@ -1928,7 +1928,7 @@ Links: ### .spec.coordinators.volumeMounts -Type: `[]ServerGroupSpecVolumeMount` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L206) +Type: `[]ServerGroupSpecVolumeMount` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L206) VolumeMounts define list of volume mounts mounted into server container @@ -1939,7 +1939,7 @@ Links: ### .spec.coordinators.volumes\[int\].configMap -Type: `core.ConfigMapVolumeSource` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_volume.go#L138) +Type: `core.ConfigMapVolumeSource` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_volume.go#L138) ConfigMap which should be mounted into pod @@ -1950,7 +1950,7 @@ Links: ### .spec.coordinators.volumes\[int\].emptyDir -Type: `core.EmptyDirVolumeSource` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_volume.go#L143) +Type: `core.EmptyDirVolumeSource` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_volume.go#L143) EmptyDir @@ -1961,7 +1961,7 @@ Links: ### .spec.coordinators.volumes\[int\].hostPath -Type: `core.HostPathVolumeSource` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_volume.go#L148) +Type: `core.HostPathVolumeSource` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_volume.go#L148) HostPath @@ -1972,7 +1972,7 @@ Links: ### .spec.coordinators.volumes\[int\].name -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_volume.go#L128) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_volume.go#L128) Name of volume @@ -1980,7 +1980,7 @@ Name of volume ### .spec.coordinators.volumes\[int\].persistentVolumeClaim -Type: `core.PersistentVolumeClaimVolumeSource` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_volume.go#L153) +Type: `core.PersistentVolumeClaimVolumeSource` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_volume.go#L153) PersistentVolumeClaim @@ -1991,7 +1991,7 @@ Links: ### .spec.coordinators.volumes\[int\].secret -Type: `core.SecretVolumeSource` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_volume.go#L133) +Type: `core.SecretVolumeSource` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_volume.go#L133) Secret which should be mounted into pod @@ -2002,7 +2002,7 @@ Links: ### .spec.database.maintenance -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/database_spec.go#L25) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/database_spec.go#L25) Maintenance manage maintenance mode on Cluster side. Requires maintenance feature to be enabled @@ -2010,7 +2010,7 @@ Maintenance manage maintenance mode on Cluster side. Requires maintenance featur ### .spec.dbservers.affinity -Type: `core.PodAffinity` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L185) +Type: `core.PodAffinity` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L185) Affinity specified additional affinity settings in ArangoDB Pod definitions @@ -2021,7 +2021,7 @@ Links: ### .spec.dbservers.allowMemberRecreation -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L227) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L227) AllowMemberRecreation allows to recreate member. This setting changes the member recreation logic based on group: @@ -2032,7 +2032,7 @@ This setting changes the member recreation logic based on group: ### .spec.dbservers.annotations -Type: `object` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L128) +Type: `object` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L128) Annotations specified the annotations added to Pods in this group. Annotations are merged with `spec.annotations`. @@ -2041,7 +2041,7 @@ Annotations are merged with `spec.annotations`. ### .spec.dbservers.annotationsIgnoreList -Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L130) +Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L130) AnnotationsIgnoreList list regexp or plain definitions which annotations should be ignored @@ -2049,7 +2049,7 @@ AnnotationsIgnoreList list regexp or plain definitions which annotations should ### .spec.dbservers.annotationsMode -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L132) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L132) AnnotationsMode Define annotations mode which should be use while overriding annotations @@ -2057,7 +2057,7 @@ AnnotationsMode Define annotations mode which should be use while overriding ann ### .spec.dbservers.antiAffinity -Type: `core.PodAntiAffinity` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L181) +Type: `core.PodAntiAffinity` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L181) AntiAffinity specified additional antiAffinity settings in ArangoDB Pod definitions @@ -2068,7 +2068,7 @@ Links: ### .spec.dbservers.args -Type: `[]string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L86) +Type: `[]string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L86) Args setting specifies additional command-line arguments passed to all servers of this group. @@ -2078,7 +2078,7 @@ Default Value: `[]` ### .spec.dbservers.count -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L78) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L78) Count setting specifies the number of servers to start for the given group. For the Agent group, this value must be a positive, odd number. @@ -2091,7 +2091,7 @@ as for the `dbservers` group. ### .spec.dbservers.entrypoint -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L88) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L88) Entrypoint overrides container executable @@ -2099,19 +2099,19 @@ Entrypoint overrides container executable ### .spec.dbservers.envs\[int\].name -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_env_var.go#L26) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_env_var.go#L26) *** ### .spec.dbservers.envs\[int\].value -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_env_var.go#L27) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_env_var.go#L27) *** ### .spec.dbservers.ephemeralVolumes.apps.size -Type: `resource.Quantity` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_ephemeral_volumes.go#L64) +Type: `resource.Quantity` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_ephemeral_volumes.go#L64) Size define size of the ephemeral volume @@ -2122,7 +2122,7 @@ Links: ### .spec.dbservers.ephemeralVolumes.temp.size -Type: `resource.Quantity` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_ephemeral_volumes.go#L64) +Type: `resource.Quantity` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_ephemeral_volumes.go#L64) Size define size of the ephemeral volume @@ -2133,7 +2133,7 @@ Links: ### .spec.dbservers.exporterPort -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L240) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L240) ExporterPort define Port used by exporter @@ -2141,7 +2141,7 @@ ExporterPort define Port used by exporter ### .spec.dbservers.extendedRotationCheck -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L210) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L210) ExtendedRotationCheck extend checks for rotation @@ -2149,7 +2149,7 @@ ExtendedRotationCheck extend checks for rotation ### .spec.dbservers.externalPortEnabled -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L222) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L222) ExternalPortEnabled if external port should be enabled. If is set to false, ports needs to be exposed via sidecar. Only for ArangoD members @@ -2157,7 +2157,7 @@ ExternalPortEnabled if external port should be enabled. If is set to false, port ### .spec.dbservers.indexMethod -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L233) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L233) IndexMethod define group Indexing method @@ -2169,7 +2169,7 @@ Possible Values: ### .spec.dbservers.initContainers.containers -Type: `[]core.Container` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_init_containers.go#L91) +Type: `[]core.Container` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_init_containers.go#L91) Containers contains list of containers @@ -2180,7 +2180,7 @@ Links: ### .spec.dbservers.initContainers.mode -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_init_containers.go#L94) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_init_containers.go#L94) Mode keep container replace mode @@ -2188,7 +2188,7 @@ Mode keep container replace mode ### .spec.dbservers.internalPort -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L218) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L218) InternalPort define port used in internal communication, can be accessed over localhost via sidecar. Only for ArangoD members @@ -2196,7 +2196,7 @@ InternalPort define port used in internal communication, can be accessed over lo ### .spec.dbservers.internalPortProtocol -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L220) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L220) InternalPortProtocol define protocol of port used in internal communication, can be accessed over localhost via sidecar. Only for ArangoD members @@ -2204,7 +2204,7 @@ InternalPortProtocol define protocol of port used in internal communication, can ### .spec.dbservers.labels -Type: `object` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L134) +Type: `object` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L134) Labels specified the labels added to Pods in this group. @@ -2212,7 +2212,7 @@ Labels specified the labels added to Pods in this group. ### .spec.dbservers.labelsIgnoreList -Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L136) +Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L136) LabelsIgnoreList list regexp or plain definitions which labels should be ignored @@ -2220,7 +2220,7 @@ LabelsIgnoreList list regexp or plain definitions which labels should be ignored ### .spec.dbservers.labelsMode -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L138) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L138) LabelsMode Define labels mode which should be use while overriding labels @@ -2228,7 +2228,7 @@ LabelsMode Define labels mode which should be use while overriding labels ### .spec.dbservers.maxCount -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L82) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L82) MaxCount specifies a maximum for the count of servers. If set, a specification is invalid if `count > maxCount`. @@ -2236,7 +2236,7 @@ MaxCount specifies a maximum for the count of servers. If set, a specification i ### .spec.dbservers.memoryReservation -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L110) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L110) MemoryReservation determines the system reservation of memory while calculating `ARANGODB_OVERRIDE_DETECTED_TOTAL_MEMORY` value. If this field is set, `ARANGODB_OVERRIDE_DETECTED_TOTAL_MEMORY` is reduced by a specified value in percent. @@ -2251,7 +2251,7 @@ Default Value: `0` ### .spec.dbservers.minCount -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L80) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L80) MinCount specifies a minimum for the count of servers. If set, a specification is invalid if `count < minCount`. @@ -2259,7 +2259,7 @@ MinCount specifies a minimum for the count of servers. If set, a specification i ### .spec.dbservers.nodeAffinity -Type: `core.NodeAffinity` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L189) +Type: `core.NodeAffinity` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L189) NodeAffinity specified additional nodeAffinity settings in ArangoDB Pod definitions @@ -2270,7 +2270,7 @@ Links: ### .spec.dbservers.nodeSelector -Type: `map[string]string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L153) +Type: `map[string]string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L153) NodeSelector setting specifies a set of labels to be used as `nodeSelector` for Pods of this node. @@ -2281,7 +2281,7 @@ Links: ### .spec.dbservers.numactl.args -Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_numactl_spec.go#L38) +Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_numactl_spec.go#L38) Args define list of the numactl process @@ -2291,7 +2291,7 @@ Default Value: `[]` ### .spec.dbservers.numactl.enabled -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_numactl_spec.go#L30) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_numactl_spec.go#L30) Enabled define if numactl should be enabled @@ -2301,7 +2301,7 @@ Default Value: `false` ### .spec.dbservers.numactl.path -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_numactl_spec.go#L34) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_numactl_spec.go#L34) Path define numactl path within the container @@ -2311,7 +2311,7 @@ Default Value: `/usr/bin/numactl` ### .spec.dbservers.overrideDetectedNumberOfCores -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L116) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L116) > [!IMPORTANT] > **Values set by this feature override user-provided `ARANGODB_OVERRIDE_DETECTED_NUMBER_OF_CORES` Container Environment Variable** @@ -2328,7 +2328,7 @@ Default Value: `true` ### .spec.dbservers.overrideDetectedTotalMemory -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L104) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L104) > [!IMPORTANT] > **Values set by this feature override user-provided `ARANGODB_OVERRIDE_DETECTED_TOTAL_MEMORY` Container Environment Variable** @@ -2345,19 +2345,19 @@ Default Value: `true` ### .spec.dbservers.podModes.network -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec_pod_modes.go#L31) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec_pod_modes.go#L31) *** ### .spec.dbservers.podModes.pid -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec_pod_modes.go#L32) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec_pod_modes.go#L32) *** ### .spec.dbservers.port -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L238) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L238) Port define Port used by member @@ -2365,7 +2365,7 @@ Port define Port used by member ### .spec.dbservers.priorityClassName -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L159) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L159) PriorityClassName specifies a priority class name Will be forwarded to the pod spec. @@ -2377,7 +2377,7 @@ Links: ### .spec.dbservers.probes.livenessProbeDisabled -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L250) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L250) LivenessProbeDisabled if set to true, the operator does not generate a liveness probe for new pods belonging to this group @@ -2387,7 +2387,7 @@ Default Value: `false` ### .spec.dbservers.probes.livenessProbeSpec.failureThreshold -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L300) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L300) FailureThreshold when a Pod starts and the probe fails, Kubernetes will try failureThreshold times before giving up. Giving up means restarting the container. @@ -2399,7 +2399,7 @@ Default Value: `3` ### .spec.dbservers.probes.livenessProbeSpec.initialDelaySeconds -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L283) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L283) InitialDelaySeconds specifies number of seconds after the container has started before liveness or readiness probes are initiated. Minimum value is 0. @@ -2410,7 +2410,7 @@ Default Value: `2` ### .spec.dbservers.probes.livenessProbeSpec.periodSeconds -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L287) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L287) PeriodSeconds How often (in seconds) to perform the probe. Minimum value is 1. @@ -2421,7 +2421,7 @@ Default Value: `10` ### .spec.dbservers.probes.livenessProbeSpec.successThreshold -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L295) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L295) SuccessThreshold Minimum consecutive successes for the probe to be considered successful after having failed. Minimum value is 1. @@ -2432,7 +2432,7 @@ Default Value: `1` ### .spec.dbservers.probes.livenessProbeSpec.timeoutSeconds -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L291) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L291) TimeoutSeconds specifies number of seconds after which the probe times out Minimum value is 1. @@ -2443,7 +2443,7 @@ Default Value: `2` ### .spec.dbservers.probes.ReadinessProbeDisabled -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L257) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L257) > [!WARNING] > ***DEPRECATED*** @@ -2456,7 +2456,7 @@ OldReadinessProbeDisabled if true readinessProbes are disabled ### .spec.dbservers.probes.readinessProbeDisabled -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L259) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L259) ReadinessProbeDisabled override flag for probe disabled in good manner (lowercase) with backward compatibility @@ -2464,7 +2464,7 @@ ReadinessProbeDisabled override flag for probe disabled in good manner (lowercas ### .spec.dbservers.probes.readinessProbeSpec.failureThreshold -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L300) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L300) FailureThreshold when a Pod starts and the probe fails, Kubernetes will try failureThreshold times before giving up. Giving up means restarting the container. @@ -2476,7 +2476,7 @@ Default Value: `3` ### .spec.dbservers.probes.readinessProbeSpec.initialDelaySeconds -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L283) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L283) InitialDelaySeconds specifies number of seconds after the container has started before liveness or readiness probes are initiated. Minimum value is 0. @@ -2487,7 +2487,7 @@ Default Value: `2` ### .spec.dbservers.probes.readinessProbeSpec.periodSeconds -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L287) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L287) PeriodSeconds How often (in seconds) to perform the probe. Minimum value is 1. @@ -2498,7 +2498,7 @@ Default Value: `10` ### .spec.dbservers.probes.readinessProbeSpec.successThreshold -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L295) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L295) SuccessThreshold Minimum consecutive successes for the probe to be considered successful after having failed. Minimum value is 1. @@ -2509,7 +2509,7 @@ Default Value: `1` ### .spec.dbservers.probes.readinessProbeSpec.timeoutSeconds -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L291) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L291) TimeoutSeconds specifies number of seconds after which the probe times out Minimum value is 1. @@ -2520,7 +2520,7 @@ Default Value: `2` ### .spec.dbservers.probes.startupProbeDisabled -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L264) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L264) StartupProbeDisabled if true startupProbes are disabled @@ -2528,7 +2528,7 @@ StartupProbeDisabled if true startupProbes are disabled ### .spec.dbservers.probes.startupProbeSpec.failureThreshold -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L300) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L300) FailureThreshold when a Pod starts and the probe fails, Kubernetes will try failureThreshold times before giving up. Giving up means restarting the container. @@ -2540,7 +2540,7 @@ Default Value: `3` ### .spec.dbservers.probes.startupProbeSpec.initialDelaySeconds -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L283) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L283) InitialDelaySeconds specifies number of seconds after the container has started before liveness or readiness probes are initiated. Minimum value is 0. @@ -2551,7 +2551,7 @@ Default Value: `2` ### .spec.dbservers.probes.startupProbeSpec.periodSeconds -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L287) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L287) PeriodSeconds How often (in seconds) to perform the probe. Minimum value is 1. @@ -2562,7 +2562,7 @@ Default Value: `10` ### .spec.dbservers.probes.startupProbeSpec.successThreshold -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L295) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L295) SuccessThreshold Minimum consecutive successes for the probe to be considered successful after having failed. Minimum value is 1. @@ -2573,7 +2573,7 @@ Default Value: `1` ### .spec.dbservers.probes.startupProbeSpec.timeoutSeconds -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L291) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L291) TimeoutSeconds specifies number of seconds after which the probe times out Minimum value is 1. @@ -2584,7 +2584,7 @@ Default Value: `2` ### .spec.dbservers.pvcResizeMode -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L173) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L173) VolumeResizeMode specified resize mode for PVCs and PVs @@ -2596,7 +2596,7 @@ Possible Values: ### .spec.dbservers.resources -Type: `core.ResourceRequirements` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L98) +Type: `core.ResourceRequirements` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L98) Resources holds resource requests & limits @@ -2607,7 +2607,7 @@ Links: ### .spec.dbservers.schedulerName -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L90) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L90) SchedulerName define scheduler name used for group @@ -2615,7 +2615,7 @@ SchedulerName define scheduler name used for group ### .spec.dbservers.securityContext.addCapabilities -Type: `[]core.Capability` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_security_context_spec.go#L41) +Type: `[]core.Capability` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_security_context_spec.go#L41) AddCapabilities add new capabilities to containers @@ -2623,7 +2623,7 @@ AddCapabilities add new capabilities to containers ### .spec.dbservers.securityContext.allowPrivilegeEscalation -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_security_context_spec.go#L44) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_security_context_spec.go#L44) AllowPrivilegeEscalation Controls whether a process can gain more privileges than its parent process. @@ -2631,7 +2631,7 @@ AllowPrivilegeEscalation Controls whether a process can gain more privileges tha ### .spec.dbservers.securityContext.dropAllCapabilities -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_security_context_spec.go#L38) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_security_context_spec.go#L38) > [!WARNING] > ***DEPRECATED*** @@ -2644,7 +2644,7 @@ DropAllCapabilities specifies if capabilities should be dropped for this pod con ### .spec.dbservers.securityContext.fsGroup -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_security_context_spec.go#L61) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_security_context_spec.go#L61) FSGroup is a special supplemental group that applies to all containers in a pod. @@ -2652,7 +2652,7 @@ FSGroup is a special supplemental group that applies to all containers in a pod. ### .spec.dbservers.securityContext.privileged -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_security_context_spec.go#L47) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_security_context_spec.go#L47) Privileged If true, runs container in privileged mode. Processes in privileged containers are essentially equivalent to root on the host. @@ -2661,7 +2661,7 @@ essentially equivalent to root on the host. ### .spec.dbservers.securityContext.readOnlyRootFilesystem -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_security_context_spec.go#L49) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_security_context_spec.go#L49) ReadOnlyRootFilesystem if true, mounts the container's root filesystem as read-only. @@ -2669,7 +2669,7 @@ ReadOnlyRootFilesystem if true, mounts the container's root filesystem as read-o ### .spec.dbservers.securityContext.runAsGroup -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_security_context_spec.go#L55) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_security_context_spec.go#L55) RunAsGroup is the GID to run the entrypoint of the container process. @@ -2677,7 +2677,7 @@ RunAsGroup is the GID to run the entrypoint of the container process. ### .spec.dbservers.securityContext.runAsNonRoot -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_security_context_spec.go#L51) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_security_context_spec.go#L51) RunAsNonRoot if true, indicates that the container must run as a non-root user. @@ -2685,7 +2685,7 @@ RunAsNonRoot if true, indicates that the container must run as a non-root user. ### .spec.dbservers.securityContext.runAsUser -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_security_context_spec.go#L53) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_security_context_spec.go#L53) RunAsUser is the UID to run the entrypoint of the container process. @@ -2693,7 +2693,7 @@ RunAsUser is the UID to run the entrypoint of the container process. ### .spec.dbservers.securityContext.seccompProfile -Type: `core.SeccompProfile` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_security_context_spec.go#L77) +Type: `core.SeccompProfile` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_security_context_spec.go#L77) SeccompProfile defines a pod/container's seccomp profile settings. Only one profile source may be set. @@ -2704,7 +2704,7 @@ Links: ### .spec.dbservers.securityContext.seLinuxOptions -Type: `core.SELinuxOptions` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_security_context_spec.go#L82) +Type: `core.SELinuxOptions` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_security_context_spec.go#L82) SELinuxOptions are the labels to be applied to the container @@ -2715,7 +2715,7 @@ Links: ### .spec.dbservers.securityContext.supplementalGroups -Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_security_context_spec.go#L59) +Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_security_context_spec.go#L59) SupplementalGroups is a list of groups applied to the first process run in each container, in addition to the container's primary GID, the fsGroup (if specified), and group memberships defined in the container image for the uid of the container process. @@ -2724,7 +2724,7 @@ the fsGroup (if specified), and group memberships defined in the container image ### .spec.dbservers.securityContext.sysctls -Type: `map[string]intstr.IntOrString` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_security_context_spec.go#L72) +Type: `map[string]intstr.IntOrString` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_security_context_spec.go#L72) Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch. @@ -2745,7 +2745,7 @@ sysctls: ### .spec.dbservers.serviceAccountName -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L149) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L149) ServiceAccountName setting specifies the `serviceAccountName` for the `Pods` created for each server of this group. If empty, it defaults to using the @@ -2760,7 +2760,7 @@ to that service account. ### .spec.dbservers.shutdownDelay -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L216) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L216) ShutdownDelay define how long operator should delay finalizer removal after shutdown @@ -2768,7 +2768,7 @@ ShutdownDelay define how long operator should delay finalizer removal after shut ### .spec.dbservers.shutdownMethod -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L214) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L214) ShutdownMethod describe procedure of member shutdown taken by Operator @@ -2776,7 +2776,7 @@ ShutdownMethod describe procedure of member shutdown taken by Operator ### .spec.dbservers.sidecarCoreNames -Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L192) +Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L192) SidecarCoreNames is a list of sidecar containers which must run in the pod. Some names (e.g.: "server", "worker") are reserved, and they don't have any impact. @@ -2785,7 +2785,7 @@ Some names (e.g.: "server", "worker") are reserved, and they don't have any impa ### .spec.dbservers.sidecars -Type: `[]core.Container` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L196) +Type: `[]core.Container` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L196) Sidecars specifies a list of additional containers to be started @@ -2796,7 +2796,7 @@ Links: ### .spec.dbservers.storageClassName -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L94) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L94) > [!WARNING] > ***DEPRECATED*** @@ -2809,7 +2809,7 @@ StorageClassName specifies the classname for storage of the servers. ### .spec.dbservers.terminationGracePeriodSeconds -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L229) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L229) TerminationGracePeriodSeconds override default TerminationGracePeriodSeconds for pods - via silent rotation @@ -2817,7 +2817,7 @@ TerminationGracePeriodSeconds override default TerminationGracePeriodSeconds for ### .spec.dbservers.tolerations -Type: `[]core.Toleration` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L125) +Type: `[]core.Toleration` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L125) Tolerations specifies the tolerations added to Pods in this group. By default, suitable tolerations are set for the following keys with the `NoExecute` effect: @@ -2833,7 +2833,7 @@ Links: ### .spec.dbservers.volumeAllowShrink -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L177) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L177) > [!WARNING] > ***DEPRECATED*** @@ -2846,7 +2846,7 @@ VolumeAllowShrink allows shrinking of the volume ### .spec.dbservers.volumeClaimTemplate -Type: `core.PersistentVolumeClaim` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L168) +Type: `core.PersistentVolumeClaim` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L168) VolumeClaimTemplate specifies a volumeClaimTemplate used by operator to create to volume claims for pods of this group. This setting is not available for group `coordinators`, `syncmasters` & `syncworkers`. @@ -2862,7 +2862,7 @@ Links: ### .spec.dbservers.volumeMounts -Type: `[]ServerGroupSpecVolumeMount` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L206) +Type: `[]ServerGroupSpecVolumeMount` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L206) VolumeMounts define list of volume mounts mounted into server container @@ -2873,7 +2873,7 @@ Links: ### .spec.dbservers.volumes\[int\].configMap -Type: `core.ConfigMapVolumeSource` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_volume.go#L138) +Type: `core.ConfigMapVolumeSource` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_volume.go#L138) ConfigMap which should be mounted into pod @@ -2884,7 +2884,7 @@ Links: ### .spec.dbservers.volumes\[int\].emptyDir -Type: `core.EmptyDirVolumeSource` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_volume.go#L143) +Type: `core.EmptyDirVolumeSource` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_volume.go#L143) EmptyDir @@ -2895,7 +2895,7 @@ Links: ### .spec.dbservers.volumes\[int\].hostPath -Type: `core.HostPathVolumeSource` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_volume.go#L148) +Type: `core.HostPathVolumeSource` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_volume.go#L148) HostPath @@ -2906,7 +2906,7 @@ Links: ### .spec.dbservers.volumes\[int\].name -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_volume.go#L128) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_volume.go#L128) Name of volume @@ -2914,7 +2914,7 @@ Name of volume ### .spec.dbservers.volumes\[int\].persistentVolumeClaim -Type: `core.PersistentVolumeClaimVolumeSource` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_volume.go#L153) +Type: `core.PersistentVolumeClaimVolumeSource` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_volume.go#L153) PersistentVolumeClaim @@ -2925,7 +2925,7 @@ Links: ### .spec.dbservers.volumes\[int\].secret -Type: `core.SecretVolumeSource` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_volume.go#L133) +Type: `core.SecretVolumeSource` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_volume.go#L133) Secret which should be mounted into pod @@ -2936,7 +2936,7 @@ Links: ### .spec.disableIPv6 -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/deployment_spec.go#L98) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/deployment_spec.go#L98) DisableIPv6 setting prevents the use of IPv6 addresses by ArangoDB servers. This setting cannot be changed after the deployment has been created. @@ -2947,7 +2947,7 @@ Default Value: `false` ### .spec.downtimeAllowed -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/deployment_spec.go#L93) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/deployment_spec.go#L93) DowntimeAllowed setting is used to allow automatic reconciliation actions that yield some downtime of the ArangoDB deployment. When this setting is set to false, no automatic action that may result in downtime is allowed. @@ -2963,7 +2963,7 @@ Default Value: `false` ### .spec.environment -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/deployment_spec.go#L54) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/deployment_spec.go#L54) Environment setting specifies the type of environment in which the deployment is created. @@ -2975,7 +2975,7 @@ Possible Values: ### .spec.externalAccess.advertisedEndpoint -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/external_access_spec.go#L58) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/external_access_spec.go#L58) AdvertisedEndpoint is passed to the coordinators/single servers for advertising a specific endpoint @@ -2983,7 +2983,7 @@ AdvertisedEndpoint is passed to the coordinators/single servers for advertising ### .spec.externalAccess.loadBalancerIP -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/external_access_spec.go#L48) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/external_access_spec.go#L48) LoadBalancerIP define optional IP used to configure a load-balancer on, in case of Auto or LoadBalancer type. If you do not specify this setting, an IP will be chosen automatically by the load-balancer provisioner. @@ -2992,7 +2992,7 @@ If you do not specify this setting, an IP will be chosen automatically by the lo ### .spec.externalAccess.loadBalancerSourceRanges -Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/external_access_spec.go#L55) +Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/external_access_spec.go#L55) LoadBalancerSourceRanges define LoadBalancerSourceRanges used for LoadBalancer Service type If specified and supported by the platform, this will restrict traffic through the cloud-provider @@ -3006,7 +3006,7 @@ Links: ### .spec.externalAccess.managedServiceNames -Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/external_access_spec.go#L62) +Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/external_access_spec.go#L62) ManagedServiceNames keeps names of services which are not managed by KubeArangoDB. It is only relevant when type of service is `managed`. @@ -3015,7 +3015,7 @@ It is only relevant when type of service is `managed`. ### .spec.externalAccess.nodePort -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/external_access_spec.go#L44) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/external_access_spec.go#L44) NodePort define optional port used in case of Auto or NodePort type. This setting is used when `spec.externalAccess.type` is set to `NodePort` or `Auto`. @@ -3025,7 +3025,7 @@ If you do not specify this setting, a random port will be chosen automatically. ### .spec.externalAccess.type -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/external_access_spec.go#L39) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/external_access_spec.go#L39) Type specifies the type of Service that will be created to provide access to the ArangoDB deployment from outside the Kubernetes cluster. @@ -3039,13 +3039,13 @@ Possible Values: ### .spec.features.foxx.queues -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/deployment_features.go#L24) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/deployment_features.go#L24) *** ### .spec.id.affinity -Type: `core.PodAffinity` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_id_group_spec.go#L48) +Type: `core.PodAffinity` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_id_group_spec.go#L48) Affinity specified additional affinity settings in ArangoDB Pod definitions @@ -3056,7 +3056,7 @@ Links: ### .spec.id.antiAffinity -Type: `core.PodAntiAffinity` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_id_group_spec.go#L44) +Type: `core.PodAntiAffinity` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_id_group_spec.go#L44) AntiAffinity specified additional antiAffinity settings in ArangoDB Pod definitions @@ -3067,7 +3067,7 @@ Links: ### .spec.id.args -Type: `[]string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_id_group_spec.go#L32) +Type: `[]string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_id_group_spec.go#L32) Args setting specifies additional command-line arguments passed to all servers of this group. @@ -3077,7 +3077,7 @@ Default Value: `[]` ### .spec.id.entrypoint -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_id_group_spec.go#L28) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_id_group_spec.go#L28) Entrypoint overrides container executable @@ -3085,7 +3085,7 @@ Entrypoint overrides container executable ### .spec.id.nodeAffinity -Type: `core.NodeAffinity` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_id_group_spec.go#L52) +Type: `core.NodeAffinity` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_id_group_spec.go#L52) NodeAffinity specified additional nodeAffinity settings in ArangoDB Pod definitions @@ -3096,7 +3096,7 @@ Links: ### .spec.id.nodeSelector -Type: `object` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_id_group_spec.go#L38) +Type: `object` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_id_group_spec.go#L38) NodeSelector specifies a set of selectors for nodes @@ -3104,7 +3104,7 @@ NodeSelector specifies a set of selectors for nodes ### .spec.id.priorityClassName -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_id_group_spec.go#L40) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_id_group_spec.go#L40) PriorityClassName specifies a priority class name @@ -3112,7 +3112,7 @@ PriorityClassName specifies a priority class name ### .spec.id.resources -Type: `core.ResourceRequirements` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_id_group_spec.go#L60) +Type: `core.ResourceRequirements` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_id_group_spec.go#L60) Resources holds resource requests & limits @@ -3123,7 +3123,7 @@ Links: ### .spec.id.securityContext.addCapabilities -Type: `[]core.Capability` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_security_context_spec.go#L41) +Type: `[]core.Capability` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_security_context_spec.go#L41) AddCapabilities add new capabilities to containers @@ -3131,7 +3131,7 @@ AddCapabilities add new capabilities to containers ### .spec.id.securityContext.allowPrivilegeEscalation -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_security_context_spec.go#L44) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_security_context_spec.go#L44) AllowPrivilegeEscalation Controls whether a process can gain more privileges than its parent process. @@ -3139,7 +3139,7 @@ AllowPrivilegeEscalation Controls whether a process can gain more privileges tha ### .spec.id.securityContext.dropAllCapabilities -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_security_context_spec.go#L38) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_security_context_spec.go#L38) > [!WARNING] > ***DEPRECATED*** @@ -3152,7 +3152,7 @@ DropAllCapabilities specifies if capabilities should be dropped for this pod con ### .spec.id.securityContext.fsGroup -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_security_context_spec.go#L61) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_security_context_spec.go#L61) FSGroup is a special supplemental group that applies to all containers in a pod. @@ -3160,7 +3160,7 @@ FSGroup is a special supplemental group that applies to all containers in a pod. ### .spec.id.securityContext.privileged -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_security_context_spec.go#L47) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_security_context_spec.go#L47) Privileged If true, runs container in privileged mode. Processes in privileged containers are essentially equivalent to root on the host. @@ -3169,7 +3169,7 @@ essentially equivalent to root on the host. ### .spec.id.securityContext.readOnlyRootFilesystem -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_security_context_spec.go#L49) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_security_context_spec.go#L49) ReadOnlyRootFilesystem if true, mounts the container's root filesystem as read-only. @@ -3177,7 +3177,7 @@ ReadOnlyRootFilesystem if true, mounts the container's root filesystem as read-o ### .spec.id.securityContext.runAsGroup -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_security_context_spec.go#L55) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_security_context_spec.go#L55) RunAsGroup is the GID to run the entrypoint of the container process. @@ -3185,7 +3185,7 @@ RunAsGroup is the GID to run the entrypoint of the container process. ### .spec.id.securityContext.runAsNonRoot -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_security_context_spec.go#L51) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_security_context_spec.go#L51) RunAsNonRoot if true, indicates that the container must run as a non-root user. @@ -3193,7 +3193,7 @@ RunAsNonRoot if true, indicates that the container must run as a non-root user. ### .spec.id.securityContext.runAsUser -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_security_context_spec.go#L53) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_security_context_spec.go#L53) RunAsUser is the UID to run the entrypoint of the container process. @@ -3201,7 +3201,7 @@ RunAsUser is the UID to run the entrypoint of the container process. ### .spec.id.securityContext.seccompProfile -Type: `core.SeccompProfile` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_security_context_spec.go#L77) +Type: `core.SeccompProfile` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_security_context_spec.go#L77) SeccompProfile defines a pod/container's seccomp profile settings. Only one profile source may be set. @@ -3212,7 +3212,7 @@ Links: ### .spec.id.securityContext.seLinuxOptions -Type: `core.SELinuxOptions` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_security_context_spec.go#L82) +Type: `core.SELinuxOptions` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_security_context_spec.go#L82) SELinuxOptions are the labels to be applied to the container @@ -3223,7 +3223,7 @@ Links: ### .spec.id.securityContext.supplementalGroups -Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_security_context_spec.go#L59) +Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_security_context_spec.go#L59) SupplementalGroups is a list of groups applied to the first process run in each container, in addition to the container's primary GID, the fsGroup (if specified), and group memberships defined in the container image for the uid of the container process. @@ -3232,7 +3232,7 @@ the fsGroup (if specified), and group memberships defined in the container image ### .spec.id.securityContext.sysctls -Type: `map[string]intstr.IntOrString` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_security_context_spec.go#L72) +Type: `map[string]intstr.IntOrString` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_security_context_spec.go#L72) Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch. @@ -3253,7 +3253,7 @@ sysctls: ### .spec.id.serviceAccountName -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_id_group_spec.go#L54) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_id_group_spec.go#L54) ServiceAccountName specifies the name of the service account used for Pods in this group. @@ -3261,7 +3261,7 @@ ServiceAccountName specifies the name of the service account used for Pods in th ### .spec.id.tolerations -Type: `[]core.Toleration` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_id_group_spec.go#L36) +Type: `[]core.Toleration` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_id_group_spec.go#L36) Tolerations specifies the tolerations added to Pods in this group. @@ -3272,7 +3272,7 @@ Links: ### .spec.image -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/deployment_spec.go#L67) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/deployment_spec.go#L67) Image specifies the docker image to use for all ArangoDB servers. In a development environment this setting defaults to arangodb/arangodb:latest. @@ -3283,7 +3283,7 @@ It is highly recommend to use explicit version (not latest) for production envir ### .spec.imageDiscoveryMode -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/deployment_spec.go#L83) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/deployment_spec.go#L83) ImageDiscoveryMode specifies the image discovery mode. @@ -3295,7 +3295,7 @@ Possible Values: ### .spec.imagePullPolicy -Type: `core.PullPolicy` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/deployment_spec.go#L75) +Type: `core.PullPolicy` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/deployment_spec.go#L75) ImagePullPolicy specifies the pull policy for the docker image to use for all ArangoDB servers. @@ -3311,7 +3311,7 @@ Possible Values: ### .spec.imagePullSecrets -Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/deployment_spec.go#L78) +Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/deployment_spec.go#L78) ImagePullSecrets specifies the list of image pull secrets for the docker image to use for all ArangoDB servers. @@ -3319,7 +3319,7 @@ ImagePullSecrets specifies the list of image pull secrets for the docker image t ### .spec.labels -Type: `object` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/deployment_spec.go#L127) +Type: `object` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/deployment_spec.go#L127) Labels specifies the labels added to Pods in this group. @@ -3327,7 +3327,7 @@ Labels specifies the labels added to Pods in this group. ### .spec.labelsIgnoreList -Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/deployment_spec.go#L130) +Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/deployment_spec.go#L130) LabelsIgnoreList list regexp or plain definitions which labels should be ignored @@ -3335,7 +3335,7 @@ LabelsIgnoreList list regexp or plain definitions which labels should be ignored ### .spec.labelsMode -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/deployment_spec.go#L136) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/deployment_spec.go#L136) LabelsMode Define labels mode which should be use while overriding labels @@ -3348,7 +3348,7 @@ Possible Values: ### .spec.license.secretName -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/license_spec.go#L33) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/license_spec.go#L33) SecretName setting specifies the name of a kubernetes `Secret` that contains the license key token used for enterprise images. This value is not used for @@ -3358,7 +3358,7 @@ the Community Edition. ### .spec.lifecycle.resources -Type: `core.ResourceRequirements` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/lifecycle_spec.go#L31) +Type: `core.ResourceRequirements` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/lifecycle_spec.go#L31) Resources holds resource requests & limits @@ -3369,7 +3369,7 @@ Links: ### .spec.memberPropagationMode -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/deployment_spec.go#L209) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/deployment_spec.go#L209) MemberPropagationMode defines how changes to pod spec should be propogated. Changes to a pod’s configuration require a restart of that pod in almost all cases. @@ -3385,7 +3385,7 @@ Possible Values: ### .spec.metrics.authentication.jwtTokenSecretName -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/deployment_metrics_spec.go#L34) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/deployment_metrics_spec.go#L34) JWTTokenSecretName contains the name of the JWT kubernetes secret used for authentication @@ -3393,7 +3393,7 @@ JWTTokenSecretName contains the name of the JWT kubernetes secret used for authe ### .spec.metrics.enabled -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/deployment_metrics_spec.go#L81) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/deployment_metrics_spec.go#L81) Enabled if this is set to `true`, the operator runs a sidecar container for every Agent, DB-Server, Coordinator and Single server. @@ -3407,7 +3407,7 @@ Default Value: `false` ### .spec.metrics.extensions.usageMetrics -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/deployment_metrics_spec_extensions.go#L29) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/deployment_metrics_spec_extensions.go#L29) > [!IMPORTANT] > **UsageMetrics needs to be also enabled via DBServer Arguments** @@ -3423,7 +3423,7 @@ Default Value: `false` ### .spec.metrics.image -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/deployment_metrics_spec.go#L86) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/deployment_metrics_spec.go#L86) > [!WARNING] > ***DEPRECATED*** @@ -3436,7 +3436,7 @@ Image used for the Metrics Sidecar ### .spec.metrics.mode -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/deployment_metrics_spec.go#L97) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/deployment_metrics_spec.go#L97) > [!WARNING] > ***DEPRECATED*** @@ -3449,13 +3449,13 @@ Mode define metrics exported mode ### .spec.metrics.port -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/deployment_metrics_spec.go#L107) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/deployment_metrics_spec.go#L107) *** ### .spec.metrics.resources -Type: `core.ResourceRequirements` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/deployment_metrics_spec.go#L92) +Type: `core.ResourceRequirements` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/deployment_metrics_spec.go#L92) Resources holds resource requests & limits @@ -3466,19 +3466,19 @@ Links: ### .spec.metrics.serviceMonitor.enabled -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/deployment_metrics_service_monitor_spec.go#L24) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/deployment_metrics_service_monitor_spec.go#L24) *** ### .spec.metrics.serviceMonitor.labels -Type: `object` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/deployment_metrics_service_monitor_spec.go#L25) +Type: `object` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/deployment_metrics_service_monitor_spec.go#L25) *** ### .spec.metrics.tls -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/deployment_metrics_spec.go#L103) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/deployment_metrics_spec.go#L103) TLS defines if TLS should be enabled on Metrics exporter endpoint. This option will enable TLS only if TLS is enabled on ArangoDeployment, @@ -3490,7 +3490,7 @@ Default Value: `true` ### .spec.mode -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/deployment_spec.go#L49) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/deployment_spec.go#L49) Mode specifies the type of ArangoDB deployment to create. @@ -3505,7 +3505,7 @@ This field is **immutable**: Change of the ArangoDeployment Mode is not possible ### .spec.networkAttachedVolumes -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/deployment_spec.go#L112) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/deployment_spec.go#L112) NetworkAttachedVolumes If set to `true`, a ResignLeadership operation will be triggered when a DB-Server pod is evicted (rather than a CleanOutServer operation). @@ -3519,25 +3519,25 @@ Default Value: `true` ### .spec.rebalancer.enabled -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/rebalancer_spec.go#L26) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/rebalancer_spec.go#L26) *** ### .spec.rebalancer.optimizers.leader -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/rebalancer_spec.go#L75) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/rebalancer_spec.go#L75) *** ### .spec.rebalancer.parallelMoves -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/rebalancer_spec.go#L28) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/rebalancer_spec.go#L28) *** ### .spec.rebalancer.readers.count -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/rebalancer_spec.go#L63) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/rebalancer_spec.go#L63) > [!WARNING] > ***DEPRECATED*** @@ -3550,13 +3550,13 @@ Count Enable Shard Count machanism ### .spec.recovery.autoRecover -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/recovery_spec.go#L26) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/recovery_spec.go#L26) *** ### .spec.restoreEncryptionSecret -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/deployment_spec.go#L149) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/deployment_spec.go#L149) RestoreEncryptionSecret specifies optional name of secret which contains encryption key used for restore @@ -3564,7 +3564,7 @@ RestoreEncryptionSecret specifies optional name of secret which contains encrypt ### .spec.restoreFrom -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/deployment_spec.go#L146) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/deployment_spec.go#L146) RestoreFrom setting specifies a `ArangoBackup` resource name the cluster should be restored from. After a restore or failure to do so, the status of the deployment contains information about the restore operation in the restore key. @@ -3579,7 +3579,7 @@ A new restore attempt is made if and only if either in the status restore is not ### .spec.rocksdb.encryption.keySecretName -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/rocksdb_spec.go#L37) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/rocksdb_spec.go#L37) KeySecretName setting specifies the name of a Kubernetes `Secret` that contains an encryption key used for encrypting all data stored by ArangoDB servers. When an encryption key is used, encryption of the data in the cluster is enabled, without it encryption is disabled. @@ -3592,7 +3592,7 @@ The secret specified by this setting, must have a data field named 'key' contain ### .spec.single.affinity -Type: `core.PodAffinity` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L185) +Type: `core.PodAffinity` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L185) Affinity specified additional affinity settings in ArangoDB Pod definitions @@ -3603,7 +3603,7 @@ Links: ### .spec.single.allowMemberRecreation -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L227) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L227) AllowMemberRecreation allows to recreate member. This setting changes the member recreation logic based on group: @@ -3614,7 +3614,7 @@ This setting changes the member recreation logic based on group: ### .spec.single.annotations -Type: `object` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L128) +Type: `object` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L128) Annotations specified the annotations added to Pods in this group. Annotations are merged with `spec.annotations`. @@ -3623,7 +3623,7 @@ Annotations are merged with `spec.annotations`. ### .spec.single.annotationsIgnoreList -Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L130) +Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L130) AnnotationsIgnoreList list regexp or plain definitions which annotations should be ignored @@ -3631,7 +3631,7 @@ AnnotationsIgnoreList list regexp or plain definitions which annotations should ### .spec.single.annotationsMode -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L132) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L132) AnnotationsMode Define annotations mode which should be use while overriding annotations @@ -3639,7 +3639,7 @@ AnnotationsMode Define annotations mode which should be use while overriding ann ### .spec.single.antiAffinity -Type: `core.PodAntiAffinity` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L181) +Type: `core.PodAntiAffinity` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L181) AntiAffinity specified additional antiAffinity settings in ArangoDB Pod definitions @@ -3650,7 +3650,7 @@ Links: ### .spec.single.args -Type: `[]string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L86) +Type: `[]string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L86) Args setting specifies additional command-line arguments passed to all servers of this group. @@ -3660,7 +3660,7 @@ Default Value: `[]` ### .spec.single.count -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L78) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L78) Count setting specifies the number of servers to start for the given group. For the Agent group, this value must be a positive, odd number. @@ -3673,7 +3673,7 @@ as for the `dbservers` group. ### .spec.single.entrypoint -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L88) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L88) Entrypoint overrides container executable @@ -3681,19 +3681,19 @@ Entrypoint overrides container executable ### .spec.single.envs\[int\].name -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_env_var.go#L26) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_env_var.go#L26) *** ### .spec.single.envs\[int\].value -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_env_var.go#L27) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_env_var.go#L27) *** ### .spec.single.ephemeralVolumes.apps.size -Type: `resource.Quantity` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_ephemeral_volumes.go#L64) +Type: `resource.Quantity` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_ephemeral_volumes.go#L64) Size define size of the ephemeral volume @@ -3704,7 +3704,7 @@ Links: ### .spec.single.ephemeralVolumes.temp.size -Type: `resource.Quantity` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_ephemeral_volumes.go#L64) +Type: `resource.Quantity` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_ephemeral_volumes.go#L64) Size define size of the ephemeral volume @@ -3715,7 +3715,7 @@ Links: ### .spec.single.exporterPort -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L240) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L240) ExporterPort define Port used by exporter @@ -3723,7 +3723,7 @@ ExporterPort define Port used by exporter ### .spec.single.extendedRotationCheck -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L210) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L210) ExtendedRotationCheck extend checks for rotation @@ -3731,7 +3731,7 @@ ExtendedRotationCheck extend checks for rotation ### .spec.single.externalPortEnabled -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L222) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L222) ExternalPortEnabled if external port should be enabled. If is set to false, ports needs to be exposed via sidecar. Only for ArangoD members @@ -3739,7 +3739,7 @@ ExternalPortEnabled if external port should be enabled. If is set to false, port ### .spec.single.indexMethod -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L233) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L233) IndexMethod define group Indexing method @@ -3751,7 +3751,7 @@ Possible Values: ### .spec.single.initContainers.containers -Type: `[]core.Container` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_init_containers.go#L91) +Type: `[]core.Container` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_init_containers.go#L91) Containers contains list of containers @@ -3762,7 +3762,7 @@ Links: ### .spec.single.initContainers.mode -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_init_containers.go#L94) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_init_containers.go#L94) Mode keep container replace mode @@ -3770,7 +3770,7 @@ Mode keep container replace mode ### .spec.single.internalPort -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L218) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L218) InternalPort define port used in internal communication, can be accessed over localhost via sidecar. Only for ArangoD members @@ -3778,7 +3778,7 @@ InternalPort define port used in internal communication, can be accessed over lo ### .spec.single.internalPortProtocol -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L220) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L220) InternalPortProtocol define protocol of port used in internal communication, can be accessed over localhost via sidecar. Only for ArangoD members @@ -3786,7 +3786,7 @@ InternalPortProtocol define protocol of port used in internal communication, can ### .spec.single.labels -Type: `object` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L134) +Type: `object` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L134) Labels specified the labels added to Pods in this group. @@ -3794,7 +3794,7 @@ Labels specified the labels added to Pods in this group. ### .spec.single.labelsIgnoreList -Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L136) +Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L136) LabelsIgnoreList list regexp or plain definitions which labels should be ignored @@ -3802,7 +3802,7 @@ LabelsIgnoreList list regexp or plain definitions which labels should be ignored ### .spec.single.labelsMode -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L138) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L138) LabelsMode Define labels mode which should be use while overriding labels @@ -3810,7 +3810,7 @@ LabelsMode Define labels mode which should be use while overriding labels ### .spec.single.maxCount -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L82) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L82) MaxCount specifies a maximum for the count of servers. If set, a specification is invalid if `count > maxCount`. @@ -3818,7 +3818,7 @@ MaxCount specifies a maximum for the count of servers. If set, a specification i ### .spec.single.memoryReservation -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L110) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L110) MemoryReservation determines the system reservation of memory while calculating `ARANGODB_OVERRIDE_DETECTED_TOTAL_MEMORY` value. If this field is set, `ARANGODB_OVERRIDE_DETECTED_TOTAL_MEMORY` is reduced by a specified value in percent. @@ -3833,7 +3833,7 @@ Default Value: `0` ### .spec.single.minCount -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L80) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L80) MinCount specifies a minimum for the count of servers. If set, a specification is invalid if `count < minCount`. @@ -3841,7 +3841,7 @@ MinCount specifies a minimum for the count of servers. If set, a specification i ### .spec.single.nodeAffinity -Type: `core.NodeAffinity` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L189) +Type: `core.NodeAffinity` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L189) NodeAffinity specified additional nodeAffinity settings in ArangoDB Pod definitions @@ -3852,7 +3852,7 @@ Links: ### .spec.single.nodeSelector -Type: `map[string]string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L153) +Type: `map[string]string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L153) NodeSelector setting specifies a set of labels to be used as `nodeSelector` for Pods of this node. @@ -3863,7 +3863,7 @@ Links: ### .spec.single.numactl.args -Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_numactl_spec.go#L38) +Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_numactl_spec.go#L38) Args define list of the numactl process @@ -3873,7 +3873,7 @@ Default Value: `[]` ### .spec.single.numactl.enabled -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_numactl_spec.go#L30) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_numactl_spec.go#L30) Enabled define if numactl should be enabled @@ -3883,7 +3883,7 @@ Default Value: `false` ### .spec.single.numactl.path -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_numactl_spec.go#L34) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_numactl_spec.go#L34) Path define numactl path within the container @@ -3893,7 +3893,7 @@ Default Value: `/usr/bin/numactl` ### .spec.single.overrideDetectedNumberOfCores -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L116) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L116) > [!IMPORTANT] > **Values set by this feature override user-provided `ARANGODB_OVERRIDE_DETECTED_NUMBER_OF_CORES` Container Environment Variable** @@ -3910,7 +3910,7 @@ Default Value: `true` ### .spec.single.overrideDetectedTotalMemory -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L104) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L104) > [!IMPORTANT] > **Values set by this feature override user-provided `ARANGODB_OVERRIDE_DETECTED_TOTAL_MEMORY` Container Environment Variable** @@ -3927,19 +3927,19 @@ Default Value: `true` ### .spec.single.podModes.network -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec_pod_modes.go#L31) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec_pod_modes.go#L31) *** ### .spec.single.podModes.pid -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec_pod_modes.go#L32) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec_pod_modes.go#L32) *** ### .spec.single.port -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L238) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L238) Port define Port used by member @@ -3947,7 +3947,7 @@ Port define Port used by member ### .spec.single.priorityClassName -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L159) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L159) PriorityClassName specifies a priority class name Will be forwarded to the pod spec. @@ -3959,7 +3959,7 @@ Links: ### .spec.single.probes.livenessProbeDisabled -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L250) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L250) LivenessProbeDisabled if set to true, the operator does not generate a liveness probe for new pods belonging to this group @@ -3969,7 +3969,7 @@ Default Value: `false` ### .spec.single.probes.livenessProbeSpec.failureThreshold -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L300) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L300) FailureThreshold when a Pod starts and the probe fails, Kubernetes will try failureThreshold times before giving up. Giving up means restarting the container. @@ -3981,7 +3981,7 @@ Default Value: `3` ### .spec.single.probes.livenessProbeSpec.initialDelaySeconds -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L283) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L283) InitialDelaySeconds specifies number of seconds after the container has started before liveness or readiness probes are initiated. Minimum value is 0. @@ -3992,7 +3992,7 @@ Default Value: `2` ### .spec.single.probes.livenessProbeSpec.periodSeconds -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L287) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L287) PeriodSeconds How often (in seconds) to perform the probe. Minimum value is 1. @@ -4003,7 +4003,7 @@ Default Value: `10` ### .spec.single.probes.livenessProbeSpec.successThreshold -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L295) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L295) SuccessThreshold Minimum consecutive successes for the probe to be considered successful after having failed. Minimum value is 1. @@ -4014,7 +4014,7 @@ Default Value: `1` ### .spec.single.probes.livenessProbeSpec.timeoutSeconds -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L291) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L291) TimeoutSeconds specifies number of seconds after which the probe times out Minimum value is 1. @@ -4025,7 +4025,7 @@ Default Value: `2` ### .spec.single.probes.ReadinessProbeDisabled -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L257) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L257) > [!WARNING] > ***DEPRECATED*** @@ -4038,7 +4038,7 @@ OldReadinessProbeDisabled if true readinessProbes are disabled ### .spec.single.probes.readinessProbeDisabled -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L259) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L259) ReadinessProbeDisabled override flag for probe disabled in good manner (lowercase) with backward compatibility @@ -4046,7 +4046,7 @@ ReadinessProbeDisabled override flag for probe disabled in good manner (lowercas ### .spec.single.probes.readinessProbeSpec.failureThreshold -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L300) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L300) FailureThreshold when a Pod starts and the probe fails, Kubernetes will try failureThreshold times before giving up. Giving up means restarting the container. @@ -4058,7 +4058,7 @@ Default Value: `3` ### .spec.single.probes.readinessProbeSpec.initialDelaySeconds -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L283) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L283) InitialDelaySeconds specifies number of seconds after the container has started before liveness or readiness probes are initiated. Minimum value is 0. @@ -4069,7 +4069,7 @@ Default Value: `2` ### .spec.single.probes.readinessProbeSpec.periodSeconds -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L287) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L287) PeriodSeconds How often (in seconds) to perform the probe. Minimum value is 1. @@ -4080,7 +4080,7 @@ Default Value: `10` ### .spec.single.probes.readinessProbeSpec.successThreshold -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L295) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L295) SuccessThreshold Minimum consecutive successes for the probe to be considered successful after having failed. Minimum value is 1. @@ -4091,7 +4091,7 @@ Default Value: `1` ### .spec.single.probes.readinessProbeSpec.timeoutSeconds -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L291) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L291) TimeoutSeconds specifies number of seconds after which the probe times out Minimum value is 1. @@ -4102,7 +4102,7 @@ Default Value: `2` ### .spec.single.probes.startupProbeDisabled -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L264) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L264) StartupProbeDisabled if true startupProbes are disabled @@ -4110,7 +4110,7 @@ StartupProbeDisabled if true startupProbes are disabled ### .spec.single.probes.startupProbeSpec.failureThreshold -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L300) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L300) FailureThreshold when a Pod starts and the probe fails, Kubernetes will try failureThreshold times before giving up. Giving up means restarting the container. @@ -4122,7 +4122,7 @@ Default Value: `3` ### .spec.single.probes.startupProbeSpec.initialDelaySeconds -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L283) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L283) InitialDelaySeconds specifies number of seconds after the container has started before liveness or readiness probes are initiated. Minimum value is 0. @@ -4133,7 +4133,7 @@ Default Value: `2` ### .spec.single.probes.startupProbeSpec.periodSeconds -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L287) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L287) PeriodSeconds How often (in seconds) to perform the probe. Minimum value is 1. @@ -4144,7 +4144,7 @@ Default Value: `10` ### .spec.single.probes.startupProbeSpec.successThreshold -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L295) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L295) SuccessThreshold Minimum consecutive successes for the probe to be considered successful after having failed. Minimum value is 1. @@ -4155,7 +4155,7 @@ Default Value: `1` ### .spec.single.probes.startupProbeSpec.timeoutSeconds -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L291) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L291) TimeoutSeconds specifies number of seconds after which the probe times out Minimum value is 1. @@ -4166,7 +4166,7 @@ Default Value: `2` ### .spec.single.pvcResizeMode -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L173) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L173) VolumeResizeMode specified resize mode for PVCs and PVs @@ -4178,7 +4178,7 @@ Possible Values: ### .spec.single.resources -Type: `core.ResourceRequirements` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L98) +Type: `core.ResourceRequirements` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L98) Resources holds resource requests & limits @@ -4189,7 +4189,7 @@ Links: ### .spec.single.schedulerName -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L90) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L90) SchedulerName define scheduler name used for group @@ -4197,7 +4197,7 @@ SchedulerName define scheduler name used for group ### .spec.single.securityContext.addCapabilities -Type: `[]core.Capability` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_security_context_spec.go#L41) +Type: `[]core.Capability` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_security_context_spec.go#L41) AddCapabilities add new capabilities to containers @@ -4205,7 +4205,7 @@ AddCapabilities add new capabilities to containers ### .spec.single.securityContext.allowPrivilegeEscalation -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_security_context_spec.go#L44) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_security_context_spec.go#L44) AllowPrivilegeEscalation Controls whether a process can gain more privileges than its parent process. @@ -4213,7 +4213,7 @@ AllowPrivilegeEscalation Controls whether a process can gain more privileges tha ### .spec.single.securityContext.dropAllCapabilities -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_security_context_spec.go#L38) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_security_context_spec.go#L38) > [!WARNING] > ***DEPRECATED*** @@ -4226,7 +4226,7 @@ DropAllCapabilities specifies if capabilities should be dropped for this pod con ### .spec.single.securityContext.fsGroup -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_security_context_spec.go#L61) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_security_context_spec.go#L61) FSGroup is a special supplemental group that applies to all containers in a pod. @@ -4234,7 +4234,7 @@ FSGroup is a special supplemental group that applies to all containers in a pod. ### .spec.single.securityContext.privileged -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_security_context_spec.go#L47) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_security_context_spec.go#L47) Privileged If true, runs container in privileged mode. Processes in privileged containers are essentially equivalent to root on the host. @@ -4243,7 +4243,7 @@ essentially equivalent to root on the host. ### .spec.single.securityContext.readOnlyRootFilesystem -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_security_context_spec.go#L49) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_security_context_spec.go#L49) ReadOnlyRootFilesystem if true, mounts the container's root filesystem as read-only. @@ -4251,7 +4251,7 @@ ReadOnlyRootFilesystem if true, mounts the container's root filesystem as read-o ### .spec.single.securityContext.runAsGroup -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_security_context_spec.go#L55) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_security_context_spec.go#L55) RunAsGroup is the GID to run the entrypoint of the container process. @@ -4259,7 +4259,7 @@ RunAsGroup is the GID to run the entrypoint of the container process. ### .spec.single.securityContext.runAsNonRoot -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_security_context_spec.go#L51) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_security_context_spec.go#L51) RunAsNonRoot if true, indicates that the container must run as a non-root user. @@ -4267,7 +4267,7 @@ RunAsNonRoot if true, indicates that the container must run as a non-root user. ### .spec.single.securityContext.runAsUser -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_security_context_spec.go#L53) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_security_context_spec.go#L53) RunAsUser is the UID to run the entrypoint of the container process. @@ -4275,7 +4275,7 @@ RunAsUser is the UID to run the entrypoint of the container process. ### .spec.single.securityContext.seccompProfile -Type: `core.SeccompProfile` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_security_context_spec.go#L77) +Type: `core.SeccompProfile` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_security_context_spec.go#L77) SeccompProfile defines a pod/container's seccomp profile settings. Only one profile source may be set. @@ -4286,7 +4286,7 @@ Links: ### .spec.single.securityContext.seLinuxOptions -Type: `core.SELinuxOptions` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_security_context_spec.go#L82) +Type: `core.SELinuxOptions` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_security_context_spec.go#L82) SELinuxOptions are the labels to be applied to the container @@ -4297,7 +4297,7 @@ Links: ### .spec.single.securityContext.supplementalGroups -Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_security_context_spec.go#L59) +Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_security_context_spec.go#L59) SupplementalGroups is a list of groups applied to the first process run in each container, in addition to the container's primary GID, the fsGroup (if specified), and group memberships defined in the container image for the uid of the container process. @@ -4306,7 +4306,7 @@ the fsGroup (if specified), and group memberships defined in the container image ### .spec.single.securityContext.sysctls -Type: `map[string]intstr.IntOrString` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_security_context_spec.go#L72) +Type: `map[string]intstr.IntOrString` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_security_context_spec.go#L72) Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch. @@ -4327,7 +4327,7 @@ sysctls: ### .spec.single.serviceAccountName -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L149) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L149) ServiceAccountName setting specifies the `serviceAccountName` for the `Pods` created for each server of this group. If empty, it defaults to using the @@ -4342,7 +4342,7 @@ to that service account. ### .spec.single.shutdownDelay -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L216) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L216) ShutdownDelay define how long operator should delay finalizer removal after shutdown @@ -4350,7 +4350,7 @@ ShutdownDelay define how long operator should delay finalizer removal after shut ### .spec.single.shutdownMethod -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L214) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L214) ShutdownMethod describe procedure of member shutdown taken by Operator @@ -4358,7 +4358,7 @@ ShutdownMethod describe procedure of member shutdown taken by Operator ### .spec.single.sidecarCoreNames -Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L192) +Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L192) SidecarCoreNames is a list of sidecar containers which must run in the pod. Some names (e.g.: "server", "worker") are reserved, and they don't have any impact. @@ -4367,7 +4367,7 @@ Some names (e.g.: "server", "worker") are reserved, and they don't have any impa ### .spec.single.sidecars -Type: `[]core.Container` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L196) +Type: `[]core.Container` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L196) Sidecars specifies a list of additional containers to be started @@ -4378,7 +4378,7 @@ Links: ### .spec.single.storageClassName -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L94) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L94) > [!WARNING] > ***DEPRECATED*** @@ -4391,7 +4391,7 @@ StorageClassName specifies the classname for storage of the servers. ### .spec.single.terminationGracePeriodSeconds -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L229) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L229) TerminationGracePeriodSeconds override default TerminationGracePeriodSeconds for pods - via silent rotation @@ -4399,7 +4399,7 @@ TerminationGracePeriodSeconds override default TerminationGracePeriodSeconds for ### .spec.single.tolerations -Type: `[]core.Toleration` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L125) +Type: `[]core.Toleration` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L125) Tolerations specifies the tolerations added to Pods in this group. By default, suitable tolerations are set for the following keys with the `NoExecute` effect: @@ -4415,7 +4415,7 @@ Links: ### .spec.single.volumeAllowShrink -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L177) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L177) > [!WARNING] > ***DEPRECATED*** @@ -4428,7 +4428,7 @@ VolumeAllowShrink allows shrinking of the volume ### .spec.single.volumeClaimTemplate -Type: `core.PersistentVolumeClaim` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L168) +Type: `core.PersistentVolumeClaim` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L168) VolumeClaimTemplate specifies a volumeClaimTemplate used by operator to create to volume claims for pods of this group. This setting is not available for group `coordinators`, `syncmasters` & `syncworkers`. @@ -4444,7 +4444,7 @@ Links: ### .spec.single.volumeMounts -Type: `[]ServerGroupSpecVolumeMount` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L206) +Type: `[]ServerGroupSpecVolumeMount` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L206) VolumeMounts define list of volume mounts mounted into server container @@ -4455,7 +4455,7 @@ Links: ### .spec.single.volumes\[int\].configMap -Type: `core.ConfigMapVolumeSource` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_volume.go#L138) +Type: `core.ConfigMapVolumeSource` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_volume.go#L138) ConfigMap which should be mounted into pod @@ -4466,7 +4466,7 @@ Links: ### .spec.single.volumes\[int\].emptyDir -Type: `core.EmptyDirVolumeSource` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_volume.go#L143) +Type: `core.EmptyDirVolumeSource` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_volume.go#L143) EmptyDir @@ -4477,7 +4477,7 @@ Links: ### .spec.single.volumes\[int\].hostPath -Type: `core.HostPathVolumeSource` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_volume.go#L148) +Type: `core.HostPathVolumeSource` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_volume.go#L148) HostPath @@ -4488,7 +4488,7 @@ Links: ### .spec.single.volumes\[int\].name -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_volume.go#L128) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_volume.go#L128) Name of volume @@ -4496,7 +4496,7 @@ Name of volume ### .spec.single.volumes\[int\].persistentVolumeClaim -Type: `core.PersistentVolumeClaimVolumeSource` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_volume.go#L153) +Type: `core.PersistentVolumeClaimVolumeSource` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_volume.go#L153) PersistentVolumeClaim @@ -4507,7 +4507,7 @@ Links: ### .spec.single.volumes\[int\].secret -Type: `core.SecretVolumeSource` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_volume.go#L133) +Type: `core.SecretVolumeSource` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_volume.go#L133) Secret which should be mounted into pod @@ -4518,7 +4518,7 @@ Links: ### .spec.storageEngine -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/deployment_spec.go#L61) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/deployment_spec.go#L61) StorageEngine specifies the type of storage engine used for all servers in the cluster. @@ -4532,7 +4532,7 @@ This field is **immutable**: This setting cannot be changed after the cluster ha ### .spec.sync.auth.clientCASecretName -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/sync_authentication_spec.go#L41) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/sync_authentication_spec.go#L41) ClientCASecretName setting specifies the name of a kubernetes `Secret` that contains a PEM encoded CA certificate used for client certificate verification @@ -4543,7 +4543,7 @@ This is a required setting when `spec.sync.enabled` is `true`. ### .spec.sync.auth.jwtSecretName -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/sync_authentication_spec.go#L36) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/sync_authentication_spec.go#L36) JWTSecretName setting specifies the name of a kubernetes `Secret` that contains the JWT token used for accessing all ArangoSync master servers. @@ -4555,7 +4555,7 @@ and stored in a `Secret` with given name. ### .spec.sync.enabled -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/sync_spec.go#L34) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/sync_spec.go#L34) Enabled setting enables/disables support for data center 2 data center replication in the cluster. When enabled, the cluster will contain @@ -4567,7 +4567,7 @@ Default Value: `false` ### .spec.sync.externalAccess.accessPackageSecretNames -Type: `[]string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/sync_external_access_spec.go#L49) +Type: `[]string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/sync_external_access_spec.go#L49) AccessPackageSecretNames setting specifies the names of zero of more `Secrets` that will be created by the deployment operator containing "access packages". An access package contains those `Secrets` that are needed @@ -4583,7 +4583,7 @@ Links: ### .spec.sync.externalAccess.advertisedEndpoint -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/external_access_spec.go#L58) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/external_access_spec.go#L58) AdvertisedEndpoint is passed to the coordinators/single servers for advertising a specific endpoint @@ -4591,7 +4591,7 @@ AdvertisedEndpoint is passed to the coordinators/single servers for advertising ### .spec.sync.externalAccess.loadBalancerIP -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/external_access_spec.go#L48) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/external_access_spec.go#L48) LoadBalancerIP define optional IP used to configure a load-balancer on, in case of Auto or LoadBalancer type. If you do not specify this setting, an IP will be chosen automatically by the load-balancer provisioner. @@ -4600,7 +4600,7 @@ If you do not specify this setting, an IP will be chosen automatically by the lo ### .spec.sync.externalAccess.loadBalancerSourceRanges -Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/external_access_spec.go#L55) +Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/external_access_spec.go#L55) LoadBalancerSourceRanges define LoadBalancerSourceRanges used for LoadBalancer Service type If specified and supported by the platform, this will restrict traffic through the cloud-provider @@ -4614,7 +4614,7 @@ Links: ### .spec.sync.externalAccess.managedServiceNames -Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/external_access_spec.go#L62) +Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/external_access_spec.go#L62) ManagedServiceNames keeps names of services which are not managed by KubeArangoDB. It is only relevant when type of service is `managed`. @@ -4623,7 +4623,7 @@ It is only relevant when type of service is `managed`. ### .spec.sync.externalAccess.masterEndpoint -Type: `[]string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/sync_external_access_spec.go#L40) +Type: `[]string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/sync_external_access_spec.go#L40) MasterEndpoint setting specifies the master endpoint(s) advertised by the ArangoSync SyncMasters. If not set, this setting defaults to: @@ -4634,7 +4634,7 @@ If not set, this setting defaults to: ### .spec.sync.externalAccess.nodePort -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/external_access_spec.go#L44) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/external_access_spec.go#L44) NodePort define optional port used in case of Auto or NodePort type. This setting is used when `spec.externalAccess.type` is set to `NodePort` or `Auto`. @@ -4644,7 +4644,7 @@ If you do not specify this setting, a random port will be chosen automatically. ### .spec.sync.externalAccess.type -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/external_access_spec.go#L39) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/external_access_spec.go#L39) Type specifies the type of Service that will be created to provide access to the ArangoDB deployment from outside the Kubernetes cluster. @@ -4658,13 +4658,13 @@ Possible Values: ### .spec.sync.image -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/sync_spec.go#L40) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/sync_spec.go#L40) *** ### .spec.sync.monitoring.tokenSecretName -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/sync_monitoring_spec.go#L34) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/sync_monitoring_spec.go#L34) TokenSecretName setting specifies the name of a kubernetes `Secret` that contains the bearer token used for accessing all monitoring endpoints of all arangod/arangosync servers. @@ -4674,7 +4674,7 @@ When not specified, no monitoring token is used. ### .spec.sync.tls.altNames -Type: `[]string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/tls_spec.go#L72) +Type: `[]string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/tls_spec.go#L72) AltNames setting specifies a list of alternate names that will be added to all generated certificates. These names can be DNS names or email addresses. @@ -4684,7 +4684,7 @@ The default value is empty. ### .spec.sync.tls.caSecretName -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/tls_spec.go#L67) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/tls_spec.go#L67) CASecretName setting specifies the name of a kubernetes `Secret` that contains a standard CA certificate + private key used to sign certificates for individual @@ -4701,19 +4701,19 @@ The specified `Secret`, must contain the following data fields: ### .spec.sync.tls.mode -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/tls_spec.go#L81) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/tls_spec.go#L81) *** ### .spec.sync.tls.sni.mapping.\ -Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/tls_sni_spec.go#L30) +Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/tls_sni_spec.go#L30) *** ### .spec.sync.tls.ttl -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/tls_spec.go#L79) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/tls_spec.go#L79) TTL setting specifies the time to live of all generated server certificates. When the server certificate is about to expire, it will be automatically replaced @@ -4727,7 +4727,7 @@ Default Value: `"2160h" (about 3 months)` ### .spec.syncmasters.affinity -Type: `core.PodAffinity` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L185) +Type: `core.PodAffinity` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L185) Affinity specified additional affinity settings in ArangoDB Pod definitions @@ -4738,7 +4738,7 @@ Links: ### .spec.syncmasters.allowMemberRecreation -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L227) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L227) AllowMemberRecreation allows to recreate member. This setting changes the member recreation logic based on group: @@ -4749,7 +4749,7 @@ This setting changes the member recreation logic based on group: ### .spec.syncmasters.annotations -Type: `object` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L128) +Type: `object` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L128) Annotations specified the annotations added to Pods in this group. Annotations are merged with `spec.annotations`. @@ -4758,7 +4758,7 @@ Annotations are merged with `spec.annotations`. ### .spec.syncmasters.annotationsIgnoreList -Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L130) +Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L130) AnnotationsIgnoreList list regexp or plain definitions which annotations should be ignored @@ -4766,7 +4766,7 @@ AnnotationsIgnoreList list regexp or plain definitions which annotations should ### .spec.syncmasters.annotationsMode -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L132) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L132) AnnotationsMode Define annotations mode which should be use while overriding annotations @@ -4774,7 +4774,7 @@ AnnotationsMode Define annotations mode which should be use while overriding ann ### .spec.syncmasters.antiAffinity -Type: `core.PodAntiAffinity` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L181) +Type: `core.PodAntiAffinity` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L181) AntiAffinity specified additional antiAffinity settings in ArangoDB Pod definitions @@ -4785,7 +4785,7 @@ Links: ### .spec.syncmasters.args -Type: `[]string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L86) +Type: `[]string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L86) Args setting specifies additional command-line arguments passed to all servers of this group. @@ -4795,7 +4795,7 @@ Default Value: `[]` ### .spec.syncmasters.count -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L78) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L78) Count setting specifies the number of servers to start for the given group. For the Agent group, this value must be a positive, odd number. @@ -4808,7 +4808,7 @@ as for the `dbservers` group. ### .spec.syncmasters.entrypoint -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L88) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L88) Entrypoint overrides container executable @@ -4816,19 +4816,19 @@ Entrypoint overrides container executable ### .spec.syncmasters.envs\[int\].name -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_env_var.go#L26) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_env_var.go#L26) *** ### .spec.syncmasters.envs\[int\].value -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_env_var.go#L27) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_env_var.go#L27) *** ### .spec.syncmasters.ephemeralVolumes.apps.size -Type: `resource.Quantity` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_ephemeral_volumes.go#L64) +Type: `resource.Quantity` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_ephemeral_volumes.go#L64) Size define size of the ephemeral volume @@ -4839,7 +4839,7 @@ Links: ### .spec.syncmasters.ephemeralVolumes.temp.size -Type: `resource.Quantity` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_ephemeral_volumes.go#L64) +Type: `resource.Quantity` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_ephemeral_volumes.go#L64) Size define size of the ephemeral volume @@ -4850,7 +4850,7 @@ Links: ### .spec.syncmasters.exporterPort -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L240) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L240) ExporterPort define Port used by exporter @@ -4858,7 +4858,7 @@ ExporterPort define Port used by exporter ### .spec.syncmasters.extendedRotationCheck -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L210) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L210) ExtendedRotationCheck extend checks for rotation @@ -4866,7 +4866,7 @@ ExtendedRotationCheck extend checks for rotation ### .spec.syncmasters.externalPortEnabled -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L222) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L222) ExternalPortEnabled if external port should be enabled. If is set to false, ports needs to be exposed via sidecar. Only for ArangoD members @@ -4874,7 +4874,7 @@ ExternalPortEnabled if external port should be enabled. If is set to false, port ### .spec.syncmasters.indexMethod -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L233) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L233) IndexMethod define group Indexing method @@ -4886,7 +4886,7 @@ Possible Values: ### .spec.syncmasters.initContainers.containers -Type: `[]core.Container` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_init_containers.go#L91) +Type: `[]core.Container` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_init_containers.go#L91) Containers contains list of containers @@ -4897,7 +4897,7 @@ Links: ### .spec.syncmasters.initContainers.mode -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_init_containers.go#L94) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_init_containers.go#L94) Mode keep container replace mode @@ -4905,7 +4905,7 @@ Mode keep container replace mode ### .spec.syncmasters.internalPort -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L218) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L218) InternalPort define port used in internal communication, can be accessed over localhost via sidecar. Only for ArangoD members @@ -4913,7 +4913,7 @@ InternalPort define port used in internal communication, can be accessed over lo ### .spec.syncmasters.internalPortProtocol -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L220) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L220) InternalPortProtocol define protocol of port used in internal communication, can be accessed over localhost via sidecar. Only for ArangoD members @@ -4921,7 +4921,7 @@ InternalPortProtocol define protocol of port used in internal communication, can ### .spec.syncmasters.labels -Type: `object` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L134) +Type: `object` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L134) Labels specified the labels added to Pods in this group. @@ -4929,7 +4929,7 @@ Labels specified the labels added to Pods in this group. ### .spec.syncmasters.labelsIgnoreList -Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L136) +Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L136) LabelsIgnoreList list regexp or plain definitions which labels should be ignored @@ -4937,7 +4937,7 @@ LabelsIgnoreList list regexp or plain definitions which labels should be ignored ### .spec.syncmasters.labelsMode -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L138) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L138) LabelsMode Define labels mode which should be use while overriding labels @@ -4945,7 +4945,7 @@ LabelsMode Define labels mode which should be use while overriding labels ### .spec.syncmasters.maxCount -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L82) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L82) MaxCount specifies a maximum for the count of servers. If set, a specification is invalid if `count > maxCount`. @@ -4953,7 +4953,7 @@ MaxCount specifies a maximum for the count of servers. If set, a specification i ### .spec.syncmasters.memoryReservation -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L110) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L110) MemoryReservation determines the system reservation of memory while calculating `ARANGODB_OVERRIDE_DETECTED_TOTAL_MEMORY` value. If this field is set, `ARANGODB_OVERRIDE_DETECTED_TOTAL_MEMORY` is reduced by a specified value in percent. @@ -4968,7 +4968,7 @@ Default Value: `0` ### .spec.syncmasters.minCount -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L80) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L80) MinCount specifies a minimum for the count of servers. If set, a specification is invalid if `count < minCount`. @@ -4976,7 +4976,7 @@ MinCount specifies a minimum for the count of servers. If set, a specification i ### .spec.syncmasters.nodeAffinity -Type: `core.NodeAffinity` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L189) +Type: `core.NodeAffinity` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L189) NodeAffinity specified additional nodeAffinity settings in ArangoDB Pod definitions @@ -4987,7 +4987,7 @@ Links: ### .spec.syncmasters.nodeSelector -Type: `map[string]string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L153) +Type: `map[string]string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L153) NodeSelector setting specifies a set of labels to be used as `nodeSelector` for Pods of this node. @@ -4998,7 +4998,7 @@ Links: ### .spec.syncmasters.numactl.args -Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_numactl_spec.go#L38) +Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_numactl_spec.go#L38) Args define list of the numactl process @@ -5008,7 +5008,7 @@ Default Value: `[]` ### .spec.syncmasters.numactl.enabled -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_numactl_spec.go#L30) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_numactl_spec.go#L30) Enabled define if numactl should be enabled @@ -5018,7 +5018,7 @@ Default Value: `false` ### .spec.syncmasters.numactl.path -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_numactl_spec.go#L34) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_numactl_spec.go#L34) Path define numactl path within the container @@ -5028,7 +5028,7 @@ Default Value: `/usr/bin/numactl` ### .spec.syncmasters.overrideDetectedNumberOfCores -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L116) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L116) > [!IMPORTANT] > **Values set by this feature override user-provided `ARANGODB_OVERRIDE_DETECTED_NUMBER_OF_CORES` Container Environment Variable** @@ -5045,7 +5045,7 @@ Default Value: `true` ### .spec.syncmasters.overrideDetectedTotalMemory -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L104) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L104) > [!IMPORTANT] > **Values set by this feature override user-provided `ARANGODB_OVERRIDE_DETECTED_TOTAL_MEMORY` Container Environment Variable** @@ -5062,19 +5062,19 @@ Default Value: `true` ### .spec.syncmasters.podModes.network -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec_pod_modes.go#L31) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec_pod_modes.go#L31) *** ### .spec.syncmasters.podModes.pid -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec_pod_modes.go#L32) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec_pod_modes.go#L32) *** ### .spec.syncmasters.port -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L238) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L238) Port define Port used by member @@ -5082,7 +5082,7 @@ Port define Port used by member ### .spec.syncmasters.priorityClassName -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L159) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L159) PriorityClassName specifies a priority class name Will be forwarded to the pod spec. @@ -5094,7 +5094,7 @@ Links: ### .spec.syncmasters.probes.livenessProbeDisabled -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L250) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L250) LivenessProbeDisabled if set to true, the operator does not generate a liveness probe for new pods belonging to this group @@ -5104,7 +5104,7 @@ Default Value: `false` ### .spec.syncmasters.probes.livenessProbeSpec.failureThreshold -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L300) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L300) FailureThreshold when a Pod starts and the probe fails, Kubernetes will try failureThreshold times before giving up. Giving up means restarting the container. @@ -5116,7 +5116,7 @@ Default Value: `3` ### .spec.syncmasters.probes.livenessProbeSpec.initialDelaySeconds -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L283) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L283) InitialDelaySeconds specifies number of seconds after the container has started before liveness or readiness probes are initiated. Minimum value is 0. @@ -5127,7 +5127,7 @@ Default Value: `2` ### .spec.syncmasters.probes.livenessProbeSpec.periodSeconds -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L287) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L287) PeriodSeconds How often (in seconds) to perform the probe. Minimum value is 1. @@ -5138,7 +5138,7 @@ Default Value: `10` ### .spec.syncmasters.probes.livenessProbeSpec.successThreshold -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L295) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L295) SuccessThreshold Minimum consecutive successes for the probe to be considered successful after having failed. Minimum value is 1. @@ -5149,7 +5149,7 @@ Default Value: `1` ### .spec.syncmasters.probes.livenessProbeSpec.timeoutSeconds -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L291) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L291) TimeoutSeconds specifies number of seconds after which the probe times out Minimum value is 1. @@ -5160,7 +5160,7 @@ Default Value: `2` ### .spec.syncmasters.probes.ReadinessProbeDisabled -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L257) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L257) > [!WARNING] > ***DEPRECATED*** @@ -5173,7 +5173,7 @@ OldReadinessProbeDisabled if true readinessProbes are disabled ### .spec.syncmasters.probes.readinessProbeDisabled -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L259) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L259) ReadinessProbeDisabled override flag for probe disabled in good manner (lowercase) with backward compatibility @@ -5181,7 +5181,7 @@ ReadinessProbeDisabled override flag for probe disabled in good manner (lowercas ### .spec.syncmasters.probes.readinessProbeSpec.failureThreshold -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L300) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L300) FailureThreshold when a Pod starts and the probe fails, Kubernetes will try failureThreshold times before giving up. Giving up means restarting the container. @@ -5193,7 +5193,7 @@ Default Value: `3` ### .spec.syncmasters.probes.readinessProbeSpec.initialDelaySeconds -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L283) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L283) InitialDelaySeconds specifies number of seconds after the container has started before liveness or readiness probes are initiated. Minimum value is 0. @@ -5204,7 +5204,7 @@ Default Value: `2` ### .spec.syncmasters.probes.readinessProbeSpec.periodSeconds -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L287) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L287) PeriodSeconds How often (in seconds) to perform the probe. Minimum value is 1. @@ -5215,7 +5215,7 @@ Default Value: `10` ### .spec.syncmasters.probes.readinessProbeSpec.successThreshold -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L295) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L295) SuccessThreshold Minimum consecutive successes for the probe to be considered successful after having failed. Minimum value is 1. @@ -5226,7 +5226,7 @@ Default Value: `1` ### .spec.syncmasters.probes.readinessProbeSpec.timeoutSeconds -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L291) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L291) TimeoutSeconds specifies number of seconds after which the probe times out Minimum value is 1. @@ -5237,7 +5237,7 @@ Default Value: `2` ### .spec.syncmasters.probes.startupProbeDisabled -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L264) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L264) StartupProbeDisabled if true startupProbes are disabled @@ -5245,7 +5245,7 @@ StartupProbeDisabled if true startupProbes are disabled ### .spec.syncmasters.probes.startupProbeSpec.failureThreshold -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L300) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L300) FailureThreshold when a Pod starts and the probe fails, Kubernetes will try failureThreshold times before giving up. Giving up means restarting the container. @@ -5257,7 +5257,7 @@ Default Value: `3` ### .spec.syncmasters.probes.startupProbeSpec.initialDelaySeconds -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L283) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L283) InitialDelaySeconds specifies number of seconds after the container has started before liveness or readiness probes are initiated. Minimum value is 0. @@ -5268,7 +5268,7 @@ Default Value: `2` ### .spec.syncmasters.probes.startupProbeSpec.periodSeconds -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L287) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L287) PeriodSeconds How often (in seconds) to perform the probe. Minimum value is 1. @@ -5279,7 +5279,7 @@ Default Value: `10` ### .spec.syncmasters.probes.startupProbeSpec.successThreshold -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L295) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L295) SuccessThreshold Minimum consecutive successes for the probe to be considered successful after having failed. Minimum value is 1. @@ -5290,7 +5290,7 @@ Default Value: `1` ### .spec.syncmasters.probes.startupProbeSpec.timeoutSeconds -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L291) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L291) TimeoutSeconds specifies number of seconds after which the probe times out Minimum value is 1. @@ -5301,7 +5301,7 @@ Default Value: `2` ### .spec.syncmasters.pvcResizeMode -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L173) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L173) VolumeResizeMode specified resize mode for PVCs and PVs @@ -5313,7 +5313,7 @@ Possible Values: ### .spec.syncmasters.resources -Type: `core.ResourceRequirements` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L98) +Type: `core.ResourceRequirements` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L98) Resources holds resource requests & limits @@ -5324,7 +5324,7 @@ Links: ### .spec.syncmasters.schedulerName -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L90) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L90) SchedulerName define scheduler name used for group @@ -5332,7 +5332,7 @@ SchedulerName define scheduler name used for group ### .spec.syncmasters.securityContext.addCapabilities -Type: `[]core.Capability` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_security_context_spec.go#L41) +Type: `[]core.Capability` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_security_context_spec.go#L41) AddCapabilities add new capabilities to containers @@ -5340,7 +5340,7 @@ AddCapabilities add new capabilities to containers ### .spec.syncmasters.securityContext.allowPrivilegeEscalation -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_security_context_spec.go#L44) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_security_context_spec.go#L44) AllowPrivilegeEscalation Controls whether a process can gain more privileges than its parent process. @@ -5348,7 +5348,7 @@ AllowPrivilegeEscalation Controls whether a process can gain more privileges tha ### .spec.syncmasters.securityContext.dropAllCapabilities -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_security_context_spec.go#L38) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_security_context_spec.go#L38) > [!WARNING] > ***DEPRECATED*** @@ -5361,7 +5361,7 @@ DropAllCapabilities specifies if capabilities should be dropped for this pod con ### .spec.syncmasters.securityContext.fsGroup -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_security_context_spec.go#L61) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_security_context_spec.go#L61) FSGroup is a special supplemental group that applies to all containers in a pod. @@ -5369,7 +5369,7 @@ FSGroup is a special supplemental group that applies to all containers in a pod. ### .spec.syncmasters.securityContext.privileged -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_security_context_spec.go#L47) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_security_context_spec.go#L47) Privileged If true, runs container in privileged mode. Processes in privileged containers are essentially equivalent to root on the host. @@ -5378,7 +5378,7 @@ essentially equivalent to root on the host. ### .spec.syncmasters.securityContext.readOnlyRootFilesystem -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_security_context_spec.go#L49) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_security_context_spec.go#L49) ReadOnlyRootFilesystem if true, mounts the container's root filesystem as read-only. @@ -5386,7 +5386,7 @@ ReadOnlyRootFilesystem if true, mounts the container's root filesystem as read-o ### .spec.syncmasters.securityContext.runAsGroup -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_security_context_spec.go#L55) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_security_context_spec.go#L55) RunAsGroup is the GID to run the entrypoint of the container process. @@ -5394,7 +5394,7 @@ RunAsGroup is the GID to run the entrypoint of the container process. ### .spec.syncmasters.securityContext.runAsNonRoot -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_security_context_spec.go#L51) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_security_context_spec.go#L51) RunAsNonRoot if true, indicates that the container must run as a non-root user. @@ -5402,7 +5402,7 @@ RunAsNonRoot if true, indicates that the container must run as a non-root user. ### .spec.syncmasters.securityContext.runAsUser -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_security_context_spec.go#L53) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_security_context_spec.go#L53) RunAsUser is the UID to run the entrypoint of the container process. @@ -5410,7 +5410,7 @@ RunAsUser is the UID to run the entrypoint of the container process. ### .spec.syncmasters.securityContext.seccompProfile -Type: `core.SeccompProfile` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_security_context_spec.go#L77) +Type: `core.SeccompProfile` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_security_context_spec.go#L77) SeccompProfile defines a pod/container's seccomp profile settings. Only one profile source may be set. @@ -5421,7 +5421,7 @@ Links: ### .spec.syncmasters.securityContext.seLinuxOptions -Type: `core.SELinuxOptions` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_security_context_spec.go#L82) +Type: `core.SELinuxOptions` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_security_context_spec.go#L82) SELinuxOptions are the labels to be applied to the container @@ -5432,7 +5432,7 @@ Links: ### .spec.syncmasters.securityContext.supplementalGroups -Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_security_context_spec.go#L59) +Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_security_context_spec.go#L59) SupplementalGroups is a list of groups applied to the first process run in each container, in addition to the container's primary GID, the fsGroup (if specified), and group memberships defined in the container image for the uid of the container process. @@ -5441,7 +5441,7 @@ the fsGroup (if specified), and group memberships defined in the container image ### .spec.syncmasters.securityContext.sysctls -Type: `map[string]intstr.IntOrString` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_security_context_spec.go#L72) +Type: `map[string]intstr.IntOrString` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_security_context_spec.go#L72) Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch. @@ -5462,7 +5462,7 @@ sysctls: ### .spec.syncmasters.serviceAccountName -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L149) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L149) ServiceAccountName setting specifies the `serviceAccountName` for the `Pods` created for each server of this group. If empty, it defaults to using the @@ -5477,7 +5477,7 @@ to that service account. ### .spec.syncmasters.shutdownDelay -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L216) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L216) ShutdownDelay define how long operator should delay finalizer removal after shutdown @@ -5485,7 +5485,7 @@ ShutdownDelay define how long operator should delay finalizer removal after shut ### .spec.syncmasters.shutdownMethod -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L214) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L214) ShutdownMethod describe procedure of member shutdown taken by Operator @@ -5493,7 +5493,7 @@ ShutdownMethod describe procedure of member shutdown taken by Operator ### .spec.syncmasters.sidecarCoreNames -Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L192) +Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L192) SidecarCoreNames is a list of sidecar containers which must run in the pod. Some names (e.g.: "server", "worker") are reserved, and they don't have any impact. @@ -5502,7 +5502,7 @@ Some names (e.g.: "server", "worker") are reserved, and they don't have any impa ### .spec.syncmasters.sidecars -Type: `[]core.Container` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L196) +Type: `[]core.Container` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L196) Sidecars specifies a list of additional containers to be started @@ -5513,7 +5513,7 @@ Links: ### .spec.syncmasters.storageClassName -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L94) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L94) > [!WARNING] > ***DEPRECATED*** @@ -5526,7 +5526,7 @@ StorageClassName specifies the classname for storage of the servers. ### .spec.syncmasters.terminationGracePeriodSeconds -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L229) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L229) TerminationGracePeriodSeconds override default TerminationGracePeriodSeconds for pods - via silent rotation @@ -5534,7 +5534,7 @@ TerminationGracePeriodSeconds override default TerminationGracePeriodSeconds for ### .spec.syncmasters.tolerations -Type: `[]core.Toleration` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L125) +Type: `[]core.Toleration` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L125) Tolerations specifies the tolerations added to Pods in this group. By default, suitable tolerations are set for the following keys with the `NoExecute` effect: @@ -5550,7 +5550,7 @@ Links: ### .spec.syncmasters.volumeAllowShrink -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L177) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L177) > [!WARNING] > ***DEPRECATED*** @@ -5563,7 +5563,7 @@ VolumeAllowShrink allows shrinking of the volume ### .spec.syncmasters.volumeClaimTemplate -Type: `core.PersistentVolumeClaim` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L168) +Type: `core.PersistentVolumeClaim` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L168) VolumeClaimTemplate specifies a volumeClaimTemplate used by operator to create to volume claims for pods of this group. This setting is not available for group `coordinators`, `syncmasters` & `syncworkers`. @@ -5579,7 +5579,7 @@ Links: ### .spec.syncmasters.volumeMounts -Type: `[]ServerGroupSpecVolumeMount` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L206) +Type: `[]ServerGroupSpecVolumeMount` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L206) VolumeMounts define list of volume mounts mounted into server container @@ -5590,7 +5590,7 @@ Links: ### .spec.syncmasters.volumes\[int\].configMap -Type: `core.ConfigMapVolumeSource` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_volume.go#L138) +Type: `core.ConfigMapVolumeSource` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_volume.go#L138) ConfigMap which should be mounted into pod @@ -5601,7 +5601,7 @@ Links: ### .spec.syncmasters.volumes\[int\].emptyDir -Type: `core.EmptyDirVolumeSource` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_volume.go#L143) +Type: `core.EmptyDirVolumeSource` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_volume.go#L143) EmptyDir @@ -5612,7 +5612,7 @@ Links: ### .spec.syncmasters.volumes\[int\].hostPath -Type: `core.HostPathVolumeSource` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_volume.go#L148) +Type: `core.HostPathVolumeSource` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_volume.go#L148) HostPath @@ -5623,7 +5623,7 @@ Links: ### .spec.syncmasters.volumes\[int\].name -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_volume.go#L128) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_volume.go#L128) Name of volume @@ -5631,7 +5631,7 @@ Name of volume ### .spec.syncmasters.volumes\[int\].persistentVolumeClaim -Type: `core.PersistentVolumeClaimVolumeSource` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_volume.go#L153) +Type: `core.PersistentVolumeClaimVolumeSource` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_volume.go#L153) PersistentVolumeClaim @@ -5642,7 +5642,7 @@ Links: ### .spec.syncmasters.volumes\[int\].secret -Type: `core.SecretVolumeSource` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_volume.go#L133) +Type: `core.SecretVolumeSource` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_volume.go#L133) Secret which should be mounted into pod @@ -5653,7 +5653,7 @@ Links: ### .spec.syncworkers.affinity -Type: `core.PodAffinity` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L185) +Type: `core.PodAffinity` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L185) Affinity specified additional affinity settings in ArangoDB Pod definitions @@ -5664,7 +5664,7 @@ Links: ### .spec.syncworkers.allowMemberRecreation -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L227) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L227) AllowMemberRecreation allows to recreate member. This setting changes the member recreation logic based on group: @@ -5675,7 +5675,7 @@ This setting changes the member recreation logic based on group: ### .spec.syncworkers.annotations -Type: `object` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L128) +Type: `object` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L128) Annotations specified the annotations added to Pods in this group. Annotations are merged with `spec.annotations`. @@ -5684,7 +5684,7 @@ Annotations are merged with `spec.annotations`. ### .spec.syncworkers.annotationsIgnoreList -Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L130) +Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L130) AnnotationsIgnoreList list regexp or plain definitions which annotations should be ignored @@ -5692,7 +5692,7 @@ AnnotationsIgnoreList list regexp or plain definitions which annotations should ### .spec.syncworkers.annotationsMode -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L132) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L132) AnnotationsMode Define annotations mode which should be use while overriding annotations @@ -5700,7 +5700,7 @@ AnnotationsMode Define annotations mode which should be use while overriding ann ### .spec.syncworkers.antiAffinity -Type: `core.PodAntiAffinity` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L181) +Type: `core.PodAntiAffinity` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L181) AntiAffinity specified additional antiAffinity settings in ArangoDB Pod definitions @@ -5711,7 +5711,7 @@ Links: ### .spec.syncworkers.args -Type: `[]string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L86) +Type: `[]string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L86) Args setting specifies additional command-line arguments passed to all servers of this group. @@ -5721,7 +5721,7 @@ Default Value: `[]` ### .spec.syncworkers.count -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L78) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L78) Count setting specifies the number of servers to start for the given group. For the Agent group, this value must be a positive, odd number. @@ -5734,7 +5734,7 @@ as for the `dbservers` group. ### .spec.syncworkers.entrypoint -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L88) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L88) Entrypoint overrides container executable @@ -5742,19 +5742,19 @@ Entrypoint overrides container executable ### .spec.syncworkers.envs\[int\].name -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_env_var.go#L26) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_env_var.go#L26) *** ### .spec.syncworkers.envs\[int\].value -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_env_var.go#L27) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_env_var.go#L27) *** ### .spec.syncworkers.ephemeralVolumes.apps.size -Type: `resource.Quantity` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_ephemeral_volumes.go#L64) +Type: `resource.Quantity` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_ephemeral_volumes.go#L64) Size define size of the ephemeral volume @@ -5765,7 +5765,7 @@ Links: ### .spec.syncworkers.ephemeralVolumes.temp.size -Type: `resource.Quantity` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_ephemeral_volumes.go#L64) +Type: `resource.Quantity` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_ephemeral_volumes.go#L64) Size define size of the ephemeral volume @@ -5776,7 +5776,7 @@ Links: ### .spec.syncworkers.exporterPort -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L240) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L240) ExporterPort define Port used by exporter @@ -5784,7 +5784,7 @@ ExporterPort define Port used by exporter ### .spec.syncworkers.extendedRotationCheck -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L210) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L210) ExtendedRotationCheck extend checks for rotation @@ -5792,7 +5792,7 @@ ExtendedRotationCheck extend checks for rotation ### .spec.syncworkers.externalPortEnabled -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L222) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L222) ExternalPortEnabled if external port should be enabled. If is set to false, ports needs to be exposed via sidecar. Only for ArangoD members @@ -5800,7 +5800,7 @@ ExternalPortEnabled if external port should be enabled. If is set to false, port ### .spec.syncworkers.indexMethod -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L233) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L233) IndexMethod define group Indexing method @@ -5812,7 +5812,7 @@ Possible Values: ### .spec.syncworkers.initContainers.containers -Type: `[]core.Container` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_init_containers.go#L91) +Type: `[]core.Container` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_init_containers.go#L91) Containers contains list of containers @@ -5823,7 +5823,7 @@ Links: ### .spec.syncworkers.initContainers.mode -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_init_containers.go#L94) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_init_containers.go#L94) Mode keep container replace mode @@ -5831,7 +5831,7 @@ Mode keep container replace mode ### .spec.syncworkers.internalPort -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L218) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L218) InternalPort define port used in internal communication, can be accessed over localhost via sidecar. Only for ArangoD members @@ -5839,7 +5839,7 @@ InternalPort define port used in internal communication, can be accessed over lo ### .spec.syncworkers.internalPortProtocol -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L220) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L220) InternalPortProtocol define protocol of port used in internal communication, can be accessed over localhost via sidecar. Only for ArangoD members @@ -5847,7 +5847,7 @@ InternalPortProtocol define protocol of port used in internal communication, can ### .spec.syncworkers.labels -Type: `object` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L134) +Type: `object` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L134) Labels specified the labels added to Pods in this group. @@ -5855,7 +5855,7 @@ Labels specified the labels added to Pods in this group. ### .spec.syncworkers.labelsIgnoreList -Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L136) +Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L136) LabelsIgnoreList list regexp or plain definitions which labels should be ignored @@ -5863,7 +5863,7 @@ LabelsIgnoreList list regexp or plain definitions which labels should be ignored ### .spec.syncworkers.labelsMode -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L138) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L138) LabelsMode Define labels mode which should be use while overriding labels @@ -5871,7 +5871,7 @@ LabelsMode Define labels mode which should be use while overriding labels ### .spec.syncworkers.maxCount -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L82) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L82) MaxCount specifies a maximum for the count of servers. If set, a specification is invalid if `count > maxCount`. @@ -5879,7 +5879,7 @@ MaxCount specifies a maximum for the count of servers. If set, a specification i ### .spec.syncworkers.memoryReservation -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L110) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L110) MemoryReservation determines the system reservation of memory while calculating `ARANGODB_OVERRIDE_DETECTED_TOTAL_MEMORY` value. If this field is set, `ARANGODB_OVERRIDE_DETECTED_TOTAL_MEMORY` is reduced by a specified value in percent. @@ -5894,7 +5894,7 @@ Default Value: `0` ### .spec.syncworkers.minCount -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L80) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L80) MinCount specifies a minimum for the count of servers. If set, a specification is invalid if `count < minCount`. @@ -5902,7 +5902,7 @@ MinCount specifies a minimum for the count of servers. If set, a specification i ### .spec.syncworkers.nodeAffinity -Type: `core.NodeAffinity` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L189) +Type: `core.NodeAffinity` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L189) NodeAffinity specified additional nodeAffinity settings in ArangoDB Pod definitions @@ -5913,7 +5913,7 @@ Links: ### .spec.syncworkers.nodeSelector -Type: `map[string]string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L153) +Type: `map[string]string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L153) NodeSelector setting specifies a set of labels to be used as `nodeSelector` for Pods of this node. @@ -5924,7 +5924,7 @@ Links: ### .spec.syncworkers.numactl.args -Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_numactl_spec.go#L38) +Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_numactl_spec.go#L38) Args define list of the numactl process @@ -5934,7 +5934,7 @@ Default Value: `[]` ### .spec.syncworkers.numactl.enabled -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_numactl_spec.go#L30) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_numactl_spec.go#L30) Enabled define if numactl should be enabled @@ -5944,7 +5944,7 @@ Default Value: `false` ### .spec.syncworkers.numactl.path -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_numactl_spec.go#L34) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_numactl_spec.go#L34) Path define numactl path within the container @@ -5954,7 +5954,7 @@ Default Value: `/usr/bin/numactl` ### .spec.syncworkers.overrideDetectedNumberOfCores -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L116) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L116) > [!IMPORTANT] > **Values set by this feature override user-provided `ARANGODB_OVERRIDE_DETECTED_NUMBER_OF_CORES` Container Environment Variable** @@ -5971,7 +5971,7 @@ Default Value: `true` ### .spec.syncworkers.overrideDetectedTotalMemory -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L104) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L104) > [!IMPORTANT] > **Values set by this feature override user-provided `ARANGODB_OVERRIDE_DETECTED_TOTAL_MEMORY` Container Environment Variable** @@ -5988,19 +5988,19 @@ Default Value: `true` ### .spec.syncworkers.podModes.network -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec_pod_modes.go#L31) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec_pod_modes.go#L31) *** ### .spec.syncworkers.podModes.pid -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec_pod_modes.go#L32) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec_pod_modes.go#L32) *** ### .spec.syncworkers.port -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L238) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L238) Port define Port used by member @@ -6008,7 +6008,7 @@ Port define Port used by member ### .spec.syncworkers.priorityClassName -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L159) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L159) PriorityClassName specifies a priority class name Will be forwarded to the pod spec. @@ -6020,7 +6020,7 @@ Links: ### .spec.syncworkers.probes.livenessProbeDisabled -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L250) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L250) LivenessProbeDisabled if set to true, the operator does not generate a liveness probe for new pods belonging to this group @@ -6030,7 +6030,7 @@ Default Value: `false` ### .spec.syncworkers.probes.livenessProbeSpec.failureThreshold -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L300) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L300) FailureThreshold when a Pod starts and the probe fails, Kubernetes will try failureThreshold times before giving up. Giving up means restarting the container. @@ -6042,7 +6042,7 @@ Default Value: `3` ### .spec.syncworkers.probes.livenessProbeSpec.initialDelaySeconds -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L283) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L283) InitialDelaySeconds specifies number of seconds after the container has started before liveness or readiness probes are initiated. Minimum value is 0. @@ -6053,7 +6053,7 @@ Default Value: `2` ### .spec.syncworkers.probes.livenessProbeSpec.periodSeconds -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L287) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L287) PeriodSeconds How often (in seconds) to perform the probe. Minimum value is 1. @@ -6064,7 +6064,7 @@ Default Value: `10` ### .spec.syncworkers.probes.livenessProbeSpec.successThreshold -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L295) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L295) SuccessThreshold Minimum consecutive successes for the probe to be considered successful after having failed. Minimum value is 1. @@ -6075,7 +6075,7 @@ Default Value: `1` ### .spec.syncworkers.probes.livenessProbeSpec.timeoutSeconds -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L291) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L291) TimeoutSeconds specifies number of seconds after which the probe times out Minimum value is 1. @@ -6086,7 +6086,7 @@ Default Value: `2` ### .spec.syncworkers.probes.ReadinessProbeDisabled -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L257) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L257) > [!WARNING] > ***DEPRECATED*** @@ -6099,7 +6099,7 @@ OldReadinessProbeDisabled if true readinessProbes are disabled ### .spec.syncworkers.probes.readinessProbeDisabled -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L259) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L259) ReadinessProbeDisabled override flag for probe disabled in good manner (lowercase) with backward compatibility @@ -6107,7 +6107,7 @@ ReadinessProbeDisabled override flag for probe disabled in good manner (lowercas ### .spec.syncworkers.probes.readinessProbeSpec.failureThreshold -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L300) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L300) FailureThreshold when a Pod starts and the probe fails, Kubernetes will try failureThreshold times before giving up. Giving up means restarting the container. @@ -6119,7 +6119,7 @@ Default Value: `3` ### .spec.syncworkers.probes.readinessProbeSpec.initialDelaySeconds -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L283) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L283) InitialDelaySeconds specifies number of seconds after the container has started before liveness or readiness probes are initiated. Minimum value is 0. @@ -6130,7 +6130,7 @@ Default Value: `2` ### .spec.syncworkers.probes.readinessProbeSpec.periodSeconds -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L287) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L287) PeriodSeconds How often (in seconds) to perform the probe. Minimum value is 1. @@ -6141,7 +6141,7 @@ Default Value: `10` ### .spec.syncworkers.probes.readinessProbeSpec.successThreshold -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L295) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L295) SuccessThreshold Minimum consecutive successes for the probe to be considered successful after having failed. Minimum value is 1. @@ -6152,7 +6152,7 @@ Default Value: `1` ### .spec.syncworkers.probes.readinessProbeSpec.timeoutSeconds -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L291) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L291) TimeoutSeconds specifies number of seconds after which the probe times out Minimum value is 1. @@ -6163,7 +6163,7 @@ Default Value: `2` ### .spec.syncworkers.probes.startupProbeDisabled -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L264) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L264) StartupProbeDisabled if true startupProbes are disabled @@ -6171,7 +6171,7 @@ StartupProbeDisabled if true startupProbes are disabled ### .spec.syncworkers.probes.startupProbeSpec.failureThreshold -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L300) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L300) FailureThreshold when a Pod starts and the probe fails, Kubernetes will try failureThreshold times before giving up. Giving up means restarting the container. @@ -6183,7 +6183,7 @@ Default Value: `3` ### .spec.syncworkers.probes.startupProbeSpec.initialDelaySeconds -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L283) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L283) InitialDelaySeconds specifies number of seconds after the container has started before liveness or readiness probes are initiated. Minimum value is 0. @@ -6194,7 +6194,7 @@ Default Value: `2` ### .spec.syncworkers.probes.startupProbeSpec.periodSeconds -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L287) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L287) PeriodSeconds How often (in seconds) to perform the probe. Minimum value is 1. @@ -6205,7 +6205,7 @@ Default Value: `10` ### .spec.syncworkers.probes.startupProbeSpec.successThreshold -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L295) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L295) SuccessThreshold Minimum consecutive successes for the probe to be considered successful after having failed. Minimum value is 1. @@ -6216,7 +6216,7 @@ Default Value: `1` ### .spec.syncworkers.probes.startupProbeSpec.timeoutSeconds -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L291) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L291) TimeoutSeconds specifies number of seconds after which the probe times out Minimum value is 1. @@ -6227,7 +6227,7 @@ Default Value: `2` ### .spec.syncworkers.pvcResizeMode -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L173) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L173) VolumeResizeMode specified resize mode for PVCs and PVs @@ -6239,7 +6239,7 @@ Possible Values: ### .spec.syncworkers.resources -Type: `core.ResourceRequirements` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L98) +Type: `core.ResourceRequirements` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L98) Resources holds resource requests & limits @@ -6250,7 +6250,7 @@ Links: ### .spec.syncworkers.schedulerName -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L90) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L90) SchedulerName define scheduler name used for group @@ -6258,7 +6258,7 @@ SchedulerName define scheduler name used for group ### .spec.syncworkers.securityContext.addCapabilities -Type: `[]core.Capability` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_security_context_spec.go#L41) +Type: `[]core.Capability` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_security_context_spec.go#L41) AddCapabilities add new capabilities to containers @@ -6266,7 +6266,7 @@ AddCapabilities add new capabilities to containers ### .spec.syncworkers.securityContext.allowPrivilegeEscalation -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_security_context_spec.go#L44) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_security_context_spec.go#L44) AllowPrivilegeEscalation Controls whether a process can gain more privileges than its parent process. @@ -6274,7 +6274,7 @@ AllowPrivilegeEscalation Controls whether a process can gain more privileges tha ### .spec.syncworkers.securityContext.dropAllCapabilities -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_security_context_spec.go#L38) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_security_context_spec.go#L38) > [!WARNING] > ***DEPRECATED*** @@ -6287,7 +6287,7 @@ DropAllCapabilities specifies if capabilities should be dropped for this pod con ### .spec.syncworkers.securityContext.fsGroup -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_security_context_spec.go#L61) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_security_context_spec.go#L61) FSGroup is a special supplemental group that applies to all containers in a pod. @@ -6295,7 +6295,7 @@ FSGroup is a special supplemental group that applies to all containers in a pod. ### .spec.syncworkers.securityContext.privileged -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_security_context_spec.go#L47) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_security_context_spec.go#L47) Privileged If true, runs container in privileged mode. Processes in privileged containers are essentially equivalent to root on the host. @@ -6304,7 +6304,7 @@ essentially equivalent to root on the host. ### .spec.syncworkers.securityContext.readOnlyRootFilesystem -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_security_context_spec.go#L49) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_security_context_spec.go#L49) ReadOnlyRootFilesystem if true, mounts the container's root filesystem as read-only. @@ -6312,7 +6312,7 @@ ReadOnlyRootFilesystem if true, mounts the container's root filesystem as read-o ### .spec.syncworkers.securityContext.runAsGroup -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_security_context_spec.go#L55) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_security_context_spec.go#L55) RunAsGroup is the GID to run the entrypoint of the container process. @@ -6320,7 +6320,7 @@ RunAsGroup is the GID to run the entrypoint of the container process. ### .spec.syncworkers.securityContext.runAsNonRoot -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_security_context_spec.go#L51) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_security_context_spec.go#L51) RunAsNonRoot if true, indicates that the container must run as a non-root user. @@ -6328,7 +6328,7 @@ RunAsNonRoot if true, indicates that the container must run as a non-root user. ### .spec.syncworkers.securityContext.runAsUser -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_security_context_spec.go#L53) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_security_context_spec.go#L53) RunAsUser is the UID to run the entrypoint of the container process. @@ -6336,7 +6336,7 @@ RunAsUser is the UID to run the entrypoint of the container process. ### .spec.syncworkers.securityContext.seccompProfile -Type: `core.SeccompProfile` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_security_context_spec.go#L77) +Type: `core.SeccompProfile` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_security_context_spec.go#L77) SeccompProfile defines a pod/container's seccomp profile settings. Only one profile source may be set. @@ -6347,7 +6347,7 @@ Links: ### .spec.syncworkers.securityContext.seLinuxOptions -Type: `core.SELinuxOptions` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_security_context_spec.go#L82) +Type: `core.SELinuxOptions` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_security_context_spec.go#L82) SELinuxOptions are the labels to be applied to the container @@ -6358,7 +6358,7 @@ Links: ### .spec.syncworkers.securityContext.supplementalGroups -Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_security_context_spec.go#L59) +Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_security_context_spec.go#L59) SupplementalGroups is a list of groups applied to the first process run in each container, in addition to the container's primary GID, the fsGroup (if specified), and group memberships defined in the container image for the uid of the container process. @@ -6367,7 +6367,7 @@ the fsGroup (if specified), and group memberships defined in the container image ### .spec.syncworkers.securityContext.sysctls -Type: `map[string]intstr.IntOrString` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_security_context_spec.go#L72) +Type: `map[string]intstr.IntOrString` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_security_context_spec.go#L72) Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch. @@ -6388,7 +6388,7 @@ sysctls: ### .spec.syncworkers.serviceAccountName -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L149) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L149) ServiceAccountName setting specifies the `serviceAccountName` for the `Pods` created for each server of this group. If empty, it defaults to using the @@ -6403,7 +6403,7 @@ to that service account. ### .spec.syncworkers.shutdownDelay -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L216) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L216) ShutdownDelay define how long operator should delay finalizer removal after shutdown @@ -6411,7 +6411,7 @@ ShutdownDelay define how long operator should delay finalizer removal after shut ### .spec.syncworkers.shutdownMethod -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L214) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L214) ShutdownMethod describe procedure of member shutdown taken by Operator @@ -6419,7 +6419,7 @@ ShutdownMethod describe procedure of member shutdown taken by Operator ### .spec.syncworkers.sidecarCoreNames -Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L192) +Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L192) SidecarCoreNames is a list of sidecar containers which must run in the pod. Some names (e.g.: "server", "worker") are reserved, and they don't have any impact. @@ -6428,7 +6428,7 @@ Some names (e.g.: "server", "worker") are reserved, and they don't have any impa ### .spec.syncworkers.sidecars -Type: `[]core.Container` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L196) +Type: `[]core.Container` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L196) Sidecars specifies a list of additional containers to be started @@ -6439,7 +6439,7 @@ Links: ### .spec.syncworkers.storageClassName -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L94) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L94) > [!WARNING] > ***DEPRECATED*** @@ -6452,7 +6452,7 @@ StorageClassName specifies the classname for storage of the servers. ### .spec.syncworkers.terminationGracePeriodSeconds -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L229) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L229) TerminationGracePeriodSeconds override default TerminationGracePeriodSeconds for pods - via silent rotation @@ -6460,7 +6460,7 @@ TerminationGracePeriodSeconds override default TerminationGracePeriodSeconds for ### .spec.syncworkers.tolerations -Type: `[]core.Toleration` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L125) +Type: `[]core.Toleration` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L125) Tolerations specifies the tolerations added to Pods in this group. By default, suitable tolerations are set for the following keys with the `NoExecute` effect: @@ -6476,7 +6476,7 @@ Links: ### .spec.syncworkers.volumeAllowShrink -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L177) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L177) > [!WARNING] > ***DEPRECATED*** @@ -6489,7 +6489,7 @@ VolumeAllowShrink allows shrinking of the volume ### .spec.syncworkers.volumeClaimTemplate -Type: `core.PersistentVolumeClaim` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L168) +Type: `core.PersistentVolumeClaim` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L168) VolumeClaimTemplate specifies a volumeClaimTemplate used by operator to create to volume claims for pods of this group. This setting is not available for group `coordinators`, `syncmasters` & `syncworkers`. @@ -6505,7 +6505,7 @@ Links: ### .spec.syncworkers.volumeMounts -Type: `[]ServerGroupSpecVolumeMount` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_spec.go#L206) +Type: `[]ServerGroupSpecVolumeMount` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_spec.go#L206) VolumeMounts define list of volume mounts mounted into server container @@ -6516,7 +6516,7 @@ Links: ### .spec.syncworkers.volumes\[int\].configMap -Type: `core.ConfigMapVolumeSource` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_volume.go#L138) +Type: `core.ConfigMapVolumeSource` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_volume.go#L138) ConfigMap which should be mounted into pod @@ -6527,7 +6527,7 @@ Links: ### .spec.syncworkers.volumes\[int\].emptyDir -Type: `core.EmptyDirVolumeSource` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_volume.go#L143) +Type: `core.EmptyDirVolumeSource` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_volume.go#L143) EmptyDir @@ -6538,7 +6538,7 @@ Links: ### .spec.syncworkers.volumes\[int\].hostPath -Type: `core.HostPathVolumeSource` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_volume.go#L148) +Type: `core.HostPathVolumeSource` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_volume.go#L148) HostPath @@ -6549,7 +6549,7 @@ Links: ### .spec.syncworkers.volumes\[int\].name -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_volume.go#L128) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_volume.go#L128) Name of volume @@ -6557,7 +6557,7 @@ Name of volume ### .spec.syncworkers.volumes\[int\].persistentVolumeClaim -Type: `core.PersistentVolumeClaimVolumeSource` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_volume.go#L153) +Type: `core.PersistentVolumeClaimVolumeSource` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_volume.go#L153) PersistentVolumeClaim @@ -6568,7 +6568,7 @@ Links: ### .spec.syncworkers.volumes\[int\].secret -Type: `core.SecretVolumeSource` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/server_group_volume.go#L133) +Type: `core.SecretVolumeSource` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/server_group_volume.go#L133) Secret which should be mounted into pod @@ -6579,7 +6579,7 @@ Links: ### .spec.timeouts.actions -Type: `map[string]meta.Duration` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/timeouts.go#L44) +Type: `map[string]meta.Duration` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/timeouts.go#L44) Actions keep map of the actions timeouts. @@ -6597,7 +6597,7 @@ actions: ### .spec.timeouts.maintenanceGracePeriod -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/timeouts.go#L36) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/timeouts.go#L36) MaintenanceGracePeriod action timeout @@ -6605,7 +6605,7 @@ MaintenanceGracePeriod action timeout ### .spec.timezone -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/deployment_spec.go#L258) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/deployment_spec.go#L258) Timezone if specified, will set a timezone for deployment. Must be in format accepted by "tzdata", e.g. `America/New_York` or `Europe/London` @@ -6614,7 +6614,7 @@ Must be in format accepted by "tzdata", e.g. `America/New_York` or `Europe/Londo ### .spec.tls.altNames -Type: `[]string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/tls_spec.go#L72) +Type: `[]string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/tls_spec.go#L72) AltNames setting specifies a list of alternate names that will be added to all generated certificates. These names can be DNS names or email addresses. @@ -6624,7 +6624,7 @@ The default value is empty. ### .spec.tls.caSecretName -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/tls_spec.go#L67) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/tls_spec.go#L67) CASecretName setting specifies the name of a kubernetes `Secret` that contains a standard CA certificate + private key used to sign certificates for individual @@ -6641,19 +6641,19 @@ The specified `Secret`, must contain the following data fields: ### .spec.tls.mode -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/tls_spec.go#L81) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/tls_spec.go#L81) *** ### .spec.tls.sni.mapping.\ -Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/tls_sni_spec.go#L30) +Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/tls_sni_spec.go#L30) *** ### .spec.tls.ttl -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/tls_spec.go#L79) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/tls_spec.go#L79) TTL setting specifies the time to live of all generated server certificates. When the server certificate is about to expire, it will be automatically replaced @@ -6667,25 +6667,25 @@ Default Value: `"2160h" (about 3 months)` ### .spec.topology.enabled -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/topology_spec.go#L26) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/topology_spec.go#L26) *** ### .spec.topology.label -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/topology_spec.go#L28) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/topology_spec.go#L28) *** ### .spec.topology.zones -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/topology_spec.go#L27) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/topology_spec.go#L27) *** ### .spec.upgrade.autoUpgrade -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/deployment_upgrade_spec.go#L26) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/deployment_upgrade_spec.go#L26) AutoUpgrade flag specifies if upgrade should be auto-injected, even if is not required (in case of stuck) @@ -6695,7 +6695,7 @@ Default Value: `false` ### .spec.upgrade.debugLog -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/deployment_upgrade_spec.go#L30) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/deployment_upgrade_spec.go#L30) DebugLog flag specifies if containers running upgrade process should print more debugging information. This applies only to init containers. diff --git a/docs/api/ArangoDeploymentReplication.V1.md b/docs/api/ArangoDeploymentReplication.V1.md index 11a3056a7..b8188fcbb 100644 --- a/docs/api/ArangoDeploymentReplication.V1.md +++ b/docs/api/ArangoDeploymentReplication.V1.md @@ -10,7 +10,7 @@ title: ArangoDeploymentReplication V1 ### .spec.cancellation.ensureInSync -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/replication/v1/replication_spec.go#L38) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/replication/v1/replication_spec.go#L38) EnsureInSync if it is true then during cancellation process data consistency is required. Default value is true. @@ -19,7 +19,7 @@ Default value is true. ### .spec.cancellation.sourceReadOnly -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/replication/v1/replication_spec.go#L41) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/replication/v1/replication_spec.go#L41) SourceReadOnly if it true then after cancellation source data center should be in read-only mode. Default value is false. @@ -28,7 +28,7 @@ Default value is false. ### .spec.destination.auth.keyfileSecretName -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/replication/v1/endpoint_authentication_spec.go#L37) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/replication/v1/endpoint_authentication_spec.go#L37) KeyfileSecretName holds the name of a Secret containing a client authentication certificate formatted at keyfile in a `tls.keyfile` field. @@ -40,7 +40,7 @@ the synchronization and fetch the synchronization status. ### .spec.destination.auth.userSecretName -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/replication/v1/endpoint_authentication_spec.go#L42) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/replication/v1/endpoint_authentication_spec.go#L42) UserSecretName holds the name of a Secret containing a `username` & `password` field used for basic authentication. @@ -51,7 +51,7 @@ of the ArangoDB cluster at the endpoint. ### .spec.destination.deploymentName -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/replication/v1/endpoint_spec.go#L36) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/replication/v1/endpoint_spec.go#L36) DeploymentName holds the name of an ArangoDeployment resource. If set, this provides default values for masterEndpoint, auth & tls. @@ -60,7 +60,7 @@ If set, this provides default values for masterEndpoint, auth & tls. ### .spec.destination.masterEndpoint -Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/replication/v1/endpoint_spec.go#L42) +Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/replication/v1/endpoint_spec.go#L42) MasterEndpoint holds a list of URLs used to reach the syncmaster(s) Use this setting if the source cluster is not running inside a Kubernetes cluster @@ -73,7 +73,7 @@ Default Value: `[]` ### .spec.destination.tls.caSecretName -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/replication/v1/endpoint_tls_spec.go#L34) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/replication/v1/endpoint_tls_spec.go#L34) CASecretName holds the name of a Secret containing a ca.crt public key for TLS validation. This setting is required, unless `deploymentName` has been set. @@ -82,7 +82,7 @@ This setting is required, unless `deploymentName` has been set. ### .spec.source.auth.keyfileSecretName -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/replication/v1/endpoint_authentication_spec.go#L37) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/replication/v1/endpoint_authentication_spec.go#L37) KeyfileSecretName holds the name of a Secret containing a client authentication certificate formatted at keyfile in a `tls.keyfile` field. @@ -94,7 +94,7 @@ the synchronization and fetch the synchronization status. ### .spec.source.auth.userSecretName -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/replication/v1/endpoint_authentication_spec.go#L42) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/replication/v1/endpoint_authentication_spec.go#L42) UserSecretName holds the name of a Secret containing a `username` & `password` field used for basic authentication. @@ -105,7 +105,7 @@ of the ArangoDB cluster at the endpoint. ### .spec.source.deploymentName -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/replication/v1/endpoint_spec.go#L36) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/replication/v1/endpoint_spec.go#L36) DeploymentName holds the name of an ArangoDeployment resource. If set, this provides default values for masterEndpoint, auth & tls. @@ -114,7 +114,7 @@ If set, this provides default values for masterEndpoint, auth & tls. ### .spec.source.masterEndpoint -Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/replication/v1/endpoint_spec.go#L42) +Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/replication/v1/endpoint_spec.go#L42) MasterEndpoint holds a list of URLs used to reach the syncmaster(s) Use this setting if the source cluster is not running inside a Kubernetes cluster @@ -127,7 +127,7 @@ Default Value: `[]` ### .spec.source.tls.caSecretName -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/replication/v1/endpoint_tls_spec.go#L34) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/replication/v1/endpoint_tls_spec.go#L34) CASecretName holds the name of a Secret containing a ca.crt public key for TLS validation. This setting is required, unless `deploymentName` has been set. diff --git a/docs/api/ArangoJob.V1.md b/docs/api/ArangoJob.V1.md index b992fbc47..8f00c20fd 100644 --- a/docs/api/ArangoJob.V1.md +++ b/docs/api/ArangoJob.V1.md @@ -10,7 +10,7 @@ title: ArangoJob V1 ### .spec.arangoDeploymentName -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/apps/v1/job_spec.go#L27) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/apps/v1/job_spec.go#L27) ArangoDeploymentName holds the name of ArangoDeployment @@ -18,7 +18,7 @@ ArangoDeploymentName holds the name of ArangoDeployment ### .spec.jobTemplate -Type: `batch.JobSpec` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/apps/v1/job_spec.go#L33) +Type: `batch.JobSpec` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/apps/v1/job_spec.go#L33) JobTemplate holds the Kubernetes Job Template diff --git a/docs/api/ArangoLocalStorage.V1Alpha.md b/docs/api/ArangoLocalStorage.V1Alpha.md index e0c9abb63..dae0de1b4 100644 --- a/docs/api/ArangoLocalStorage.V1Alpha.md +++ b/docs/api/ArangoLocalStorage.V1Alpha.md @@ -10,7 +10,7 @@ title: ArangoLocalStorage V1Alpha ### .spec.localPath -Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/storage/v1alpha/local_storage_spec.go#L36) +Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/storage/v1alpha/local_storage_spec.go#L36) LocalPath setting specifies one or more local directories (on the nodes) used to create persistent volumes in. @@ -18,7 +18,7 @@ LocalPath setting specifies one or more local directories (on the nodes) used to ### .spec.nodeSelector -Type: `object` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/storage/v1alpha/local_storage_spec.go#L43) +Type: `object` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/storage/v1alpha/local_storage_spec.go#L43) NodeSelector setting specifies which nodes the operator will provision persistent volumes on. @@ -26,7 +26,7 @@ NodeSelector setting specifies which nodes the operator will provision persisten ### .spec.podCustomization.priority -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/storage/v1alpha/local_storage_pod_customization.go#L25) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/storage/v1alpha/local_storage_pod_customization.go#L25) Priority if defined, sets the priority for pods of storage provisioner @@ -34,7 +34,7 @@ Priority if defined, sets the priority for pods of storage provisioner ### .spec.privileged -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/storage/v1alpha/local_storage_spec.go#L45) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/storage/v1alpha/local_storage_spec.go#L45) Privileged if set, passes Privileged flag to SecurityContext for pods of storage provisioner @@ -42,7 +42,7 @@ Privileged if set, passes Privileged flag to SecurityContext for pods of storage ### .spec.storageClass.isDefault -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/storage/v1alpha/storage_class_spec.go#L42) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/storage/v1alpha/storage_class_spec.go#L42) IsDefault setting specifies if the created `StorageClass` will be marked as default storage class. @@ -53,7 +53,7 @@ Default Value: `false` ### .spec.storageClass.name -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/storage/v1alpha/storage_class_spec.go#L38) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/storage/v1alpha/storage_class_spec.go#L38) Name setting specifies the name of the storage class that created `PersistentVolume` will use. @@ -66,7 +66,7 @@ Default Value: `""` ### .spec.storageClass.reclaimPolicy -Type: `core.PersistentVolumeReclaimPolicy` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/storage/v1alpha/storage_class_spec.go#L46) +Type: `core.PersistentVolumeReclaimPolicy` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/storage/v1alpha/storage_class_spec.go#L46) ReclaimPolicy defines what happens to a persistent volume when released from its claim. @@ -77,7 +77,7 @@ Links: ### .spec.tolerations -Type: `[]core.Toleration` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/storage/v1alpha/local_storage_spec.go#L41) +Type: `[]core.Toleration` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/storage/v1alpha/local_storage_spec.go#L41) Tolerations specifies the tolerations added to pods of storage provisioner diff --git a/docs/api/ArangoMLBatchJob.V1Alpha1.md b/docs/api/ArangoMLBatchJob.V1Alpha1.md index 75e6cb8b2..f305b46f4 100644 --- a/docs/api/ArangoMLBatchJob.V1Alpha1.md +++ b/docs/api/ArangoMLBatchJob.V1Alpha1.md @@ -10,7 +10,7 @@ title: ArangoMLBatchJob V1Alpha1 ### .spec -Type: `batch.Job` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/ml/v1alpha1/batchjob_spec.go#L33) +Type: `batch.Job` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/ml/v1alpha1/batchjob_spec.go#L33) Links: * [Kubernetes Documentation](https://godoc.org/k8s.io/api/batch/v1#JobSpec) @@ -19,7 +19,7 @@ Links: ### .status -Type: `batch.JobStatus` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/ml/v1alpha1/batchjob_status.go#L37) +Type: `batch.JobStatus` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/ml/v1alpha1/batchjob_status.go#L37) Links: * [Kubernetes Documentation](https://godoc.org/k8s.io/api/batch/v1#JobStatus) @@ -28,15 +28,23 @@ Links: ### .status.mlConditions -Type: `api.MLConditions` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/ml/v1alpha1/batchjob_status.go#L33) +Type: `api.MLConditions` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/ml/v1alpha1/batchjob_status.go#L33) MLConditions specific to the entire batch job *** +### .status.ref.checksum + +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/shared/v1/object.go#L61) + +UID keeps the information about object Checksum + +*** + ### .status.ref.name -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/shared/v1/object.go#L46) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/shared/v1/object.go#L52) Name of the object @@ -44,7 +52,7 @@ Name of the object ### .status.ref.namespace -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/shared/v1/object.go#L49) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/shared/v1/object.go#L55) Namespace of the object. Should default to the namespace of the parent object @@ -52,7 +60,7 @@ Namespace of the object. Should default to the namespace of the parent object ### .status.ref.uid -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/shared/v1/object.go#L52) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/shared/v1/object.go#L58) UID keeps the information about object UID diff --git a/docs/api/ArangoMLCronJob.V1Alpha1.md b/docs/api/ArangoMLCronJob.V1Alpha1.md index 7aa5c84f7..13da6d724 100644 --- a/docs/api/ArangoMLCronJob.V1Alpha1.md +++ b/docs/api/ArangoMLCronJob.V1Alpha1.md @@ -10,7 +10,7 @@ title: ArangoMLCronJob V1Alpha1 ### .spec -Type: `batch.CronJobSpec` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/ml/v1alpha1/cronjob_spec.go#L33) +Type: `batch.CronJobSpec` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/ml/v1alpha1/cronjob_spec.go#L33) Links: * [Kubernetes Documentation](https://godoc.org/k8s.io/api/batch/v1#CronJobSpec) @@ -19,7 +19,7 @@ Links: ### .status -Type: `batch.CronJobStatus` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/ml/v1alpha1/cronjob_status.go#L37) +Type: `batch.CronJobStatus` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/ml/v1alpha1/cronjob_status.go#L37) Links: * [Kubernetes Documentation](https://godoc.org/k8s.io/api/batch/v1#CronJobStatus) @@ -28,15 +28,23 @@ Links: ### .status.mlConditions -Type: `api.MLConditions` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/ml/v1alpha1/cronjob_status.go#L33) +Type: `api.MLConditions` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/ml/v1alpha1/cronjob_status.go#L33) MLConditions specific to the entire cron job *** +### .status.ref.checksum + +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/shared/v1/object.go#L61) + +UID keeps the information about object Checksum + +*** + ### .status.ref.name -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/shared/v1/object.go#L46) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/shared/v1/object.go#L52) Name of the object @@ -44,7 +52,7 @@ Name of the object ### .status.ref.namespace -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/shared/v1/object.go#L49) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/shared/v1/object.go#L55) Namespace of the object. Should default to the namespace of the parent object @@ -52,7 +60,7 @@ Namespace of the object. Should default to the namespace of the parent object ### .status.ref.uid -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/shared/v1/object.go#L52) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/shared/v1/object.go#L58) UID keeps the information about object UID diff --git a/docs/api/ArangoMLExtension.V1Alpha1.md b/docs/api/ArangoMLExtension.V1Alpha1.md index f30f16833..0de026b0f 100644 --- a/docs/api/ArangoMLExtension.V1Alpha1.md +++ b/docs/api/ArangoMLExtension.V1Alpha1.md @@ -10,7 +10,7 @@ title: ArangoMLExtension V1Alpha1 ### .spec.deployment.affinity -Type: `core.Affinity` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/pod/resources/scheduling.go#L44) +Type: `core.Affinity` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/scheduling.go#L44) Affinity defines scheduling constraints for workload @@ -19,9 +19,30 @@ Links: *** +### .spec.deployment.annotations + +Type: `object` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/metadata.go#L45) + +Annotations is an unstructured key value map stored with a resource that may be +set by external tools to store and retrieve arbitrary metadata. They are not +queryable and should be preserved when modifying objects. + +Links: +* [Kubernetes docs](https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations) + +*** + +### .spec.deployment.automountServiceAccountToken + +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/service_account.go#L38) + +AutomountServiceAccountToken indicates whether a service account token should be automatically mounted. + +*** + ### .spec.deployment.hostIPC -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/pod/resources/namespace.go#L42) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/namespace.go#L42) HostIPC defines to use the host's ipc namespace. @@ -31,7 +52,7 @@ Default Value: `false` ### .spec.deployment.hostNetwork -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/pod/resources/namespace.go#L36) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/namespace.go#L36) HostNetwork requests Host network for this pod. Use the host's network namespace. If this option is set, the ports that will be used must be specified. @@ -42,7 +63,7 @@ Default Value: `false` ### .spec.deployment.hostPID -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/pod/resources/namespace.go#L39) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/namespace.go#L39) HostPID define to use the host's pid namespace. @@ -50,9 +71,30 @@ Default Value: `false` *** +### .spec.deployment.imagePullSecrets + +Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/image.go#L36) + +ImagePullSecrets define Secrets used to pull Image from registry + +*** + +### .spec.deployment.labels + +Type: `object` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/metadata.go#L39) + +Map of string keys and values that can be used to organize and categorize +(scope and select) objects. May match selectors of replication controllers +and services. + +Links: +* [Kubernetes docs](https://kubernetes.io/docs/concepts/overview/working-with-objects/labels) + +*** + ### .spec.deployment.nodeSelector -Type: `object` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/pod/resources/scheduling.go#L39) +Type: `object` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/scheduling.go#L39) NodeSelector is a selector that must be true for the workload to fit on a node. @@ -61,9 +103,20 @@ Links: *** +### .spec.deployment.ownerReferences + +Type: `meta.OwnerReference` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/metadata.go#L52) + +List of objects depended by this object. If ALL objects in the list have +been deleted, this object will be garbage collected. If this object is managed by a controller, +then an entry in this list will point to this controller, with the controller field set to true. +There cannot be more than one managing controller. + +*** + ### .spec.deployment.podSecurityContext -Type: `core.PodSecurityContext` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/pod/resources/security.go#L35) +Type: `core.PodSecurityContext` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/security.go#L35) PodSecurityContext holds pod-level security attributes and common container settings. @@ -72,9 +125,43 @@ Links: *** +### .spec.deployment.prediction.args + +Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/core.go#L50) + +Arguments to the entrypoint. +The container image's CMD is used if this is not provided. +Variable references $(VAR_NAME) are expanded using the container's environment. 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. Cannot be updated. + +Links: +* [Kubernetes Docs](https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell) + +*** + +### .spec.deployment.prediction.command + +Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/core.go#L40) + +Entrypoint array. Not executed within a shell. +The container image's ENTRYPOINT is used if this is not provided. +Variable references $(VAR_NAME) are expanded using the container's environment. 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. Cannot be updated. + +Links: +* [Kubernetes Docs](https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell) + +*** + ### .spec.deployment.prediction.env -Type: `core.EnvVar` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/environments.go#L36) +Type: `core.EnvVar` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/environments.go#L36) Env keeps the information about environment variables provided to the container @@ -85,7 +172,7 @@ Links: ### .spec.deployment.prediction.envFrom -Type: `core.EnvFromSource` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/environments.go#L41) +Type: `core.EnvFromSource` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/environments.go#L41) EnvFrom keeps the information about environment variable sources provided to the container @@ -96,7 +183,7 @@ Links: ### .spec.deployment.prediction.gpu -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/ml/v1alpha1/extension_spec_deployment_component.go#L31) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/ml/v1alpha1/extension_spec_deployment_component.go#L31) GPU defined if GPU Jobs are enabled for component. In use only for ArangoMLExtensionSpecDeploymentComponentPrediction and ArangoMLExtensionSpecDeploymentComponentTraining @@ -106,7 +193,7 @@ Default Value: `false` ### .spec.deployment.prediction.image -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/image.go#L37) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/image.go#L35) Image define image details @@ -114,7 +201,7 @@ Image define image details ### .spec.deployment.prediction.imagePullPolicy -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/image.go#L41) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/image.go#L39) ImagePullPolicy define Image pull policy @@ -122,17 +209,9 @@ Default Value: `IfNotPresent` *** -### .spec.deployment.prediction.imagePullSecrets - -Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/image.go#L44) - -ImagePullSecrets define Secrets used to pull Image from registry - -*** - ### .spec.deployment.prediction.lifecycle -Type: `core.Lifecycle` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/lifecycle.go#L35) +Type: `core.Lifecycle` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/lifecycle.go#L35) Lifecycle keeps actions that the management system should take in response to container lifecycle events. @@ -140,7 +219,7 @@ Lifecycle keeps actions that the management system should take in response to co ### .spec.deployment.prediction.livenessProbe -Type: `core.Probe` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/probes.go#L37) +Type: `core.Probe` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/probes.go#L37) LivenessProbe keeps configuration of periodic probe of container liveness. Container will be restarted if the probe fails. @@ -152,7 +231,7 @@ Links: ### .spec.deployment.prediction.port -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/ml/v1alpha1/extension_spec_deployment_component.go#L34) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/ml/v1alpha1/extension_spec_deployment_component.go#L34) Port defines on which port the container will be listening for connections @@ -160,7 +239,7 @@ Port defines on which port the container will be listening for connections ### .spec.deployment.prediction.ports -Type: `[]core.ContainerPort` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/networking.go#L39) +Type: `[]core.ContainerPort` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/networking.go#L39) Ports contains list of ports to expose from the container. Not specifying a port here DOES NOT prevent that port from being exposed. Any port which is @@ -171,7 +250,7 @@ accessible from the network. ### .spec.deployment.prediction.readinessProbe -Type: `core.Probe` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/probes.go#L42) +Type: `core.Probe` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/probes.go#L42) ReadinessProbe keeps configuration of periodic probe of container service readiness. Container will be removed from service endpoints if the probe fails. @@ -183,7 +262,7 @@ Links: ### .spec.deployment.prediction.resources -Type: `core.ResourceRequirements` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/resources.go#L37) +Type: `core.ResourceRequirements` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/resources.go#L37) Resources holds resource requests & limits for container @@ -194,7 +273,7 @@ Links: ### .spec.deployment.prediction.securityContext -Type: `core.SecurityContext` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/security.go#L35) +Type: `core.SecurityContext` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/security.go#L35) SecurityContext holds container-level security attributes and common container settings. @@ -205,7 +284,7 @@ Links: ### .spec.deployment.prediction.startupProbe -Type: `core.Probe` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/probes.go#L50) +Type: `core.Probe` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/probes.go#L50) StartupProbe indicates that the Pod has successfully initialized. If specified, no other probes are executed until this completes successfully. @@ -220,15 +299,59 @@ Links: ### .spec.deployment.prediction.volumeMounts -Type: `[]core.VolumeMount` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/volume_mounts.go#L35) +Type: `[]core.VolumeMount` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/volume_mounts.go#L35) VolumeMounts keeps list of pod volumes to mount into the container's filesystem. *** +### .spec.deployment.prediction.workingDir + +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/core.go#L55) + +Container's working directory. +If not specified, the container runtime's default will be used, which +might be configured in the container image. + +*** + +### .spec.deployment.project.args + +Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/core.go#L50) + +Arguments to the entrypoint. +The container image's CMD is used if this is not provided. +Variable references $(VAR_NAME) are expanded using the container's environment. 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. Cannot be updated. + +Links: +* [Kubernetes Docs](https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell) + +*** + +### .spec.deployment.project.command + +Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/core.go#L40) + +Entrypoint array. Not executed within a shell. +The container image's ENTRYPOINT is used if this is not provided. +Variable references $(VAR_NAME) are expanded using the container's environment. 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. Cannot be updated. + +Links: +* [Kubernetes Docs](https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell) + +*** + ### .spec.deployment.project.env -Type: `core.EnvVar` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/environments.go#L36) +Type: `core.EnvVar` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/environments.go#L36) Env keeps the information about environment variables provided to the container @@ -239,7 +362,7 @@ Links: ### .spec.deployment.project.envFrom -Type: `core.EnvFromSource` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/environments.go#L41) +Type: `core.EnvFromSource` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/environments.go#L41) EnvFrom keeps the information about environment variable sources provided to the container @@ -250,7 +373,7 @@ Links: ### .spec.deployment.project.gpu -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/ml/v1alpha1/extension_spec_deployment_component.go#L31) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/ml/v1alpha1/extension_spec_deployment_component.go#L31) GPU defined if GPU Jobs are enabled for component. In use only for ArangoMLExtensionSpecDeploymentComponentPrediction and ArangoMLExtensionSpecDeploymentComponentTraining @@ -260,7 +383,7 @@ Default Value: `false` ### .spec.deployment.project.image -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/image.go#L37) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/image.go#L35) Image define image details @@ -268,7 +391,7 @@ Image define image details ### .spec.deployment.project.imagePullPolicy -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/image.go#L41) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/image.go#L39) ImagePullPolicy define Image pull policy @@ -276,17 +399,9 @@ Default Value: `IfNotPresent` *** -### .spec.deployment.project.imagePullSecrets - -Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/image.go#L44) - -ImagePullSecrets define Secrets used to pull Image from registry - -*** - ### .spec.deployment.project.lifecycle -Type: `core.Lifecycle` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/lifecycle.go#L35) +Type: `core.Lifecycle` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/lifecycle.go#L35) Lifecycle keeps actions that the management system should take in response to container lifecycle events. @@ -294,7 +409,7 @@ Lifecycle keeps actions that the management system should take in response to co ### .spec.deployment.project.livenessProbe -Type: `core.Probe` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/probes.go#L37) +Type: `core.Probe` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/probes.go#L37) LivenessProbe keeps configuration of periodic probe of container liveness. Container will be restarted if the probe fails. @@ -306,7 +421,7 @@ Links: ### .spec.deployment.project.port -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/ml/v1alpha1/extension_spec_deployment_component.go#L34) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/ml/v1alpha1/extension_spec_deployment_component.go#L34) Port defines on which port the container will be listening for connections @@ -314,7 +429,7 @@ Port defines on which port the container will be listening for connections ### .spec.deployment.project.ports -Type: `[]core.ContainerPort` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/networking.go#L39) +Type: `[]core.ContainerPort` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/networking.go#L39) Ports contains list of ports to expose from the container. Not specifying a port here DOES NOT prevent that port from being exposed. Any port which is @@ -325,7 +440,7 @@ accessible from the network. ### .spec.deployment.project.readinessProbe -Type: `core.Probe` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/probes.go#L42) +Type: `core.Probe` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/probes.go#L42) ReadinessProbe keeps configuration of periodic probe of container service readiness. Container will be removed from service endpoints if the probe fails. @@ -337,7 +452,7 @@ Links: ### .spec.deployment.project.resources -Type: `core.ResourceRequirements` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/resources.go#L37) +Type: `core.ResourceRequirements` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/resources.go#L37) Resources holds resource requests & limits for container @@ -348,7 +463,7 @@ Links: ### .spec.deployment.project.securityContext -Type: `core.SecurityContext` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/security.go#L35) +Type: `core.SecurityContext` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/security.go#L35) SecurityContext holds container-level security attributes and common container settings. @@ -359,7 +474,7 @@ Links: ### .spec.deployment.project.startupProbe -Type: `core.Probe` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/probes.go#L50) +Type: `core.Probe` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/probes.go#L50) StartupProbe indicates that the Pod has successfully initialized. If specified, no other probes are executed until this completes successfully. @@ -374,15 +489,25 @@ Links: ### .spec.deployment.project.volumeMounts -Type: `[]core.VolumeMount` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/volume_mounts.go#L35) +Type: `[]core.VolumeMount` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/volume_mounts.go#L35) VolumeMounts keeps list of pod volumes to mount into the container's filesystem. *** +### .spec.deployment.project.workingDir + +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/core.go#L55) + +Container's working directory. +If not specified, the container runtime's default will be used, which +might be configured in the container image. + +*** + ### .spec.deployment.replicas -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/ml/v1alpha1/extension_spec_deployment.go#L56) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/ml/v1alpha1/extension_spec_deployment.go#L56) Replicas defines the number of replicas running specified components. No replicas created if no components are defined. @@ -392,7 +517,7 @@ Default Value: `1` ### .spec.deployment.schedulerName -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/pod/resources/scheduling.go#L54) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/scheduling.go#L54) SchedulerName specifies, the pod will be dispatched by specified scheduler. If not specified, the pod will be dispatched by default scheduler. @@ -403,7 +528,7 @@ Default Value: `""` ### .spec.deployment.service.type -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/ml/v1alpha1/extension_spec_deployment_service.go#L37) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/ml/v1alpha1/extension_spec_deployment_service.go#L37) Type determines how the Service is exposed @@ -418,9 +543,20 @@ Possible Values: *** +### .spec.deployment.serviceAccountName + +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/service_account.go#L35) + +ServiceAccountName is the name of the ServiceAccount to use to run this pod. + +Links: +* [Kubernetes docs](https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/) + +*** + ### .spec.deployment.shareProcessNamespace -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/pod/resources/namespace.go#L48) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/namespace.go#L48) ShareProcessNamespace defines to share a single process namespace between all of the containers in a pod. When this is set containers will be able to view and signal processes from other containers @@ -433,7 +569,7 @@ Default Value: `false` ### .spec.deployment.tolerations -Type: `[]core.Toleration` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/pod/resources/scheduling.go#L49) +Type: `[]core.Toleration` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/scheduling.go#L49) Tolerations defines tolerations @@ -442,9 +578,43 @@ Links: *** +### .spec.deployment.training.args + +Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/core.go#L50) + +Arguments to the entrypoint. +The container image's CMD is used if this is not provided. +Variable references $(VAR_NAME) are expanded using the container's environment. 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. Cannot be updated. + +Links: +* [Kubernetes Docs](https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell) + +*** + +### .spec.deployment.training.command + +Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/core.go#L40) + +Entrypoint array. Not executed within a shell. +The container image's ENTRYPOINT is used if this is not provided. +Variable references $(VAR_NAME) are expanded using the container's environment. 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. Cannot be updated. + +Links: +* [Kubernetes Docs](https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell) + +*** + ### .spec.deployment.training.env -Type: `core.EnvVar` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/environments.go#L36) +Type: `core.EnvVar` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/environments.go#L36) Env keeps the information about environment variables provided to the container @@ -455,7 +625,7 @@ Links: ### .spec.deployment.training.envFrom -Type: `core.EnvFromSource` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/environments.go#L41) +Type: `core.EnvFromSource` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/environments.go#L41) EnvFrom keeps the information about environment variable sources provided to the container @@ -466,7 +636,7 @@ Links: ### .spec.deployment.training.gpu -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/ml/v1alpha1/extension_spec_deployment_component.go#L31) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/ml/v1alpha1/extension_spec_deployment_component.go#L31) GPU defined if GPU Jobs are enabled for component. In use only for ArangoMLExtensionSpecDeploymentComponentPrediction and ArangoMLExtensionSpecDeploymentComponentTraining @@ -476,7 +646,7 @@ Default Value: `false` ### .spec.deployment.training.image -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/image.go#L37) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/image.go#L35) Image define image details @@ -484,7 +654,7 @@ Image define image details ### .spec.deployment.training.imagePullPolicy -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/image.go#L41) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/image.go#L39) ImagePullPolicy define Image pull policy @@ -492,17 +662,9 @@ Default Value: `IfNotPresent` *** -### .spec.deployment.training.imagePullSecrets - -Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/image.go#L44) - -ImagePullSecrets define Secrets used to pull Image from registry - -*** - ### .spec.deployment.training.lifecycle -Type: `core.Lifecycle` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/lifecycle.go#L35) +Type: `core.Lifecycle` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/lifecycle.go#L35) Lifecycle keeps actions that the management system should take in response to container lifecycle events. @@ -510,7 +672,7 @@ Lifecycle keeps actions that the management system should take in response to co ### .spec.deployment.training.livenessProbe -Type: `core.Probe` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/probes.go#L37) +Type: `core.Probe` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/probes.go#L37) LivenessProbe keeps configuration of periodic probe of container liveness. Container will be restarted if the probe fails. @@ -522,7 +684,7 @@ Links: ### .spec.deployment.training.port -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/ml/v1alpha1/extension_spec_deployment_component.go#L34) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/ml/v1alpha1/extension_spec_deployment_component.go#L34) Port defines on which port the container will be listening for connections @@ -530,7 +692,7 @@ Port defines on which port the container will be listening for connections ### .spec.deployment.training.ports -Type: `[]core.ContainerPort` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/networking.go#L39) +Type: `[]core.ContainerPort` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/networking.go#L39) Ports contains list of ports to expose from the container. Not specifying a port here DOES NOT prevent that port from being exposed. Any port which is @@ -541,7 +703,7 @@ accessible from the network. ### .spec.deployment.training.readinessProbe -Type: `core.Probe` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/probes.go#L42) +Type: `core.Probe` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/probes.go#L42) ReadinessProbe keeps configuration of periodic probe of container service readiness. Container will be removed from service endpoints if the probe fails. @@ -553,7 +715,7 @@ Links: ### .spec.deployment.training.resources -Type: `core.ResourceRequirements` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/resources.go#L37) +Type: `core.ResourceRequirements` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/resources.go#L37) Resources holds resource requests & limits for container @@ -564,7 +726,7 @@ Links: ### .spec.deployment.training.securityContext -Type: `core.SecurityContext` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/security.go#L35) +Type: `core.SecurityContext` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/security.go#L35) SecurityContext holds container-level security attributes and common container settings. @@ -575,7 +737,7 @@ Links: ### .spec.deployment.training.startupProbe -Type: `core.Probe` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/probes.go#L50) +Type: `core.Probe` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/probes.go#L50) StartupProbe indicates that the Pod has successfully initialized. If specified, no other probes are executed until this completes successfully. @@ -590,15 +752,25 @@ Links: ### .spec.deployment.training.volumeMounts -Type: `[]core.VolumeMount` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/volume_mounts.go#L35) +Type: `[]core.VolumeMount` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/volume_mounts.go#L35) VolumeMounts keeps list of pod volumes to mount into the container's filesystem. *** +### .spec.deployment.training.workingDir + +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/core.go#L55) + +Container's working directory. +If not specified, the container runtime's default will be used, which +might be configured in the container image. + +*** + ### .spec.deployment.volumes -Type: `[]core.Volume` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/pod/resources/volumes.go#L36) +Type: `[]core.Volume` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/volumes.go#L36) Volumes keeps list of volumes that can be mounted by containers belonging to the pod. @@ -607,46 +779,75 @@ Links: *** -### .spec.image +### .spec.init.affinity -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/image.go#L37) +Type: `core.Affinity` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/scheduling.go#L44) -Image define image details +Affinity defines scheduling constraints for workload + +Links: +* [Kubernetes docs](https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity) *** -### .spec.imagePullPolicy +### .spec.init.annotations -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/image.go#L41) +Type: `object` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/metadata.go#L45) -ImagePullPolicy define Image pull policy +Annotations is an unstructured key value map stored with a resource that may be +set by external tools to store and retrieve arbitrary metadata. They are not +queryable and should be preserved when modifying objects. -Default Value: `IfNotPresent` +Links: +* [Kubernetes docs](https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations) *** -### .spec.imagePullSecrets +### .spec.init.args -Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/image.go#L44) +Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/core.go#L50) -ImagePullSecrets define Secrets used to pull Image from registry +Arguments to the entrypoint. +The container image's CMD is used if this is not provided. +Variable references $(VAR_NAME) are expanded using the container's environment. 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. Cannot be updated. + +Links: +* [Kubernetes Docs](https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell) *** -### .spec.init.affinity +### .spec.init.automountServiceAccountToken -Type: `core.Affinity` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/pod/resources/scheduling.go#L44) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/service_account.go#L38) -Affinity defines scheduling constraints for workload +AutomountServiceAccountToken indicates whether a service account token should be automatically mounted. + +*** + +### .spec.init.command + +Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/core.go#L40) + +Entrypoint array. Not executed within a shell. +The container image's ENTRYPOINT is used if this is not provided. +Variable references $(VAR_NAME) are expanded using the container's environment. 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. Cannot be updated. Links: -* [Kubernetes docs](https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity) +* [Kubernetes Docs](https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell) *** ### .spec.init.env -Type: `core.EnvVar` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/environments.go#L36) +Type: `core.EnvVar` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/environments.go#L36) Env keeps the information about environment variables provided to the container @@ -657,7 +858,7 @@ Links: ### .spec.init.envFrom -Type: `core.EnvFromSource` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/environments.go#L41) +Type: `core.EnvFromSource` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/environments.go#L41) EnvFrom keeps the information about environment variable sources provided to the container @@ -668,7 +869,7 @@ Links: ### .spec.init.hostIPC -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/pod/resources/namespace.go#L42) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/namespace.go#L42) HostIPC defines to use the host's ipc namespace. @@ -678,7 +879,7 @@ Default Value: `false` ### .spec.init.hostNetwork -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/pod/resources/namespace.go#L36) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/namespace.go#L36) HostNetwork requests Host network for this pod. Use the host's network namespace. If this option is set, the ports that will be used must be specified. @@ -689,7 +890,7 @@ Default Value: `false` ### .spec.init.hostPID -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/pod/resources/namespace.go#L39) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/namespace.go#L39) HostPID define to use the host's pid namespace. @@ -699,7 +900,7 @@ Default Value: `false` ### .spec.init.image -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/image.go#L37) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/image.go#L35) Image define image details @@ -707,7 +908,7 @@ Image define image details ### .spec.init.imagePullPolicy -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/image.go#L41) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/image.go#L39) ImagePullPolicy define Image pull policy @@ -717,15 +918,28 @@ Default Value: `IfNotPresent` ### .spec.init.imagePullSecrets -Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/image.go#L44) +Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/image.go#L36) ImagePullSecrets define Secrets used to pull Image from registry *** +### .spec.init.labels + +Type: `object` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/metadata.go#L39) + +Map of string keys and values that can be used to organize and categorize +(scope and select) objects. May match selectors of replication controllers +and services. + +Links: +* [Kubernetes docs](https://kubernetes.io/docs/concepts/overview/working-with-objects/labels) + +*** + ### .spec.init.lifecycle -Type: `core.Lifecycle` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/lifecycle.go#L35) +Type: `core.Lifecycle` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/lifecycle.go#L35) Lifecycle keeps actions that the management system should take in response to container lifecycle events. @@ -733,7 +947,7 @@ Lifecycle keeps actions that the management system should take in response to co ### .spec.init.livenessProbe -Type: `core.Probe` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/probes.go#L37) +Type: `core.Probe` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/probes.go#L37) LivenessProbe keeps configuration of periodic probe of container liveness. Container will be restarted if the probe fails. @@ -745,7 +959,7 @@ Links: ### .spec.init.nodeSelector -Type: `object` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/pod/resources/scheduling.go#L39) +Type: `object` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/scheduling.go#L39) NodeSelector is a selector that must be true for the workload to fit on a node. @@ -754,9 +968,20 @@ Links: *** +### .spec.init.ownerReferences + +Type: `meta.OwnerReference` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/metadata.go#L52) + +List of objects depended by this object. If ALL objects in the list have +been deleted, this object will be garbage collected. If this object is managed by a controller, +then an entry in this list will point to this controller, with the controller field set to true. +There cannot be more than one managing controller. + +*** + ### .spec.init.podSecurityContext -Type: `core.PodSecurityContext` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/pod/resources/security.go#L35) +Type: `core.PodSecurityContext` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/security.go#L35) PodSecurityContext holds pod-level security attributes and common container settings. @@ -767,7 +992,7 @@ Links: ### .spec.init.ports -Type: `[]core.ContainerPort` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/networking.go#L39) +Type: `[]core.ContainerPort` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/networking.go#L39) Ports contains list of ports to expose from the container. Not specifying a port here DOES NOT prevent that port from being exposed. Any port which is @@ -778,7 +1003,7 @@ accessible from the network. ### .spec.init.readinessProbe -Type: `core.Probe` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/probes.go#L42) +Type: `core.Probe` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/probes.go#L42) ReadinessProbe keeps configuration of periodic probe of container service readiness. Container will be removed from service endpoints if the probe fails. @@ -790,7 +1015,7 @@ Links: ### .spec.init.resources -Type: `core.ResourceRequirements` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/resources.go#L37) +Type: `core.ResourceRequirements` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/resources.go#L37) Resources holds resource requests & limits for container @@ -801,7 +1026,7 @@ Links: ### .spec.init.schedulerName -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/pod/resources/scheduling.go#L54) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/scheduling.go#L54) SchedulerName specifies, the pod will be dispatched by specified scheduler. If not specified, the pod will be dispatched by default scheduler. @@ -812,7 +1037,7 @@ Default Value: `""` ### .spec.init.securityContext -Type: `core.SecurityContext` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/security.go#L35) +Type: `core.SecurityContext` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/security.go#L35) SecurityContext holds container-level security attributes and common container settings. @@ -821,9 +1046,20 @@ Links: *** +### .spec.init.serviceAccountName + +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/service_account.go#L35) + +ServiceAccountName is the name of the ServiceAccount to use to run this pod. + +Links: +* [Kubernetes docs](https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/) + +*** + ### .spec.init.shareProcessNamespace -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/pod/resources/namespace.go#L48) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/namespace.go#L48) ShareProcessNamespace defines to share a single process namespace between all of the containers in a pod. When this is set containers will be able to view and signal processes from other containers @@ -836,7 +1072,7 @@ Default Value: `false` ### .spec.init.startupProbe -Type: `core.Probe` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/probes.go#L50) +Type: `core.Probe` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/probes.go#L50) StartupProbe indicates that the Pod has successfully initialized. If specified, no other probes are executed until this completes successfully. @@ -851,7 +1087,7 @@ Links: ### .spec.init.tolerations -Type: `[]core.Toleration` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/pod/resources/scheduling.go#L49) +Type: `[]core.Toleration` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/scheduling.go#L49) Tolerations defines tolerations @@ -862,7 +1098,7 @@ Links: ### .spec.init.volumeMounts -Type: `[]core.VolumeMount` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/volume_mounts.go#L35) +Type: `[]core.VolumeMount` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/volume_mounts.go#L35) VolumeMounts keeps list of pod volumes to mount into the container's filesystem. @@ -870,7 +1106,7 @@ VolumeMounts keeps list of pod volumes to mount into the container's filesystem. ### .spec.init.volumes -Type: `[]core.Volume` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/pod/resources/volumes.go#L36) +Type: `[]core.Volume` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/volumes.go#L36) Volumes keeps list of volumes that can be mounted by containers belonging to the pod. @@ -879,9 +1115,19 @@ Links: *** +### .spec.init.workingDir + +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/core.go#L55) + +Container's working directory. +If not specified, the container runtime's default will be used, which +might be configured in the container image. + +*** + ### .spec.jobsTemplates.featurization.cpu.affinity -Type: `core.Affinity` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/pod/resources/scheduling.go#L44) +Type: `core.Affinity` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/scheduling.go#L44) Affinity defines scheduling constraints for workload @@ -890,9 +1136,64 @@ Links: *** +### .spec.jobsTemplates.featurization.cpu.annotations + +Type: `object` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/metadata.go#L45) + +Annotations is an unstructured key value map stored with a resource that may be +set by external tools to store and retrieve arbitrary metadata. They are not +queryable and should be preserved when modifying objects. + +Links: +* [Kubernetes docs](https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations) + +*** + +### .spec.jobsTemplates.featurization.cpu.args + +Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/core.go#L50) + +Arguments to the entrypoint. +The container image's CMD is used if this is not provided. +Variable references $(VAR_NAME) are expanded using the container's environment. 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. Cannot be updated. + +Links: +* [Kubernetes Docs](https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell) + +*** + +### .spec.jobsTemplates.featurization.cpu.automountServiceAccountToken + +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/service_account.go#L38) + +AutomountServiceAccountToken indicates whether a service account token should be automatically mounted. + +*** + +### .spec.jobsTemplates.featurization.cpu.command + +Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/core.go#L40) + +Entrypoint array. Not executed within a shell. +The container image's ENTRYPOINT is used if this is not provided. +Variable references $(VAR_NAME) are expanded using the container's environment. 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. Cannot be updated. + +Links: +* [Kubernetes Docs](https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell) + +*** + ### .spec.jobsTemplates.featurization.cpu.env -Type: `core.EnvVar` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/environments.go#L36) +Type: `core.EnvVar` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/environments.go#L36) Env keeps the information about environment variables provided to the container @@ -903,7 +1204,7 @@ Links: ### .spec.jobsTemplates.featurization.cpu.envFrom -Type: `core.EnvFromSource` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/environments.go#L41) +Type: `core.EnvFromSource` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/environments.go#L41) EnvFrom keeps the information about environment variable sources provided to the container @@ -914,7 +1215,7 @@ Links: ### .spec.jobsTemplates.featurization.cpu.hostIPC -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/pod/resources/namespace.go#L42) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/namespace.go#L42) HostIPC defines to use the host's ipc namespace. @@ -924,7 +1225,7 @@ Default Value: `false` ### .spec.jobsTemplates.featurization.cpu.hostNetwork -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/pod/resources/namespace.go#L36) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/namespace.go#L36) HostNetwork requests Host network for this pod. Use the host's network namespace. If this option is set, the ports that will be used must be specified. @@ -935,7 +1236,7 @@ Default Value: `false` ### .spec.jobsTemplates.featurization.cpu.hostPID -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/pod/resources/namespace.go#L39) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/namespace.go#L39) HostPID define to use the host's pid namespace. @@ -945,7 +1246,7 @@ Default Value: `false` ### .spec.jobsTemplates.featurization.cpu.image -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/image.go#L37) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/image.go#L35) Image define image details @@ -953,7 +1254,7 @@ Image define image details ### .spec.jobsTemplates.featurization.cpu.imagePullPolicy -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/image.go#L41) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/image.go#L39) ImagePullPolicy define Image pull policy @@ -963,15 +1264,28 @@ Default Value: `IfNotPresent` ### .spec.jobsTemplates.featurization.cpu.imagePullSecrets -Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/image.go#L44) +Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/image.go#L36) ImagePullSecrets define Secrets used to pull Image from registry *** +### .spec.jobsTemplates.featurization.cpu.labels + +Type: `object` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/metadata.go#L39) + +Map of string keys and values that can be used to organize and categorize +(scope and select) objects. May match selectors of replication controllers +and services. + +Links: +* [Kubernetes docs](https://kubernetes.io/docs/concepts/overview/working-with-objects/labels) + +*** + ### .spec.jobsTemplates.featurization.cpu.lifecycle -Type: `core.Lifecycle` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/lifecycle.go#L35) +Type: `core.Lifecycle` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/lifecycle.go#L35) Lifecycle keeps actions that the management system should take in response to container lifecycle events. @@ -979,7 +1293,7 @@ Lifecycle keeps actions that the management system should take in response to co ### .spec.jobsTemplates.featurization.cpu.livenessProbe -Type: `core.Probe` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/probes.go#L37) +Type: `core.Probe` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/probes.go#L37) LivenessProbe keeps configuration of periodic probe of container liveness. Container will be restarted if the probe fails. @@ -991,7 +1305,7 @@ Links: ### .spec.jobsTemplates.featurization.cpu.nodeSelector -Type: `object` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/pod/resources/scheduling.go#L39) +Type: `object` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/scheduling.go#L39) NodeSelector is a selector that must be true for the workload to fit on a node. @@ -1000,9 +1314,20 @@ Links: *** +### .spec.jobsTemplates.featurization.cpu.ownerReferences + +Type: `meta.OwnerReference` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/metadata.go#L52) + +List of objects depended by this object. If ALL objects in the list have +been deleted, this object will be garbage collected. If this object is managed by a controller, +then an entry in this list will point to this controller, with the controller field set to true. +There cannot be more than one managing controller. + +*** + ### .spec.jobsTemplates.featurization.cpu.podSecurityContext -Type: `core.PodSecurityContext` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/pod/resources/security.go#L35) +Type: `core.PodSecurityContext` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/security.go#L35) PodSecurityContext holds pod-level security attributes and common container settings. @@ -1013,7 +1338,7 @@ Links: ### .spec.jobsTemplates.featurization.cpu.ports -Type: `[]core.ContainerPort` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/networking.go#L39) +Type: `[]core.ContainerPort` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/networking.go#L39) Ports contains list of ports to expose from the container. Not specifying a port here DOES NOT prevent that port from being exposed. Any port which is @@ -1024,7 +1349,7 @@ accessible from the network. ### .spec.jobsTemplates.featurization.cpu.readinessProbe -Type: `core.Probe` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/probes.go#L42) +Type: `core.Probe` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/probes.go#L42) ReadinessProbe keeps configuration of periodic probe of container service readiness. Container will be removed from service endpoints if the probe fails. @@ -1036,7 +1361,7 @@ Links: ### .spec.jobsTemplates.featurization.cpu.resources -Type: `core.ResourceRequirements` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/resources.go#L37) +Type: `core.ResourceRequirements` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/resources.go#L37) Resources holds resource requests & limits for container @@ -1047,7 +1372,7 @@ Links: ### .spec.jobsTemplates.featurization.cpu.schedulerName -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/pod/resources/scheduling.go#L54) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/scheduling.go#L54) SchedulerName specifies, the pod will be dispatched by specified scheduler. If not specified, the pod will be dispatched by default scheduler. @@ -1058,7 +1383,7 @@ Default Value: `""` ### .spec.jobsTemplates.featurization.cpu.securityContext -Type: `core.SecurityContext` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/security.go#L35) +Type: `core.SecurityContext` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/security.go#L35) SecurityContext holds container-level security attributes and common container settings. @@ -1067,9 +1392,20 @@ Links: *** +### .spec.jobsTemplates.featurization.cpu.serviceAccountName + +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/service_account.go#L35) + +ServiceAccountName is the name of the ServiceAccount to use to run this pod. + +Links: +* [Kubernetes docs](https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/) + +*** + ### .spec.jobsTemplates.featurization.cpu.shareProcessNamespace -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/pod/resources/namespace.go#L48) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/namespace.go#L48) ShareProcessNamespace defines to share a single process namespace between all of the containers in a pod. When this is set containers will be able to view and signal processes from other containers @@ -1082,7 +1418,7 @@ Default Value: `false` ### .spec.jobsTemplates.featurization.cpu.startupProbe -Type: `core.Probe` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/probes.go#L50) +Type: `core.Probe` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/probes.go#L50) StartupProbe indicates that the Pod has successfully initialized. If specified, no other probes are executed until this completes successfully. @@ -1097,7 +1433,7 @@ Links: ### .spec.jobsTemplates.featurization.cpu.tolerations -Type: `[]core.Toleration` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/pod/resources/scheduling.go#L49) +Type: `[]core.Toleration` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/scheduling.go#L49) Tolerations defines tolerations @@ -1108,7 +1444,7 @@ Links: ### .spec.jobsTemplates.featurization.cpu.volumeMounts -Type: `[]core.VolumeMount` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/volume_mounts.go#L35) +Type: `[]core.VolumeMount` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/volume_mounts.go#L35) VolumeMounts keeps list of pod volumes to mount into the container's filesystem. @@ -1116,7 +1452,7 @@ VolumeMounts keeps list of pod volumes to mount into the container's filesystem. ### .spec.jobsTemplates.featurization.cpu.volumes -Type: `[]core.Volume` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/pod/resources/volumes.go#L36) +Type: `[]core.Volume` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/volumes.go#L36) Volumes keeps list of volumes that can be mounted by containers belonging to the pod. @@ -1125,9 +1461,19 @@ Links: *** +### .spec.jobsTemplates.featurization.cpu.workingDir + +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/core.go#L55) + +Container's working directory. +If not specified, the container runtime's default will be used, which +might be configured in the container image. + +*** + ### .spec.jobsTemplates.featurization.gpu.affinity -Type: `core.Affinity` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/pod/resources/scheduling.go#L44) +Type: `core.Affinity` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/scheduling.go#L44) Affinity defines scheduling constraints for workload @@ -1136,9 +1482,64 @@ Links: *** +### .spec.jobsTemplates.featurization.gpu.annotations + +Type: `object` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/metadata.go#L45) + +Annotations is an unstructured key value map stored with a resource that may be +set by external tools to store and retrieve arbitrary metadata. They are not +queryable and should be preserved when modifying objects. + +Links: +* [Kubernetes docs](https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations) + +*** + +### .spec.jobsTemplates.featurization.gpu.args + +Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/core.go#L50) + +Arguments to the entrypoint. +The container image's CMD is used if this is not provided. +Variable references $(VAR_NAME) are expanded using the container's environment. 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. Cannot be updated. + +Links: +* [Kubernetes Docs](https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell) + +*** + +### .spec.jobsTemplates.featurization.gpu.automountServiceAccountToken + +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/service_account.go#L38) + +AutomountServiceAccountToken indicates whether a service account token should be automatically mounted. + +*** + +### .spec.jobsTemplates.featurization.gpu.command + +Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/core.go#L40) + +Entrypoint array. Not executed within a shell. +The container image's ENTRYPOINT is used if this is not provided. +Variable references $(VAR_NAME) are expanded using the container's environment. 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. Cannot be updated. + +Links: +* [Kubernetes Docs](https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell) + +*** + ### .spec.jobsTemplates.featurization.gpu.env -Type: `core.EnvVar` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/environments.go#L36) +Type: `core.EnvVar` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/environments.go#L36) Env keeps the information about environment variables provided to the container @@ -1149,7 +1550,7 @@ Links: ### .spec.jobsTemplates.featurization.gpu.envFrom -Type: `core.EnvFromSource` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/environments.go#L41) +Type: `core.EnvFromSource` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/environments.go#L41) EnvFrom keeps the information about environment variable sources provided to the container @@ -1160,7 +1561,7 @@ Links: ### .spec.jobsTemplates.featurization.gpu.hostIPC -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/pod/resources/namespace.go#L42) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/namespace.go#L42) HostIPC defines to use the host's ipc namespace. @@ -1170,7 +1571,7 @@ Default Value: `false` ### .spec.jobsTemplates.featurization.gpu.hostNetwork -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/pod/resources/namespace.go#L36) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/namespace.go#L36) HostNetwork requests Host network for this pod. Use the host's network namespace. If this option is set, the ports that will be used must be specified. @@ -1181,7 +1582,7 @@ Default Value: `false` ### .spec.jobsTemplates.featurization.gpu.hostPID -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/pod/resources/namespace.go#L39) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/namespace.go#L39) HostPID define to use the host's pid namespace. @@ -1191,7 +1592,7 @@ Default Value: `false` ### .spec.jobsTemplates.featurization.gpu.image -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/image.go#L37) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/image.go#L35) Image define image details @@ -1199,7 +1600,7 @@ Image define image details ### .spec.jobsTemplates.featurization.gpu.imagePullPolicy -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/image.go#L41) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/image.go#L39) ImagePullPolicy define Image pull policy @@ -1209,15 +1610,28 @@ Default Value: `IfNotPresent` ### .spec.jobsTemplates.featurization.gpu.imagePullSecrets -Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/image.go#L44) +Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/image.go#L36) ImagePullSecrets define Secrets used to pull Image from registry *** +### .spec.jobsTemplates.featurization.gpu.labels + +Type: `object` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/metadata.go#L39) + +Map of string keys and values that can be used to organize and categorize +(scope and select) objects. May match selectors of replication controllers +and services. + +Links: +* [Kubernetes docs](https://kubernetes.io/docs/concepts/overview/working-with-objects/labels) + +*** + ### .spec.jobsTemplates.featurization.gpu.lifecycle -Type: `core.Lifecycle` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/lifecycle.go#L35) +Type: `core.Lifecycle` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/lifecycle.go#L35) Lifecycle keeps actions that the management system should take in response to container lifecycle events. @@ -1225,7 +1639,7 @@ Lifecycle keeps actions that the management system should take in response to co ### .spec.jobsTemplates.featurization.gpu.livenessProbe -Type: `core.Probe` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/probes.go#L37) +Type: `core.Probe` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/probes.go#L37) LivenessProbe keeps configuration of periodic probe of container liveness. Container will be restarted if the probe fails. @@ -1237,7 +1651,7 @@ Links: ### .spec.jobsTemplates.featurization.gpu.nodeSelector -Type: `object` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/pod/resources/scheduling.go#L39) +Type: `object` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/scheduling.go#L39) NodeSelector is a selector that must be true for the workload to fit on a node. @@ -1246,9 +1660,20 @@ Links: *** +### .spec.jobsTemplates.featurization.gpu.ownerReferences + +Type: `meta.OwnerReference` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/metadata.go#L52) + +List of objects depended by this object. If ALL objects in the list have +been deleted, this object will be garbage collected. If this object is managed by a controller, +then an entry in this list will point to this controller, with the controller field set to true. +There cannot be more than one managing controller. + +*** + ### .spec.jobsTemplates.featurization.gpu.podSecurityContext -Type: `core.PodSecurityContext` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/pod/resources/security.go#L35) +Type: `core.PodSecurityContext` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/security.go#L35) PodSecurityContext holds pod-level security attributes and common container settings. @@ -1259,7 +1684,7 @@ Links: ### .spec.jobsTemplates.featurization.gpu.ports -Type: `[]core.ContainerPort` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/networking.go#L39) +Type: `[]core.ContainerPort` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/networking.go#L39) Ports contains list of ports to expose from the container. Not specifying a port here DOES NOT prevent that port from being exposed. Any port which is @@ -1270,7 +1695,7 @@ accessible from the network. ### .spec.jobsTemplates.featurization.gpu.readinessProbe -Type: `core.Probe` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/probes.go#L42) +Type: `core.Probe` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/probes.go#L42) ReadinessProbe keeps configuration of periodic probe of container service readiness. Container will be removed from service endpoints if the probe fails. @@ -1282,7 +1707,7 @@ Links: ### .spec.jobsTemplates.featurization.gpu.resources -Type: `core.ResourceRequirements` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/resources.go#L37) +Type: `core.ResourceRequirements` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/resources.go#L37) Resources holds resource requests & limits for container @@ -1293,7 +1718,7 @@ Links: ### .spec.jobsTemplates.featurization.gpu.schedulerName -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/pod/resources/scheduling.go#L54) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/scheduling.go#L54) SchedulerName specifies, the pod will be dispatched by specified scheduler. If not specified, the pod will be dispatched by default scheduler. @@ -1304,7 +1729,7 @@ Default Value: `""` ### .spec.jobsTemplates.featurization.gpu.securityContext -Type: `core.SecurityContext` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/security.go#L35) +Type: `core.SecurityContext` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/security.go#L35) SecurityContext holds container-level security attributes and common container settings. @@ -1313,9 +1738,20 @@ Links: *** +### .spec.jobsTemplates.featurization.gpu.serviceAccountName + +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/service_account.go#L35) + +ServiceAccountName is the name of the ServiceAccount to use to run this pod. + +Links: +* [Kubernetes docs](https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/) + +*** + ### .spec.jobsTemplates.featurization.gpu.shareProcessNamespace -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/pod/resources/namespace.go#L48) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/namespace.go#L48) ShareProcessNamespace defines to share a single process namespace between all of the containers in a pod. When this is set containers will be able to view and signal processes from other containers @@ -1328,7 +1764,7 @@ Default Value: `false` ### .spec.jobsTemplates.featurization.gpu.startupProbe -Type: `core.Probe` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/probes.go#L50) +Type: `core.Probe` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/probes.go#L50) StartupProbe indicates that the Pod has successfully initialized. If specified, no other probes are executed until this completes successfully. @@ -1343,7 +1779,7 @@ Links: ### .spec.jobsTemplates.featurization.gpu.tolerations -Type: `[]core.Toleration` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/pod/resources/scheduling.go#L49) +Type: `[]core.Toleration` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/scheduling.go#L49) Tolerations defines tolerations @@ -1354,7 +1790,7 @@ Links: ### .spec.jobsTemplates.featurization.gpu.volumeMounts -Type: `[]core.VolumeMount` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/volume_mounts.go#L35) +Type: `[]core.VolumeMount` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/volume_mounts.go#L35) VolumeMounts keeps list of pod volumes to mount into the container's filesystem. @@ -1362,7 +1798,7 @@ VolumeMounts keeps list of pod volumes to mount into the container's filesystem. ### .spec.jobsTemplates.featurization.gpu.volumes -Type: `[]core.Volume` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/pod/resources/volumes.go#L36) +Type: `[]core.Volume` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/volumes.go#L36) Volumes keeps list of volumes that can be mounted by containers belonging to the pod. @@ -1371,9 +1807,19 @@ Links: *** +### .spec.jobsTemplates.featurization.gpu.workingDir + +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/core.go#L55) + +Container's working directory. +If not specified, the container runtime's default will be used, which +might be configured in the container image. + +*** + ### .spec.jobsTemplates.prediction.cpu.affinity -Type: `core.Affinity` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/pod/resources/scheduling.go#L44) +Type: `core.Affinity` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/scheduling.go#L44) Affinity defines scheduling constraints for workload @@ -1382,9 +1828,64 @@ Links: *** +### .spec.jobsTemplates.prediction.cpu.annotations + +Type: `object` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/metadata.go#L45) + +Annotations is an unstructured key value map stored with a resource that may be +set by external tools to store and retrieve arbitrary metadata. They are not +queryable and should be preserved when modifying objects. + +Links: +* [Kubernetes docs](https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations) + +*** + +### .spec.jobsTemplates.prediction.cpu.args + +Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/core.go#L50) + +Arguments to the entrypoint. +The container image's CMD is used if this is not provided. +Variable references $(VAR_NAME) are expanded using the container's environment. 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. Cannot be updated. + +Links: +* [Kubernetes Docs](https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell) + +*** + +### .spec.jobsTemplates.prediction.cpu.automountServiceAccountToken + +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/service_account.go#L38) + +AutomountServiceAccountToken indicates whether a service account token should be automatically mounted. + +*** + +### .spec.jobsTemplates.prediction.cpu.command + +Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/core.go#L40) + +Entrypoint array. Not executed within a shell. +The container image's ENTRYPOINT is used if this is not provided. +Variable references $(VAR_NAME) are expanded using the container's environment. 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. Cannot be updated. + +Links: +* [Kubernetes Docs](https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell) + +*** + ### .spec.jobsTemplates.prediction.cpu.env -Type: `core.EnvVar` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/environments.go#L36) +Type: `core.EnvVar` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/environments.go#L36) Env keeps the information about environment variables provided to the container @@ -1395,7 +1896,7 @@ Links: ### .spec.jobsTemplates.prediction.cpu.envFrom -Type: `core.EnvFromSource` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/environments.go#L41) +Type: `core.EnvFromSource` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/environments.go#L41) EnvFrom keeps the information about environment variable sources provided to the container @@ -1406,7 +1907,7 @@ Links: ### .spec.jobsTemplates.prediction.cpu.hostIPC -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/pod/resources/namespace.go#L42) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/namespace.go#L42) HostIPC defines to use the host's ipc namespace. @@ -1416,7 +1917,7 @@ Default Value: `false` ### .spec.jobsTemplates.prediction.cpu.hostNetwork -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/pod/resources/namespace.go#L36) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/namespace.go#L36) HostNetwork requests Host network for this pod. Use the host's network namespace. If this option is set, the ports that will be used must be specified. @@ -1427,7 +1928,7 @@ Default Value: `false` ### .spec.jobsTemplates.prediction.cpu.hostPID -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/pod/resources/namespace.go#L39) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/namespace.go#L39) HostPID define to use the host's pid namespace. @@ -1437,7 +1938,7 @@ Default Value: `false` ### .spec.jobsTemplates.prediction.cpu.image -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/image.go#L37) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/image.go#L35) Image define image details @@ -1445,7 +1946,7 @@ Image define image details ### .spec.jobsTemplates.prediction.cpu.imagePullPolicy -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/image.go#L41) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/image.go#L39) ImagePullPolicy define Image pull policy @@ -1455,15 +1956,28 @@ Default Value: `IfNotPresent` ### .spec.jobsTemplates.prediction.cpu.imagePullSecrets -Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/image.go#L44) +Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/image.go#L36) ImagePullSecrets define Secrets used to pull Image from registry *** +### .spec.jobsTemplates.prediction.cpu.labels + +Type: `object` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/metadata.go#L39) + +Map of string keys and values that can be used to organize and categorize +(scope and select) objects. May match selectors of replication controllers +and services. + +Links: +* [Kubernetes docs](https://kubernetes.io/docs/concepts/overview/working-with-objects/labels) + +*** + ### .spec.jobsTemplates.prediction.cpu.lifecycle -Type: `core.Lifecycle` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/lifecycle.go#L35) +Type: `core.Lifecycle` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/lifecycle.go#L35) Lifecycle keeps actions that the management system should take in response to container lifecycle events. @@ -1471,7 +1985,7 @@ Lifecycle keeps actions that the management system should take in response to co ### .spec.jobsTemplates.prediction.cpu.livenessProbe -Type: `core.Probe` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/probes.go#L37) +Type: `core.Probe` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/probes.go#L37) LivenessProbe keeps configuration of periodic probe of container liveness. Container will be restarted if the probe fails. @@ -1483,7 +1997,7 @@ Links: ### .spec.jobsTemplates.prediction.cpu.nodeSelector -Type: `object` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/pod/resources/scheduling.go#L39) +Type: `object` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/scheduling.go#L39) NodeSelector is a selector that must be true for the workload to fit on a node. @@ -1492,9 +2006,20 @@ Links: *** +### .spec.jobsTemplates.prediction.cpu.ownerReferences + +Type: `meta.OwnerReference` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/metadata.go#L52) + +List of objects depended by this object. If ALL objects in the list have +been deleted, this object will be garbage collected. If this object is managed by a controller, +then an entry in this list will point to this controller, with the controller field set to true. +There cannot be more than one managing controller. + +*** + ### .spec.jobsTemplates.prediction.cpu.podSecurityContext -Type: `core.PodSecurityContext` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/pod/resources/security.go#L35) +Type: `core.PodSecurityContext` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/security.go#L35) PodSecurityContext holds pod-level security attributes and common container settings. @@ -1505,7 +2030,7 @@ Links: ### .spec.jobsTemplates.prediction.cpu.ports -Type: `[]core.ContainerPort` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/networking.go#L39) +Type: `[]core.ContainerPort` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/networking.go#L39) Ports contains list of ports to expose from the container. Not specifying a port here DOES NOT prevent that port from being exposed. Any port which is @@ -1516,7 +2041,7 @@ accessible from the network. ### .spec.jobsTemplates.prediction.cpu.readinessProbe -Type: `core.Probe` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/probes.go#L42) +Type: `core.Probe` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/probes.go#L42) ReadinessProbe keeps configuration of periodic probe of container service readiness. Container will be removed from service endpoints if the probe fails. @@ -1528,7 +2053,7 @@ Links: ### .spec.jobsTemplates.prediction.cpu.resources -Type: `core.ResourceRequirements` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/resources.go#L37) +Type: `core.ResourceRequirements` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/resources.go#L37) Resources holds resource requests & limits for container @@ -1539,7 +2064,7 @@ Links: ### .spec.jobsTemplates.prediction.cpu.schedulerName -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/pod/resources/scheduling.go#L54) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/scheduling.go#L54) SchedulerName specifies, the pod will be dispatched by specified scheduler. If not specified, the pod will be dispatched by default scheduler. @@ -1550,7 +2075,7 @@ Default Value: `""` ### .spec.jobsTemplates.prediction.cpu.securityContext -Type: `core.SecurityContext` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/security.go#L35) +Type: `core.SecurityContext` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/security.go#L35) SecurityContext holds container-level security attributes and common container settings. @@ -1559,9 +2084,20 @@ Links: *** +### .spec.jobsTemplates.prediction.cpu.serviceAccountName + +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/service_account.go#L35) + +ServiceAccountName is the name of the ServiceAccount to use to run this pod. + +Links: +* [Kubernetes docs](https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/) + +*** + ### .spec.jobsTemplates.prediction.cpu.shareProcessNamespace -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/pod/resources/namespace.go#L48) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/namespace.go#L48) ShareProcessNamespace defines to share a single process namespace between all of the containers in a pod. When this is set containers will be able to view and signal processes from other containers @@ -1574,7 +2110,7 @@ Default Value: `false` ### .spec.jobsTemplates.prediction.cpu.startupProbe -Type: `core.Probe` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/probes.go#L50) +Type: `core.Probe` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/probes.go#L50) StartupProbe indicates that the Pod has successfully initialized. If specified, no other probes are executed until this completes successfully. @@ -1589,7 +2125,7 @@ Links: ### .spec.jobsTemplates.prediction.cpu.tolerations -Type: `[]core.Toleration` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/pod/resources/scheduling.go#L49) +Type: `[]core.Toleration` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/scheduling.go#L49) Tolerations defines tolerations @@ -1600,7 +2136,7 @@ Links: ### .spec.jobsTemplates.prediction.cpu.volumeMounts -Type: `[]core.VolumeMount` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/volume_mounts.go#L35) +Type: `[]core.VolumeMount` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/volume_mounts.go#L35) VolumeMounts keeps list of pod volumes to mount into the container's filesystem. @@ -1608,7 +2144,7 @@ VolumeMounts keeps list of pod volumes to mount into the container's filesystem. ### .spec.jobsTemplates.prediction.cpu.volumes -Type: `[]core.Volume` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/pod/resources/volumes.go#L36) +Type: `[]core.Volume` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/volumes.go#L36) Volumes keeps list of volumes that can be mounted by containers belonging to the pod. @@ -1617,9 +2153,19 @@ Links: *** +### .spec.jobsTemplates.prediction.cpu.workingDir + +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/core.go#L55) + +Container's working directory. +If not specified, the container runtime's default will be used, which +might be configured in the container image. + +*** + ### .spec.jobsTemplates.prediction.gpu.affinity -Type: `core.Affinity` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/pod/resources/scheduling.go#L44) +Type: `core.Affinity` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/scheduling.go#L44) Affinity defines scheduling constraints for workload @@ -1628,9 +2174,64 @@ Links: *** +### .spec.jobsTemplates.prediction.gpu.annotations + +Type: `object` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/metadata.go#L45) + +Annotations is an unstructured key value map stored with a resource that may be +set by external tools to store and retrieve arbitrary metadata. They are not +queryable and should be preserved when modifying objects. + +Links: +* [Kubernetes docs](https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations) + +*** + +### .spec.jobsTemplates.prediction.gpu.args + +Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/core.go#L50) + +Arguments to the entrypoint. +The container image's CMD is used if this is not provided. +Variable references $(VAR_NAME) are expanded using the container's environment. 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. Cannot be updated. + +Links: +* [Kubernetes Docs](https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell) + +*** + +### .spec.jobsTemplates.prediction.gpu.automountServiceAccountToken + +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/service_account.go#L38) + +AutomountServiceAccountToken indicates whether a service account token should be automatically mounted. + +*** + +### .spec.jobsTemplates.prediction.gpu.command + +Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/core.go#L40) + +Entrypoint array. Not executed within a shell. +The container image's ENTRYPOINT is used if this is not provided. +Variable references $(VAR_NAME) are expanded using the container's environment. 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. Cannot be updated. + +Links: +* [Kubernetes Docs](https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell) + +*** + ### .spec.jobsTemplates.prediction.gpu.env -Type: `core.EnvVar` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/environments.go#L36) +Type: `core.EnvVar` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/environments.go#L36) Env keeps the information about environment variables provided to the container @@ -1641,7 +2242,7 @@ Links: ### .spec.jobsTemplates.prediction.gpu.envFrom -Type: `core.EnvFromSource` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/environments.go#L41) +Type: `core.EnvFromSource` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/environments.go#L41) EnvFrom keeps the information about environment variable sources provided to the container @@ -1652,7 +2253,7 @@ Links: ### .spec.jobsTemplates.prediction.gpu.hostIPC -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/pod/resources/namespace.go#L42) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/namespace.go#L42) HostIPC defines to use the host's ipc namespace. @@ -1662,7 +2263,7 @@ Default Value: `false` ### .spec.jobsTemplates.prediction.gpu.hostNetwork -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/pod/resources/namespace.go#L36) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/namespace.go#L36) HostNetwork requests Host network for this pod. Use the host's network namespace. If this option is set, the ports that will be used must be specified. @@ -1673,7 +2274,7 @@ Default Value: `false` ### .spec.jobsTemplates.prediction.gpu.hostPID -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/pod/resources/namespace.go#L39) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/namespace.go#L39) HostPID define to use the host's pid namespace. @@ -1683,7 +2284,7 @@ Default Value: `false` ### .spec.jobsTemplates.prediction.gpu.image -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/image.go#L37) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/image.go#L35) Image define image details @@ -1691,7 +2292,7 @@ Image define image details ### .spec.jobsTemplates.prediction.gpu.imagePullPolicy -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/image.go#L41) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/image.go#L39) ImagePullPolicy define Image pull policy @@ -1701,15 +2302,28 @@ Default Value: `IfNotPresent` ### .spec.jobsTemplates.prediction.gpu.imagePullSecrets -Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/image.go#L44) +Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/image.go#L36) ImagePullSecrets define Secrets used to pull Image from registry *** +### .spec.jobsTemplates.prediction.gpu.labels + +Type: `object` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/metadata.go#L39) + +Map of string keys and values that can be used to organize and categorize +(scope and select) objects. May match selectors of replication controllers +and services. + +Links: +* [Kubernetes docs](https://kubernetes.io/docs/concepts/overview/working-with-objects/labels) + +*** + ### .spec.jobsTemplates.prediction.gpu.lifecycle -Type: `core.Lifecycle` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/lifecycle.go#L35) +Type: `core.Lifecycle` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/lifecycle.go#L35) Lifecycle keeps actions that the management system should take in response to container lifecycle events. @@ -1717,7 +2331,7 @@ Lifecycle keeps actions that the management system should take in response to co ### .spec.jobsTemplates.prediction.gpu.livenessProbe -Type: `core.Probe` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/probes.go#L37) +Type: `core.Probe` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/probes.go#L37) LivenessProbe keeps configuration of periodic probe of container liveness. Container will be restarted if the probe fails. @@ -1729,7 +2343,7 @@ Links: ### .spec.jobsTemplates.prediction.gpu.nodeSelector -Type: `object` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/pod/resources/scheduling.go#L39) +Type: `object` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/scheduling.go#L39) NodeSelector is a selector that must be true for the workload to fit on a node. @@ -1738,9 +2352,20 @@ Links: *** +### .spec.jobsTemplates.prediction.gpu.ownerReferences + +Type: `meta.OwnerReference` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/metadata.go#L52) + +List of objects depended by this object. If ALL objects in the list have +been deleted, this object will be garbage collected. If this object is managed by a controller, +then an entry in this list will point to this controller, with the controller field set to true. +There cannot be more than one managing controller. + +*** + ### .spec.jobsTemplates.prediction.gpu.podSecurityContext -Type: `core.PodSecurityContext` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/pod/resources/security.go#L35) +Type: `core.PodSecurityContext` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/security.go#L35) PodSecurityContext holds pod-level security attributes and common container settings. @@ -1751,7 +2376,7 @@ Links: ### .spec.jobsTemplates.prediction.gpu.ports -Type: `[]core.ContainerPort` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/networking.go#L39) +Type: `[]core.ContainerPort` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/networking.go#L39) Ports contains list of ports to expose from the container. Not specifying a port here DOES NOT prevent that port from being exposed. Any port which is @@ -1762,7 +2387,7 @@ accessible from the network. ### .spec.jobsTemplates.prediction.gpu.readinessProbe -Type: `core.Probe` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/probes.go#L42) +Type: `core.Probe` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/probes.go#L42) ReadinessProbe keeps configuration of periodic probe of container service readiness. Container will be removed from service endpoints if the probe fails. @@ -1774,7 +2399,7 @@ Links: ### .spec.jobsTemplates.prediction.gpu.resources -Type: `core.ResourceRequirements` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/resources.go#L37) +Type: `core.ResourceRequirements` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/resources.go#L37) Resources holds resource requests & limits for container @@ -1785,7 +2410,7 @@ Links: ### .spec.jobsTemplates.prediction.gpu.schedulerName -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/pod/resources/scheduling.go#L54) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/scheduling.go#L54) SchedulerName specifies, the pod will be dispatched by specified scheduler. If not specified, the pod will be dispatched by default scheduler. @@ -1796,7 +2421,7 @@ Default Value: `""` ### .spec.jobsTemplates.prediction.gpu.securityContext -Type: `core.SecurityContext` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/security.go#L35) +Type: `core.SecurityContext` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/security.go#L35) SecurityContext holds container-level security attributes and common container settings. @@ -1805,9 +2430,20 @@ Links: *** +### .spec.jobsTemplates.prediction.gpu.serviceAccountName + +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/service_account.go#L35) + +ServiceAccountName is the name of the ServiceAccount to use to run this pod. + +Links: +* [Kubernetes docs](https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/) + +*** + ### .spec.jobsTemplates.prediction.gpu.shareProcessNamespace -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/pod/resources/namespace.go#L48) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/namespace.go#L48) ShareProcessNamespace defines to share a single process namespace between all of the containers in a pod. When this is set containers will be able to view and signal processes from other containers @@ -1820,7 +2456,7 @@ Default Value: `false` ### .spec.jobsTemplates.prediction.gpu.startupProbe -Type: `core.Probe` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/probes.go#L50) +Type: `core.Probe` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/probes.go#L50) StartupProbe indicates that the Pod has successfully initialized. If specified, no other probes are executed until this completes successfully. @@ -1835,7 +2471,7 @@ Links: ### .spec.jobsTemplates.prediction.gpu.tolerations -Type: `[]core.Toleration` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/pod/resources/scheduling.go#L49) +Type: `[]core.Toleration` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/scheduling.go#L49) Tolerations defines tolerations @@ -1846,7 +2482,7 @@ Links: ### .spec.jobsTemplates.prediction.gpu.volumeMounts -Type: `[]core.VolumeMount` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/volume_mounts.go#L35) +Type: `[]core.VolumeMount` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/volume_mounts.go#L35) VolumeMounts keeps list of pod volumes to mount into the container's filesystem. @@ -1854,7 +2490,7 @@ VolumeMounts keeps list of pod volumes to mount into the container's filesystem. ### .spec.jobsTemplates.prediction.gpu.volumes -Type: `[]core.Volume` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/pod/resources/volumes.go#L36) +Type: `[]core.Volume` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/volumes.go#L36) Volumes keeps list of volumes that can be mounted by containers belonging to the pod. @@ -1863,9 +2499,19 @@ Links: *** +### .spec.jobsTemplates.prediction.gpu.workingDir + +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/core.go#L55) + +Container's working directory. +If not specified, the container runtime's default will be used, which +might be configured in the container image. + +*** + ### .spec.jobsTemplates.training.cpu.affinity -Type: `core.Affinity` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/pod/resources/scheduling.go#L44) +Type: `core.Affinity` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/scheduling.go#L44) Affinity defines scheduling constraints for workload @@ -1874,9 +2520,64 @@ Links: *** +### .spec.jobsTemplates.training.cpu.annotations + +Type: `object` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/metadata.go#L45) + +Annotations is an unstructured key value map stored with a resource that may be +set by external tools to store and retrieve arbitrary metadata. They are not +queryable and should be preserved when modifying objects. + +Links: +* [Kubernetes docs](https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations) + +*** + +### .spec.jobsTemplates.training.cpu.args + +Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/core.go#L50) + +Arguments to the entrypoint. +The container image's CMD is used if this is not provided. +Variable references $(VAR_NAME) are expanded using the container's environment. 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. Cannot be updated. + +Links: +* [Kubernetes Docs](https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell) + +*** + +### .spec.jobsTemplates.training.cpu.automountServiceAccountToken + +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/service_account.go#L38) + +AutomountServiceAccountToken indicates whether a service account token should be automatically mounted. + +*** + +### .spec.jobsTemplates.training.cpu.command + +Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/core.go#L40) + +Entrypoint array. Not executed within a shell. +The container image's ENTRYPOINT is used if this is not provided. +Variable references $(VAR_NAME) are expanded using the container's environment. 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. Cannot be updated. + +Links: +* [Kubernetes Docs](https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell) + +*** + ### .spec.jobsTemplates.training.cpu.env -Type: `core.EnvVar` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/environments.go#L36) +Type: `core.EnvVar` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/environments.go#L36) Env keeps the information about environment variables provided to the container @@ -1887,7 +2588,7 @@ Links: ### .spec.jobsTemplates.training.cpu.envFrom -Type: `core.EnvFromSource` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/environments.go#L41) +Type: `core.EnvFromSource` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/environments.go#L41) EnvFrom keeps the information about environment variable sources provided to the container @@ -1898,7 +2599,7 @@ Links: ### .spec.jobsTemplates.training.cpu.hostIPC -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/pod/resources/namespace.go#L42) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/namespace.go#L42) HostIPC defines to use the host's ipc namespace. @@ -1908,7 +2609,7 @@ Default Value: `false` ### .spec.jobsTemplates.training.cpu.hostNetwork -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/pod/resources/namespace.go#L36) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/namespace.go#L36) HostNetwork requests Host network for this pod. Use the host's network namespace. If this option is set, the ports that will be used must be specified. @@ -1919,7 +2620,7 @@ Default Value: `false` ### .spec.jobsTemplates.training.cpu.hostPID -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/pod/resources/namespace.go#L39) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/namespace.go#L39) HostPID define to use the host's pid namespace. @@ -1929,7 +2630,7 @@ Default Value: `false` ### .spec.jobsTemplates.training.cpu.image -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/image.go#L37) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/image.go#L35) Image define image details @@ -1937,7 +2638,7 @@ Image define image details ### .spec.jobsTemplates.training.cpu.imagePullPolicy -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/image.go#L41) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/image.go#L39) ImagePullPolicy define Image pull policy @@ -1947,15 +2648,28 @@ Default Value: `IfNotPresent` ### .spec.jobsTemplates.training.cpu.imagePullSecrets -Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/image.go#L44) +Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/image.go#L36) ImagePullSecrets define Secrets used to pull Image from registry *** +### .spec.jobsTemplates.training.cpu.labels + +Type: `object` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/metadata.go#L39) + +Map of string keys and values that can be used to organize and categorize +(scope and select) objects. May match selectors of replication controllers +and services. + +Links: +* [Kubernetes docs](https://kubernetes.io/docs/concepts/overview/working-with-objects/labels) + +*** + ### .spec.jobsTemplates.training.cpu.lifecycle -Type: `core.Lifecycle` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/lifecycle.go#L35) +Type: `core.Lifecycle` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/lifecycle.go#L35) Lifecycle keeps actions that the management system should take in response to container lifecycle events. @@ -1963,7 +2677,7 @@ Lifecycle keeps actions that the management system should take in response to co ### .spec.jobsTemplates.training.cpu.livenessProbe -Type: `core.Probe` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/probes.go#L37) +Type: `core.Probe` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/probes.go#L37) LivenessProbe keeps configuration of periodic probe of container liveness. Container will be restarted if the probe fails. @@ -1975,7 +2689,7 @@ Links: ### .spec.jobsTemplates.training.cpu.nodeSelector -Type: `object` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/pod/resources/scheduling.go#L39) +Type: `object` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/scheduling.go#L39) NodeSelector is a selector that must be true for the workload to fit on a node. @@ -1984,9 +2698,20 @@ Links: *** +### .spec.jobsTemplates.training.cpu.ownerReferences + +Type: `meta.OwnerReference` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/metadata.go#L52) + +List of objects depended by this object. If ALL objects in the list have +been deleted, this object will be garbage collected. If this object is managed by a controller, +then an entry in this list will point to this controller, with the controller field set to true. +There cannot be more than one managing controller. + +*** + ### .spec.jobsTemplates.training.cpu.podSecurityContext -Type: `core.PodSecurityContext` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/pod/resources/security.go#L35) +Type: `core.PodSecurityContext` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/security.go#L35) PodSecurityContext holds pod-level security attributes and common container settings. @@ -1997,7 +2722,7 @@ Links: ### .spec.jobsTemplates.training.cpu.ports -Type: `[]core.ContainerPort` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/networking.go#L39) +Type: `[]core.ContainerPort` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/networking.go#L39) Ports contains list of ports to expose from the container. Not specifying a port here DOES NOT prevent that port from being exposed. Any port which is @@ -2008,7 +2733,7 @@ accessible from the network. ### .spec.jobsTemplates.training.cpu.readinessProbe -Type: `core.Probe` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/probes.go#L42) +Type: `core.Probe` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/probes.go#L42) ReadinessProbe keeps configuration of periodic probe of container service readiness. Container will be removed from service endpoints if the probe fails. @@ -2020,7 +2745,7 @@ Links: ### .spec.jobsTemplates.training.cpu.resources -Type: `core.ResourceRequirements` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/resources.go#L37) +Type: `core.ResourceRequirements` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/resources.go#L37) Resources holds resource requests & limits for container @@ -2031,7 +2756,7 @@ Links: ### .spec.jobsTemplates.training.cpu.schedulerName -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/pod/resources/scheduling.go#L54) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/scheduling.go#L54) SchedulerName specifies, the pod will be dispatched by specified scheduler. If not specified, the pod will be dispatched by default scheduler. @@ -2042,7 +2767,7 @@ Default Value: `""` ### .spec.jobsTemplates.training.cpu.securityContext -Type: `core.SecurityContext` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/security.go#L35) +Type: `core.SecurityContext` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/security.go#L35) SecurityContext holds container-level security attributes and common container settings. @@ -2051,9 +2776,20 @@ Links: *** +### .spec.jobsTemplates.training.cpu.serviceAccountName + +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/service_account.go#L35) + +ServiceAccountName is the name of the ServiceAccount to use to run this pod. + +Links: +* [Kubernetes docs](https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/) + +*** + ### .spec.jobsTemplates.training.cpu.shareProcessNamespace -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/pod/resources/namespace.go#L48) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/namespace.go#L48) ShareProcessNamespace defines to share a single process namespace between all of the containers in a pod. When this is set containers will be able to view and signal processes from other containers @@ -2066,7 +2802,7 @@ Default Value: `false` ### .spec.jobsTemplates.training.cpu.startupProbe -Type: `core.Probe` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/probes.go#L50) +Type: `core.Probe` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/probes.go#L50) StartupProbe indicates that the Pod has successfully initialized. If specified, no other probes are executed until this completes successfully. @@ -2081,7 +2817,7 @@ Links: ### .spec.jobsTemplates.training.cpu.tolerations -Type: `[]core.Toleration` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/pod/resources/scheduling.go#L49) +Type: `[]core.Toleration` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/scheduling.go#L49) Tolerations defines tolerations @@ -2092,7 +2828,7 @@ Links: ### .spec.jobsTemplates.training.cpu.volumeMounts -Type: `[]core.VolumeMount` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/volume_mounts.go#L35) +Type: `[]core.VolumeMount` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/volume_mounts.go#L35) VolumeMounts keeps list of pod volumes to mount into the container's filesystem. @@ -2100,7 +2836,7 @@ VolumeMounts keeps list of pod volumes to mount into the container's filesystem. ### .spec.jobsTemplates.training.cpu.volumes -Type: `[]core.Volume` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/pod/resources/volumes.go#L36) +Type: `[]core.Volume` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/volumes.go#L36) Volumes keeps list of volumes that can be mounted by containers belonging to the pod. @@ -2109,9 +2845,19 @@ Links: *** +### .spec.jobsTemplates.training.cpu.workingDir + +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/core.go#L55) + +Container's working directory. +If not specified, the container runtime's default will be used, which +might be configured in the container image. + +*** + ### .spec.jobsTemplates.training.gpu.affinity -Type: `core.Affinity` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/pod/resources/scheduling.go#L44) +Type: `core.Affinity` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/scheduling.go#L44) Affinity defines scheduling constraints for workload @@ -2120,9 +2866,64 @@ Links: *** +### .spec.jobsTemplates.training.gpu.annotations + +Type: `object` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/metadata.go#L45) + +Annotations is an unstructured key value map stored with a resource that may be +set by external tools to store and retrieve arbitrary metadata. They are not +queryable and should be preserved when modifying objects. + +Links: +* [Kubernetes docs](https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations) + +*** + +### .spec.jobsTemplates.training.gpu.args + +Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/core.go#L50) + +Arguments to the entrypoint. +The container image's CMD is used if this is not provided. +Variable references $(VAR_NAME) are expanded using the container's environment. 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. Cannot be updated. + +Links: +* [Kubernetes Docs](https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell) + +*** + +### .spec.jobsTemplates.training.gpu.automountServiceAccountToken + +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/service_account.go#L38) + +AutomountServiceAccountToken indicates whether a service account token should be automatically mounted. + +*** + +### .spec.jobsTemplates.training.gpu.command + +Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/core.go#L40) + +Entrypoint array. Not executed within a shell. +The container image's ENTRYPOINT is used if this is not provided. +Variable references $(VAR_NAME) are expanded using the container's environment. 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. Cannot be updated. + +Links: +* [Kubernetes Docs](https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell) + +*** + ### .spec.jobsTemplates.training.gpu.env -Type: `core.EnvVar` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/environments.go#L36) +Type: `core.EnvVar` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/environments.go#L36) Env keeps the information about environment variables provided to the container @@ -2133,7 +2934,7 @@ Links: ### .spec.jobsTemplates.training.gpu.envFrom -Type: `core.EnvFromSource` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/environments.go#L41) +Type: `core.EnvFromSource` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/environments.go#L41) EnvFrom keeps the information about environment variable sources provided to the container @@ -2144,7 +2945,7 @@ Links: ### .spec.jobsTemplates.training.gpu.hostIPC -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/pod/resources/namespace.go#L42) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/namespace.go#L42) HostIPC defines to use the host's ipc namespace. @@ -2154,7 +2955,7 @@ Default Value: `false` ### .spec.jobsTemplates.training.gpu.hostNetwork -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/pod/resources/namespace.go#L36) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/namespace.go#L36) HostNetwork requests Host network for this pod. Use the host's network namespace. If this option is set, the ports that will be used must be specified. @@ -2165,7 +2966,7 @@ Default Value: `false` ### .spec.jobsTemplates.training.gpu.hostPID -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/pod/resources/namespace.go#L39) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/namespace.go#L39) HostPID define to use the host's pid namespace. @@ -2175,7 +2976,7 @@ Default Value: `false` ### .spec.jobsTemplates.training.gpu.image -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/image.go#L37) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/image.go#L35) Image define image details @@ -2183,7 +2984,7 @@ Image define image details ### .spec.jobsTemplates.training.gpu.imagePullPolicy -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/image.go#L41) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/image.go#L39) ImagePullPolicy define Image pull policy @@ -2193,15 +2994,28 @@ Default Value: `IfNotPresent` ### .spec.jobsTemplates.training.gpu.imagePullSecrets -Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/image.go#L44) +Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/image.go#L36) ImagePullSecrets define Secrets used to pull Image from registry *** +### .spec.jobsTemplates.training.gpu.labels + +Type: `object` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/metadata.go#L39) + +Map of string keys and values that can be used to organize and categorize +(scope and select) objects. May match selectors of replication controllers +and services. + +Links: +* [Kubernetes docs](https://kubernetes.io/docs/concepts/overview/working-with-objects/labels) + +*** + ### .spec.jobsTemplates.training.gpu.lifecycle -Type: `core.Lifecycle` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/lifecycle.go#L35) +Type: `core.Lifecycle` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/lifecycle.go#L35) Lifecycle keeps actions that the management system should take in response to container lifecycle events. @@ -2209,7 +3023,7 @@ Lifecycle keeps actions that the management system should take in response to co ### .spec.jobsTemplates.training.gpu.livenessProbe -Type: `core.Probe` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/probes.go#L37) +Type: `core.Probe` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/probes.go#L37) LivenessProbe keeps configuration of periodic probe of container liveness. Container will be restarted if the probe fails. @@ -2221,7 +3035,7 @@ Links: ### .spec.jobsTemplates.training.gpu.nodeSelector -Type: `object` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/pod/resources/scheduling.go#L39) +Type: `object` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/scheduling.go#L39) NodeSelector is a selector that must be true for the workload to fit on a node. @@ -2230,9 +3044,20 @@ Links: *** +### .spec.jobsTemplates.training.gpu.ownerReferences + +Type: `meta.OwnerReference` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/metadata.go#L52) + +List of objects depended by this object. If ALL objects in the list have +been deleted, this object will be garbage collected. If this object is managed by a controller, +then an entry in this list will point to this controller, with the controller field set to true. +There cannot be more than one managing controller. + +*** + ### .spec.jobsTemplates.training.gpu.podSecurityContext -Type: `core.PodSecurityContext` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/pod/resources/security.go#L35) +Type: `core.PodSecurityContext` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/security.go#L35) PodSecurityContext holds pod-level security attributes and common container settings. @@ -2243,7 +3068,7 @@ Links: ### .spec.jobsTemplates.training.gpu.ports -Type: `[]core.ContainerPort` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/networking.go#L39) +Type: `[]core.ContainerPort` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/networking.go#L39) Ports contains list of ports to expose from the container. Not specifying a port here DOES NOT prevent that port from being exposed. Any port which is @@ -2254,7 +3079,7 @@ accessible from the network. ### .spec.jobsTemplates.training.gpu.readinessProbe -Type: `core.Probe` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/probes.go#L42) +Type: `core.Probe` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/probes.go#L42) ReadinessProbe keeps configuration of periodic probe of container service readiness. Container will be removed from service endpoints if the probe fails. @@ -2266,7 +3091,7 @@ Links: ### .spec.jobsTemplates.training.gpu.resources -Type: `core.ResourceRequirements` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/resources.go#L37) +Type: `core.ResourceRequirements` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/resources.go#L37) Resources holds resource requests & limits for container @@ -2277,7 +3102,7 @@ Links: ### .spec.jobsTemplates.training.gpu.schedulerName -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/pod/resources/scheduling.go#L54) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/scheduling.go#L54) SchedulerName specifies, the pod will be dispatched by specified scheduler. If not specified, the pod will be dispatched by default scheduler. @@ -2288,7 +3113,7 @@ Default Value: `""` ### .spec.jobsTemplates.training.gpu.securityContext -Type: `core.SecurityContext` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/security.go#L35) +Type: `core.SecurityContext` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/security.go#L35) SecurityContext holds container-level security attributes and common container settings. @@ -2297,9 +3122,20 @@ Links: *** +### .spec.jobsTemplates.training.gpu.serviceAccountName + +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/service_account.go#L35) + +ServiceAccountName is the name of the ServiceAccount to use to run this pod. + +Links: +* [Kubernetes docs](https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/) + +*** + ### .spec.jobsTemplates.training.gpu.shareProcessNamespace -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/pod/resources/namespace.go#L48) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/namespace.go#L48) ShareProcessNamespace defines to share a single process namespace between all of the containers in a pod. When this is set containers will be able to view and signal processes from other containers @@ -2312,7 +3148,7 @@ Default Value: `false` ### .spec.jobsTemplates.training.gpu.startupProbe -Type: `core.Probe` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/probes.go#L50) +Type: `core.Probe` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/probes.go#L50) StartupProbe indicates that the Pod has successfully initialized. If specified, no other probes are executed until this completes successfully. @@ -2327,7 +3163,7 @@ Links: ### .spec.jobsTemplates.training.gpu.tolerations -Type: `[]core.Toleration` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/pod/resources/scheduling.go#L49) +Type: `[]core.Toleration` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/scheduling.go#L49) Tolerations defines tolerations @@ -2338,7 +3174,7 @@ Links: ### .spec.jobsTemplates.training.gpu.volumeMounts -Type: `[]core.VolumeMount` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/volume_mounts.go#L35) +Type: `[]core.VolumeMount` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/volume_mounts.go#L35) VolumeMounts keeps list of pod volumes to mount into the container's filesystem. @@ -2346,7 +3182,7 @@ VolumeMounts keeps list of pod volumes to mount into the container's filesystem. ### .spec.jobsTemplates.training.gpu.volumes -Type: `[]core.Volume` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/pod/resources/volumes.go#L36) +Type: `[]core.Volume` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/volumes.go#L36) Volumes keeps list of volumes that can be mounted by containers belonging to the pod. @@ -2355,9 +3191,19 @@ Links: *** +### .spec.jobsTemplates.training.gpu.workingDir + +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/core.go#L55) + +Container's working directory. +If not specified, the container runtime's default will be used, which +might be configured in the container image. + +*** + ### .spec.metadataService.local.arangoMLFeatureStore -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/ml/v1alpha1/extension_spec_metadata_service.go#L65) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/ml/v1alpha1/extension_spec_metadata_service.go#L65) ArangoMLFeatureStoreDatabase define Database name to be used as MetadataService Backend in ArangoMLFeatureStoreDatabase @@ -2367,7 +3213,7 @@ Default Value: `arangomlfeaturestore` ### .spec.metadataService.local.arangoPipeDatabase -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/ml/v1alpha1/extension_spec_metadata_service.go#L61) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/ml/v1alpha1/extension_spec_metadata_service.go#L61) ArangoPipeDatabase define Database name to be used as MetadataService Backend in ArangoPipe @@ -2375,9 +3221,17 @@ Default Value: `arangopipe` *** +### .spec.storage.checksum + +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/shared/v1/object.go#L61) + +UID keeps the information about object Checksum + +*** + ### .spec.storage.name -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/shared/v1/object.go#L46) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/shared/v1/object.go#L52) Name of the object @@ -2385,7 +3239,7 @@ Name of the object ### .spec.storage.namespace -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/shared/v1/object.go#L49) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/shared/v1/object.go#L55) Namespace of the object. Should default to the namespace of the parent object @@ -2393,15 +3247,23 @@ Namespace of the object. Should default to the namespace of the parent object ### .spec.storage.uid -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/shared/v1/object.go#L52) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/shared/v1/object.go#L58) UID keeps the information about object UID ## Status +### .status.arangoDB.jwtTokenSecret.checksum + +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/shared/v1/object.go#L61) + +UID keeps the information about object Checksum + +*** + ### .status.arangoDB.jwtTokenSecret.name -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/shared/v1/object.go#L46) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/shared/v1/object.go#L52) Name of the object @@ -2409,7 +3271,7 @@ Name of the object ### .status.arangoDB.jwtTokenSecret.namespace -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/shared/v1/object.go#L49) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/shared/v1/object.go#L55) Namespace of the object. Should default to the namespace of the parent object @@ -2417,15 +3279,23 @@ Namespace of the object. Should default to the namespace of the parent object ### .status.arangoDB.jwtTokenSecret.uid -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/shared/v1/object.go#L52) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/shared/v1/object.go#L58) UID keeps the information about object UID *** +### .status.arangoDB.secret.checksum + +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/shared/v1/object.go#L61) + +UID keeps the information about object Checksum + +*** + ### .status.arangoDB.secret.name -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/shared/v1/object.go#L46) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/shared/v1/object.go#L52) Name of the object @@ -2433,7 +3303,7 @@ Name of the object ### .status.arangoDB.secret.namespace -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/shared/v1/object.go#L49) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/shared/v1/object.go#L55) Namespace of the object. Should default to the namespace of the parent object @@ -2441,7 +3311,7 @@ Namespace of the object. Should default to the namespace of the parent object ### .status.arangoDB.secret.uid -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/shared/v1/object.go#L52) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/shared/v1/object.go#L58) UID keeps the information about object UID @@ -2449,15 +3319,23 @@ UID keeps the information about object UID ### .status.conditions -Type: `api.Conditions` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/ml/v1alpha1/extension_status.go#L31) +Type: `api.Conditions` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/ml/v1alpha1/extension_status.go#L31) Conditions specific to the entire extension *** +### .status.metadataService.jwtTokenSecret.checksum + +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/shared/v1/object.go#L61) + +UID keeps the information about object Checksum + +*** + ### .status.metadataService.jwtTokenSecret.name -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/shared/v1/object.go#L46) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/shared/v1/object.go#L52) Name of the object @@ -2465,7 +3343,7 @@ Name of the object ### .status.metadataService.jwtTokenSecret.namespace -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/shared/v1/object.go#L49) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/shared/v1/object.go#L55) Namespace of the object. Should default to the namespace of the parent object @@ -2473,7 +3351,7 @@ Namespace of the object. Should default to the namespace of the parent object ### .status.metadataService.jwtTokenSecret.uid -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/shared/v1/object.go#L52) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/shared/v1/object.go#L58) UID keeps the information about object UID @@ -2481,7 +3359,7 @@ UID keeps the information about object UID ### .status.metadataService.local.arangoMLFeatureStore -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/ml/v1alpha1/extension_status_metadata_service.go#L41) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/ml/v1alpha1/extension_status_metadata_service.go#L41) ArangoMLFeatureStoreDatabase define Database name to be used as MetadataService Backend @@ -2489,15 +3367,23 @@ ArangoMLFeatureStoreDatabase define Database name to be used as MetadataService ### .status.metadataService.local.arangoPipe -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/ml/v1alpha1/extension_status_metadata_service.go#L38) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/ml/v1alpha1/extension_status_metadata_service.go#L38) ArangoPipeDatabase define Database name to be used as MetadataService Backend *** +### .status.metadataService.secret.checksum + +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/shared/v1/object.go#L61) + +UID keeps the information about object Checksum + +*** + ### .status.metadataService.secret.name -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/shared/v1/object.go#L46) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/shared/v1/object.go#L52) Name of the object @@ -2505,7 +3391,7 @@ Name of the object ### .status.metadataService.secret.namespace -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/shared/v1/object.go#L49) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/shared/v1/object.go#L55) Namespace of the object. Should default to the namespace of the parent object @@ -2513,27 +3399,95 @@ Namespace of the object. Should default to the namespace of the parent object ### .status.metadataService.secret.uid -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/shared/v1/object.go#L52) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/shared/v1/object.go#L58) + +UID keeps the information about object UID + +*** + +### .status.reconciliation.service.checksum + +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/shared/v1/object.go#L61) + +UID keeps the information about object Checksum + +*** + +### .status.reconciliation.service.name + +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/shared/v1/object.go#L52) + +Name of the object + +*** + +### .status.reconciliation.service.namespace + +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/shared/v1/object.go#L55) + +Namespace of the object. Should default to the namespace of the parent object + +*** + +### .status.reconciliation.service.uid + +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/shared/v1/object.go#L58) + +UID keeps the information about object UID + +*** + +### .status.reconciliation.statefulSet.checksum + +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/shared/v1/object.go#L61) + +UID keeps the information about object Checksum + +*** + +### .status.reconciliation.statefulSet.name + +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/shared/v1/object.go#L52) + +Name of the object + +*** + +### .status.reconciliation.statefulSet.namespace + +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/shared/v1/object.go#L55) + +Namespace of the object. Should default to the namespace of the parent object + +*** + +### .status.reconciliation.statefulSet.uid + +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/shared/v1/object.go#L58) UID keeps the information about object UID *** -### .status.reconciliation.serviceChecksum +### .status.serviceAccount.checksum + +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/shared/v1/object.go#L61) -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/ml/v1alpha1/extension_status_reconciliation.go#L25) +UID keeps the information about object Checksum *** -### .status.reconciliation.statefulSetChecksum +### .status.serviceAccount.cluster.binding.checksum + +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/shared/v1/object.go#L61) -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/ml/v1alpha1/extension_status_reconciliation.go#L24) +UID keeps the information about object Checksum *** ### .status.serviceAccount.cluster.binding.name -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/shared/v1/object.go#L46) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/shared/v1/object.go#L52) Name of the object @@ -2541,7 +3495,7 @@ Name of the object ### .status.serviceAccount.cluster.binding.namespace -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/shared/v1/object.go#L49) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/shared/v1/object.go#L55) Namespace of the object. Should default to the namespace of the parent object @@ -2549,15 +3503,23 @@ Namespace of the object. Should default to the namespace of the parent object ### .status.serviceAccount.cluster.binding.uid -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/shared/v1/object.go#L52) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/shared/v1/object.go#L58) UID keeps the information about object UID *** +### .status.serviceAccount.cluster.role.checksum + +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/shared/v1/object.go#L61) + +UID keeps the information about object Checksum + +*** + ### .status.serviceAccount.cluster.role.name -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/shared/v1/object.go#L46) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/shared/v1/object.go#L52) Name of the object @@ -2565,7 +3527,7 @@ Name of the object ### .status.serviceAccount.cluster.role.namespace -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/shared/v1/object.go#L49) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/shared/v1/object.go#L55) Namespace of the object. Should default to the namespace of the parent object @@ -2573,7 +3535,7 @@ Namespace of the object. Should default to the namespace of the parent object ### .status.serviceAccount.cluster.role.uid -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/shared/v1/object.go#L52) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/shared/v1/object.go#L58) UID keeps the information about object UID @@ -2581,7 +3543,7 @@ UID keeps the information about object UID ### .status.serviceAccount.name -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/shared/v1/object.go#L46) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/shared/v1/object.go#L52) Name of the object @@ -2589,15 +3551,23 @@ Name of the object ### .status.serviceAccount.namespace -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/shared/v1/object.go#L49) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/shared/v1/object.go#L55) Namespace of the object. Should default to the namespace of the parent object *** +### .status.serviceAccount.namespaced.binding.checksum + +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/shared/v1/object.go#L61) + +UID keeps the information about object Checksum + +*** + ### .status.serviceAccount.namespaced.binding.name -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/shared/v1/object.go#L46) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/shared/v1/object.go#L52) Name of the object @@ -2605,7 +3575,7 @@ Name of the object ### .status.serviceAccount.namespaced.binding.namespace -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/shared/v1/object.go#L49) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/shared/v1/object.go#L55) Namespace of the object. Should default to the namespace of the parent object @@ -2613,15 +3583,23 @@ Namespace of the object. Should default to the namespace of the parent object ### .status.serviceAccount.namespaced.binding.uid -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/shared/v1/object.go#L52) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/shared/v1/object.go#L58) UID keeps the information about object UID *** +### .status.serviceAccount.namespaced.role.checksum + +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/shared/v1/object.go#L61) + +UID keeps the information about object Checksum + +*** + ### .status.serviceAccount.namespaced.role.name -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/shared/v1/object.go#L46) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/shared/v1/object.go#L52) Name of the object @@ -2629,7 +3607,7 @@ Name of the object ### .status.serviceAccount.namespaced.role.namespace -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/shared/v1/object.go#L49) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/shared/v1/object.go#L55) Namespace of the object. Should default to the namespace of the parent object @@ -2637,7 +3615,7 @@ Namespace of the object. Should default to the namespace of the parent object ### .status.serviceAccount.namespaced.role.uid -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/shared/v1/object.go#L52) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/shared/v1/object.go#L58) UID keeps the information about object UID @@ -2645,7 +3623,7 @@ UID keeps the information about object UID ### .status.serviceAccount.uid -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/shared/v1/object.go#L52) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/shared/v1/object.go#L58) UID keeps the information about object UID diff --git a/docs/api/ArangoMLStorage.V1Alpha1.md b/docs/api/ArangoMLStorage.V1Alpha1.md index 2207545aa..2effe874a 100644 --- a/docs/api/ArangoMLStorage.V1Alpha1.md +++ b/docs/api/ArangoMLStorage.V1Alpha1.md @@ -10,7 +10,7 @@ title: ArangoMLStorage V1Alpha1 ### .spec.backend.s3.allowInsecure -Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/ml/v1alpha1/storage_spec_backend_s3.go#L40) +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/ml/v1alpha1/storage_spec_backend_s3.go#L40) AllowInsecure if set to true, the Endpoint certificates won't be checked @@ -18,9 +18,17 @@ Default Value: `false` *** +### .spec.backend.s3.caSecret.checksum + +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/shared/v1/object.go#L61) + +UID keeps the information about object Checksum + +*** + ### .spec.backend.s3.caSecret.name -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/shared/v1/object.go#L46) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/shared/v1/object.go#L52) Name of the object @@ -28,7 +36,7 @@ Name of the object ### .spec.backend.s3.caSecret.namespace -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/shared/v1/object.go#L49) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/shared/v1/object.go#L55) Namespace of the object. Should default to the namespace of the parent object @@ -36,15 +44,23 @@ Namespace of the object. Should default to the namespace of the parent object ### .spec.backend.s3.caSecret.uid -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/shared/v1/object.go#L52) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/shared/v1/object.go#L58) UID keeps the information about object UID *** +### .spec.backend.s3.credentialsSecret.checksum + +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/shared/v1/object.go#L61) + +UID keeps the information about object Checksum + +*** + ### .spec.backend.s3.credentialsSecret.name -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/shared/v1/object.go#L46) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/shared/v1/object.go#L52) Name of the object @@ -52,7 +68,7 @@ Name of the object ### .spec.backend.s3.credentialsSecret.namespace -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/shared/v1/object.go#L49) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/shared/v1/object.go#L55) Namespace of the object. Should default to the namespace of the parent object @@ -60,7 +76,7 @@ Namespace of the object. Should default to the namespace of the parent object ### .spec.backend.s3.credentialsSecret.uid -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/shared/v1/object.go#L52) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/shared/v1/object.go#L58) UID keeps the information about object UID @@ -68,7 +84,7 @@ UID keeps the information about object UID ### .spec.backend.s3.endpoint -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/ml/v1alpha1/storage_spec_backend_s3.go#L34) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/ml/v1alpha1/storage_spec_backend_s3.go#L34) Endpoint specifies the S3 API-compatible endpoint which implements storage Required @@ -77,7 +93,7 @@ Required ### .spec.backend.s3.region -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/ml/v1alpha1/storage_spec_backend_s3.go#L49) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/ml/v1alpha1/storage_spec_backend_s3.go#L49) Region defines the availability zone name. @@ -87,7 +103,7 @@ Default Value: `""` ### .spec.bucketName -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/ml/v1alpha1/storage_spec.go#L30) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/ml/v1alpha1/storage_spec.go#L30) BucketName specifies the name of the bucket Required @@ -96,7 +112,7 @@ Required ### .spec.bucketPath -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/ml/v1alpha1/storage_spec.go#L34) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/ml/v1alpha1/storage_spec.go#L34) BucketPath specifies the path within the bucket @@ -104,9 +120,43 @@ Default Value: `/` *** +### .spec.mode.sidecar.args + +Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/core.go#L50) + +Arguments to the entrypoint. +The container image's CMD is used if this is not provided. +Variable references $(VAR_NAME) are expanded using the container's environment. 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. Cannot be updated. + +Links: +* [Kubernetes Docs](https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell) + +*** + +### .spec.mode.sidecar.command + +Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/core.go#L40) + +Entrypoint array. Not executed within a shell. +The container image's ENTRYPOINT is used if this is not provided. +Variable references $(VAR_NAME) are expanded using the container's environment. 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. Cannot be updated. + +Links: +* [Kubernetes Docs](https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell) + +*** + ### .spec.mode.sidecar.controllerListenPort -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/ml/v1alpha1/storage_spec_mode_sidecar.go#L36) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/ml/v1alpha1/storage_spec_mode_sidecar.go#L36) ControllerListenPort defines on which port the sidecar container will be listening for controller requests @@ -116,7 +166,7 @@ Default Value: `9202` ### .spec.mode.sidecar.env -Type: `core.EnvVar` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/environments.go#L36) +Type: `core.EnvVar` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/environments.go#L36) Env keeps the information about environment variables provided to the container @@ -127,7 +177,7 @@ Links: ### .spec.mode.sidecar.envFrom -Type: `core.EnvFromSource` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/environments.go#L41) +Type: `core.EnvFromSource` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/environments.go#L41) EnvFrom keeps the information about environment variable sources provided to the container @@ -138,7 +188,7 @@ Links: ### .spec.mode.sidecar.image -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/image.go#L37) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/image.go#L35) Image define image details @@ -146,7 +196,7 @@ Image define image details ### .spec.mode.sidecar.imagePullPolicy -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/image.go#L41) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/image.go#L39) ImagePullPolicy define Image pull policy @@ -154,17 +204,9 @@ Default Value: `IfNotPresent` *** -### .spec.mode.sidecar.imagePullSecrets - -Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/image.go#L44) - -ImagePullSecrets define Secrets used to pull Image from registry - -*** - ### .spec.mode.sidecar.lifecycle -Type: `core.Lifecycle` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/lifecycle.go#L35) +Type: `core.Lifecycle` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/lifecycle.go#L35) Lifecycle keeps actions that the management system should take in response to container lifecycle events. @@ -172,7 +214,7 @@ Lifecycle keeps actions that the management system should take in response to co ### .spec.mode.sidecar.listenPort -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/ml/v1alpha1/storage_spec_mode_sidecar.go#L32) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/ml/v1alpha1/storage_spec_mode_sidecar.go#L32) ListenPort defines on which port the sidecar container will be listening for connections @@ -182,7 +224,7 @@ Default Value: `9201` ### .spec.mode.sidecar.livenessProbe -Type: `core.Probe` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/probes.go#L37) +Type: `core.Probe` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/probes.go#L37) LivenessProbe keeps configuration of periodic probe of container liveness. Container will be restarted if the probe fails. @@ -194,7 +236,7 @@ Links: ### .spec.mode.sidecar.ports -Type: `[]core.ContainerPort` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/networking.go#L39) +Type: `[]core.ContainerPort` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/networking.go#L39) Ports contains list of ports to expose from the container. Not specifying a port here DOES NOT prevent that port from being exposed. Any port which is @@ -205,7 +247,7 @@ accessible from the network. ### .spec.mode.sidecar.readinessProbe -Type: `core.Probe` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/probes.go#L42) +Type: `core.Probe` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/probes.go#L42) ReadinessProbe keeps configuration of periodic probe of container service readiness. Container will be removed from service endpoints if the probe fails. @@ -217,7 +259,7 @@ Links: ### .spec.mode.sidecar.resources -Type: `core.ResourceRequirements` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/resources.go#L37) +Type: `core.ResourceRequirements` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/resources.go#L37) Resources holds resource requests & limits for container @@ -228,7 +270,7 @@ Links: ### .spec.mode.sidecar.securityContext -Type: `core.SecurityContext` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/security.go#L35) +Type: `core.SecurityContext` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/security.go#L35) SecurityContext holds container-level security attributes and common container settings. @@ -239,7 +281,7 @@ Links: ### .spec.mode.sidecar.startupProbe -Type: `core.Probe` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/probes.go#L50) +Type: `core.Probe` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/probes.go#L50) StartupProbe indicates that the Pod has successfully initialized. If specified, no other probes are executed until this completes successfully. @@ -254,15 +296,25 @@ Links: ### .spec.mode.sidecar.volumeMounts -Type: `[]core.VolumeMount` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/scheduler/v1alpha1/container/resources/volume_mounts.go#L35) +Type: `[]core.VolumeMount` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/volume_mounts.go#L35) VolumeMounts keeps list of pod volumes to mount into the container's filesystem. +*** + +### .spec.mode.sidecar.workingDir + +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/core.go#L55) + +Container's working directory. +If not specified, the container runtime's default will be used, which +might be configured in the container image. + ## Status ### .status.conditions -Type: `api.Conditions` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/ml/v1alpha1/storage_status.go#L28) +Type: `api.Conditions` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/ml/v1alpha1/storage_status.go#L28) Conditions specific to the entire storage diff --git a/docs/api/ArangoMember.V1.md b/docs/api/ArangoMember.V1.md index f00a2652c..ceb6064de 100644 --- a/docs/api/ArangoMember.V1.md +++ b/docs/api/ArangoMember.V1.md @@ -10,7 +10,7 @@ title: ArangoMember V1 ### .spec.deletion_priority -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/arango_member_spec.go#L47) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/arango_member_spec.go#L47) DeletionPriority define Deletion Priority. Higher value means higher priority. Default is 0. @@ -20,7 +20,7 @@ Example: set 1 for Coordinator which should be deleted first and scale down coor ### .spec.deploymentUID -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/arango_member_spec.go#L36) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/arango_member_spec.go#L36) DeploymentUID define Deployment UID. @@ -28,7 +28,7 @@ DeploymentUID define Deployment UID. ### .spec.group -Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/arango_member_spec.go#L31) +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/arango_member_spec.go#L31) Group define Member Groups. @@ -36,13 +36,13 @@ Group define Member Groups. ### .spec.id -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/arango_member_spec.go#L33) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/arango_member_spec.go#L33) *** ### .spec.overrides.resources -Type: `core.ResourceRequirements` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/arango_member_spec_overrides.go#L38) +Type: `core.ResourceRequirements` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/arango_member_spec_overrides.go#L38) Resources holds resource requests & limits. Overrides template provided on the group level. @@ -53,7 +53,7 @@ Links: ### .spec.overrides.volumeClaimTemplate -Type: `core.PersistentVolumeClaim` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/arango_member_spec_overrides.go#L33) +Type: `core.PersistentVolumeClaim` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/arango_member_spec_overrides.go#L33) VolumeClaimTemplate specifies a template for volume claims. Overrides template provided on the group level. @@ -64,7 +64,7 @@ Links: ### .spec.template.checksum -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/arango_member_pod_template.go#L60) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/arango_member_pod_template.go#L60) Checksum keep the Pod Spec Checksum (with ignored fields). @@ -72,7 +72,7 @@ Checksum keep the Pod Spec Checksum (with ignored fields). ### .spec.template.endpoint -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/arango_member_pod_template.go#L63) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/arango_member_pod_template.go#L63) > [!WARNING] > ***DEPRECATED*** @@ -83,7 +83,7 @@ Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2 ### .spec.template.podSpec -Type: `core.PodTemplateSpec` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/arango_member_pod_template.go#L54) +Type: `core.PodTemplateSpec` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/arango_member_pod_template.go#L54) PodSpec specifies the Pod Spec used for this Member. @@ -94,7 +94,7 @@ Links: ### .spec.template.podSpecChecksum -Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.39/pkg/apis/deployment/v1/arango_member_pod_template.go#L57) +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/deployment/v1/arango_member_pod_template.go#L57) PodSpecChecksum keep the Pod Spec Checksum (without ignored fields). diff --git a/docs/api/ArangoProfile.V1Alpha1.md b/docs/api/ArangoProfile.V1Alpha1.md new file mode 100644 index 000000000..ff41c1994 --- /dev/null +++ b/docs/api/ArangoProfile.V1Alpha1.md @@ -0,0 +1,398 @@ +--- +layout: page +parent: CRD reference +title: ArangoProfile V1Alpha1 +--- + +# API Reference for ArangoProfile V1Alpha1 + +## Spec + +### .spec.selectors.label + +Type: `meta.LabelSelector` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/profile_selectors.go#L32) + +Label keeps information about label selector + +*** + +### .spec.template.container.all.env + +Type: `core.EnvVar` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/environments.go#L36) + +Env keeps the information about environment variables provided to the container + +Links: +* [Kubernetes Docs](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#envvar-v1-core) + +*** + +### .spec.template.container.all.envFrom + +Type: `core.EnvFromSource` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/environments.go#L41) + +EnvFrom keeps the information about environment variable sources provided to the container + +Links: +* [Kubernetes Docs](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#envfromsource-v1-core) + +*** + +### .spec.template.container.all.volumeMounts + +Type: `[]core.VolumeMount` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/volume_mounts.go#L35) + +VolumeMounts keeps list of pod volumes to mount into the container's filesystem. + +*** + +### .spec.template.container.containers.\.args + +Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/core.go#L50) + +Arguments to the entrypoint. +The container image's CMD is used if this is not provided. +Variable references $(VAR_NAME) are expanded using the container's environment. 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. Cannot be updated. + +Links: +* [Kubernetes Docs](https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell) + +*** + +### .spec.template.container.containers.\.command + +Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/core.go#L40) + +Entrypoint array. Not executed within a shell. +The container image's ENTRYPOINT is used if this is not provided. +Variable references $(VAR_NAME) are expanded using the container's environment. 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. Cannot be updated. + +Links: +* [Kubernetes Docs](https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell) + +*** + +### .spec.template.container.containers.\.env + +Type: `core.EnvVar` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/environments.go#L36) + +Env keeps the information about environment variables provided to the container + +Links: +* [Kubernetes Docs](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#envvar-v1-core) + +*** + +### .spec.template.container.containers.\.envFrom + +Type: `core.EnvFromSource` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/environments.go#L41) + +EnvFrom keeps the information about environment variable sources provided to the container + +Links: +* [Kubernetes Docs](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#envfromsource-v1-core) + +*** + +### .spec.template.container.containers.\.image + +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/image.go#L35) + +Image define image details + +*** + +### .spec.template.container.containers.\.imagePullPolicy + +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/image.go#L39) + +ImagePullPolicy define Image pull policy + +Default Value: `IfNotPresent` + +*** + +### .spec.template.container.containers.\.lifecycle + +Type: `core.Lifecycle` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/lifecycle.go#L35) + +Lifecycle keeps actions that the management system should take in response to container lifecycle events. + +*** + +### .spec.template.container.containers.\.livenessProbe + +Type: `core.Probe` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/probes.go#L37) + +LivenessProbe keeps configuration of periodic probe of container liveness. +Container will be restarted if the probe fails. + +Links: +* [Kubernetes docs](https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes) + +*** + +### .spec.template.container.containers.\.ports + +Type: `[]core.ContainerPort` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/networking.go#L39) + +Ports contains list of ports to expose from the container. Not specifying a port here +DOES NOT prevent that port from being exposed. Any port which is +listening on the default "0.0.0.0" address inside a container will be +accessible from the network. + +*** + +### .spec.template.container.containers.\.readinessProbe + +Type: `core.Probe` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/probes.go#L42) + +ReadinessProbe keeps configuration of periodic probe of container service readiness. +Container will be removed from service endpoints if the probe fails. + +Links: +* [Kubernetes docs](https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes) + +*** + +### .spec.template.container.containers.\.resources + +Type: `core.ResourceRequirements` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/resources.go#L37) + +Resources holds resource requests & limits for container + +Links: +* [Documentation of core.ResourceRequirements](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#resourcerequirements-v1-core) + +*** + +### .spec.template.container.containers.\.securityContext + +Type: `core.SecurityContext` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/security.go#L35) + +SecurityContext holds container-level security attributes and common container settings. + +Links: +* [Kubernetes docs](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/) + +*** + +### .spec.template.container.containers.\.startupProbe + +Type: `core.Probe` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/probes.go#L50) + +StartupProbe indicates that the Pod has successfully initialized. +If specified, no other probes are executed until this completes successfully. +If this probe fails, the Pod will be restarted, just as if the livenessProbe failed. +This can be used to provide different probe parameters at the beginning of a Pod's lifecycle, +when it might take a long time to load data or warm a cache, than during steady-state operation. + +Links: +* [Kubernetes docs](https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes) + +*** + +### .spec.template.container.containers.\.volumeMounts + +Type: `[]core.VolumeMount` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/volume_mounts.go#L35) + +VolumeMounts keeps list of pod volumes to mount into the container's filesystem. + +*** + +### .spec.template.container.containers.\.workingDir + +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/container/resources/core.go#L55) + +Container's working directory. +If not specified, the container runtime's default will be used, which +might be configured in the container image. + +*** + +### .spec.template.pod.affinity + +Type: `core.Affinity` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/scheduling.go#L44) + +Affinity defines scheduling constraints for workload + +Links: +* [Kubernetes docs](https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity) + +*** + +### .spec.template.pod.annotations + +Type: `object` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/metadata.go#L45) + +Annotations is an unstructured key value map stored with a resource that may be +set by external tools to store and retrieve arbitrary metadata. They are not +queryable and should be preserved when modifying objects. + +Links: +* [Kubernetes docs](https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations) + +*** + +### .spec.template.pod.automountServiceAccountToken + +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/service_account.go#L38) + +AutomountServiceAccountToken indicates whether a service account token should be automatically mounted. + +*** + +### .spec.template.pod.hostIPC + +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/namespace.go#L42) + +HostIPC defines to use the host's ipc namespace. + +Default Value: `false` + +*** + +### .spec.template.pod.hostNetwork + +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/namespace.go#L36) + +HostNetwork requests Host network for this pod. Use the host's network namespace. +If this option is set, the ports that will be used must be specified. + +Default Value: `false` + +*** + +### .spec.template.pod.hostPID + +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/namespace.go#L39) + +HostPID define to use the host's pid namespace. + +Default Value: `false` + +*** + +### .spec.template.pod.imagePullSecrets + +Type: `array` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/image.go#L36) + +ImagePullSecrets define Secrets used to pull Image from registry + +*** + +### .spec.template.pod.labels + +Type: `object` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/metadata.go#L39) + +Map of string keys and values that can be used to organize and categorize +(scope and select) objects. May match selectors of replication controllers +and services. + +Links: +* [Kubernetes docs](https://kubernetes.io/docs/concepts/overview/working-with-objects/labels) + +*** + +### .spec.template.pod.nodeSelector + +Type: `object` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/scheduling.go#L39) + +NodeSelector is a selector that must be true for the workload to fit on a node. + +Links: +* [Kubernetes docs](https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#nodeselector) + +*** + +### .spec.template.pod.ownerReferences + +Type: `meta.OwnerReference` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/metadata.go#L52) + +List of objects depended by this object. If ALL objects in the list have +been deleted, this object will be garbage collected. If this object is managed by a controller, +then an entry in this list will point to this controller, with the controller field set to true. +There cannot be more than one managing controller. + +*** + +### .spec.template.pod.podSecurityContext + +Type: `core.PodSecurityContext` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/security.go#L35) + +PodSecurityContext holds pod-level security attributes and common container settings. + +Links: +* [Kubernetes docs](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/) + +*** + +### .spec.template.pod.schedulerName + +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/scheduling.go#L54) + +SchedulerName specifies, the pod will be dispatched by specified scheduler. +If not specified, the pod will be dispatched by default scheduler. + +Default Value: `""` + +*** + +### .spec.template.pod.serviceAccountName + +Type: `string` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/service_account.go#L35) + +ServiceAccountName is the name of the ServiceAccount to use to run this pod. + +Links: +* [Kubernetes docs](https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/) + +*** + +### .spec.template.pod.shareProcessNamespace + +Type: `boolean` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/namespace.go#L48) + +ShareProcessNamespace defines to share a single process namespace between all of the containers in a pod. +When this is set containers will be able to view and signal processes from other containers +in the same pod, and the first process in each container will not be assigned PID 1. +HostPID and ShareProcessNamespace cannot both be set. + +Default Value: `false` + +*** + +### .spec.template.pod.tolerations + +Type: `[]core.Toleration` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/scheduling.go#L49) + +Tolerations defines tolerations + +Links: +* [Kubernetes docs](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/) + +*** + +### .spec.template.pod.volumes + +Type: `[]core.Volume` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/pod/resources/volumes.go#L36) + +Volumes keeps list of volumes that can be mounted by containers belonging to the pod. + +Links: +* [Kubernetes docs](https://kubernetes.io/docs/concepts/storage/volumes) + +*** + +### .spec.template.priority + +Type: `integer` [\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1alpha1/profile_template.go#L30) + diff --git a/examples/reboot-pod.yaml b/examples/reboot-pod.yaml index 4425bc152..6028d6d66 100644 --- a/examples/reboot-pod.yaml +++ b/examples/reboot-pod.yaml @@ -6,7 +6,7 @@ spec: restartPolicy: Never serviceAccountName: arango-deployment-operator-reboot containers: - - image: arangodb/kube-arangodb:1.2.39 + - image: arangodb/kube-arangodb:1.2.40 name: reboot command: ["arangodb_operator", "reboot"] args: diff --git a/go.mod b/go.mod index d5810853b..27c427954 100644 --- a/go.mod +++ b/go.mod @@ -1,8 +1,8 @@ module github.com/arangodb/kube-arangodb -go 1.21 +go 1.22 -toolchain go1.21.8 +toolchain go1.22.2 replace ( github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring => github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring v0.46.0 @@ -55,7 +55,7 @@ require ( github.com/spf13/pflag v1.0.5 github.com/stretchr/testify v1.8.4 golang.org/x/sync v0.6.0 - golang.org/x/sys v0.16.0 + golang.org/x/sys v0.18.0 golang.org/x/text v0.14.0 golang.org/x/time v0.5.0 google.golang.org/grpc v1.60.1 @@ -121,10 +121,10 @@ require ( github.com/twitchyliquid64/golang-asm v0.15.1 // indirect github.com/ugorji/go/codec v1.2.11 // indirect golang.org/x/arch v0.3.0 // indirect - golang.org/x/crypto v0.18.0 // indirect - golang.org/x/net v0.20.0 // indirect + golang.org/x/crypto v0.21.0 // indirect + golang.org/x/net v0.23.0 // indirect golang.org/x/oauth2 v0.15.0 // indirect - golang.org/x/term v0.16.0 // indirect + golang.org/x/term v0.18.0 // indirect golang.org/x/tools v0.17.0 // indirect google.golang.org/appengine v1.6.8 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20240102182953-50ed04b92917 // indirect diff --git a/go.sum b/go.sum index ed12cc250..422ffebd7 100644 --- a/go.sum +++ b/go.sum @@ -1510,6 +1510,8 @@ golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf golang.org/x/crypto v0.16.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= golang.org/x/crypto v0.18.0 h1:PGVlW0xEltQnzFZ55hkuX5+KLyrMYhHld1YHO4AKcdc= golang.org/x/crypto v0.18.0/go.mod h1:R0j02AL6hcrfOiy9T4ZYp/rcWeMxM3L6QYxlOuEG1mg= +golang.org/x/crypto v0.21.0 h1:X31++rzVUdKhX5sWmSOFZxx8UW/ldWx55cbf08iNAMA= +golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs= golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= @@ -1654,6 +1656,8 @@ golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= golang.org/x/net v0.19.0/go.mod h1:CfAk/cbD4CthTvqiEl8NpboMuiuOYsAr/7NOjZJtv1U= golang.org/x/net v0.20.0 h1:aCL9BSgETF1k+blQaYUBx9hJ9LOGP3gAVemcZlf1Kpo= golang.org/x/net v0.20.0/go.mod h1:z8BVo6PvndSri0LbOE3hAn0apkU+1YvI6E70E9jsnvY= +golang.org/x/net v0.23.0 h1:7EYJ93RZ9vYSZAIb2x3lnuvqO5zneoD6IvWjuhfxjTs= +golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -1818,6 +1822,8 @@ golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.16.0 h1:xWw16ngr6ZMtmxDyKyIgsE93KNKz5HKmMa3b8ALHidU= golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4= +golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= @@ -1836,6 +1842,8 @@ golang.org/x/term v0.13.0/go.mod h1:LTmsnFJwVN6bCy1rVCoS+qHT1HhALEFxKncY3WNNh4U= golang.org/x/term v0.15.0/go.mod h1:BDl952bC7+uMoWR75FIrCDx79TPU9oHkTZ9yRbYOrX0= golang.org/x/term v0.16.0 h1:m+B6fahuftsE9qjo0VWp2FW0mB3MTJvR0BaMQrq0pmE= golang.org/x/term v0.16.0/go.mod h1:yn7UURbUtPyrVJPGPq404EukNFxcm/foM+bV/bfcDsY= +golang.org/x/term v0.18.0 h1:FcHjZXDMxI8mM3nwhX9HlKop4C0YQvCVCdwYl2wOtE8= +golang.org/x/term v0.18.0/go.mod h1:ILwASektA3OnRv7amZ1xhE/KTR+u50pbXfZ03+6Nx58= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= diff --git a/integrations/scheduler/v1/batch_job_test.go b/integrations/scheduler/v1/batch_job_test.go new file mode 100644 index 000000000..1ae84af99 --- /dev/null +++ b/integrations/scheduler/v1/batch_job_test.go @@ -0,0 +1,204 @@ +// +// DISCLAIMER +// +// Copyright 2024 ArangoDB GmbH, Cologne, Germany +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Copyright holder is ArangoDB GmbH, Cologne, Germany +// + +package v1 + +import ( + "context" + "testing" + + "github.com/stretchr/testify/require" + batch "k8s.io/api/batch/v1" + meta "k8s.io/apimachinery/pkg/apis/meta/v1" + + pbSchedulerV1 "github.com/arangodb/kube-arangodb/integrations/scheduler/v1/definition" + schedulerApi "github.com/arangodb/kube-arangodb/pkg/apis/scheduler/v1alpha1" + "github.com/arangodb/kube-arangodb/pkg/util" + "github.com/arangodb/kube-arangodb/pkg/util/kclient" + "github.com/arangodb/kube-arangodb/pkg/util/tests" +) + +func Test_BatchJob(t *testing.T) { + ctx, c := context.WithCancel(context.Background()) + defer c() + + client := kclient.NewFakeClientBuilder().Add( + tests.NewMetaObject(t, tests.FakeNamespace, "test", func(t *testing.T, obj *schedulerApi.ArangoProfile) { + obj.Spec = schedulerApi.ProfileSpec{} + }), + tests.NewMetaObject(t, tests.FakeNamespace, "test-select-all", func(t *testing.T, obj *schedulerApi.ArangoProfile) { + obj.Spec = schedulerApi.ProfileSpec{ + Selectors: &schedulerApi.ProfileSelectors{ + Label: &meta.LabelSelector{}, + }, + Template: &schedulerApi.ProfileTemplate{}, + } + }), + tests.NewMetaObject(t, tests.FakeNamespace, "test-select-specific", func(t *testing.T, obj *schedulerApi.ArangoProfile) { + obj.Spec = schedulerApi.ProfileSpec{ + Selectors: &schedulerApi.ProfileSelectors{ + Label: &meta.LabelSelector{ + MatchLabels: map[string]string{ + "A": "B", + }, + }, + }, + Template: &schedulerApi.ProfileTemplate{}, + } + }), + ).Client() + + scheduler := Client(t, ctx, client, func(c Configuration) Configuration { + c.Namespace = tests.FakeNamespace + c.VerifyAccess = false + return c + }) + + t.Run("Ensure job does not exist - get", func(t *testing.T) { + resp, err := scheduler.GetBatchJob(context.Background(), &pbSchedulerV1.GetBatchJobRequest{ + Name: "test", + }) + require.NoError(t, err) + + require.False(t, resp.GetExists()) + }) + + t.Run("Ensure job does not exist - list", func(t *testing.T) { + resp, err := scheduler.ListBatchJob(context.Background(), &pbSchedulerV1.ListBatchJobRequest{}) + require.NoError(t, err) + + require.Len(t, resp.GetBatchJobs(), 0) + }) + + t.Run("Schedule Job", func(t *testing.T) { + resp, err := scheduler.CreateBatchJob(context.Background(), &pbSchedulerV1.CreateBatchJobRequest{ + Spec: &pbSchedulerV1.Spec{ + Metadata: &pbSchedulerV1.Metadata{ + Name: "test", + }, + Job: &pbSchedulerV1.JobBase{ + Labels: nil, + Profiles: []string{ + "test", + }, + }, + Containers: map[string]*pbSchedulerV1.ContainerBase{ + "example": { + Image: util.NewType("ubuntu:20.04"), + Args: []string{ + "/bin/bash", + "-c", + "true", + }, + }, + }, + }, + BatchJob: &pbSchedulerV1.BatchJobSpec{ + Completions: util.NewType[int32](1), + }, + }) + require.NoError(t, err) + + require.EqualValues(t, "test", resp.GetName()) + require.Len(t, resp.Profiles, 2) + require.Contains(t, resp.Profiles, "test") + require.Contains(t, resp.Profiles, "test-select-all") + require.NotContains(t, resp.Profiles, "test-select-specific") + }) + + t.Run("Ensure job exist - get", func(t *testing.T) { + resp, err := scheduler.GetBatchJob(context.Background(), &pbSchedulerV1.GetBatchJobRequest{ + Name: "test", + }) + require.NoError(t, err) + + require.True(t, resp.GetExists()) + }) + + t.Run("Ensure job exist - list", func(t *testing.T) { + resp, err := scheduler.ListBatchJob(context.Background(), &pbSchedulerV1.ListBatchJobRequest{}) + require.NoError(t, err) + + require.Len(t, resp.GetBatchJobs(), 1) + require.Contains(t, resp.GetBatchJobs(), "test") + }) + + t.Run("Ensure job details - pre", func(t *testing.T) { + resp, err := scheduler.GetBatchJob(context.Background(), &pbSchedulerV1.GetBatchJobRequest{ + Name: "test", + }) + require.NoError(t, err) + + require.True(t, resp.GetExists()) + require.EqualValues(t, 0, resp.GetBatchJob().GetStatus().GetSucceeded()) + }) + + t.Run("Ensure job details - update", func(t *testing.T) { + job := tests.NewMetaObject[*batch.Job](t, tests.FakeNamespace, "test") + + tests.RefreshObjectsC(t, client, &job) + + job.Status.Succeeded = 1 + + tests.UpdateObjectsC(t, client, &job) + }) + + t.Run("Ensure job details - post", func(t *testing.T) { + resp, err := scheduler.GetBatchJob(context.Background(), &pbSchedulerV1.GetBatchJobRequest{ + Name: "test", + }) + require.NoError(t, err) + + require.True(t, resp.GetExists()) + require.EqualValues(t, 1, resp.GetBatchJob().GetStatus().GetSucceeded()) + }) + + t.Run("Delete Job", func(t *testing.T) { + resp, err := scheduler.DeleteBatchJob(context.Background(), &pbSchedulerV1.DeleteBatchJobRequest{ + Name: "test", + }) + require.NoError(t, err) + require.True(t, resp.GetExists()) + }) + + t.Run("Re-Delete Job", func(t *testing.T) { + resp, err := scheduler.DeleteBatchJob(context.Background(), &pbSchedulerV1.DeleteBatchJobRequest{ + Name: "test", + }) + require.NoError(t, err) + require.False(t, resp.GetExists()) + }) + + t.Run("Ensure job does not exist after deletion - get", func(t *testing.T) { + resp, err := scheduler.GetBatchJob(context.Background(), &pbSchedulerV1.GetBatchJobRequest{ + Name: "test", + }) + require.NoError(t, err) + + require.False(t, resp.GetExists()) + }) + + t.Run("Ensure job does not exist after deletion - list", func(t *testing.T) { + resp, err := scheduler.ListBatchJob(context.Background(), &pbSchedulerV1.ListBatchJobRequest{}) + require.NoError(t, err) + + require.Len(t, resp.GetBatchJobs(), 0) + }) +} diff --git a/integrations/scheduler/v1/configuration.go b/integrations/scheduler/v1/configuration.go new file mode 100644 index 000000000..a9112d41c --- /dev/null +++ b/integrations/scheduler/v1/configuration.go @@ -0,0 +1,46 @@ +// +// DISCLAIMER +// +// Copyright 2024 ArangoDB GmbH, Cologne, Germany +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Copyright holder is ArangoDB GmbH, Cologne, Germany +// + +package v1 + +type Mod func(c Configuration) Configuration + +func NewConfiguration() Configuration { + return Configuration{ + Namespace: "default", + VerifyAccess: true, + } +} + +type Configuration struct { + Namespace string + + VerifyAccess bool +} + +func (c Configuration) With(mods ...Mod) Configuration { + n := c + + for _, mod := range mods { + n = mod(n) + } + + return n +} diff --git a/integrations/scheduler/v1/cron_job_test.go b/integrations/scheduler/v1/cron_job_test.go new file mode 100644 index 000000000..acbb2565c --- /dev/null +++ b/integrations/scheduler/v1/cron_job_test.go @@ -0,0 +1,250 @@ +// +// DISCLAIMER +// +// Copyright 2024 ArangoDB GmbH, Cologne, Germany +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Copyright holder is ArangoDB GmbH, Cologne, Germany +// + +package v1 + +import ( + "context" + "testing" + + "github.com/stretchr/testify/require" + batch "k8s.io/api/batch/v1" + core "k8s.io/api/core/v1" + meta "k8s.io/apimachinery/pkg/apis/meta/v1" + + pbSchedulerV1 "github.com/arangodb/kube-arangodb/integrations/scheduler/v1/definition" + schedulerApi "github.com/arangodb/kube-arangodb/pkg/apis/scheduler/v1alpha1" + "github.com/arangodb/kube-arangodb/pkg/util" + "github.com/arangodb/kube-arangodb/pkg/util/kclient" + "github.com/arangodb/kube-arangodb/pkg/util/tests" +) + +func Test_CronJob(t *testing.T) { + ctx, c := context.WithCancel(context.Background()) + defer c() + + client := kclient.NewFakeClientBuilder().Add( + tests.NewMetaObject(t, tests.FakeNamespace, "test", func(t *testing.T, obj *schedulerApi.ArangoProfile) { + obj.Spec = schedulerApi.ProfileSpec{} + }), + tests.NewMetaObject(t, tests.FakeNamespace, "test-select-all", func(t *testing.T, obj *schedulerApi.ArangoProfile) { + obj.Spec = schedulerApi.ProfileSpec{ + Selectors: &schedulerApi.ProfileSelectors{ + Label: &meta.LabelSelector{}, + }, + Template: &schedulerApi.ProfileTemplate{}, + } + }), + tests.NewMetaObject(t, tests.FakeNamespace, "test-select-specific", func(t *testing.T, obj *schedulerApi.ArangoProfile) { + obj.Spec = schedulerApi.ProfileSpec{ + Selectors: &schedulerApi.ProfileSelectors{ + Label: &meta.LabelSelector{ + MatchLabels: map[string]string{ + "A": "B", + }, + }, + }, + Template: &schedulerApi.ProfileTemplate{}, + } + }), + ).Client() + + scheduler := Client(t, ctx, client, func(c Configuration) Configuration { + c.Namespace = tests.FakeNamespace + c.VerifyAccess = false + return c + }) + + t.Run("Ensure job does not exist - get", func(t *testing.T) { + resp, err := scheduler.GetCronJob(context.Background(), &pbSchedulerV1.GetCronJobRequest{ + Name: "test", + }) + require.NoError(t, err) + + require.False(t, resp.GetExists()) + }) + + t.Run("Ensure job does not exist - list", func(t *testing.T) { + resp, err := scheduler.ListCronJob(context.Background(), &pbSchedulerV1.ListCronJobRequest{}) + require.NoError(t, err) + + require.Len(t, resp.GetCronJobs(), 0) + }) + + t.Run("Schedule Job", func(t *testing.T) { + resp, err := scheduler.CreateCronJob(context.Background(), &pbSchedulerV1.CreateCronJobRequest{ + Spec: &pbSchedulerV1.Spec{ + Metadata: &pbSchedulerV1.Metadata{ + Name: "test", + }, + Job: &pbSchedulerV1.JobBase{ + Labels: nil, + Profiles: []string{ + "test", + }, + }, + Containers: map[string]*pbSchedulerV1.ContainerBase{ + "example": { + Image: util.NewType("ubuntu:20.04"), + Args: []string{ + "/bin/bash", + "-c", + "true", + }, + }, + }, + }, + CronJob: &pbSchedulerV1.CronJobSpec{ + Schedule: "* * * * *", + Job: &pbSchedulerV1.BatchJobSpec{ + Parallelism: util.NewType[int32](1), + Completions: util.NewType[int32](1), + BackoffLimit: util.NewType[int32](1), + }, + }, + }) + require.NoError(t, err) + + require.EqualValues(t, "test", resp.GetName()) + require.Len(t, resp.Profiles, 2) + require.Contains(t, resp.Profiles, "test") + require.Contains(t, resp.Profiles, "test-select-all") + require.NotContains(t, resp.Profiles, "test-select-specific") + }) + + t.Run("Ensure job exist - get", func(t *testing.T) { + resp, err := scheduler.GetCronJob(context.Background(), &pbSchedulerV1.GetCronJobRequest{ + Name: "test", + }) + require.NoError(t, err) + + require.True(t, resp.GetExists()) + }) + + t.Run("Ensure job exist - list", func(t *testing.T) { + resp, err := scheduler.ListCronJob(context.Background(), &pbSchedulerV1.ListCronJobRequest{}) + require.NoError(t, err) + + require.Len(t, resp.GetCronJobs(), 1) + require.Contains(t, resp.GetCronJobs(), "test") + }) + + t.Run("Ensure job details - pre", func(t *testing.T) { + resp, err := scheduler.GetCronJob(context.Background(), &pbSchedulerV1.GetCronJobRequest{ + Name: "test", + }) + require.NoError(t, err) + + require.True(t, resp.GetExists()) + require.Len(t, resp.GetBatchJobs(), 0) + }) + + t.Run("Ensure job details - update", func(t *testing.T) { + job := tests.NewMetaObject[*batch.CronJob](t, tests.FakeNamespace, "test") + + tests.RefreshObjectsC(t, client, &job) + + job.Status.Active = []core.ObjectReference{ + { + Name: "test-job", + }, + } + + tests.UpdateObjectsC(t, client, &job) + }) + + t.Run("Ensure job details - post", func(t *testing.T) { + resp, err := scheduler.GetCronJob(context.Background(), &pbSchedulerV1.GetCronJobRequest{ + Name: "test", + }) + require.NoError(t, err) + + require.True(t, resp.GetExists()) + require.Len(t, resp.GetBatchJobs(), 1) + }) + + t.Run("Update Job - Pre", func(t *testing.T) { + resp, err := scheduler.GetCronJob(context.Background(), &pbSchedulerV1.GetCronJobRequest{ + Name: "test", + }) + require.NoError(t, err) + require.True(t, resp.GetExists()) + require.EqualValues(t, "* * * * *", resp.GetCronJob().GetSpec().GetSchedule()) + require.EqualValues(t, 1, resp.GetCronJob().GetSpec().GetJob().GetCompletions()) + }) + + t.Run("Update Job", func(t *testing.T) { + resp, err := scheduler.UpdateCronJob(context.Background(), &pbSchedulerV1.UpdateCronJobRequest{ + Name: "test", + Spec: &pbSchedulerV1.CronJobSpec{ + Schedule: "1 * * * *", + Job: &pbSchedulerV1.BatchJobSpec{ + Completions: util.NewType[int32](5), + }, + }, + }) + require.NoError(t, err) + require.True(t, resp.GetExists()) + require.EqualValues(t, "1 * * * *", resp.GetCronJob().GetSpec().GetSchedule()) + require.EqualValues(t, 5, resp.GetCronJob().GetSpec().GetJob().GetCompletions()) + }) + + t.Run("Update Job - Post", func(t *testing.T) { + resp, err := scheduler.GetCronJob(context.Background(), &pbSchedulerV1.GetCronJobRequest{ + Name: "test", + }) + require.NoError(t, err) + require.True(t, resp.GetExists()) + require.EqualValues(t, "1 * * * *", resp.GetCronJob().GetSpec().GetSchedule()) + require.EqualValues(t, 5, resp.GetCronJob().GetSpec().GetJob().GetCompletions()) + }) + + t.Run("Delete Job", func(t *testing.T) { + resp, err := scheduler.DeleteCronJob(context.Background(), &pbSchedulerV1.DeleteCronJobRequest{ + Name: "test", + }) + require.NoError(t, err) + require.True(t, resp.GetExists()) + }) + + t.Run("Re-Delete Job", func(t *testing.T) { + resp, err := scheduler.DeleteCronJob(context.Background(), &pbSchedulerV1.DeleteCronJobRequest{ + Name: "test", + }) + require.NoError(t, err) + require.False(t, resp.GetExists()) + }) + + t.Run("Ensure job does not exist after deletion - get", func(t *testing.T) { + resp, err := scheduler.GetCronJob(context.Background(), &pbSchedulerV1.GetCronJobRequest{ + Name: "test", + }) + require.NoError(t, err) + + require.False(t, resp.GetExists()) + }) + + t.Run("Ensure job does not exist after deletion - list", func(t *testing.T) { + resp, err := scheduler.ListCronJob(context.Background(), &pbSchedulerV1.ListCronJobRequest{}) + require.NoError(t, err) + + require.Len(t, resp.GetCronJobs(), 0) + }) +} diff --git a/integrations/scheduler/v1/definition/batchjob.pb.go b/integrations/scheduler/v1/definition/batchjob.pb.go new file mode 100644 index 000000000..fc6bbb589 --- /dev/null +++ b/integrations/scheduler/v1/definition/batchjob.pb.go @@ -0,0 +1,366 @@ +// +// DISCLAIMER +// +// Copyright 2024 ArangoDB GmbH, Cologne, Germany +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Copyright holder is ArangoDB GmbH, Cologne, Germany +// + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.26.0 +// protoc v3.21.1 +// source: integrations/scheduler/v1/definition/batchjob.proto + +package definition + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// Keeps information about Kubernetes Batch/V1 Job +type BatchJob struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Keeps BatchJob settings + Spec *BatchJobSpec `protobuf:"bytes,1,opt,name=spec,proto3" json:"spec,omitempty"` + // Keeps current BatchJob Status + Status *BatchJobStatus `protobuf:"bytes,2,opt,name=status,proto3,oneof" json:"status,omitempty"` +} + +func (x *BatchJob) Reset() { + *x = BatchJob{} + if protoimpl.UnsafeEnabled { + mi := &file_integrations_scheduler_v1_definition_batchjob_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BatchJob) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BatchJob) ProtoMessage() {} + +func (x *BatchJob) ProtoReflect() protoreflect.Message { + mi := &file_integrations_scheduler_v1_definition_batchjob_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BatchJob.ProtoReflect.Descriptor instead. +func (*BatchJob) Descriptor() ([]byte, []int) { + return file_integrations_scheduler_v1_definition_batchjob_proto_rawDescGZIP(), []int{0} +} + +func (x *BatchJob) GetSpec() *BatchJobSpec { + if x != nil { + return x.Spec + } + return nil +} + +func (x *BatchJob) GetStatus() *BatchJobStatus { + if x != nil { + return x.Status + } + return nil +} + +// Information about BatchJob run settings, like completions and parallelism +type BatchJobSpec struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Number of concurrent Pods which are started within a job. Defaults to 1 + Parallelism *int32 `protobuf:"varint,1,opt,name=parallelism,proto3,oneof" json:"parallelism,omitempty"` + // Number of expected completed runs. Defaults to 1 + Completions *int32 `protobuf:"varint,2,opt,name=completions,proto3,oneof" json:"completions,omitempty"` + // Number of allowed Pod failures. Defaults to 0 + BackoffLimit *int32 `protobuf:"varint,3,opt,name=backoff_limit,json=backoffLimit,proto3,oneof" json:"backoff_limit,omitempty"` +} + +func (x *BatchJobSpec) Reset() { + *x = BatchJobSpec{} + if protoimpl.UnsafeEnabled { + mi := &file_integrations_scheduler_v1_definition_batchjob_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BatchJobSpec) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BatchJobSpec) ProtoMessage() {} + +func (x *BatchJobSpec) ProtoReflect() protoreflect.Message { + mi := &file_integrations_scheduler_v1_definition_batchjob_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BatchJobSpec.ProtoReflect.Descriptor instead. +func (*BatchJobSpec) Descriptor() ([]byte, []int) { + return file_integrations_scheduler_v1_definition_batchjob_proto_rawDescGZIP(), []int{1} +} + +func (x *BatchJobSpec) GetParallelism() int32 { + if x != nil && x.Parallelism != nil { + return *x.Parallelism + } + return 0 +} + +func (x *BatchJobSpec) GetCompletions() int32 { + if x != nil && x.Completions != nil { + return *x.Completions + } + return 0 +} + +func (x *BatchJobSpec) GetBackoffLimit() int32 { + if x != nil && x.BackoffLimit != nil { + return *x.BackoffLimit + } + return 0 +} + +// Information about BatchJob Status +type BatchJobStatus struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Number of active and running Pods within BatchJob + Active int32 `protobuf:"varint,1,opt,name=active,proto3" json:"active,omitempty"` + // Number of completed Pods withing BatchJob + Succeeded int32 `protobuf:"varint,2,opt,name=succeeded,proto3" json:"succeeded,omitempty"` + // Number of failed Pods within BatchJob + Failed int32 `protobuf:"varint,3,opt,name=failed,proto3" json:"failed,omitempty"` +} + +func (x *BatchJobStatus) Reset() { + *x = BatchJobStatus{} + if protoimpl.UnsafeEnabled { + mi := &file_integrations_scheduler_v1_definition_batchjob_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BatchJobStatus) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BatchJobStatus) ProtoMessage() {} + +func (x *BatchJobStatus) ProtoReflect() protoreflect.Message { + mi := &file_integrations_scheduler_v1_definition_batchjob_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BatchJobStatus.ProtoReflect.Descriptor instead. +func (*BatchJobStatus) Descriptor() ([]byte, []int) { + return file_integrations_scheduler_v1_definition_batchjob_proto_rawDescGZIP(), []int{2} +} + +func (x *BatchJobStatus) GetActive() int32 { + if x != nil { + return x.Active + } + return 0 +} + +func (x *BatchJobStatus) GetSucceeded() int32 { + if x != nil { + return x.Succeeded + } + return 0 +} + +func (x *BatchJobStatus) GetFailed() int32 { + if x != nil { + return x.Failed + } + return 0 +} + +var File_integrations_scheduler_v1_definition_batchjob_proto protoreflect.FileDescriptor + +var file_integrations_scheduler_v1_definition_batchjob_proto_rawDesc = []byte{ + 0x0a, 0x33, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x73, + 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x65, 0x66, 0x69, + 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x62, 0x61, 0x74, 0x63, 0x68, 0x6a, 0x6f, 0x62, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x09, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, + 0x22, 0x7a, 0x0a, 0x08, 0x42, 0x61, 0x74, 0x63, 0x68, 0x4a, 0x6f, 0x62, 0x12, 0x2b, 0x0a, 0x04, + 0x73, 0x70, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x63, 0x68, + 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x4a, 0x6f, 0x62, 0x53, + 0x70, 0x65, 0x63, 0x52, 0x04, 0x73, 0x70, 0x65, 0x63, 0x12, 0x36, 0x0a, 0x06, 0x73, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x73, 0x63, 0x68, 0x65, + 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x4a, 0x6f, 0x62, 0x53, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x48, 0x00, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x88, 0x01, + 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0xb8, 0x01, 0x0a, + 0x0c, 0x42, 0x61, 0x74, 0x63, 0x68, 0x4a, 0x6f, 0x62, 0x53, 0x70, 0x65, 0x63, 0x12, 0x25, 0x0a, + 0x0b, 0x70, 0x61, 0x72, 0x61, 0x6c, 0x6c, 0x65, 0x6c, 0x69, 0x73, 0x6d, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x05, 0x48, 0x00, 0x52, 0x0b, 0x70, 0x61, 0x72, 0x61, 0x6c, 0x6c, 0x65, 0x6c, 0x69, 0x73, + 0x6d, 0x88, 0x01, 0x01, 0x12, 0x25, 0x0a, 0x0b, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x48, 0x01, 0x52, 0x0b, 0x63, 0x6f, 0x6d, + 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x0d, 0x62, + 0x61, 0x63, 0x6b, 0x6f, 0x66, 0x66, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x05, 0x48, 0x02, 0x52, 0x0c, 0x62, 0x61, 0x63, 0x6b, 0x6f, 0x66, 0x66, 0x4c, 0x69, 0x6d, + 0x69, 0x74, 0x88, 0x01, 0x01, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6c, 0x6c, + 0x65, 0x6c, 0x69, 0x73, 0x6d, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x62, 0x61, 0x63, 0x6b, 0x6f, 0x66, + 0x66, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x22, 0x5e, 0x0a, 0x0e, 0x42, 0x61, 0x74, 0x63, 0x68, + 0x4a, 0x6f, 0x62, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x63, 0x74, + 0x69, 0x76, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x76, + 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x75, 0x63, 0x63, 0x65, 0x65, 0x64, 0x65, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x73, 0x75, 0x63, 0x63, 0x65, 0x65, 0x64, 0x65, 0x64, 0x12, + 0x16, 0x0a, 0x06, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x06, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x42, 0x48, 0x5a, 0x46, 0x67, 0x69, 0x74, 0x68, 0x75, + 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x72, 0x61, 0x6e, 0x67, 0x6f, 0x64, 0x62, 0x2f, 0x6b, + 0x75, 0x62, 0x65, 0x2d, 0x61, 0x72, 0x61, 0x6e, 0x67, 0x6f, 0x64, 0x62, 0x2f, 0x69, 0x6e, 0x74, + 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, + 0x6c, 0x65, 0x72, 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, + 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_integrations_scheduler_v1_definition_batchjob_proto_rawDescOnce sync.Once + file_integrations_scheduler_v1_definition_batchjob_proto_rawDescData = file_integrations_scheduler_v1_definition_batchjob_proto_rawDesc +) + +func file_integrations_scheduler_v1_definition_batchjob_proto_rawDescGZIP() []byte { + file_integrations_scheduler_v1_definition_batchjob_proto_rawDescOnce.Do(func() { + file_integrations_scheduler_v1_definition_batchjob_proto_rawDescData = protoimpl.X.CompressGZIP(file_integrations_scheduler_v1_definition_batchjob_proto_rawDescData) + }) + return file_integrations_scheduler_v1_definition_batchjob_proto_rawDescData +} + +var file_integrations_scheduler_v1_definition_batchjob_proto_msgTypes = make([]protoimpl.MessageInfo, 3) +var file_integrations_scheduler_v1_definition_batchjob_proto_goTypes = []interface{}{ + (*BatchJob)(nil), // 0: scheduler.BatchJob + (*BatchJobSpec)(nil), // 1: scheduler.BatchJobSpec + (*BatchJobStatus)(nil), // 2: scheduler.BatchJobStatus +} +var file_integrations_scheduler_v1_definition_batchjob_proto_depIdxs = []int32{ + 1, // 0: scheduler.BatchJob.spec:type_name -> scheduler.BatchJobSpec + 2, // 1: scheduler.BatchJob.status:type_name -> scheduler.BatchJobStatus + 2, // [2:2] is the sub-list for method output_type + 2, // [2:2] is the sub-list for method input_type + 2, // [2:2] is the sub-list for extension type_name + 2, // [2:2] is the sub-list for extension extendee + 0, // [0:2] is the sub-list for field type_name +} + +func init() { file_integrations_scheduler_v1_definition_batchjob_proto_init() } +func file_integrations_scheduler_v1_definition_batchjob_proto_init() { + if File_integrations_scheduler_v1_definition_batchjob_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_integrations_scheduler_v1_definition_batchjob_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BatchJob); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_integrations_scheduler_v1_definition_batchjob_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BatchJobSpec); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_integrations_scheduler_v1_definition_batchjob_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BatchJobStatus); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + file_integrations_scheduler_v1_definition_batchjob_proto_msgTypes[0].OneofWrappers = []interface{}{} + file_integrations_scheduler_v1_definition_batchjob_proto_msgTypes[1].OneofWrappers = []interface{}{} + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_integrations_scheduler_v1_definition_batchjob_proto_rawDesc, + NumEnums: 0, + NumMessages: 3, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_integrations_scheduler_v1_definition_batchjob_proto_goTypes, + DependencyIndexes: file_integrations_scheduler_v1_definition_batchjob_proto_depIdxs, + MessageInfos: file_integrations_scheduler_v1_definition_batchjob_proto_msgTypes, + }.Build() + File_integrations_scheduler_v1_definition_batchjob_proto = out.File + file_integrations_scheduler_v1_definition_batchjob_proto_rawDesc = nil + file_integrations_scheduler_v1_definition_batchjob_proto_goTypes = nil + file_integrations_scheduler_v1_definition_batchjob_proto_depIdxs = nil +} diff --git a/integrations/scheduler/v1/definition/batchjob.proto b/integrations/scheduler/v1/definition/batchjob.proto new file mode 100644 index 000000000..51492a6cc --- /dev/null +++ b/integrations/scheduler/v1/definition/batchjob.proto @@ -0,0 +1,58 @@ +// +// DISCLAIMER +// +// Copyright 2024 ArangoDB GmbH, Cologne, Germany +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Copyright holder is ArangoDB GmbH, Cologne, Germany +// + +syntax = "proto3"; + +package scheduler; + +option go_package = "github.com/arangodb/kube-arangodb/integrations/scheduler/v1/definition"; + +// Keeps information about Kubernetes Batch/V1 Job +message BatchJob { + // Keeps BatchJob settings + BatchJobSpec spec = 1; + + // Keeps current BatchJob Status + optional BatchJobStatus status = 2; +} + +// Information about BatchJob run settings, like completions and parallelism +message BatchJobSpec { + // Number of concurrent Pods which are started within a job. Defaults to 1 + optional int32 parallelism = 1; + + // Number of expected completed runs. Defaults to 1 + optional int32 completions = 2; + + // Number of allowed Pod failures. Defaults to 0 + optional int32 backoff_limit = 3; +} + +// Information about BatchJob Status +message BatchJobStatus { + // Number of active and running Pods within BatchJob + int32 active = 1; + + // Number of completed Pods withing BatchJob + int32 succeeded = 2; + + // Number of failed Pods within BatchJob + int32 failed = 3; +} diff --git a/integrations/scheduler/v1/definition/common.pb.go b/integrations/scheduler/v1/definition/common.pb.go new file mode 100644 index 000000000..6a2ed6844 --- /dev/null +++ b/integrations/scheduler/v1/definition/common.pb.go @@ -0,0 +1,465 @@ +// +// DISCLAIMER +// +// Copyright 2024 ArangoDB GmbH, Cologne, Germany +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Copyright holder is ArangoDB GmbH, Cologne, Germany +// + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.26.0 +// protoc v3.21.1 +// source: integrations/scheduler/v1/definition/common.proto + +package definition + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// Common base of the Jobs +type JobBase struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Map of the Labels assigned to the job. Used for Profile selection + Labels map[string]string `protobuf:"bytes,1,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + // List of additional profiles assigned to Job + Profiles []string `protobuf:"bytes,2,rep,name=profiles,proto3" json:"profiles,omitempty"` +} + +func (x *JobBase) Reset() { + *x = JobBase{} + if protoimpl.UnsafeEnabled { + mi := &file_integrations_scheduler_v1_definition_common_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *JobBase) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*JobBase) ProtoMessage() {} + +func (x *JobBase) ProtoReflect() protoreflect.Message { + mi := &file_integrations_scheduler_v1_definition_common_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use JobBase.ProtoReflect.Descriptor instead. +func (*JobBase) Descriptor() ([]byte, []int) { + return file_integrations_scheduler_v1_definition_common_proto_rawDescGZIP(), []int{0} +} + +func (x *JobBase) GetLabels() map[string]string { + if x != nil { + return x.Labels + } + return nil +} + +func (x *JobBase) GetProfiles() []string { + if x != nil { + return x.Profiles + } + return nil +} + +// Basic information about Job +type Metadata struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Name of the job + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // Optionally extends name of the job with random characters + GenerateName *bool `protobuf:"varint,2,opt,name=generate_name,json=generateName,proto3,oneof" json:"generate_name,omitempty"` +} + +func (x *Metadata) Reset() { + *x = Metadata{} + if protoimpl.UnsafeEnabled { + mi := &file_integrations_scheduler_v1_definition_common_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Metadata) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Metadata) ProtoMessage() {} + +func (x *Metadata) ProtoReflect() protoreflect.Message { + mi := &file_integrations_scheduler_v1_definition_common_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Metadata.ProtoReflect.Descriptor instead. +func (*Metadata) Descriptor() ([]byte, []int) { + return file_integrations_scheduler_v1_definition_common_proto_rawDescGZIP(), []int{1} +} + +func (x *Metadata) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *Metadata) GetGenerateName() bool { + if x != nil && x.GenerateName != nil { + return *x.GenerateName + } + return false +} + +// Basic information about container +type ContainerBase struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Container Image used to run container + Image *string `protobuf:"bytes,1,opt,name=image,proto3,oneof" json:"image,omitempty"` + // Arguments passed to the container + Args []string `protobuf:"bytes,2,rep,name=args,proto3" json:"args,omitempty"` + // EnvironmentVariables passed to the container + EnvironmentVariables map[string]string `protobuf:"bytes,3,rep,name=environment_variables,json=environmentVariables,proto3" json:"environment_variables,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` +} + +func (x *ContainerBase) Reset() { + *x = ContainerBase{} + if protoimpl.UnsafeEnabled { + mi := &file_integrations_scheduler_v1_definition_common_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ContainerBase) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ContainerBase) ProtoMessage() {} + +func (x *ContainerBase) ProtoReflect() protoreflect.Message { + mi := &file_integrations_scheduler_v1_definition_common_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ContainerBase.ProtoReflect.Descriptor instead. +func (*ContainerBase) Descriptor() ([]byte, []int) { + return file_integrations_scheduler_v1_definition_common_proto_rawDescGZIP(), []int{2} +} + +func (x *ContainerBase) GetImage() string { + if x != nil && x.Image != nil { + return *x.Image + } + return "" +} + +func (x *ContainerBase) GetArgs() []string { + if x != nil { + return x.Args + } + return nil +} + +func (x *ContainerBase) GetEnvironmentVariables() map[string]string { + if x != nil { + return x.EnvironmentVariables + } + return nil +} + +// Common Spec of the Schedule request +type Spec struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Keeps requested Metadata + Metadata *Metadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"` + // Keeps requested Job base + Job *JobBase `protobuf:"bytes,2,opt,name=job,proto3" json:"job,omitempty"` + // Keeps map of the containers + Containers map[string]*ContainerBase `protobuf:"bytes,3,rep,name=containers,proto3" json:"containers,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` +} + +func (x *Spec) Reset() { + *x = Spec{} + if protoimpl.UnsafeEnabled { + mi := &file_integrations_scheduler_v1_definition_common_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Spec) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Spec) ProtoMessage() {} + +func (x *Spec) ProtoReflect() protoreflect.Message { + mi := &file_integrations_scheduler_v1_definition_common_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Spec.ProtoReflect.Descriptor instead. +func (*Spec) Descriptor() ([]byte, []int) { + return file_integrations_scheduler_v1_definition_common_proto_rawDescGZIP(), []int{3} +} + +func (x *Spec) GetMetadata() *Metadata { + if x != nil { + return x.Metadata + } + return nil +} + +func (x *Spec) GetJob() *JobBase { + if x != nil { + return x.Job + } + return nil +} + +func (x *Spec) GetContainers() map[string]*ContainerBase { + if x != nil { + return x.Containers + } + return nil +} + +var File_integrations_scheduler_v1_definition_common_proto protoreflect.FileDescriptor + +var file_integrations_scheduler_v1_definition_common_proto_rawDesc = []byte{ + 0x0a, 0x31, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x73, + 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x65, 0x66, 0x69, + 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x12, 0x09, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x22, 0x98, + 0x01, 0x0a, 0x07, 0x4a, 0x6f, 0x62, 0x42, 0x61, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x06, 0x6c, 0x61, + 0x62, 0x65, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x73, 0x63, 0x68, + 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x4a, 0x6f, 0x62, 0x42, 0x61, 0x73, 0x65, 0x2e, 0x4c, + 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, + 0x6c, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x02, + 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x1a, 0x39, + 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, + 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, + 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x5a, 0x0a, 0x08, 0x4d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x28, 0x0a, 0x0d, 0x67, 0x65, 0x6e, + 0x65, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, + 0x48, 0x00, 0x52, 0x0c, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, + 0x88, 0x01, 0x01, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, + 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xfa, 0x01, 0x0a, 0x0d, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, + 0x6e, 0x65, 0x72, 0x42, 0x61, 0x73, 0x65, 0x12, 0x19, 0x0a, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x88, + 0x01, 0x01, 0x12, 0x12, 0x0a, 0x04, 0x61, 0x72, 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, + 0x52, 0x04, 0x61, 0x72, 0x67, 0x73, 0x12, 0x67, 0x0a, 0x15, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, + 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x18, + 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, + 0x72, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x42, 0x61, 0x73, 0x65, 0x2e, + 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, + 0x62, 0x6c, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x14, 0x65, 0x6e, 0x76, 0x69, 0x72, + 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x1a, + 0x47, 0x0a, 0x19, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x56, 0x61, + 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, + 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, + 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x69, 0x6d, 0x61, + 0x67, 0x65, 0x22, 0xf7, 0x01, 0x0a, 0x04, 0x53, 0x70, 0x65, 0x63, 0x12, 0x2f, 0x0a, 0x08, 0x6d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, + 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x24, 0x0a, 0x03, + 0x6a, 0x6f, 0x62, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x73, 0x63, 0x68, 0x65, + 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x4a, 0x6f, 0x62, 0x42, 0x61, 0x73, 0x65, 0x52, 0x03, 0x6a, + 0x6f, 0x62, 0x12, 0x3f, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, + 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, + 0x65, 0x72, 0x2e, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, + 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, + 0x65, 0x72, 0x73, 0x1a, 0x57, 0x0a, 0x0f, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, + 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2e, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, + 0x6c, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x42, 0x61, 0x73, + 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x48, 0x5a, 0x46, + 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x72, 0x61, 0x6e, 0x67, + 0x6f, 0x64, 0x62, 0x2f, 0x6b, 0x75, 0x62, 0x65, 0x2d, 0x61, 0x72, 0x61, 0x6e, 0x67, 0x6f, 0x64, + 0x62, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x73, + 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x65, 0x66, 0x69, + 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_integrations_scheduler_v1_definition_common_proto_rawDescOnce sync.Once + file_integrations_scheduler_v1_definition_common_proto_rawDescData = file_integrations_scheduler_v1_definition_common_proto_rawDesc +) + +func file_integrations_scheduler_v1_definition_common_proto_rawDescGZIP() []byte { + file_integrations_scheduler_v1_definition_common_proto_rawDescOnce.Do(func() { + file_integrations_scheduler_v1_definition_common_proto_rawDescData = protoimpl.X.CompressGZIP(file_integrations_scheduler_v1_definition_common_proto_rawDescData) + }) + return file_integrations_scheduler_v1_definition_common_proto_rawDescData +} + +var file_integrations_scheduler_v1_definition_common_proto_msgTypes = make([]protoimpl.MessageInfo, 7) +var file_integrations_scheduler_v1_definition_common_proto_goTypes = []interface{}{ + (*JobBase)(nil), // 0: scheduler.JobBase + (*Metadata)(nil), // 1: scheduler.Metadata + (*ContainerBase)(nil), // 2: scheduler.ContainerBase + (*Spec)(nil), // 3: scheduler.Spec + nil, // 4: scheduler.JobBase.LabelsEntry + nil, // 5: scheduler.ContainerBase.EnvironmentVariablesEntry + nil, // 6: scheduler.Spec.ContainersEntry +} +var file_integrations_scheduler_v1_definition_common_proto_depIdxs = []int32{ + 4, // 0: scheduler.JobBase.labels:type_name -> scheduler.JobBase.LabelsEntry + 5, // 1: scheduler.ContainerBase.environment_variables:type_name -> scheduler.ContainerBase.EnvironmentVariablesEntry + 1, // 2: scheduler.Spec.metadata:type_name -> scheduler.Metadata + 0, // 3: scheduler.Spec.job:type_name -> scheduler.JobBase + 6, // 4: scheduler.Spec.containers:type_name -> scheduler.Spec.ContainersEntry + 2, // 5: scheduler.Spec.ContainersEntry.value:type_name -> scheduler.ContainerBase + 6, // [6:6] is the sub-list for method output_type + 6, // [6:6] is the sub-list for method input_type + 6, // [6:6] is the sub-list for extension type_name + 6, // [6:6] is the sub-list for extension extendee + 0, // [0:6] is the sub-list for field type_name +} + +func init() { file_integrations_scheduler_v1_definition_common_proto_init() } +func file_integrations_scheduler_v1_definition_common_proto_init() { + if File_integrations_scheduler_v1_definition_common_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_integrations_scheduler_v1_definition_common_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*JobBase); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_integrations_scheduler_v1_definition_common_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Metadata); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_integrations_scheduler_v1_definition_common_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ContainerBase); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_integrations_scheduler_v1_definition_common_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Spec); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + file_integrations_scheduler_v1_definition_common_proto_msgTypes[1].OneofWrappers = []interface{}{} + file_integrations_scheduler_v1_definition_common_proto_msgTypes[2].OneofWrappers = []interface{}{} + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_integrations_scheduler_v1_definition_common_proto_rawDesc, + NumEnums: 0, + NumMessages: 7, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_integrations_scheduler_v1_definition_common_proto_goTypes, + DependencyIndexes: file_integrations_scheduler_v1_definition_common_proto_depIdxs, + MessageInfos: file_integrations_scheduler_v1_definition_common_proto_msgTypes, + }.Build() + File_integrations_scheduler_v1_definition_common_proto = out.File + file_integrations_scheduler_v1_definition_common_proto_rawDesc = nil + file_integrations_scheduler_v1_definition_common_proto_goTypes = nil + file_integrations_scheduler_v1_definition_common_proto_depIdxs = nil +} diff --git a/integrations/scheduler/v1/definition/common.proto b/integrations/scheduler/v1/definition/common.proto new file mode 100644 index 000000000..ab83b0bbb --- /dev/null +++ b/integrations/scheduler/v1/definition/common.proto @@ -0,0 +1,67 @@ +// +// DISCLAIMER +// +// Copyright 2024 ArangoDB GmbH, Cologne, Germany +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Copyright holder is ArangoDB GmbH, Cologne, Germany +// + +syntax = "proto3"; + +package scheduler; + +option go_package = "github.com/arangodb/kube-arangodb/integrations/scheduler/v1/definition"; + +// Common base of the Jobs +message JobBase { + // Map of the Labels assigned to the job. Used for Profile selection + map labels = 1; + + // List of additional profiles assigned to Job + repeated string profiles = 2; +} + +// Basic information about Job +message Metadata { + // Name of the job + string name = 1; + + // Optionally extends name of the job with random characters + optional bool generate_name = 2; +} + +// Basic information about container +message ContainerBase { + // Container Image used to run container + optional string image = 1; + + // Arguments passed to the container + repeated string args = 2; + + // EnvironmentVariables passed to the container + map environment_variables = 3; +} + +// Common Spec of the Schedule request +message Spec { + // Keeps requested Metadata + Metadata metadata = 1; + + // Keeps requested Job base + JobBase job = 2; + + // Keeps map of the containers + map containers = 3; +} diff --git a/integrations/scheduler/v1/definition/consts.go b/integrations/scheduler/v1/definition/consts.go new file mode 100644 index 000000000..501051c2f --- /dev/null +++ b/integrations/scheduler/v1/definition/consts.go @@ -0,0 +1,25 @@ +// +// DISCLAIMER +// +// Copyright 2024 ArangoDB GmbH, Cologne, Germany +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Copyright holder is ArangoDB GmbH, Cologne, Germany +// + +package definition + +const ( + Name = "scheduler.v1" +) diff --git a/integrations/scheduler/v1/definition/cronjob.pb.go b/integrations/scheduler/v1/definition/cronjob.pb.go new file mode 100644 index 000000000..6b32da840 --- /dev/null +++ b/integrations/scheduler/v1/definition/cronjob.pb.go @@ -0,0 +1,255 @@ +// +// DISCLAIMER +// +// Copyright 2024 ArangoDB GmbH, Cologne, Germany +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Copyright holder is ArangoDB GmbH, Cologne, Germany +// + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.26.0 +// protoc v3.21.1 +// source: integrations/scheduler/v1/definition/cronjob.proto + +package definition + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// Keeps information about Kubernetes Batch/V1 CronJob +type CronJob struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Keeps the CronJob Settings + Spec *CronJobSpec `protobuf:"bytes,1,opt,name=spec,proto3" json:"spec,omitempty"` +} + +func (x *CronJob) Reset() { + *x = CronJob{} + if protoimpl.UnsafeEnabled { + mi := &file_integrations_scheduler_v1_definition_cronjob_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CronJob) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CronJob) ProtoMessage() {} + +func (x *CronJob) ProtoReflect() protoreflect.Message { + mi := &file_integrations_scheduler_v1_definition_cronjob_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CronJob.ProtoReflect.Descriptor instead. +func (*CronJob) Descriptor() ([]byte, []int) { + return file_integrations_scheduler_v1_definition_cronjob_proto_rawDescGZIP(), []int{0} +} + +func (x *CronJob) GetSpec() *CronJobSpec { + if x != nil { + return x.Spec + } + return nil +} + +// Information about CronJob run settings +type CronJobSpec struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Schedule definition + Schedule string `protobuf:"bytes,1,opt,name=schedule,proto3" json:"schedule,omitempty"` + // Keeps BatchJob settings + Job *BatchJobSpec `protobuf:"bytes,2,opt,name=job,proto3" json:"job,omitempty"` +} + +func (x *CronJobSpec) Reset() { + *x = CronJobSpec{} + if protoimpl.UnsafeEnabled { + mi := &file_integrations_scheduler_v1_definition_cronjob_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CronJobSpec) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CronJobSpec) ProtoMessage() {} + +func (x *CronJobSpec) ProtoReflect() protoreflect.Message { + mi := &file_integrations_scheduler_v1_definition_cronjob_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CronJobSpec.ProtoReflect.Descriptor instead. +func (*CronJobSpec) Descriptor() ([]byte, []int) { + return file_integrations_scheduler_v1_definition_cronjob_proto_rawDescGZIP(), []int{1} +} + +func (x *CronJobSpec) GetSchedule() string { + if x != nil { + return x.Schedule + } + return "" +} + +func (x *CronJobSpec) GetJob() *BatchJobSpec { + if x != nil { + return x.Job + } + return nil +} + +var File_integrations_scheduler_v1_definition_cronjob_proto protoreflect.FileDescriptor + +var file_integrations_scheduler_v1_definition_cronjob_proto_rawDesc = []byte{ + 0x0a, 0x32, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x73, + 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x65, 0x66, 0x69, + 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x63, 0x72, 0x6f, 0x6e, 0x6a, 0x6f, 0x62, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x09, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x1a, + 0x33, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x73, 0x63, + 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x65, 0x66, 0x69, 0x6e, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x62, 0x61, 0x74, 0x63, 0x68, 0x6a, 0x6f, 0x62, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x35, 0x0a, 0x07, 0x43, 0x72, 0x6f, 0x6e, 0x4a, 0x6f, 0x62, 0x12, + 0x2a, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, + 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x43, 0x72, 0x6f, 0x6e, 0x4a, 0x6f, + 0x62, 0x53, 0x70, 0x65, 0x63, 0x52, 0x04, 0x73, 0x70, 0x65, 0x63, 0x22, 0x54, 0x0a, 0x0b, 0x43, + 0x72, 0x6f, 0x6e, 0x4a, 0x6f, 0x62, 0x53, 0x70, 0x65, 0x63, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x63, + 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x63, + 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x12, 0x29, 0x0a, 0x03, 0x6a, 0x6f, 0x62, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, + 0x42, 0x61, 0x74, 0x63, 0x68, 0x4a, 0x6f, 0x62, 0x53, 0x70, 0x65, 0x63, 0x52, 0x03, 0x6a, 0x6f, + 0x62, 0x42, 0x48, 0x5a, 0x46, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x61, 0x72, 0x61, 0x6e, 0x67, 0x6f, 0x64, 0x62, 0x2f, 0x6b, 0x75, 0x62, 0x65, 0x2d, 0x61, 0x72, + 0x61, 0x6e, 0x67, 0x6f, 0x64, 0x62, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2f, 0x76, 0x31, + 0x2f, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x33, +} + +var ( + file_integrations_scheduler_v1_definition_cronjob_proto_rawDescOnce sync.Once + file_integrations_scheduler_v1_definition_cronjob_proto_rawDescData = file_integrations_scheduler_v1_definition_cronjob_proto_rawDesc +) + +func file_integrations_scheduler_v1_definition_cronjob_proto_rawDescGZIP() []byte { + file_integrations_scheduler_v1_definition_cronjob_proto_rawDescOnce.Do(func() { + file_integrations_scheduler_v1_definition_cronjob_proto_rawDescData = protoimpl.X.CompressGZIP(file_integrations_scheduler_v1_definition_cronjob_proto_rawDescData) + }) + return file_integrations_scheduler_v1_definition_cronjob_proto_rawDescData +} + +var file_integrations_scheduler_v1_definition_cronjob_proto_msgTypes = make([]protoimpl.MessageInfo, 2) +var file_integrations_scheduler_v1_definition_cronjob_proto_goTypes = []interface{}{ + (*CronJob)(nil), // 0: scheduler.CronJob + (*CronJobSpec)(nil), // 1: scheduler.CronJobSpec + (*BatchJobSpec)(nil), // 2: scheduler.BatchJobSpec +} +var file_integrations_scheduler_v1_definition_cronjob_proto_depIdxs = []int32{ + 1, // 0: scheduler.CronJob.spec:type_name -> scheduler.CronJobSpec + 2, // 1: scheduler.CronJobSpec.job:type_name -> scheduler.BatchJobSpec + 2, // [2:2] is the sub-list for method output_type + 2, // [2:2] is the sub-list for method input_type + 2, // [2:2] is the sub-list for extension type_name + 2, // [2:2] is the sub-list for extension extendee + 0, // [0:2] is the sub-list for field type_name +} + +func init() { file_integrations_scheduler_v1_definition_cronjob_proto_init() } +func file_integrations_scheduler_v1_definition_cronjob_proto_init() { + if File_integrations_scheduler_v1_definition_cronjob_proto != nil { + return + } + file_integrations_scheduler_v1_definition_batchjob_proto_init() + if !protoimpl.UnsafeEnabled { + file_integrations_scheduler_v1_definition_cronjob_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CronJob); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_integrations_scheduler_v1_definition_cronjob_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CronJobSpec); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_integrations_scheduler_v1_definition_cronjob_proto_rawDesc, + NumEnums: 0, + NumMessages: 2, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_integrations_scheduler_v1_definition_cronjob_proto_goTypes, + DependencyIndexes: file_integrations_scheduler_v1_definition_cronjob_proto_depIdxs, + MessageInfos: file_integrations_scheduler_v1_definition_cronjob_proto_msgTypes, + }.Build() + File_integrations_scheduler_v1_definition_cronjob_proto = out.File + file_integrations_scheduler_v1_definition_cronjob_proto_rawDesc = nil + file_integrations_scheduler_v1_definition_cronjob_proto_goTypes = nil + file_integrations_scheduler_v1_definition_cronjob_proto_depIdxs = nil +} diff --git a/integrations/scheduler/v1/definition/cronjob.proto b/integrations/scheduler/v1/definition/cronjob.proto new file mode 100644 index 000000000..b0f37eadc --- /dev/null +++ b/integrations/scheduler/v1/definition/cronjob.proto @@ -0,0 +1,42 @@ +// +// DISCLAIMER +// +// Copyright 2024 ArangoDB GmbH, Cologne, Germany +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Copyright holder is ArangoDB GmbH, Cologne, Germany +// + +syntax = "proto3"; + +package scheduler; + +import "integrations/scheduler/v1/definition/batchjob.proto"; + +option go_package = "github.com/arangodb/kube-arangodb/integrations/scheduler/v1/definition"; + +// Keeps information about Kubernetes Batch/V1 CronJob +message CronJob { + // Keeps the CronJob Settings + CronJobSpec spec = 1; +} + +// Information about CronJob run settings +message CronJobSpec { + // Schedule definition + string schedule = 1; + + // Keeps BatchJob settings + BatchJobSpec job = 2; +} diff --git a/integrations/scheduler/v1/definition/definition.pb.go b/integrations/scheduler/v1/definition/definition.pb.go new file mode 100644 index 000000000..a86fab87a --- /dev/null +++ b/integrations/scheduler/v1/definition/definition.pb.go @@ -0,0 +1,1485 @@ +// +// DISCLAIMER +// +// Copyright 2016-2022 ArangoDB GmbH, Cologne, Germany +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Copyright holder is ArangoDB GmbH, Cologne, Germany +// + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.26.0 +// protoc v3.21.1 +// source: integrations/scheduler/v1/definition/definition.proto + +package definition + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// Create Request +type CreateBatchJobRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Spec of the Schedule request + Spec *Spec `protobuf:"bytes,1,opt,name=spec,proto3" json:"spec,omitempty"` + // BatchJob run settings + BatchJob *BatchJobSpec `protobuf:"bytes,2,opt,name=batch_job,json=batchJob,proto3" json:"batch_job,omitempty"` +} + +func (x *CreateBatchJobRequest) Reset() { + *x = CreateBatchJobRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_integrations_scheduler_v1_definition_definition_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CreateBatchJobRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateBatchJobRequest) ProtoMessage() {} + +func (x *CreateBatchJobRequest) ProtoReflect() protoreflect.Message { + mi := &file_integrations_scheduler_v1_definition_definition_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateBatchJobRequest.ProtoReflect.Descriptor instead. +func (*CreateBatchJobRequest) Descriptor() ([]byte, []int) { + return file_integrations_scheduler_v1_definition_definition_proto_rawDescGZIP(), []int{0} +} + +func (x *CreateBatchJobRequest) GetSpec() *Spec { + if x != nil { + return x.Spec + } + return nil +} + +func (x *CreateBatchJobRequest) GetBatchJob() *BatchJobSpec { + if x != nil { + return x.BatchJob + } + return nil +} + +// Create Response +type CreateBatchJobResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Name of the scheduled job + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // List of the assigned profiles + Profiles []string `protobuf:"bytes,2,rep,name=profiles,proto3" json:"profiles,omitempty"` +} + +func (x *CreateBatchJobResponse) Reset() { + *x = CreateBatchJobResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_integrations_scheduler_v1_definition_definition_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CreateBatchJobResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateBatchJobResponse) ProtoMessage() {} + +func (x *CreateBatchJobResponse) ProtoReflect() protoreflect.Message { + mi := &file_integrations_scheduler_v1_definition_definition_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateBatchJobResponse.ProtoReflect.Descriptor instead. +func (*CreateBatchJobResponse) Descriptor() ([]byte, []int) { + return file_integrations_scheduler_v1_definition_definition_proto_rawDescGZIP(), []int{1} +} + +func (x *CreateBatchJobResponse) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *CreateBatchJobResponse) GetProfiles() []string { + if x != nil { + return x.Profiles + } + return nil +} + +// Get Request +type GetBatchJobRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Name of the scheduled job + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` +} + +func (x *GetBatchJobRequest) Reset() { + *x = GetBatchJobRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_integrations_scheduler_v1_definition_definition_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetBatchJobRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetBatchJobRequest) ProtoMessage() {} + +func (x *GetBatchJobRequest) ProtoReflect() protoreflect.Message { + mi := &file_integrations_scheduler_v1_definition_definition_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetBatchJobRequest.ProtoReflect.Descriptor instead. +func (*GetBatchJobRequest) Descriptor() ([]byte, []int) { + return file_integrations_scheduler_v1_definition_definition_proto_rawDescGZIP(), []int{2} +} + +func (x *GetBatchJobRequest) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +// Get Response +type GetBatchJobResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Defines if job was found + Exists bool `protobuf:"varint,1,opt,name=exists,proto3" json:"exists,omitempty"` + // BatchJob run settings and current status + BatchJob *BatchJob `protobuf:"bytes,2,opt,name=batch_job,json=batchJob,proto3,oneof" json:"batch_job,omitempty"` +} + +func (x *GetBatchJobResponse) Reset() { + *x = GetBatchJobResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_integrations_scheduler_v1_definition_definition_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetBatchJobResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetBatchJobResponse) ProtoMessage() {} + +func (x *GetBatchJobResponse) ProtoReflect() protoreflect.Message { + mi := &file_integrations_scheduler_v1_definition_definition_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetBatchJobResponse.ProtoReflect.Descriptor instead. +func (*GetBatchJobResponse) Descriptor() ([]byte, []int) { + return file_integrations_scheduler_v1_definition_definition_proto_rawDescGZIP(), []int{3} +} + +func (x *GetBatchJobResponse) GetExists() bool { + if x != nil { + return x.Exists + } + return false +} + +func (x *GetBatchJobResponse) GetBatchJob() *BatchJob { + if x != nil { + return x.BatchJob + } + return nil +} + +// List Request +type ListBatchJobRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *ListBatchJobRequest) Reset() { + *x = ListBatchJobRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_integrations_scheduler_v1_definition_definition_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListBatchJobRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListBatchJobRequest) ProtoMessage() {} + +func (x *ListBatchJobRequest) ProtoReflect() protoreflect.Message { + mi := &file_integrations_scheduler_v1_definition_definition_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListBatchJobRequest.ProtoReflect.Descriptor instead. +func (*ListBatchJobRequest) Descriptor() ([]byte, []int) { + return file_integrations_scheduler_v1_definition_definition_proto_rawDescGZIP(), []int{4} +} + +// List Response +type ListBatchJobResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // List of the BatchJobs + BatchJobs []string `protobuf:"bytes,1,rep,name=batch_jobs,json=batchJobs,proto3" json:"batch_jobs,omitempty"` +} + +func (x *ListBatchJobResponse) Reset() { + *x = ListBatchJobResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_integrations_scheduler_v1_definition_definition_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListBatchJobResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListBatchJobResponse) ProtoMessage() {} + +func (x *ListBatchJobResponse) ProtoReflect() protoreflect.Message { + mi := &file_integrations_scheduler_v1_definition_definition_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListBatchJobResponse.ProtoReflect.Descriptor instead. +func (*ListBatchJobResponse) Descriptor() ([]byte, []int) { + return file_integrations_scheduler_v1_definition_definition_proto_rawDescGZIP(), []int{5} +} + +func (x *ListBatchJobResponse) GetBatchJobs() []string { + if x != nil { + return x.BatchJobs + } + return nil +} + +// Delete Request +type DeleteBatchJobRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Name of the scheduled job + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // Defines if all child containers/pods should be removed together with job + DeleteChildPods *bool `protobuf:"varint,2,opt,name=delete_child_pods,json=deleteChildPods,proto3,oneof" json:"delete_child_pods,omitempty"` +} + +func (x *DeleteBatchJobRequest) Reset() { + *x = DeleteBatchJobRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_integrations_scheduler_v1_definition_definition_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DeleteBatchJobRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeleteBatchJobRequest) ProtoMessage() {} + +func (x *DeleteBatchJobRequest) ProtoReflect() protoreflect.Message { + mi := &file_integrations_scheduler_v1_definition_definition_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DeleteBatchJobRequest.ProtoReflect.Descriptor instead. +func (*DeleteBatchJobRequest) Descriptor() ([]byte, []int) { + return file_integrations_scheduler_v1_definition_definition_proto_rawDescGZIP(), []int{6} +} + +func (x *DeleteBatchJobRequest) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *DeleteBatchJobRequest) GetDeleteChildPods() bool { + if x != nil && x.DeleteChildPods != nil { + return *x.DeleteChildPods + } + return false +} + +// Delete Response +type DeleteBatchJobResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Defines if job was found + Exists bool `protobuf:"varint,1,opt,name=exists,proto3" json:"exists,omitempty"` +} + +func (x *DeleteBatchJobResponse) Reset() { + *x = DeleteBatchJobResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_integrations_scheduler_v1_definition_definition_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DeleteBatchJobResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeleteBatchJobResponse) ProtoMessage() {} + +func (x *DeleteBatchJobResponse) ProtoReflect() protoreflect.Message { + mi := &file_integrations_scheduler_v1_definition_definition_proto_msgTypes[7] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DeleteBatchJobResponse.ProtoReflect.Descriptor instead. +func (*DeleteBatchJobResponse) Descriptor() ([]byte, []int) { + return file_integrations_scheduler_v1_definition_definition_proto_rawDescGZIP(), []int{7} +} + +func (x *DeleteBatchJobResponse) GetExists() bool { + if x != nil { + return x.Exists + } + return false +} + +// Create Request +type CreateCronJobRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Spec of the Schedule request + Spec *Spec `protobuf:"bytes,1,opt,name=spec,proto3" json:"spec,omitempty"` + // CronJob run settings + CronJob *CronJobSpec `protobuf:"bytes,2,opt,name=cron_job,json=cronJob,proto3" json:"cron_job,omitempty"` +} + +func (x *CreateCronJobRequest) Reset() { + *x = CreateCronJobRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_integrations_scheduler_v1_definition_definition_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CreateCronJobRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateCronJobRequest) ProtoMessage() {} + +func (x *CreateCronJobRequest) ProtoReflect() protoreflect.Message { + mi := &file_integrations_scheduler_v1_definition_definition_proto_msgTypes[8] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateCronJobRequest.ProtoReflect.Descriptor instead. +func (*CreateCronJobRequest) Descriptor() ([]byte, []int) { + return file_integrations_scheduler_v1_definition_definition_proto_rawDescGZIP(), []int{8} +} + +func (x *CreateCronJobRequest) GetSpec() *Spec { + if x != nil { + return x.Spec + } + return nil +} + +func (x *CreateCronJobRequest) GetCronJob() *CronJobSpec { + if x != nil { + return x.CronJob + } + return nil +} + +// Create Response +type CreateCronJobResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Name of the scheduled job + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // List of the assigned profiles + Profiles []string `protobuf:"bytes,2,rep,name=profiles,proto3" json:"profiles,omitempty"` +} + +func (x *CreateCronJobResponse) Reset() { + *x = CreateCronJobResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_integrations_scheduler_v1_definition_definition_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CreateCronJobResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateCronJobResponse) ProtoMessage() {} + +func (x *CreateCronJobResponse) ProtoReflect() protoreflect.Message { + mi := &file_integrations_scheduler_v1_definition_definition_proto_msgTypes[9] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateCronJobResponse.ProtoReflect.Descriptor instead. +func (*CreateCronJobResponse) Descriptor() ([]byte, []int) { + return file_integrations_scheduler_v1_definition_definition_proto_rawDescGZIP(), []int{9} +} + +func (x *CreateCronJobResponse) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *CreateCronJobResponse) GetProfiles() []string { + if x != nil { + return x.Profiles + } + return nil +} + +// Get Request +type GetCronJobRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Name of the scheduled job + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` +} + +func (x *GetCronJobRequest) Reset() { + *x = GetCronJobRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_integrations_scheduler_v1_definition_definition_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetCronJobRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetCronJobRequest) ProtoMessage() {} + +func (x *GetCronJobRequest) ProtoReflect() protoreflect.Message { + mi := &file_integrations_scheduler_v1_definition_definition_proto_msgTypes[10] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetCronJobRequest.ProtoReflect.Descriptor instead. +func (*GetCronJobRequest) Descriptor() ([]byte, []int) { + return file_integrations_scheduler_v1_definition_definition_proto_rawDescGZIP(), []int{10} +} + +func (x *GetCronJobRequest) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +// Get Response +type GetCronJobResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Defines if job was found + Exists bool `protobuf:"varint,1,opt,name=exists,proto3" json:"exists,omitempty"` + // CronJob run settings and current status + CronJob *CronJob `protobuf:"bytes,2,opt,name=cron_job,json=cronJob,proto3,oneof" json:"cron_job,omitempty"` + // Keeps list of created BatchJobs + BatchJobs []string `protobuf:"bytes,3,rep,name=batch_jobs,json=batchJobs,proto3" json:"batch_jobs,omitempty"` +} + +func (x *GetCronJobResponse) Reset() { + *x = GetCronJobResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_integrations_scheduler_v1_definition_definition_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetCronJobResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetCronJobResponse) ProtoMessage() {} + +func (x *GetCronJobResponse) ProtoReflect() protoreflect.Message { + mi := &file_integrations_scheduler_v1_definition_definition_proto_msgTypes[11] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetCronJobResponse.ProtoReflect.Descriptor instead. +func (*GetCronJobResponse) Descriptor() ([]byte, []int) { + return file_integrations_scheduler_v1_definition_definition_proto_rawDescGZIP(), []int{11} +} + +func (x *GetCronJobResponse) GetExists() bool { + if x != nil { + return x.Exists + } + return false +} + +func (x *GetCronJobResponse) GetCronJob() *CronJob { + if x != nil { + return x.CronJob + } + return nil +} + +func (x *GetCronJobResponse) GetBatchJobs() []string { + if x != nil { + return x.BatchJobs + } + return nil +} + +// Update Request +type UpdateCronJobRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Name of the scheduled job + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // CronJob spec to be updated + Spec *CronJobSpec `protobuf:"bytes,2,opt,name=spec,proto3" json:"spec,omitempty"` +} + +func (x *UpdateCronJobRequest) Reset() { + *x = UpdateCronJobRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_integrations_scheduler_v1_definition_definition_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *UpdateCronJobRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpdateCronJobRequest) ProtoMessage() {} + +func (x *UpdateCronJobRequest) ProtoReflect() protoreflect.Message { + mi := &file_integrations_scheduler_v1_definition_definition_proto_msgTypes[12] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UpdateCronJobRequest.ProtoReflect.Descriptor instead. +func (*UpdateCronJobRequest) Descriptor() ([]byte, []int) { + return file_integrations_scheduler_v1_definition_definition_proto_rawDescGZIP(), []int{12} +} + +func (x *UpdateCronJobRequest) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *UpdateCronJobRequest) GetSpec() *CronJobSpec { + if x != nil { + return x.Spec + } + return nil +} + +// Update Response +type UpdateCronJobResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Defines if job was found + Exists bool `protobuf:"varint,1,opt,name=exists,proto3" json:"exists,omitempty"` + // CronJob run settings and current status + CronJob *CronJob `protobuf:"bytes,2,opt,name=cron_job,json=cronJob,proto3,oneof" json:"cron_job,omitempty"` +} + +func (x *UpdateCronJobResponse) Reset() { + *x = UpdateCronJobResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_integrations_scheduler_v1_definition_definition_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *UpdateCronJobResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpdateCronJobResponse) ProtoMessage() {} + +func (x *UpdateCronJobResponse) ProtoReflect() protoreflect.Message { + mi := &file_integrations_scheduler_v1_definition_definition_proto_msgTypes[13] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UpdateCronJobResponse.ProtoReflect.Descriptor instead. +func (*UpdateCronJobResponse) Descriptor() ([]byte, []int) { + return file_integrations_scheduler_v1_definition_definition_proto_rawDescGZIP(), []int{13} +} + +func (x *UpdateCronJobResponse) GetExists() bool { + if x != nil { + return x.Exists + } + return false +} + +func (x *UpdateCronJobResponse) GetCronJob() *CronJob { + if x != nil { + return x.CronJob + } + return nil +} + +// List Request +type ListCronJobRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *ListCronJobRequest) Reset() { + *x = ListCronJobRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_integrations_scheduler_v1_definition_definition_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListCronJobRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListCronJobRequest) ProtoMessage() {} + +func (x *ListCronJobRequest) ProtoReflect() protoreflect.Message { + mi := &file_integrations_scheduler_v1_definition_definition_proto_msgTypes[14] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListCronJobRequest.ProtoReflect.Descriptor instead. +func (*ListCronJobRequest) Descriptor() ([]byte, []int) { + return file_integrations_scheduler_v1_definition_definition_proto_rawDescGZIP(), []int{14} +} + +// List Response +type ListCronJobResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // List of the CronJobs + CronJobs []string `protobuf:"bytes,1,rep,name=cron_jobs,json=cronJobs,proto3" json:"cron_jobs,omitempty"` +} + +func (x *ListCronJobResponse) Reset() { + *x = ListCronJobResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_integrations_scheduler_v1_definition_definition_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListCronJobResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListCronJobResponse) ProtoMessage() {} + +func (x *ListCronJobResponse) ProtoReflect() protoreflect.Message { + mi := &file_integrations_scheduler_v1_definition_definition_proto_msgTypes[15] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListCronJobResponse.ProtoReflect.Descriptor instead. +func (*ListCronJobResponse) Descriptor() ([]byte, []int) { + return file_integrations_scheduler_v1_definition_definition_proto_rawDescGZIP(), []int{15} +} + +func (x *ListCronJobResponse) GetCronJobs() []string { + if x != nil { + return x.CronJobs + } + return nil +} + +// Delete Request +type DeleteCronJobRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Name of the scheduled job + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // Defines if all child containers/pods should be removed together with job + DeleteChildPods *bool `protobuf:"varint,2,opt,name=delete_child_pods,json=deleteChildPods,proto3,oneof" json:"delete_child_pods,omitempty"` +} + +func (x *DeleteCronJobRequest) Reset() { + *x = DeleteCronJobRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_integrations_scheduler_v1_definition_definition_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DeleteCronJobRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeleteCronJobRequest) ProtoMessage() {} + +func (x *DeleteCronJobRequest) ProtoReflect() protoreflect.Message { + mi := &file_integrations_scheduler_v1_definition_definition_proto_msgTypes[16] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DeleteCronJobRequest.ProtoReflect.Descriptor instead. +func (*DeleteCronJobRequest) Descriptor() ([]byte, []int) { + return file_integrations_scheduler_v1_definition_definition_proto_rawDescGZIP(), []int{16} +} + +func (x *DeleteCronJobRequest) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *DeleteCronJobRequest) GetDeleteChildPods() bool { + if x != nil && x.DeleteChildPods != nil { + return *x.DeleteChildPods + } + return false +} + +// Delete Response +type DeleteCronJobResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Defines if job was found + Exists bool `protobuf:"varint,1,opt,name=exists,proto3" json:"exists,omitempty"` +} + +func (x *DeleteCronJobResponse) Reset() { + *x = DeleteCronJobResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_integrations_scheduler_v1_definition_definition_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DeleteCronJobResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeleteCronJobResponse) ProtoMessage() {} + +func (x *DeleteCronJobResponse) ProtoReflect() protoreflect.Message { + mi := &file_integrations_scheduler_v1_definition_definition_proto_msgTypes[17] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DeleteCronJobResponse.ProtoReflect.Descriptor instead. +func (*DeleteCronJobResponse) Descriptor() ([]byte, []int) { + return file_integrations_scheduler_v1_definition_definition_proto_rawDescGZIP(), []int{17} +} + +func (x *DeleteCronJobResponse) GetExists() bool { + if x != nil { + return x.Exists + } + return false +} + +var File_integrations_scheduler_v1_definition_definition_proto protoreflect.FileDescriptor + +var file_integrations_scheduler_v1_definition_definition_proto_rawDesc = []byte{ + 0x0a, 0x35, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x73, + 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x65, 0x66, 0x69, + 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, + 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x09, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, + 0x65, 0x72, 0x1a, 0x33, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x65, + 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x62, 0x61, 0x74, 0x63, 0x68, 0x6a, 0x6f, + 0x62, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x31, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2f, + 0x76, 0x31, 0x2f, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x63, 0x6f, + 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x32, 0x69, 0x6e, 0x74, 0x65, + 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, + 0x65, 0x72, 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x2f, 0x63, 0x72, 0x6f, 0x6e, 0x6a, 0x6f, 0x62, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x72, + 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x61, 0x74, 0x63, 0x68, 0x4a, 0x6f, 0x62, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, + 0x72, 0x2e, 0x53, 0x70, 0x65, 0x63, 0x52, 0x04, 0x73, 0x70, 0x65, 0x63, 0x12, 0x34, 0x0a, 0x09, + 0x62, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x6a, 0x6f, 0x62, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x17, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x42, 0x61, 0x74, 0x63, + 0x68, 0x4a, 0x6f, 0x62, 0x53, 0x70, 0x65, 0x63, 0x52, 0x08, 0x62, 0x61, 0x74, 0x63, 0x68, 0x4a, + 0x6f, 0x62, 0x22, 0x48, 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x61, 0x74, 0x63, + 0x68, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x22, 0x28, 0x0a, 0x12, + 0x47, 0x65, 0x74, 0x42, 0x61, 0x74, 0x63, 0x68, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x72, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x42, 0x61, 0x74, + 0x63, 0x68, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, + 0x06, 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x65, + 0x78, 0x69, 0x73, 0x74, 0x73, 0x12, 0x35, 0x0a, 0x09, 0x62, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x6a, + 0x6f, 0x62, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, + 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x4a, 0x6f, 0x62, 0x48, 0x00, 0x52, + 0x08, 0x62, 0x61, 0x74, 0x63, 0x68, 0x4a, 0x6f, 0x62, 0x88, 0x01, 0x01, 0x42, 0x0c, 0x0a, 0x0a, + 0x5f, 0x62, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x6a, 0x6f, 0x62, 0x22, 0x15, 0x0a, 0x13, 0x4c, 0x69, + 0x73, 0x74, 0x42, 0x61, 0x74, 0x63, 0x68, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x22, 0x35, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x61, 0x74, 0x63, 0x68, 0x4a, 0x6f, + 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x62, 0x61, 0x74, + 0x63, 0x68, 0x5f, 0x6a, 0x6f, 0x62, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x62, + 0x61, 0x74, 0x63, 0x68, 0x4a, 0x6f, 0x62, 0x73, 0x22, 0x72, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x42, 0x61, 0x74, 0x63, 0x68, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2f, 0x0a, 0x11, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x5f, + 0x63, 0x68, 0x69, 0x6c, 0x64, 0x5f, 0x70, 0x6f, 0x64, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, + 0x48, 0x00, 0x52, 0x0f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x68, 0x69, 0x6c, 0x64, 0x50, + 0x6f, 0x64, 0x73, 0x88, 0x01, 0x01, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x5f, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x5f, 0x70, 0x6f, 0x64, 0x73, 0x22, 0x30, 0x0a, 0x16, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x61, 0x74, 0x63, 0x68, 0x4a, 0x6f, 0x62, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, 0x22, 0x6e, + 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x72, 0x6f, 0x6e, 0x4a, 0x6f, 0x62, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, + 0x2e, 0x53, 0x70, 0x65, 0x63, 0x52, 0x04, 0x73, 0x70, 0x65, 0x63, 0x12, 0x31, 0x0a, 0x08, 0x63, + 0x72, 0x6f, 0x6e, 0x5f, 0x6a, 0x6f, 0x62, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, + 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x43, 0x72, 0x6f, 0x6e, 0x4a, 0x6f, + 0x62, 0x53, 0x70, 0x65, 0x63, 0x52, 0x07, 0x63, 0x72, 0x6f, 0x6e, 0x4a, 0x6f, 0x62, 0x22, 0x47, + 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x72, 0x6f, 0x6e, 0x4a, 0x6f, 0x62, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, + 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x70, + 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x22, 0x27, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x43, 0x72, + 0x6f, 0x6e, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x22, 0x8c, 0x01, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x43, 0x72, 0x6f, 0x6e, 0x4a, 0x6f, 0x62, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x78, 0x69, 0x73, 0x74, + 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, 0x12, + 0x32, 0x0a, 0x08, 0x63, 0x72, 0x6f, 0x6e, 0x5f, 0x6a, 0x6f, 0x62, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x12, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x43, 0x72, + 0x6f, 0x6e, 0x4a, 0x6f, 0x62, 0x48, 0x00, 0x52, 0x07, 0x63, 0x72, 0x6f, 0x6e, 0x4a, 0x6f, 0x62, + 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x0a, 0x62, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x6a, 0x6f, 0x62, + 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x62, 0x61, 0x74, 0x63, 0x68, 0x4a, 0x6f, + 0x62, 0x73, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x63, 0x72, 0x6f, 0x6e, 0x5f, 0x6a, 0x6f, 0x62, 0x22, + 0x56, 0x0a, 0x14, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x72, 0x6f, 0x6e, 0x4a, 0x6f, 0x62, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x04, 0x73, + 0x70, 0x65, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x73, 0x63, 0x68, 0x65, + 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x43, 0x72, 0x6f, 0x6e, 0x4a, 0x6f, 0x62, 0x53, 0x70, 0x65, + 0x63, 0x52, 0x04, 0x73, 0x70, 0x65, 0x63, 0x22, 0x70, 0x0a, 0x15, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x43, 0x72, 0x6f, 0x6e, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x16, 0x0a, 0x06, 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x06, 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, 0x12, 0x32, 0x0a, 0x08, 0x63, 0x72, 0x6f, 0x6e, + 0x5f, 0x6a, 0x6f, 0x62, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x73, 0x63, 0x68, + 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x43, 0x72, 0x6f, 0x6e, 0x4a, 0x6f, 0x62, 0x48, 0x00, + 0x52, 0x07, 0x63, 0x72, 0x6f, 0x6e, 0x4a, 0x6f, 0x62, 0x88, 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, + 0x5f, 0x63, 0x72, 0x6f, 0x6e, 0x5f, 0x6a, 0x6f, 0x62, 0x22, 0x14, 0x0a, 0x12, 0x4c, 0x69, 0x73, + 0x74, 0x43, 0x72, 0x6f, 0x6e, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, + 0x32, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x72, 0x6f, 0x6e, 0x4a, 0x6f, 0x62, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x72, 0x6f, 0x6e, 0x5f, 0x6a, + 0x6f, 0x62, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x63, 0x72, 0x6f, 0x6e, 0x4a, + 0x6f, 0x62, 0x73, 0x22, 0x71, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x72, 0x6f, + 0x6e, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, + 0x2f, 0x0a, 0x11, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x5f, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x5f, + 0x70, 0x6f, 0x64, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x0f, 0x64, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x43, 0x68, 0x69, 0x6c, 0x64, 0x50, 0x6f, 0x64, 0x73, 0x88, 0x01, 0x01, + 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x5f, 0x63, 0x68, 0x69, 0x6c, + 0x64, 0x5f, 0x70, 0x6f, 0x64, 0x73, 0x22, 0x2f, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x43, 0x72, 0x6f, 0x6e, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x16, 0x0a, 0x06, 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x06, 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, 0x32, 0x81, 0x06, 0x0a, 0x0b, 0x53, 0x63, 0x68, 0x65, + 0x64, 0x75, 0x6c, 0x65, 0x72, 0x56, 0x31, 0x12, 0x57, 0x0a, 0x0e, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x42, 0x61, 0x74, 0x63, 0x68, 0x4a, 0x6f, 0x62, 0x12, 0x20, 0x2e, 0x73, 0x63, 0x68, 0x65, + 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x61, 0x74, 0x63, + 0x68, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x73, 0x63, + 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x61, + 0x74, 0x63, 0x68, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, + 0x12, 0x4e, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x42, 0x61, 0x74, 0x63, 0x68, 0x4a, 0x6f, 0x62, 0x12, + 0x1d, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x47, 0x65, 0x74, 0x42, + 0x61, 0x74, 0x63, 0x68, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, + 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x61, + 0x74, 0x63, 0x68, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, + 0x12, 0x51, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x61, 0x74, 0x63, 0x68, 0x4a, 0x6f, 0x62, + 0x12, 0x1e, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x4c, 0x69, 0x73, + 0x74, 0x42, 0x61, 0x74, 0x63, 0x68, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x1f, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x4c, 0x69, 0x73, + 0x74, 0x42, 0x61, 0x74, 0x63, 0x68, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x00, 0x12, 0x57, 0x0a, 0x0e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x61, 0x74, + 0x63, 0x68, 0x4a, 0x6f, 0x62, 0x12, 0x20, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, + 0x72, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x61, 0x74, 0x63, 0x68, 0x4a, 0x6f, 0x62, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, + 0x6c, 0x65, 0x72, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x61, 0x74, 0x63, 0x68, 0x4a, + 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x54, 0x0a, 0x0d, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x72, 0x6f, 0x6e, 0x4a, 0x6f, 0x62, 0x12, 0x1f, 0x2e, + 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x43, 0x72, 0x6f, 0x6e, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, + 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x43, 0x72, 0x6f, 0x6e, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x00, 0x12, 0x4b, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x43, 0x72, 0x6f, 0x6e, 0x4a, 0x6f, 0x62, + 0x12, 0x1c, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x47, 0x65, 0x74, + 0x43, 0x72, 0x6f, 0x6e, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, + 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x72, + 0x6f, 0x6e, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, + 0x54, 0x0a, 0x0d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x72, 0x6f, 0x6e, 0x4a, 0x6f, 0x62, + 0x12, 0x1f, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x43, 0x72, 0x6f, 0x6e, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x20, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x43, 0x72, 0x6f, 0x6e, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4e, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x72, 0x6f, + 0x6e, 0x4a, 0x6f, 0x62, 0x12, 0x1d, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, + 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x72, 0x6f, 0x6e, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, + 0x4c, 0x69, 0x73, 0x74, 0x43, 0x72, 0x6f, 0x6e, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x54, 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, + 0x72, 0x6f, 0x6e, 0x4a, 0x6f, 0x62, 0x12, 0x1f, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, + 0x65, 0x72, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x72, 0x6f, 0x6e, 0x4a, 0x6f, 0x62, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, + 0x6c, 0x65, 0x72, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x72, 0x6f, 0x6e, 0x4a, 0x6f, + 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x48, 0x5a, 0x46, 0x67, + 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x72, 0x61, 0x6e, 0x67, 0x6f, + 0x64, 0x62, 0x2f, 0x6b, 0x75, 0x62, 0x65, 0x2d, 0x61, 0x72, 0x61, 0x6e, 0x67, 0x6f, 0x64, 0x62, + 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x73, 0x63, + 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x65, 0x66, 0x69, 0x6e, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_integrations_scheduler_v1_definition_definition_proto_rawDescOnce sync.Once + file_integrations_scheduler_v1_definition_definition_proto_rawDescData = file_integrations_scheduler_v1_definition_definition_proto_rawDesc +) + +func file_integrations_scheduler_v1_definition_definition_proto_rawDescGZIP() []byte { + file_integrations_scheduler_v1_definition_definition_proto_rawDescOnce.Do(func() { + file_integrations_scheduler_v1_definition_definition_proto_rawDescData = protoimpl.X.CompressGZIP(file_integrations_scheduler_v1_definition_definition_proto_rawDescData) + }) + return file_integrations_scheduler_v1_definition_definition_proto_rawDescData +} + +var file_integrations_scheduler_v1_definition_definition_proto_msgTypes = make([]protoimpl.MessageInfo, 18) +var file_integrations_scheduler_v1_definition_definition_proto_goTypes = []interface{}{ + (*CreateBatchJobRequest)(nil), // 0: scheduler.CreateBatchJobRequest + (*CreateBatchJobResponse)(nil), // 1: scheduler.CreateBatchJobResponse + (*GetBatchJobRequest)(nil), // 2: scheduler.GetBatchJobRequest + (*GetBatchJobResponse)(nil), // 3: scheduler.GetBatchJobResponse + (*ListBatchJobRequest)(nil), // 4: scheduler.ListBatchJobRequest + (*ListBatchJobResponse)(nil), // 5: scheduler.ListBatchJobResponse + (*DeleteBatchJobRequest)(nil), // 6: scheduler.DeleteBatchJobRequest + (*DeleteBatchJobResponse)(nil), // 7: scheduler.DeleteBatchJobResponse + (*CreateCronJobRequest)(nil), // 8: scheduler.CreateCronJobRequest + (*CreateCronJobResponse)(nil), // 9: scheduler.CreateCronJobResponse + (*GetCronJobRequest)(nil), // 10: scheduler.GetCronJobRequest + (*GetCronJobResponse)(nil), // 11: scheduler.GetCronJobResponse + (*UpdateCronJobRequest)(nil), // 12: scheduler.UpdateCronJobRequest + (*UpdateCronJobResponse)(nil), // 13: scheduler.UpdateCronJobResponse + (*ListCronJobRequest)(nil), // 14: scheduler.ListCronJobRequest + (*ListCronJobResponse)(nil), // 15: scheduler.ListCronJobResponse + (*DeleteCronJobRequest)(nil), // 16: scheduler.DeleteCronJobRequest + (*DeleteCronJobResponse)(nil), // 17: scheduler.DeleteCronJobResponse + (*Spec)(nil), // 18: scheduler.Spec + (*BatchJobSpec)(nil), // 19: scheduler.BatchJobSpec + (*BatchJob)(nil), // 20: scheduler.BatchJob + (*CronJobSpec)(nil), // 21: scheduler.CronJobSpec + (*CronJob)(nil), // 22: scheduler.CronJob +} +var file_integrations_scheduler_v1_definition_definition_proto_depIdxs = []int32{ + 18, // 0: scheduler.CreateBatchJobRequest.spec:type_name -> scheduler.Spec + 19, // 1: scheduler.CreateBatchJobRequest.batch_job:type_name -> scheduler.BatchJobSpec + 20, // 2: scheduler.GetBatchJobResponse.batch_job:type_name -> scheduler.BatchJob + 18, // 3: scheduler.CreateCronJobRequest.spec:type_name -> scheduler.Spec + 21, // 4: scheduler.CreateCronJobRequest.cron_job:type_name -> scheduler.CronJobSpec + 22, // 5: scheduler.GetCronJobResponse.cron_job:type_name -> scheduler.CronJob + 21, // 6: scheduler.UpdateCronJobRequest.spec:type_name -> scheduler.CronJobSpec + 22, // 7: scheduler.UpdateCronJobResponse.cron_job:type_name -> scheduler.CronJob + 0, // 8: scheduler.SchedulerV1.CreateBatchJob:input_type -> scheduler.CreateBatchJobRequest + 2, // 9: scheduler.SchedulerV1.GetBatchJob:input_type -> scheduler.GetBatchJobRequest + 4, // 10: scheduler.SchedulerV1.ListBatchJob:input_type -> scheduler.ListBatchJobRequest + 6, // 11: scheduler.SchedulerV1.DeleteBatchJob:input_type -> scheduler.DeleteBatchJobRequest + 8, // 12: scheduler.SchedulerV1.CreateCronJob:input_type -> scheduler.CreateCronJobRequest + 10, // 13: scheduler.SchedulerV1.GetCronJob:input_type -> scheduler.GetCronJobRequest + 12, // 14: scheduler.SchedulerV1.UpdateCronJob:input_type -> scheduler.UpdateCronJobRequest + 14, // 15: scheduler.SchedulerV1.ListCronJob:input_type -> scheduler.ListCronJobRequest + 16, // 16: scheduler.SchedulerV1.DeleteCronJob:input_type -> scheduler.DeleteCronJobRequest + 1, // 17: scheduler.SchedulerV1.CreateBatchJob:output_type -> scheduler.CreateBatchJobResponse + 3, // 18: scheduler.SchedulerV1.GetBatchJob:output_type -> scheduler.GetBatchJobResponse + 5, // 19: scheduler.SchedulerV1.ListBatchJob:output_type -> scheduler.ListBatchJobResponse + 7, // 20: scheduler.SchedulerV1.DeleteBatchJob:output_type -> scheduler.DeleteBatchJobResponse + 9, // 21: scheduler.SchedulerV1.CreateCronJob:output_type -> scheduler.CreateCronJobResponse + 11, // 22: scheduler.SchedulerV1.GetCronJob:output_type -> scheduler.GetCronJobResponse + 13, // 23: scheduler.SchedulerV1.UpdateCronJob:output_type -> scheduler.UpdateCronJobResponse + 15, // 24: scheduler.SchedulerV1.ListCronJob:output_type -> scheduler.ListCronJobResponse + 17, // 25: scheduler.SchedulerV1.DeleteCronJob:output_type -> scheduler.DeleteCronJobResponse + 17, // [17:26] is the sub-list for method output_type + 8, // [8:17] is the sub-list for method input_type + 8, // [8:8] is the sub-list for extension type_name + 8, // [8:8] is the sub-list for extension extendee + 0, // [0:8] is the sub-list for field type_name +} + +func init() { file_integrations_scheduler_v1_definition_definition_proto_init() } +func file_integrations_scheduler_v1_definition_definition_proto_init() { + if File_integrations_scheduler_v1_definition_definition_proto != nil { + return + } + file_integrations_scheduler_v1_definition_batchjob_proto_init() + file_integrations_scheduler_v1_definition_common_proto_init() + file_integrations_scheduler_v1_definition_cronjob_proto_init() + if !protoimpl.UnsafeEnabled { + file_integrations_scheduler_v1_definition_definition_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreateBatchJobRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_integrations_scheduler_v1_definition_definition_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreateBatchJobResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_integrations_scheduler_v1_definition_definition_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetBatchJobRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_integrations_scheduler_v1_definition_definition_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetBatchJobResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_integrations_scheduler_v1_definition_definition_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListBatchJobRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_integrations_scheduler_v1_definition_definition_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListBatchJobResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_integrations_scheduler_v1_definition_definition_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeleteBatchJobRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_integrations_scheduler_v1_definition_definition_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeleteBatchJobResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_integrations_scheduler_v1_definition_definition_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreateCronJobRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_integrations_scheduler_v1_definition_definition_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreateCronJobResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_integrations_scheduler_v1_definition_definition_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetCronJobRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_integrations_scheduler_v1_definition_definition_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetCronJobResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_integrations_scheduler_v1_definition_definition_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UpdateCronJobRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_integrations_scheduler_v1_definition_definition_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UpdateCronJobResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_integrations_scheduler_v1_definition_definition_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListCronJobRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_integrations_scheduler_v1_definition_definition_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListCronJobResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_integrations_scheduler_v1_definition_definition_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeleteCronJobRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_integrations_scheduler_v1_definition_definition_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeleteCronJobResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + file_integrations_scheduler_v1_definition_definition_proto_msgTypes[3].OneofWrappers = []interface{}{} + file_integrations_scheduler_v1_definition_definition_proto_msgTypes[6].OneofWrappers = []interface{}{} + file_integrations_scheduler_v1_definition_definition_proto_msgTypes[11].OneofWrappers = []interface{}{} + file_integrations_scheduler_v1_definition_definition_proto_msgTypes[13].OneofWrappers = []interface{}{} + file_integrations_scheduler_v1_definition_definition_proto_msgTypes[16].OneofWrappers = []interface{}{} + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_integrations_scheduler_v1_definition_definition_proto_rawDesc, + NumEnums: 0, + NumMessages: 18, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_integrations_scheduler_v1_definition_definition_proto_goTypes, + DependencyIndexes: file_integrations_scheduler_v1_definition_definition_proto_depIdxs, + MessageInfos: file_integrations_scheduler_v1_definition_definition_proto_msgTypes, + }.Build() + File_integrations_scheduler_v1_definition_definition_proto = out.File + file_integrations_scheduler_v1_definition_definition_proto_rawDesc = nil + file_integrations_scheduler_v1_definition_definition_proto_goTypes = nil + file_integrations_scheduler_v1_definition_definition_proto_depIdxs = nil +} diff --git a/integrations/scheduler/v1/definition/definition.proto b/integrations/scheduler/v1/definition/definition.proto new file mode 100644 index 000000000..71d8aec9b --- /dev/null +++ b/integrations/scheduler/v1/definition/definition.proto @@ -0,0 +1,205 @@ +// +// DISCLAIMER +// +// Copyright 2016-2022 ArangoDB GmbH, Cologne, Germany +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Copyright holder is ArangoDB GmbH, Cologne, Germany +// + +syntax = "proto3"; + +package scheduler; + +import "integrations/scheduler/v1/definition/batchjob.proto"; +import "integrations/scheduler/v1/definition/common.proto"; +import "integrations/scheduler/v1/definition/cronjob.proto"; + +option go_package = "github.com/arangodb/kube-arangodb/integrations/scheduler/v1/definition"; + +// Definition of the ServiceInterface for Scheduler V1 +service SchedulerV1 { + // BatchJob + + // Creates BatchJob from specification + rpc CreateBatchJob(CreateBatchJobRequest) returns (CreateBatchJobResponse) {}; + + // Returns BatchJob. If job does not exists, Exists flag is set to false + rpc GetBatchJob(GetBatchJobRequest) returns (GetBatchJobResponse) {}; + + // Returns list of the BatchJobs + rpc ListBatchJob(ListBatchJobRequest) returns (ListBatchJobResponse) {}; + + // Deletes BatchJob. If job does not exists, Exists flag is set to false + rpc DeleteBatchJob(DeleteBatchJobRequest) returns (DeleteBatchJobResponse) {}; + + // CronJob + + // Creates CronJob from specification + rpc CreateCronJob(CreateCronJobRequest) returns (CreateCronJobResponse) {}; + + // Returns CronJob. If job does not exists, Exists flag is set to false + rpc GetCronJob(GetCronJobRequest) returns (GetCronJobResponse) {}; + + // Updates CronJob from specification + rpc UpdateCronJob(UpdateCronJobRequest) returns (UpdateCronJobResponse) {}; + + // Returns list of the CronJobs + rpc ListCronJob(ListCronJobRequest) returns (ListCronJobResponse) {}; + + // Deletes CronJob. If job does not exists, Exists flag is set to false + rpc DeleteCronJob(DeleteCronJobRequest) returns (DeleteCronJobResponse) {}; +} + +// BatchJob + +// Create Request +message CreateBatchJobRequest { + // Spec of the Schedule request + Spec spec = 1; + + // BatchJob run settings + BatchJobSpec batch_job = 2; +} + +// Create Response +message CreateBatchJobResponse { + // Name of the scheduled job + string name = 1; + + // List of the assigned profiles + repeated string profiles = 2; +} + +// Get Request +message GetBatchJobRequest { + // Name of the scheduled job + string name = 1; +} + +// Get Response +message GetBatchJobResponse { + // Defines if job was found + bool exists = 1; + + // BatchJob run settings and current status + optional BatchJob batch_job = 2; +} + +// List Request +message ListBatchJobRequest { +} + +// List Response +message ListBatchJobResponse { + + // List of the BatchJobs + repeated string batch_jobs = 1; +} + +// Delete Request +message DeleteBatchJobRequest { + // Name of the scheduled job + string name = 1; + + // Defines if all child containers/pods should be removed together with job + optional bool delete_child_pods = 2; +} + +// Delete Response +message DeleteBatchJobResponse { + // Defines if job was found + bool exists = 1; +} + +// CronJob + +// Create Request +message CreateCronJobRequest { + // Spec of the Schedule request + Spec spec = 1; + + // CronJob run settings + CronJobSpec cron_job = 2; +} + +// Create Response +message CreateCronJobResponse { + // Name of the scheduled job + string name = 1; + + // List of the assigned profiles + repeated string profiles = 2; +} + +// Get Request +message GetCronJobRequest { + // Name of the scheduled job + string name = 1; +} + +// Get Response +message GetCronJobResponse { + // Defines if job was found + bool exists = 1; + + // CronJob run settings and current status + optional CronJob cron_job = 2; + + // Keeps list of created BatchJobs + repeated string batch_jobs = 3; +} + +// Update Request +message UpdateCronJobRequest { + // Name of the scheduled job + string name = 1; + + // CronJob spec to be updated + CronJobSpec spec = 2; +} + +// Update Response +message UpdateCronJobResponse { + // Defines if job was found + bool exists = 1; + + // CronJob run settings and current status + optional CronJob cron_job = 2; +} + +// List Request +message ListCronJobRequest { +} + +// List Response +message ListCronJobResponse { + // List of the CronJobs + repeated string cron_jobs = 1; +} + +// Delete Request +message DeleteCronJobRequest { + // Name of the scheduled job + string name = 1; + + // Defines if all child containers/pods should be removed together with job + optional bool delete_child_pods = 2; +} + +// Delete Response +message DeleteCronJobResponse { + // Defines if job was found + bool exists = 1; +} \ No newline at end of file diff --git a/integrations/scheduler/v1/definition/definition_grpc.pb.go b/integrations/scheduler/v1/definition/definition_grpc.pb.go new file mode 100644 index 000000000..5d86fd505 --- /dev/null +++ b/integrations/scheduler/v1/definition/definition_grpc.pb.go @@ -0,0 +1,411 @@ +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.2.0 +// - protoc v3.21.1 +// source: integrations/scheduler/v1/definition/definition.proto + +package definition + +import ( + context "context" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +// Requires gRPC-Go v1.32.0 or later. +const _ = grpc.SupportPackageIsVersion7 + +// SchedulerV1Client is the client API for SchedulerV1 service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type SchedulerV1Client interface { + // Creates BatchJob from specification + CreateBatchJob(ctx context.Context, in *CreateBatchJobRequest, opts ...grpc.CallOption) (*CreateBatchJobResponse, error) + // Returns BatchJob. If job does not exists, Exists flag is set to false + GetBatchJob(ctx context.Context, in *GetBatchJobRequest, opts ...grpc.CallOption) (*GetBatchJobResponse, error) + // Returns list of the BatchJobs + ListBatchJob(ctx context.Context, in *ListBatchJobRequest, opts ...grpc.CallOption) (*ListBatchJobResponse, error) + // Deletes BatchJob. If job does not exists, Exists flag is set to false + DeleteBatchJob(ctx context.Context, in *DeleteBatchJobRequest, opts ...grpc.CallOption) (*DeleteBatchJobResponse, error) + // Creates CronJob from specification + CreateCronJob(ctx context.Context, in *CreateCronJobRequest, opts ...grpc.CallOption) (*CreateCronJobResponse, error) + // Returns CronJob. If job does not exists, Exists flag is set to false + GetCronJob(ctx context.Context, in *GetCronJobRequest, opts ...grpc.CallOption) (*GetCronJobResponse, error) + // Updates CronJob from specification + UpdateCronJob(ctx context.Context, in *UpdateCronJobRequest, opts ...grpc.CallOption) (*UpdateCronJobResponse, error) + // Returns list of the CronJobs + ListCronJob(ctx context.Context, in *ListCronJobRequest, opts ...grpc.CallOption) (*ListCronJobResponse, error) + // Deletes CronJob. If job does not exists, Exists flag is set to false + DeleteCronJob(ctx context.Context, in *DeleteCronJobRequest, opts ...grpc.CallOption) (*DeleteCronJobResponse, error) +} + +type schedulerV1Client struct { + cc grpc.ClientConnInterface +} + +func NewSchedulerV1Client(cc grpc.ClientConnInterface) SchedulerV1Client { + return &schedulerV1Client{cc} +} + +func (c *schedulerV1Client) CreateBatchJob(ctx context.Context, in *CreateBatchJobRequest, opts ...grpc.CallOption) (*CreateBatchJobResponse, error) { + out := new(CreateBatchJobResponse) + err := c.cc.Invoke(ctx, "/scheduler.SchedulerV1/CreateBatchJob", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *schedulerV1Client) GetBatchJob(ctx context.Context, in *GetBatchJobRequest, opts ...grpc.CallOption) (*GetBatchJobResponse, error) { + out := new(GetBatchJobResponse) + err := c.cc.Invoke(ctx, "/scheduler.SchedulerV1/GetBatchJob", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *schedulerV1Client) ListBatchJob(ctx context.Context, in *ListBatchJobRequest, opts ...grpc.CallOption) (*ListBatchJobResponse, error) { + out := new(ListBatchJobResponse) + err := c.cc.Invoke(ctx, "/scheduler.SchedulerV1/ListBatchJob", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *schedulerV1Client) DeleteBatchJob(ctx context.Context, in *DeleteBatchJobRequest, opts ...grpc.CallOption) (*DeleteBatchJobResponse, error) { + out := new(DeleteBatchJobResponse) + err := c.cc.Invoke(ctx, "/scheduler.SchedulerV1/DeleteBatchJob", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *schedulerV1Client) CreateCronJob(ctx context.Context, in *CreateCronJobRequest, opts ...grpc.CallOption) (*CreateCronJobResponse, error) { + out := new(CreateCronJobResponse) + err := c.cc.Invoke(ctx, "/scheduler.SchedulerV1/CreateCronJob", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *schedulerV1Client) GetCronJob(ctx context.Context, in *GetCronJobRequest, opts ...grpc.CallOption) (*GetCronJobResponse, error) { + out := new(GetCronJobResponse) + err := c.cc.Invoke(ctx, "/scheduler.SchedulerV1/GetCronJob", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *schedulerV1Client) UpdateCronJob(ctx context.Context, in *UpdateCronJobRequest, opts ...grpc.CallOption) (*UpdateCronJobResponse, error) { + out := new(UpdateCronJobResponse) + err := c.cc.Invoke(ctx, "/scheduler.SchedulerV1/UpdateCronJob", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *schedulerV1Client) ListCronJob(ctx context.Context, in *ListCronJobRequest, opts ...grpc.CallOption) (*ListCronJobResponse, error) { + out := new(ListCronJobResponse) + err := c.cc.Invoke(ctx, "/scheduler.SchedulerV1/ListCronJob", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *schedulerV1Client) DeleteCronJob(ctx context.Context, in *DeleteCronJobRequest, opts ...grpc.CallOption) (*DeleteCronJobResponse, error) { + out := new(DeleteCronJobResponse) + err := c.cc.Invoke(ctx, "/scheduler.SchedulerV1/DeleteCronJob", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// SchedulerV1Server is the server API for SchedulerV1 service. +// All implementations must embed UnimplementedSchedulerV1Server +// for forward compatibility +type SchedulerV1Server interface { + // Creates BatchJob from specification + CreateBatchJob(context.Context, *CreateBatchJobRequest) (*CreateBatchJobResponse, error) + // Returns BatchJob. If job does not exists, Exists flag is set to false + GetBatchJob(context.Context, *GetBatchJobRequest) (*GetBatchJobResponse, error) + // Returns list of the BatchJobs + ListBatchJob(context.Context, *ListBatchJobRequest) (*ListBatchJobResponse, error) + // Deletes BatchJob. If job does not exists, Exists flag is set to false + DeleteBatchJob(context.Context, *DeleteBatchJobRequest) (*DeleteBatchJobResponse, error) + // Creates CronJob from specification + CreateCronJob(context.Context, *CreateCronJobRequest) (*CreateCronJobResponse, error) + // Returns CronJob. If job does not exists, Exists flag is set to false + GetCronJob(context.Context, *GetCronJobRequest) (*GetCronJobResponse, error) + // Updates CronJob from specification + UpdateCronJob(context.Context, *UpdateCronJobRequest) (*UpdateCronJobResponse, error) + // Returns list of the CronJobs + ListCronJob(context.Context, *ListCronJobRequest) (*ListCronJobResponse, error) + // Deletes CronJob. If job does not exists, Exists flag is set to false + DeleteCronJob(context.Context, *DeleteCronJobRequest) (*DeleteCronJobResponse, error) + mustEmbedUnimplementedSchedulerV1Server() +} + +// UnimplementedSchedulerV1Server must be embedded to have forward compatible implementations. +type UnimplementedSchedulerV1Server struct { +} + +func (UnimplementedSchedulerV1Server) CreateBatchJob(context.Context, *CreateBatchJobRequest) (*CreateBatchJobResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method CreateBatchJob not implemented") +} +func (UnimplementedSchedulerV1Server) GetBatchJob(context.Context, *GetBatchJobRequest) (*GetBatchJobResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetBatchJob not implemented") +} +func (UnimplementedSchedulerV1Server) ListBatchJob(context.Context, *ListBatchJobRequest) (*ListBatchJobResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListBatchJob not implemented") +} +func (UnimplementedSchedulerV1Server) DeleteBatchJob(context.Context, *DeleteBatchJobRequest) (*DeleteBatchJobResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method DeleteBatchJob not implemented") +} +func (UnimplementedSchedulerV1Server) CreateCronJob(context.Context, *CreateCronJobRequest) (*CreateCronJobResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method CreateCronJob not implemented") +} +func (UnimplementedSchedulerV1Server) GetCronJob(context.Context, *GetCronJobRequest) (*GetCronJobResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetCronJob not implemented") +} +func (UnimplementedSchedulerV1Server) UpdateCronJob(context.Context, *UpdateCronJobRequest) (*UpdateCronJobResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method UpdateCronJob not implemented") +} +func (UnimplementedSchedulerV1Server) ListCronJob(context.Context, *ListCronJobRequest) (*ListCronJobResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListCronJob not implemented") +} +func (UnimplementedSchedulerV1Server) DeleteCronJob(context.Context, *DeleteCronJobRequest) (*DeleteCronJobResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method DeleteCronJob not implemented") +} +func (UnimplementedSchedulerV1Server) mustEmbedUnimplementedSchedulerV1Server() {} + +// UnsafeSchedulerV1Server may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to SchedulerV1Server will +// result in compilation errors. +type UnsafeSchedulerV1Server interface { + mustEmbedUnimplementedSchedulerV1Server() +} + +func RegisterSchedulerV1Server(s grpc.ServiceRegistrar, srv SchedulerV1Server) { + s.RegisterService(&SchedulerV1_ServiceDesc, srv) +} + +func _SchedulerV1_CreateBatchJob_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CreateBatchJobRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(SchedulerV1Server).CreateBatchJob(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/scheduler.SchedulerV1/CreateBatchJob", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(SchedulerV1Server).CreateBatchJob(ctx, req.(*CreateBatchJobRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _SchedulerV1_GetBatchJob_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetBatchJobRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(SchedulerV1Server).GetBatchJob(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/scheduler.SchedulerV1/GetBatchJob", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(SchedulerV1Server).GetBatchJob(ctx, req.(*GetBatchJobRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _SchedulerV1_ListBatchJob_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListBatchJobRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(SchedulerV1Server).ListBatchJob(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/scheduler.SchedulerV1/ListBatchJob", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(SchedulerV1Server).ListBatchJob(ctx, req.(*ListBatchJobRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _SchedulerV1_DeleteBatchJob_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(DeleteBatchJobRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(SchedulerV1Server).DeleteBatchJob(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/scheduler.SchedulerV1/DeleteBatchJob", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(SchedulerV1Server).DeleteBatchJob(ctx, req.(*DeleteBatchJobRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _SchedulerV1_CreateCronJob_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CreateCronJobRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(SchedulerV1Server).CreateCronJob(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/scheduler.SchedulerV1/CreateCronJob", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(SchedulerV1Server).CreateCronJob(ctx, req.(*CreateCronJobRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _SchedulerV1_GetCronJob_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetCronJobRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(SchedulerV1Server).GetCronJob(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/scheduler.SchedulerV1/GetCronJob", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(SchedulerV1Server).GetCronJob(ctx, req.(*GetCronJobRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _SchedulerV1_UpdateCronJob_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(UpdateCronJobRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(SchedulerV1Server).UpdateCronJob(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/scheduler.SchedulerV1/UpdateCronJob", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(SchedulerV1Server).UpdateCronJob(ctx, req.(*UpdateCronJobRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _SchedulerV1_ListCronJob_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListCronJobRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(SchedulerV1Server).ListCronJob(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/scheduler.SchedulerV1/ListCronJob", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(SchedulerV1Server).ListCronJob(ctx, req.(*ListCronJobRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _SchedulerV1_DeleteCronJob_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(DeleteCronJobRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(SchedulerV1Server).DeleteCronJob(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/scheduler.SchedulerV1/DeleteCronJob", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(SchedulerV1Server).DeleteCronJob(ctx, req.(*DeleteCronJobRequest)) + } + return interceptor(ctx, in, info, handler) +} + +// SchedulerV1_ServiceDesc is the grpc.ServiceDesc for SchedulerV1 service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var SchedulerV1_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "scheduler.SchedulerV1", + HandlerType: (*SchedulerV1Server)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "CreateBatchJob", + Handler: _SchedulerV1_CreateBatchJob_Handler, + }, + { + MethodName: "GetBatchJob", + Handler: _SchedulerV1_GetBatchJob_Handler, + }, + { + MethodName: "ListBatchJob", + Handler: _SchedulerV1_ListBatchJob_Handler, + }, + { + MethodName: "DeleteBatchJob", + Handler: _SchedulerV1_DeleteBatchJob_Handler, + }, + { + MethodName: "CreateCronJob", + Handler: _SchedulerV1_CreateCronJob_Handler, + }, + { + MethodName: "GetCronJob", + Handler: _SchedulerV1_GetCronJob_Handler, + }, + { + MethodName: "UpdateCronJob", + Handler: _SchedulerV1_UpdateCronJob_Handler, + }, + { + MethodName: "ListCronJob", + Handler: _SchedulerV1_ListCronJob_Handler, + }, + { + MethodName: "DeleteCronJob", + Handler: _SchedulerV1_DeleteCronJob_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "integrations/scheduler/v1/definition/definition.proto", +} diff --git a/integrations/scheduler/v1/implementation.go b/integrations/scheduler/v1/implementation.go new file mode 100644 index 000000000..0eec1473e --- /dev/null +++ b/integrations/scheduler/v1/implementation.go @@ -0,0 +1,504 @@ +// +// DISCLAIMER +// +// Copyright 2024 ArangoDB GmbH, Cologne, Germany +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Copyright holder is ArangoDB GmbH, Cologne, Germany +// + +package v1 + +import ( + "context" + + "google.golang.org/grpc" + batch "k8s.io/api/batch/v1" + core "k8s.io/api/core/v1" + meta "k8s.io/apimachinery/pkg/apis/meta/v1" + + pbSchedulerV1 "github.com/arangodb/kube-arangodb/integrations/scheduler/v1/definition" + "github.com/arangodb/kube-arangodb/pkg/debug_package/generators/kubernetes" + "github.com/arangodb/kube-arangodb/pkg/scheduler" + "github.com/arangodb/kube-arangodb/pkg/util" + "github.com/arangodb/kube-arangodb/pkg/util/errors" + "github.com/arangodb/kube-arangodb/pkg/util/k8sutil/kerrors" + kresources "github.com/arangodb/kube-arangodb/pkg/util/k8sutil/resources" + "github.com/arangodb/kube-arangodb/pkg/util/kclient" + "github.com/arangodb/kube-arangodb/pkg/util/svc" +) + +var _ pbSchedulerV1.SchedulerV1Server = &implementation{} +var _ svc.Handler = &implementation{} + +func New(ctx context.Context, client kclient.Client, cfg Configuration) (svc.Handler, error) { + return newInternal(ctx, client, cfg) +} + +func newInternal(ctx context.Context, client kclient.Client, cfg Configuration) (*implementation, error) { + if cfg.VerifyAccess { + // Lets Verify Access + if err := kresources.VerifyAll(ctx, client.Kubernetes(), + kresources.AccessRequest{ + Verb: "create", + Group: "batch", + Version: "v1", + Resource: "jobs", + Namespace: cfg.Namespace, + }, + kresources.AccessRequest{ + Verb: "list", + Group: "batch", + Version: "v1", + Resource: "jobs", + Namespace: cfg.Namespace, + }, + kresources.AccessRequest{ + Verb: "delete", + Group: "batch", + Version: "v1", + Resource: "jobs", + Namespace: cfg.Namespace, + }, + kresources.AccessRequest{ + Verb: "get", + Group: "batch", + Version: "v1", + Resource: "jobs", + Namespace: cfg.Namespace, + }, + kresources.AccessRequest{ + Verb: "create", + Group: "batch", + Version: "v1", + Resource: "cronjobs", + Namespace: cfg.Namespace, + }, + kresources.AccessRequest{ + Verb: "list", + Group: "batch", + Version: "v1", + Resource: "cronjobs", + Namespace: cfg.Namespace, + }, + kresources.AccessRequest{ + Verb: "delete", + Group: "batch", + Version: "v1", + Resource: "cronjobs", + Namespace: cfg.Namespace, + }, + kresources.AccessRequest{ + Verb: "get", + Group: "batch", + Version: "v1", + Resource: "cronjobs", + Namespace: cfg.Namespace, + }, + ); err != nil { + return nil, errors.WithMessagef(err, "Unable to access API") + } + } + + return &implementation{ + cfg: cfg, + client: client, + scheduler: scheduler.NewScheduler(client, cfg.Namespace), + }, nil +} + +type implementation struct { + cfg Configuration + + client kclient.Client + scheduler scheduler.Scheduler + + pbSchedulerV1.UnimplementedSchedulerV1Server +} + +func (i *implementation) Name() string { + return pbSchedulerV1.Name +} + +func (i *implementation) Register(registrar *grpc.Server) { + pbSchedulerV1.RegisterSchedulerV1Server(registrar, i) +} + +func (i *implementation) Health() svc.HealthState { + return svc.Healthy +} + +func (i *implementation) CreateBatchJob(ctx context.Context, request *pbSchedulerV1.CreateBatchJobRequest) (*pbSchedulerV1.CreateBatchJobResponse, error) { + if request == nil { + return nil, errors.Errorf("Request is nil") + } + + rendered, profiles, err := i.scheduler.Render(ctx, request.GetSpec()) + if err != nil { + return nil, err + } + + rendered.Spec.RestartPolicy = core.RestartPolicyNever + + var spec batch.Job + + spec.Namespace = i.cfg.Namespace + + if meta := request.GetSpec().GetMetadata(); meta != nil { + if util.TypeOrDefault(meta.GenerateName, false) { + spec.GenerateName = meta.Name + } else { + spec.Name = meta.Name + } + } + + spec.Spec.Template = *rendered + + if batchJob := request.GetBatchJob(); batchJob != nil { + if v := batchJob.Completions; v != nil { + spec.Spec.Completions = v + } + + if v := batchJob.Parallelism; v != nil { + spec.Spec.Parallelism = v + } + + if v := batchJob.BackoffLimit; v != nil { + spec.Spec.BackoffLimit = v + } + } + + if batchJobSpec := request.GetSpec(); batchJobSpec != nil { + if job := batchJobSpec.Job; job != nil { + spec.Labels = job.Labels + } + } + + job, err := i.client.Kubernetes().BatchV1().Jobs(i.cfg.Namespace).Create(ctx, &spec, meta.CreateOptions{}) + + if err != nil { + return nil, err + } + + return &pbSchedulerV1.CreateBatchJobResponse{ + Name: job.Name, + Profiles: profiles, + }, nil +} + +func (i *implementation) GetBatchJob(ctx context.Context, request *pbSchedulerV1.GetBatchJobRequest) (*pbSchedulerV1.GetBatchJobResponse, error) { + if request == nil { + return nil, errors.Errorf("Request is nil") + } + + job, err := i.client.Kubernetes().BatchV1().Jobs(i.cfg.Namespace).Get(ctx, request.GetName(), meta.GetOptions{}) + if err != nil { + if kerrors.IsNotFound(err) { + return &pbSchedulerV1.GetBatchJobResponse{ + Exists: false, + }, nil + } + + return nil, err + } + + return &pbSchedulerV1.GetBatchJobResponse{ + Exists: true, + + BatchJob: &pbSchedulerV1.BatchJob{ + Spec: &pbSchedulerV1.BatchJobSpec{ + Parallelism: job.Spec.Parallelism, + Completions: job.Spec.Completions, + BackoffLimit: job.Spec.BackoffLimit, + }, + Status: &pbSchedulerV1.BatchJobStatus{ + Active: job.Status.Active, + Succeeded: job.Status.Succeeded, + Failed: job.Status.Failed, + }, + }, + }, nil +} + +func (i *implementation) DeleteBatchJob(ctx context.Context, request *pbSchedulerV1.DeleteBatchJobRequest) (*pbSchedulerV1.DeleteBatchJobResponse, error) { + if request == nil { + return nil, errors.Errorf("Request is nil") + } + + var d meta.DeleteOptions + + if v := request.DeleteChildPods; v != nil { + if *v { + d.PropagationPolicy = util.NewType(meta.DeletePropagationBackground) + } else { + d.PropagationPolicy = util.NewType(meta.DeletePropagationOrphan) + } + } + + err := i.client.Kubernetes().BatchV1().Jobs(i.cfg.Namespace).Delete(ctx, request.GetName(), d) + if err != nil { + if kerrors.IsNotFound(err) { + return &pbSchedulerV1.DeleteBatchJobResponse{ + Exists: false, + }, nil + } + + return nil, err + } + + return &pbSchedulerV1.DeleteBatchJobResponse{Exists: true}, nil +} + +func (i *implementation) ListBatchJob(ctx context.Context, request *pbSchedulerV1.ListBatchJobRequest) (*pbSchedulerV1.ListBatchJobResponse, error) { + if request == nil { + return nil, errors.Errorf("Request is nil") + } + + objects, err := kubernetes.ListObjects[*batch.JobList, *batch.Job](ctx, i.client.Kubernetes().BatchV1().Jobs(i.cfg.Namespace), func(result *batch.JobList) []*batch.Job { + r := make([]*batch.Job, len(result.Items)) + + for id := range result.Items { + r[id] = result.Items[id].DeepCopy() + } + + return r + }) + + if err != nil { + return nil, err + } + + return &pbSchedulerV1.ListBatchJobResponse{ + BatchJobs: kubernetes.Extract(objects, func(in *batch.Job) string { + return in.GetName() + }), + }, nil +} + +func (i *implementation) CreateCronJob(ctx context.Context, request *pbSchedulerV1.CreateCronJobRequest) (*pbSchedulerV1.CreateCronJobResponse, error) { + if request == nil { + return nil, errors.Errorf("Request is nil") + } + + rendered, profiles, err := i.scheduler.Render(ctx, request.GetSpec()) + if err != nil { + return nil, err + } + + rendered.Spec.RestartPolicy = core.RestartPolicyNever + + var spec batch.CronJob + + spec.Namespace = i.cfg.Namespace + + if meta := request.GetSpec().GetMetadata(); meta != nil { + if util.TypeOrDefault(meta.GenerateName, false) { + spec.GenerateName = meta.Name + } else { + spec.Name = meta.Name + } + } + + spec.Spec.JobTemplate.Spec.Template = *rendered + + if cronJob := request.GetCronJob(); cronJob != nil { + spec.Spec.Schedule = cronJob.Schedule + + if batchJob := cronJob.GetJob(); batchJob != nil { + if v := batchJob.Completions; v != nil { + spec.Spec.JobTemplate.Spec.Completions = v + } + + if v := batchJob.Parallelism; v != nil { + spec.Spec.JobTemplate.Spec.Parallelism = v + } + + if v := batchJob.BackoffLimit; v != nil { + spec.Spec.JobTemplate.Spec.BackoffLimit = v + } + } + } + + if batchJobSpec := request.GetSpec(); batchJobSpec != nil { + if job := batchJobSpec.Job; job != nil { + spec.Labels = job.Labels + spec.Spec.JobTemplate.Labels = job.Labels + } + } + + job, err := i.client.Kubernetes().BatchV1().CronJobs(i.cfg.Namespace).Create(ctx, &spec, meta.CreateOptions{}) + + if err != nil { + return nil, err + } + + return &pbSchedulerV1.CreateCronJobResponse{ + Name: job.Name, + Profiles: profiles, + }, nil +} + +func (i *implementation) GetCronJob(ctx context.Context, request *pbSchedulerV1.GetCronJobRequest) (*pbSchedulerV1.GetCronJobResponse, error) { + if request == nil { + return nil, errors.Errorf("Request is nil") + } + + job, err := i.client.Kubernetes().BatchV1().CronJobs(i.cfg.Namespace).Get(ctx, request.GetName(), meta.GetOptions{}) + if err != nil { + if kerrors.IsNotFound(err) { + return &pbSchedulerV1.GetCronJobResponse{ + Exists: false, + }, nil + } + + return nil, err + } + + return &pbSchedulerV1.GetCronJobResponse{ + Exists: true, + + CronJob: &pbSchedulerV1.CronJob{ + Spec: &pbSchedulerV1.CronJobSpec{ + Schedule: job.Spec.Schedule, + + Job: &pbSchedulerV1.BatchJobSpec{ + Parallelism: job.Spec.JobTemplate.Spec.Parallelism, + Completions: job.Spec.JobTemplate.Spec.Completions, + BackoffLimit: job.Spec.JobTemplate.Spec.BackoffLimit, + }, + }, + }, + + BatchJobs: kubernetes.Extract(job.Status.Active, func(in core.ObjectReference) string { + return in.Name + }), + }, nil +} + +func (i *implementation) UpdateCronJob(ctx context.Context, request *pbSchedulerV1.UpdateCronJobRequest) (*pbSchedulerV1.UpdateCronJobResponse, error) { + if request == nil { + return nil, errors.Errorf("Request is nil") + } + + job, err := i.client.Kubernetes().BatchV1().CronJobs(i.cfg.Namespace).Get(ctx, request.GetName(), meta.GetOptions{}) + if err != nil { + if kerrors.IsNotFound(err) { + return &pbSchedulerV1.UpdateCronJobResponse{ + Exists: false, + }, nil + } + + return nil, err + } + + if cronJob := request.GetSpec(); cronJob != nil { + job.Spec.Schedule = cronJob.Schedule + + if batchJob := cronJob.GetJob(); batchJob != nil { + if v := batchJob.Completions; v != nil { + job.Spec.JobTemplate.Spec.Completions = v + } + + if v := batchJob.Parallelism; v != nil { + job.Spec.JobTemplate.Spec.Parallelism = v + } + + if v := batchJob.BackoffLimit; v != nil { + job.Spec.JobTemplate.Spec.BackoffLimit = v + } + } + } + + job, err = i.client.Kubernetes().BatchV1().CronJobs(i.cfg.Namespace).Update(ctx, job, meta.UpdateOptions{}) + if err != nil { + if kerrors.IsNotFound(err) { + return &pbSchedulerV1.UpdateCronJobResponse{ + Exists: false, + }, nil + } + + return nil, err + } + + return &pbSchedulerV1.UpdateCronJobResponse{ + Exists: true, + + CronJob: &pbSchedulerV1.CronJob{ + Spec: &pbSchedulerV1.CronJobSpec{ + Schedule: job.Spec.Schedule, + + Job: &pbSchedulerV1.BatchJobSpec{ + Parallelism: job.Spec.JobTemplate.Spec.Parallelism, + Completions: job.Spec.JobTemplate.Spec.Completions, + BackoffLimit: job.Spec.JobTemplate.Spec.BackoffLimit, + }, + }, + }, + }, nil +} + +func (i *implementation) ListCronJob(ctx context.Context, request *pbSchedulerV1.ListCronJobRequest) (*pbSchedulerV1.ListCronJobResponse, error) { + if request == nil { + return nil, errors.Errorf("Request is nil") + } + + objects, err := kubernetes.ListObjects[*batch.CronJobList, *batch.CronJob](ctx, i.client.Kubernetes().BatchV1().CronJobs(i.cfg.Namespace), func(result *batch.CronJobList) []*batch.CronJob { + r := make([]*batch.CronJob, len(result.Items)) + + for id := range result.Items { + r[id] = result.Items[id].DeepCopy() + } + + return r + }) + + if err != nil { + return nil, err + } + + return &pbSchedulerV1.ListCronJobResponse{ + CronJobs: kubernetes.Extract(objects, func(in *batch.CronJob) string { + return in.GetName() + }), + }, nil +} + +func (i *implementation) DeleteCronJob(ctx context.Context, request *pbSchedulerV1.DeleteCronJobRequest) (*pbSchedulerV1.DeleteCronJobResponse, error) { + if request == nil { + return nil, errors.Errorf("Request is nil") + } + + var d meta.DeleteOptions + + if v := request.DeleteChildPods; v != nil { + if *v { + d.PropagationPolicy = util.NewType(meta.DeletePropagationBackground) + } else { + d.PropagationPolicy = util.NewType(meta.DeletePropagationOrphan) + } + } + + err := i.client.Kubernetes().BatchV1().CronJobs(i.cfg.Namespace).Delete(ctx, request.GetName(), d) + if err != nil { + if kerrors.IsNotFound(err) { + return &pbSchedulerV1.DeleteCronJobResponse{ + Exists: false, + }, nil + } + + return nil, err + } + + return &pbSchedulerV1.DeleteCronJobResponse{Exists: true}, nil +} diff --git a/integrations/scheduler/v1/suite_test.go b/integrations/scheduler/v1/suite_test.go new file mode 100644 index 000000000..b4dd70ac4 --- /dev/null +++ b/integrations/scheduler/v1/suite_test.go @@ -0,0 +1,50 @@ +// +// DISCLAIMER +// +// Copyright 2024 ArangoDB GmbH, Cologne, Germany +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Copyright holder is ArangoDB GmbH, Cologne, Germany +// + +package v1 + +import ( + "context" + "testing" + + "github.com/stretchr/testify/require" + + pbSchedulerV1 "github.com/arangodb/kube-arangodb/integrations/scheduler/v1/definition" + "github.com/arangodb/kube-arangodb/pkg/util/kclient" + "github.com/arangodb/kube-arangodb/pkg/util/svc" + "github.com/arangodb/kube-arangodb/pkg/util/tests/tgrpc" +) + +func Handler(t *testing.T, ctx context.Context, client kclient.Client, mods ...Mod) svc.Handler { + handler, err := New(ctx, client, NewConfiguration().With(mods...)) + require.NoError(t, err) + + return handler +} + +func Client(t *testing.T, ctx context.Context, client kclient.Client, mods ...Mod) pbSchedulerV1.SchedulerV1Client { + local := svc.NewService(svc.Configuration{ + Address: "127.0.0.1:0", + }, Handler(t, ctx, client, mods...)) + + start := local.Start(ctx) + + return tgrpc.NewGRPCClient(t, ctx, pbSchedulerV1.NewSchedulerV1Client, start.Address()) +} diff --git a/internal/cr_validation_test.go b/internal/cr_validation_test.go index 262edcf9b..a4eb8dddc 100644 --- a/internal/cr_validation_test.go +++ b/internal/cr_validation_test.go @@ -1,7 +1,7 @@ // // DISCLAIMER // -// Copyright 2023 ArangoDB GmbH, Cologne, Germany +// Copyright 2023-2024 ArangoDB GmbH, Cologne, Germany // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -40,6 +40,7 @@ import ( mlApi "github.com/arangodb/kube-arangodb/pkg/apis/ml/v1alpha1" replicationv1 "github.com/arangodb/kube-arangodb/pkg/apis/replication/v1" replicationv2alpha1 "github.com/arangodb/kube-arangodb/pkg/apis/replication/v2alpha1" + schedulerApi "github.com/arangodb/kube-arangodb/pkg/apis/scheduler/v1alpha1" storagev1alpha "github.com/arangodb/kube-arangodb/pkg/apis/storage/v1alpha" "github.com/arangodb/kube-arangodb/pkg/util" ) @@ -179,6 +180,13 @@ func Test_GenerateCRValidationSchemas(t *testing.T) { }, }, }, + "scheduler-profile": { + fmt.Sprintf("%s/pkg/apis/scheduler/v1alpha1", root): { + "v1alpha1": { + schedulerApi.ArangoProfile{}.Spec, + }, + }, + }, "ml-extension": { fmt.Sprintf("%s/pkg/apis/ml/v1alpha1", root): { "v1alpha1": { diff --git a/internal/docs_test.go b/internal/docs_test.go index 37e0bc93c..37b9a7285 100644 --- a/internal/docs_test.go +++ b/internal/docs_test.go @@ -41,6 +41,7 @@ import ( deploymentApi "github.com/arangodb/kube-arangodb/pkg/apis/deployment/v1" mlApi "github.com/arangodb/kube-arangodb/pkg/apis/ml/v1alpha1" replicationApi "github.com/arangodb/kube-arangodb/pkg/apis/replication/v1" + schedulerApi "github.com/arangodb/kube-arangodb/pkg/apis/scheduler/v1alpha1" storageApi "github.com/arangodb/kube-arangodb/pkg/apis/storage/v1alpha" "github.com/arangodb/kube-arangodb/pkg/util" ) @@ -234,6 +235,22 @@ func Test_GenerateAPIDocs(t *testing.T) { }, }, }, + "scheduler": map[string]inputPackage{ + "v1alpha1": { + Types: inputPackageTypes{ + "ArangoProfile.V1Alpha1": { + "Spec": schedulerApi.ArangoProfile{}.Spec, + }, + }, + Shared: []string{ + "shared/v1", + "scheduler/v1alpha1/container", + "scheduler/v1alpha1/container/resources", + "scheduler/v1alpha1/pod", + "scheduler/v1alpha1/pod/resources", + }, + }, + }, "storage": map[string]inputPackage{ "v1alpha": { Types: inputPackageTypes{ diff --git a/manifests/arango-all.yaml b/manifests/arango-all.yaml index 4433191b5..7dc3a5c39 100644 --- a/manifests/arango-all.yaml +++ b/manifests/arango-all.yaml @@ -6,7 +6,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -19,7 +19,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -31,7 +31,7 @@ metadata: name: arangolocalstorages.storage.arangodb.com labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -61,7 +61,7 @@ metadata: name: arango-all-operator-rbac-apps labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -77,7 +77,7 @@ metadata: name: arango-all-operator-rbac-backup labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -93,7 +93,7 @@ metadata: name: arango-all-operator-rbac-crd labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -119,7 +119,7 @@ metadata: name: arango-all-operator-rbac-deployment labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -138,7 +138,7 @@ metadata: name: arango-all-operator-rbac-deployment-replication labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -157,7 +157,7 @@ metadata: name: arango-all-operator-rbac-k2kclustersync labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -173,7 +173,7 @@ metadata: name: arango-all-operator-rbac-ml labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -189,7 +189,7 @@ metadata: name: arango-all-operator-rbac-storage labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -217,7 +217,7 @@ metadata: name: arango-all-operator-rbac-apps labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -237,7 +237,7 @@ metadata: name: arango-all-operator-rbac-backup labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -257,7 +257,7 @@ metadata: name: arango-all-operator-rbac-crd labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -277,7 +277,7 @@ metadata: name: arango-all-operator-rbac-deployment labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -297,7 +297,7 @@ metadata: name: arango-all-operator-rbac-deployment-replication labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -317,7 +317,7 @@ metadata: name: arango-all-operator-rbac-k2kclustersync labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -337,7 +337,7 @@ metadata: name: arango-all-operator-rbac-ml labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -357,7 +357,7 @@ metadata: name: arango-all-operator-rbac-storage labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -378,7 +378,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -412,7 +412,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -429,7 +429,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -461,7 +461,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -478,7 +478,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -519,7 +519,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -545,7 +545,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -574,7 +574,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -592,6 +592,13 @@ rules: - "arangomlstorages/status" verbs: - "*" + - apiGroups: + - "scheduler.arangodb.com" + resources: + - "arangoprofiles" + - "arangoprofiles/status" + verbs: + - "*" - apiGroups: - "database.arangodb.com" resources: @@ -632,7 +639,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -658,7 +665,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -678,7 +685,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -699,7 +706,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -720,7 +727,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -741,7 +748,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -762,7 +769,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -783,7 +790,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -804,7 +811,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -825,7 +832,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -846,7 +853,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -881,7 +888,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -899,7 +906,7 @@ spec: metadata: labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -938,7 +945,7 @@ spec: containers: - name: operator imagePullPolicy: Always - image: arangodb/kube-arangodb:1.2.39 + image: arangodb/kube-arangodb:1.2.40 args: - --scope=legacy - --operator.deployment diff --git a/manifests/arango-apps.yaml b/manifests/arango-apps.yaml index 28aea7f45..654c60aa9 100644 --- a/manifests/arango-apps.yaml +++ b/manifests/arango-apps.yaml @@ -6,7 +6,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: apps release: apps @@ -19,7 +19,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: apps release: apps @@ -31,7 +31,7 @@ metadata: name: arango-apps-operator-rbac-apps labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: apps release: apps @@ -47,7 +47,7 @@ metadata: name: arango-apps-operator-rbac-crd labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: apps release: apps @@ -73,7 +73,7 @@ metadata: name: arango-apps-operator-rbac-apps labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: apps release: apps @@ -93,7 +93,7 @@ metadata: name: arango-apps-operator-rbac-crd labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: apps release: apps @@ -114,7 +114,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: apps release: apps @@ -148,7 +148,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: apps release: apps @@ -165,7 +165,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: apps release: apps @@ -185,7 +185,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: apps release: apps @@ -206,7 +206,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: apps release: apps @@ -241,7 +241,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: apps release: apps @@ -259,7 +259,7 @@ spec: metadata: labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: apps release: apps @@ -298,7 +298,7 @@ spec: containers: - name: operator imagePullPolicy: Always - image: arangodb/kube-arangodb:1.2.39 + image: arangodb/kube-arangodb:1.2.40 args: - --scope=legacy - --mode.single diff --git a/manifests/arango-backup.yaml b/manifests/arango-backup.yaml index dd2eb7f35..c65e114c9 100644 --- a/manifests/arango-backup.yaml +++ b/manifests/arango-backup.yaml @@ -6,7 +6,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: backup release: backup @@ -18,7 +18,7 @@ metadata: name: arango-backup-operator-rbac-backup labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: backup release: backup @@ -34,7 +34,7 @@ metadata: name: arango-backup-operator-rbac-crd labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: backup release: backup @@ -60,7 +60,7 @@ metadata: name: arango-backup-operator-rbac-backup labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: backup release: backup @@ -80,7 +80,7 @@ metadata: name: arango-backup-operator-rbac-crd labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: backup release: backup @@ -101,7 +101,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: backup release: backup @@ -133,7 +133,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: backup release: backup @@ -154,7 +154,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: backup release: backup @@ -189,7 +189,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: backup release: backup @@ -207,7 +207,7 @@ spec: metadata: labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: backup release: backup @@ -246,7 +246,7 @@ spec: containers: - name: operator imagePullPolicy: Always - image: arangodb/kube-arangodb:1.2.39 + image: arangodb/kube-arangodb:1.2.40 args: - --scope=legacy - --operator.backup diff --git a/manifests/arango-crd.yaml b/manifests/arango-crd.yaml index 7e6798217..c5d31c213 100644 --- a/manifests/arango-crd.yaml +++ b/manifests/arango-crd.yaml @@ -482,3 +482,27 @@ spec: storage: true subresources: status: {} +--- +# File: chart/kube-arangodb/crds/scheduler-profile.yaml +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + name: arangoprofiles.scheduler.arangodb.com +spec: + group: scheduler.arangodb.com + names: + kind: ArangoProfile + listKind: ArangoProfileList + plural: arangoprofiles + singular: arangoprofile + scope: Namespaced + versions: + - name: v1alpha1 + schema: + openAPIV3Schema: + type: object + x-kubernetes-preserve-unknown-fields: true + served: true + storage: true + subresources: + status: {} diff --git a/manifests/arango-deployment-replication.yaml b/manifests/arango-deployment-replication.yaml index 2e086e822..976d2b333 100644 --- a/manifests/arango-deployment-replication.yaml +++ b/manifests/arango-deployment-replication.yaml @@ -6,7 +6,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: deployment-replication release: deployment-replication @@ -18,7 +18,7 @@ metadata: name: arango-deployment-replication-operator-rbac-crd labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: deployment-replication release: deployment-replication @@ -44,7 +44,7 @@ metadata: name: arango-deployment-replication-operator-rbac-deployment-replication labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: deployment-replication release: deployment-replication @@ -63,7 +63,7 @@ metadata: name: arango-deployment-replication-operator-rbac-crd labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: deployment-replication release: deployment-replication @@ -83,7 +83,7 @@ metadata: name: arango-deployment-replication-operator-rbac-deployment-replication labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: deployment-replication release: deployment-replication @@ -104,7 +104,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: deployment-replication release: deployment-replication @@ -130,7 +130,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: deployment-replication release: deployment-replication @@ -151,7 +151,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: deployment-replication release: deployment-replication @@ -186,7 +186,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: deployment-replication release: deployment-replication @@ -204,7 +204,7 @@ spec: metadata: labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: deployment-replication release: deployment-replication @@ -243,7 +243,7 @@ spec: containers: - name: operator imagePullPolicy: Always - image: arangodb/kube-arangodb:1.2.39 + image: arangodb/kube-arangodb:1.2.40 args: - --scope=legacy - --operator.deployment-replication diff --git a/manifests/arango-deployment.yaml b/manifests/arango-deployment.yaml index 5d464c4b6..7e818713e 100644 --- a/manifests/arango-deployment.yaml +++ b/manifests/arango-deployment.yaml @@ -6,7 +6,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: deployment release: deployment @@ -18,7 +18,7 @@ metadata: name: arango-deployment-operator-rbac-crd labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: deployment release: deployment @@ -44,7 +44,7 @@ metadata: name: arango-deployment-operator-rbac-deployment labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: deployment release: deployment @@ -63,7 +63,7 @@ metadata: name: arango-deployment-operator-rbac-crd labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: deployment release: deployment @@ -83,7 +83,7 @@ metadata: name: arango-deployment-operator-rbac-deployment labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: deployment release: deployment @@ -104,7 +104,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: deployment release: deployment @@ -121,7 +121,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: deployment release: deployment @@ -162,7 +162,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: deployment release: deployment @@ -183,7 +183,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: deployment release: deployment @@ -204,7 +204,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: deployment release: deployment @@ -239,7 +239,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: deployment release: deployment @@ -257,7 +257,7 @@ spec: metadata: labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: deployment release: deployment @@ -296,7 +296,7 @@ spec: containers: - name: operator imagePullPolicy: Always - image: arangodb/kube-arangodb:1.2.39 + image: arangodb/kube-arangodb:1.2.40 args: - --scope=legacy - --operator.deployment diff --git a/manifests/arango-k2kclustersync.yaml b/manifests/arango-k2kclustersync.yaml index 41daea46a..eb27c08bc 100644 --- a/manifests/arango-k2kclustersync.yaml +++ b/manifests/arango-k2kclustersync.yaml @@ -6,7 +6,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: k2kclustersync release: k2kclustersync @@ -18,7 +18,7 @@ metadata: name: arango-k2kclustersync-operator-rbac-crd labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: k2kclustersync release: k2kclustersync @@ -44,7 +44,7 @@ metadata: name: arango-k2kclustersync-operator-rbac-k2kclustersync labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: k2kclustersync release: k2kclustersync @@ -60,7 +60,7 @@ metadata: name: arango-k2kclustersync-operator-rbac-crd labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: k2kclustersync release: k2kclustersync @@ -80,7 +80,7 @@ metadata: name: arango-k2kclustersync-operator-rbac-k2kclustersync labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: k2kclustersync release: k2kclustersync @@ -101,7 +101,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: k2kclustersync release: k2kclustersync @@ -130,7 +130,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: k2kclustersync release: k2kclustersync @@ -151,7 +151,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: k2kclustersync release: k2kclustersync @@ -186,7 +186,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: k2kclustersync release: k2kclustersync @@ -204,7 +204,7 @@ spec: metadata: labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: k2kclustersync release: k2kclustersync @@ -243,7 +243,7 @@ spec: containers: - name: operator imagePullPolicy: Always - image: arangodb/kube-arangodb:1.2.39 + image: arangodb/kube-arangodb:1.2.40 args: - --scope=legacy - --mode.single diff --git a/manifests/arango-ml.yaml b/manifests/arango-ml.yaml index 8ef29ff52..643f03f98 100644 --- a/manifests/arango-ml.yaml +++ b/manifests/arango-ml.yaml @@ -6,7 +6,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: ml release: ml @@ -18,7 +18,7 @@ metadata: name: arango-ml-operator-rbac-crd labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: ml release: ml @@ -44,7 +44,7 @@ metadata: name: arango-ml-operator-rbac-ml labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: ml release: ml @@ -60,7 +60,7 @@ metadata: name: arango-ml-operator-rbac-crd labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: ml release: ml @@ -80,7 +80,7 @@ metadata: name: arango-ml-operator-rbac-ml labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: ml release: ml @@ -101,7 +101,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: ml release: ml @@ -119,6 +119,13 @@ rules: - "arangomlstorages/status" verbs: - "*" + - apiGroups: + - "scheduler.arangodb.com" + resources: + - "arangoprofiles" + - "arangoprofiles/status" + verbs: + - "*" - apiGroups: - "database.arangodb.com" resources: @@ -159,7 +166,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: ml release: ml @@ -180,7 +187,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: ml release: ml @@ -215,7 +222,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: ml release: ml @@ -233,7 +240,7 @@ spec: metadata: labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: ml release: ml @@ -272,7 +279,7 @@ spec: containers: - name: operator imagePullPolicy: Always - image: arangodb/kube-arangodb:1.2.39 + image: arangodb/kube-arangodb:1.2.40 args: - --scope=legacy - --mode.single diff --git a/manifests/arango-storage.yaml b/manifests/arango-storage.yaml index b21c72a1b..63605c86f 100644 --- a/manifests/arango-storage.yaml +++ b/manifests/arango-storage.yaml @@ -6,7 +6,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: storage release: storage @@ -18,7 +18,7 @@ metadata: name: arangolocalstorages.storage.arangodb.com labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: storage release: storage @@ -48,7 +48,7 @@ metadata: name: arango-storage-operator-rbac-crd labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: storage release: storage @@ -74,7 +74,7 @@ metadata: name: arango-storage-operator-rbac-storage labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: storage release: storage @@ -102,7 +102,7 @@ metadata: name: arango-storage-operator-rbac-crd labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: storage release: storage @@ -122,7 +122,7 @@ metadata: name: arango-storage-operator-rbac-storage labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: storage release: storage @@ -143,7 +143,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: storage release: storage @@ -169,7 +169,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: storage release: storage @@ -190,7 +190,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: storage release: storage @@ -225,7 +225,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: storage release: storage @@ -243,7 +243,7 @@ spec: metadata: labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: storage release: storage @@ -282,7 +282,7 @@ spec: containers: - name: operator imagePullPolicy: Always - image: arangodb/kube-arangodb:1.2.39 + image: arangodb/kube-arangodb:1.2.40 args: - --scope=legacy - --operator.storage diff --git a/manifests/enterprise-all.yaml b/manifests/enterprise-all.yaml index dbe755b67..d1be5f99f 100644 --- a/manifests/enterprise-all.yaml +++ b/manifests/enterprise-all.yaml @@ -6,7 +6,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -19,7 +19,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -31,7 +31,7 @@ metadata: name: arangolocalstorages.storage.arangodb.com labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -61,7 +61,7 @@ metadata: name: arango-all-operator-rbac-apps labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -77,7 +77,7 @@ metadata: name: arango-all-operator-rbac-backup labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -93,7 +93,7 @@ metadata: name: arango-all-operator-rbac-crd labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -119,7 +119,7 @@ metadata: name: arango-all-operator-rbac-deployment labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -138,7 +138,7 @@ metadata: name: arango-all-operator-rbac-deployment-replication labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -157,7 +157,7 @@ metadata: name: arango-all-operator-rbac-k2kclustersync labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -173,7 +173,7 @@ metadata: name: arango-all-operator-rbac-ml labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -189,7 +189,7 @@ metadata: name: arango-all-operator-rbac-storage labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -217,7 +217,7 @@ metadata: name: arango-all-operator-rbac-apps labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -237,7 +237,7 @@ metadata: name: arango-all-operator-rbac-backup labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -257,7 +257,7 @@ metadata: name: arango-all-operator-rbac-crd labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -277,7 +277,7 @@ metadata: name: arango-all-operator-rbac-deployment labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -297,7 +297,7 @@ metadata: name: arango-all-operator-rbac-deployment-replication labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -317,7 +317,7 @@ metadata: name: arango-all-operator-rbac-k2kclustersync labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -337,7 +337,7 @@ metadata: name: arango-all-operator-rbac-ml labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -357,7 +357,7 @@ metadata: name: arango-all-operator-rbac-storage labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -378,7 +378,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -412,7 +412,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -429,7 +429,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -461,7 +461,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -478,7 +478,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -519,7 +519,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -545,7 +545,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -574,7 +574,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -592,6 +592,13 @@ rules: - "arangomlstorages/status" verbs: - "*" + - apiGroups: + - "scheduler.arangodb.com" + resources: + - "arangoprofiles" + - "arangoprofiles/status" + verbs: + - "*" - apiGroups: - "database.arangodb.com" resources: @@ -632,7 +639,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -658,7 +665,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -678,7 +685,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -699,7 +706,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -720,7 +727,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -741,7 +748,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -762,7 +769,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -783,7 +790,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -804,7 +811,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -825,7 +832,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -846,7 +853,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -881,7 +888,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -899,7 +906,7 @@ spec: metadata: labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -938,7 +945,7 @@ spec: containers: - name: operator imagePullPolicy: Always - image: arangodb/kube-arangodb-enterprise:1.2.39 + image: arangodb/kube-arangodb-enterprise:1.2.40 args: - --scope=legacy - --operator.deployment diff --git a/manifests/enterprise-apps.yaml b/manifests/enterprise-apps.yaml index 6ee07f485..56f01675d 100644 --- a/manifests/enterprise-apps.yaml +++ b/manifests/enterprise-apps.yaml @@ -6,7 +6,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: apps release: apps @@ -19,7 +19,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: apps release: apps @@ -31,7 +31,7 @@ metadata: name: arango-apps-operator-rbac-apps labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: apps release: apps @@ -47,7 +47,7 @@ metadata: name: arango-apps-operator-rbac-crd labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: apps release: apps @@ -73,7 +73,7 @@ metadata: name: arango-apps-operator-rbac-apps labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: apps release: apps @@ -93,7 +93,7 @@ metadata: name: arango-apps-operator-rbac-crd labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: apps release: apps @@ -114,7 +114,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: apps release: apps @@ -148,7 +148,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: apps release: apps @@ -165,7 +165,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: apps release: apps @@ -185,7 +185,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: apps release: apps @@ -206,7 +206,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: apps release: apps @@ -241,7 +241,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: apps release: apps @@ -259,7 +259,7 @@ spec: metadata: labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: apps release: apps @@ -298,7 +298,7 @@ spec: containers: - name: operator imagePullPolicy: Always - image: arangodb/kube-arangodb-enterprise:1.2.39 + image: arangodb/kube-arangodb-enterprise:1.2.40 args: - --scope=legacy - --mode.single diff --git a/manifests/enterprise-backup.yaml b/manifests/enterprise-backup.yaml index b6fd88107..4cbc58d6a 100644 --- a/manifests/enterprise-backup.yaml +++ b/manifests/enterprise-backup.yaml @@ -6,7 +6,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: backup release: backup @@ -18,7 +18,7 @@ metadata: name: arango-backup-operator-rbac-backup labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: backup release: backup @@ -34,7 +34,7 @@ metadata: name: arango-backup-operator-rbac-crd labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: backup release: backup @@ -60,7 +60,7 @@ metadata: name: arango-backup-operator-rbac-backup labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: backup release: backup @@ -80,7 +80,7 @@ metadata: name: arango-backup-operator-rbac-crd labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: backup release: backup @@ -101,7 +101,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: backup release: backup @@ -133,7 +133,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: backup release: backup @@ -154,7 +154,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: backup release: backup @@ -189,7 +189,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: backup release: backup @@ -207,7 +207,7 @@ spec: metadata: labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: backup release: backup @@ -246,7 +246,7 @@ spec: containers: - name: operator imagePullPolicy: Always - image: arangodb/kube-arangodb-enterprise:1.2.39 + image: arangodb/kube-arangodb-enterprise:1.2.40 args: - --scope=legacy - --operator.backup diff --git a/manifests/enterprise-crd.yaml b/manifests/enterprise-crd.yaml index 7e6798217..c5d31c213 100644 --- a/manifests/enterprise-crd.yaml +++ b/manifests/enterprise-crd.yaml @@ -482,3 +482,27 @@ spec: storage: true subresources: status: {} +--- +# File: chart/kube-arangodb/crds/scheduler-profile.yaml +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + name: arangoprofiles.scheduler.arangodb.com +spec: + group: scheduler.arangodb.com + names: + kind: ArangoProfile + listKind: ArangoProfileList + plural: arangoprofiles + singular: arangoprofile + scope: Namespaced + versions: + - name: v1alpha1 + schema: + openAPIV3Schema: + type: object + x-kubernetes-preserve-unknown-fields: true + served: true + storage: true + subresources: + status: {} diff --git a/manifests/enterprise-deployment-replication.yaml b/manifests/enterprise-deployment-replication.yaml index 6fb918415..b496baed8 100644 --- a/manifests/enterprise-deployment-replication.yaml +++ b/manifests/enterprise-deployment-replication.yaml @@ -6,7 +6,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: deployment-replication release: deployment-replication @@ -18,7 +18,7 @@ metadata: name: arango-deployment-replication-operator-rbac-crd labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: deployment-replication release: deployment-replication @@ -44,7 +44,7 @@ metadata: name: arango-deployment-replication-operator-rbac-deployment-replication labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: deployment-replication release: deployment-replication @@ -63,7 +63,7 @@ metadata: name: arango-deployment-replication-operator-rbac-crd labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: deployment-replication release: deployment-replication @@ -83,7 +83,7 @@ metadata: name: arango-deployment-replication-operator-rbac-deployment-replication labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: deployment-replication release: deployment-replication @@ -104,7 +104,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: deployment-replication release: deployment-replication @@ -130,7 +130,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: deployment-replication release: deployment-replication @@ -151,7 +151,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: deployment-replication release: deployment-replication @@ -186,7 +186,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: deployment-replication release: deployment-replication @@ -204,7 +204,7 @@ spec: metadata: labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: deployment-replication release: deployment-replication @@ -243,7 +243,7 @@ spec: containers: - name: operator imagePullPolicy: Always - image: arangodb/kube-arangodb-enterprise:1.2.39 + image: arangodb/kube-arangodb-enterprise:1.2.40 args: - --scope=legacy - --operator.deployment-replication diff --git a/manifests/enterprise-deployment.yaml b/manifests/enterprise-deployment.yaml index 64d2d48e5..60a6733fc 100644 --- a/manifests/enterprise-deployment.yaml +++ b/manifests/enterprise-deployment.yaml @@ -6,7 +6,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: deployment release: deployment @@ -18,7 +18,7 @@ metadata: name: arango-deployment-operator-rbac-crd labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: deployment release: deployment @@ -44,7 +44,7 @@ metadata: name: arango-deployment-operator-rbac-deployment labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: deployment release: deployment @@ -63,7 +63,7 @@ metadata: name: arango-deployment-operator-rbac-crd labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: deployment release: deployment @@ -83,7 +83,7 @@ metadata: name: arango-deployment-operator-rbac-deployment labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: deployment release: deployment @@ -104,7 +104,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: deployment release: deployment @@ -121,7 +121,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: deployment release: deployment @@ -162,7 +162,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: deployment release: deployment @@ -183,7 +183,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: deployment release: deployment @@ -204,7 +204,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: deployment release: deployment @@ -239,7 +239,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: deployment release: deployment @@ -257,7 +257,7 @@ spec: metadata: labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: deployment release: deployment @@ -296,7 +296,7 @@ spec: containers: - name: operator imagePullPolicy: Always - image: arangodb/kube-arangodb-enterprise:1.2.39 + image: arangodb/kube-arangodb-enterprise:1.2.40 args: - --scope=legacy - --operator.deployment diff --git a/manifests/enterprise-k2kclustersync.yaml b/manifests/enterprise-k2kclustersync.yaml index 88657df1b..d59845cf1 100644 --- a/manifests/enterprise-k2kclustersync.yaml +++ b/manifests/enterprise-k2kclustersync.yaml @@ -6,7 +6,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: k2kclustersync release: k2kclustersync @@ -18,7 +18,7 @@ metadata: name: arango-k2kclustersync-operator-rbac-crd labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: k2kclustersync release: k2kclustersync @@ -44,7 +44,7 @@ metadata: name: arango-k2kclustersync-operator-rbac-k2kclustersync labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: k2kclustersync release: k2kclustersync @@ -60,7 +60,7 @@ metadata: name: arango-k2kclustersync-operator-rbac-crd labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: k2kclustersync release: k2kclustersync @@ -80,7 +80,7 @@ metadata: name: arango-k2kclustersync-operator-rbac-k2kclustersync labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: k2kclustersync release: k2kclustersync @@ -101,7 +101,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: k2kclustersync release: k2kclustersync @@ -130,7 +130,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: k2kclustersync release: k2kclustersync @@ -151,7 +151,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: k2kclustersync release: k2kclustersync @@ -186,7 +186,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: k2kclustersync release: k2kclustersync @@ -204,7 +204,7 @@ spec: metadata: labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: k2kclustersync release: k2kclustersync @@ -243,7 +243,7 @@ spec: containers: - name: operator imagePullPolicy: Always - image: arangodb/kube-arangodb-enterprise:1.2.39 + image: arangodb/kube-arangodb-enterprise:1.2.40 args: - --scope=legacy - --mode.single diff --git a/manifests/enterprise-ml.yaml b/manifests/enterprise-ml.yaml index b9f11d198..5f88c4d8b 100644 --- a/manifests/enterprise-ml.yaml +++ b/manifests/enterprise-ml.yaml @@ -6,7 +6,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: ml release: ml @@ -18,7 +18,7 @@ metadata: name: arango-ml-operator-rbac-crd labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: ml release: ml @@ -44,7 +44,7 @@ metadata: name: arango-ml-operator-rbac-ml labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: ml release: ml @@ -60,7 +60,7 @@ metadata: name: arango-ml-operator-rbac-crd labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: ml release: ml @@ -80,7 +80,7 @@ metadata: name: arango-ml-operator-rbac-ml labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: ml release: ml @@ -101,7 +101,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: ml release: ml @@ -119,6 +119,13 @@ rules: - "arangomlstorages/status" verbs: - "*" + - apiGroups: + - "scheduler.arangodb.com" + resources: + - "arangoprofiles" + - "arangoprofiles/status" + verbs: + - "*" - apiGroups: - "database.arangodb.com" resources: @@ -159,7 +166,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: ml release: ml @@ -180,7 +187,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: ml release: ml @@ -215,7 +222,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: ml release: ml @@ -233,7 +240,7 @@ spec: metadata: labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: ml release: ml @@ -272,7 +279,7 @@ spec: containers: - name: operator imagePullPolicy: Always - image: arangodb/kube-arangodb-enterprise:1.2.39 + image: arangodb/kube-arangodb-enterprise:1.2.40 args: - --scope=legacy - --mode.single diff --git a/manifests/enterprise-storage.yaml b/manifests/enterprise-storage.yaml index 2a7e599cd..d22a2b5b3 100644 --- a/manifests/enterprise-storage.yaml +++ b/manifests/enterprise-storage.yaml @@ -6,7 +6,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: storage release: storage @@ -18,7 +18,7 @@ metadata: name: arangolocalstorages.storage.arangodb.com labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: storage release: storage @@ -48,7 +48,7 @@ metadata: name: arango-storage-operator-rbac-crd labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: storage release: storage @@ -74,7 +74,7 @@ metadata: name: arango-storage-operator-rbac-storage labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: storage release: storage @@ -102,7 +102,7 @@ metadata: name: arango-storage-operator-rbac-crd labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: storage release: storage @@ -122,7 +122,7 @@ metadata: name: arango-storage-operator-rbac-storage labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: storage release: storage @@ -143,7 +143,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: storage release: storage @@ -169,7 +169,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: storage release: storage @@ -190,7 +190,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: storage release: storage @@ -225,7 +225,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: storage release: storage @@ -243,7 +243,7 @@ spec: metadata: labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: storage release: storage @@ -282,7 +282,7 @@ spec: containers: - name: operator imagePullPolicy: Always - image: arangodb/kube-arangodb-enterprise:1.2.39 + image: arangodb/kube-arangodb-enterprise:1.2.40 args: - --scope=legacy - --operator.storage diff --git a/manifests/kustomize-enterprise/all/enterprise-all.yaml b/manifests/kustomize-enterprise/all/enterprise-all.yaml index dbe755b67..d1be5f99f 100644 --- a/manifests/kustomize-enterprise/all/enterprise-all.yaml +++ b/manifests/kustomize-enterprise/all/enterprise-all.yaml @@ -6,7 +6,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -19,7 +19,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -31,7 +31,7 @@ metadata: name: arangolocalstorages.storage.arangodb.com labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -61,7 +61,7 @@ metadata: name: arango-all-operator-rbac-apps labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -77,7 +77,7 @@ metadata: name: arango-all-operator-rbac-backup labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -93,7 +93,7 @@ metadata: name: arango-all-operator-rbac-crd labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -119,7 +119,7 @@ metadata: name: arango-all-operator-rbac-deployment labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -138,7 +138,7 @@ metadata: name: arango-all-operator-rbac-deployment-replication labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -157,7 +157,7 @@ metadata: name: arango-all-operator-rbac-k2kclustersync labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -173,7 +173,7 @@ metadata: name: arango-all-operator-rbac-ml labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -189,7 +189,7 @@ metadata: name: arango-all-operator-rbac-storage labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -217,7 +217,7 @@ metadata: name: arango-all-operator-rbac-apps labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -237,7 +237,7 @@ metadata: name: arango-all-operator-rbac-backup labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -257,7 +257,7 @@ metadata: name: arango-all-operator-rbac-crd labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -277,7 +277,7 @@ metadata: name: arango-all-operator-rbac-deployment labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -297,7 +297,7 @@ metadata: name: arango-all-operator-rbac-deployment-replication labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -317,7 +317,7 @@ metadata: name: arango-all-operator-rbac-k2kclustersync labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -337,7 +337,7 @@ metadata: name: arango-all-operator-rbac-ml labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -357,7 +357,7 @@ metadata: name: arango-all-operator-rbac-storage labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -378,7 +378,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -412,7 +412,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -429,7 +429,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -461,7 +461,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -478,7 +478,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -519,7 +519,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -545,7 +545,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -574,7 +574,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -592,6 +592,13 @@ rules: - "arangomlstorages/status" verbs: - "*" + - apiGroups: + - "scheduler.arangodb.com" + resources: + - "arangoprofiles" + - "arangoprofiles/status" + verbs: + - "*" - apiGroups: - "database.arangodb.com" resources: @@ -632,7 +639,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -658,7 +665,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -678,7 +685,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -699,7 +706,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -720,7 +727,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -741,7 +748,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -762,7 +769,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -783,7 +790,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -804,7 +811,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -825,7 +832,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -846,7 +853,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -881,7 +888,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -899,7 +906,7 @@ spec: metadata: labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -938,7 +945,7 @@ spec: containers: - name: operator imagePullPolicy: Always - image: arangodb/kube-arangodb-enterprise:1.2.39 + image: arangodb/kube-arangodb-enterprise:1.2.40 args: - --scope=legacy - --operator.deployment diff --git a/manifests/kustomize-enterprise/apps/enterprise-apps.yaml b/manifests/kustomize-enterprise/apps/enterprise-apps.yaml index 6ee07f485..56f01675d 100644 --- a/manifests/kustomize-enterprise/apps/enterprise-apps.yaml +++ b/manifests/kustomize-enterprise/apps/enterprise-apps.yaml @@ -6,7 +6,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: apps release: apps @@ -19,7 +19,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: apps release: apps @@ -31,7 +31,7 @@ metadata: name: arango-apps-operator-rbac-apps labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: apps release: apps @@ -47,7 +47,7 @@ metadata: name: arango-apps-operator-rbac-crd labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: apps release: apps @@ -73,7 +73,7 @@ metadata: name: arango-apps-operator-rbac-apps labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: apps release: apps @@ -93,7 +93,7 @@ metadata: name: arango-apps-operator-rbac-crd labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: apps release: apps @@ -114,7 +114,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: apps release: apps @@ -148,7 +148,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: apps release: apps @@ -165,7 +165,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: apps release: apps @@ -185,7 +185,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: apps release: apps @@ -206,7 +206,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: apps release: apps @@ -241,7 +241,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: apps release: apps @@ -259,7 +259,7 @@ spec: metadata: labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: apps release: apps @@ -298,7 +298,7 @@ spec: containers: - name: operator imagePullPolicy: Always - image: arangodb/kube-arangodb-enterprise:1.2.39 + image: arangodb/kube-arangodb-enterprise:1.2.40 args: - --scope=legacy - --mode.single diff --git a/manifests/kustomize-enterprise/backup/enterprise-backup.yaml b/manifests/kustomize-enterprise/backup/enterprise-backup.yaml index b6fd88107..4cbc58d6a 100644 --- a/manifests/kustomize-enterprise/backup/enterprise-backup.yaml +++ b/manifests/kustomize-enterprise/backup/enterprise-backup.yaml @@ -6,7 +6,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: backup release: backup @@ -18,7 +18,7 @@ metadata: name: arango-backup-operator-rbac-backup labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: backup release: backup @@ -34,7 +34,7 @@ metadata: name: arango-backup-operator-rbac-crd labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: backup release: backup @@ -60,7 +60,7 @@ metadata: name: arango-backup-operator-rbac-backup labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: backup release: backup @@ -80,7 +80,7 @@ metadata: name: arango-backup-operator-rbac-crd labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: backup release: backup @@ -101,7 +101,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: backup release: backup @@ -133,7 +133,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: backup release: backup @@ -154,7 +154,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: backup release: backup @@ -189,7 +189,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: backup release: backup @@ -207,7 +207,7 @@ spec: metadata: labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: backup release: backup @@ -246,7 +246,7 @@ spec: containers: - name: operator imagePullPolicy: Always - image: arangodb/kube-arangodb-enterprise:1.2.39 + image: arangodb/kube-arangodb-enterprise:1.2.40 args: - --scope=legacy - --operator.backup diff --git a/manifests/kustomize-enterprise/crd/enterprise-crd.yaml b/manifests/kustomize-enterprise/crd/enterprise-crd.yaml index 7e6798217..c5d31c213 100644 --- a/manifests/kustomize-enterprise/crd/enterprise-crd.yaml +++ b/manifests/kustomize-enterprise/crd/enterprise-crd.yaml @@ -482,3 +482,27 @@ spec: storage: true subresources: status: {} +--- +# File: chart/kube-arangodb/crds/scheduler-profile.yaml +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + name: arangoprofiles.scheduler.arangodb.com +spec: + group: scheduler.arangodb.com + names: + kind: ArangoProfile + listKind: ArangoProfileList + plural: arangoprofiles + singular: arangoprofile + scope: Namespaced + versions: + - name: v1alpha1 + schema: + openAPIV3Schema: + type: object + x-kubernetes-preserve-unknown-fields: true + served: true + storage: true + subresources: + status: {} diff --git a/manifests/kustomize-enterprise/deployment-replication/enterprise-deployment-replication.yaml b/manifests/kustomize-enterprise/deployment-replication/enterprise-deployment-replication.yaml index 6fb918415..b496baed8 100644 --- a/manifests/kustomize-enterprise/deployment-replication/enterprise-deployment-replication.yaml +++ b/manifests/kustomize-enterprise/deployment-replication/enterprise-deployment-replication.yaml @@ -6,7 +6,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: deployment-replication release: deployment-replication @@ -18,7 +18,7 @@ metadata: name: arango-deployment-replication-operator-rbac-crd labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: deployment-replication release: deployment-replication @@ -44,7 +44,7 @@ metadata: name: arango-deployment-replication-operator-rbac-deployment-replication labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: deployment-replication release: deployment-replication @@ -63,7 +63,7 @@ metadata: name: arango-deployment-replication-operator-rbac-crd labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: deployment-replication release: deployment-replication @@ -83,7 +83,7 @@ metadata: name: arango-deployment-replication-operator-rbac-deployment-replication labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: deployment-replication release: deployment-replication @@ -104,7 +104,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: deployment-replication release: deployment-replication @@ -130,7 +130,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: deployment-replication release: deployment-replication @@ -151,7 +151,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: deployment-replication release: deployment-replication @@ -186,7 +186,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: deployment-replication release: deployment-replication @@ -204,7 +204,7 @@ spec: metadata: labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: deployment-replication release: deployment-replication @@ -243,7 +243,7 @@ spec: containers: - name: operator imagePullPolicy: Always - image: arangodb/kube-arangodb-enterprise:1.2.39 + image: arangodb/kube-arangodb-enterprise:1.2.40 args: - --scope=legacy - --operator.deployment-replication diff --git a/manifests/kustomize-enterprise/deployment/enterprise-deployment.yaml b/manifests/kustomize-enterprise/deployment/enterprise-deployment.yaml index 64d2d48e5..60a6733fc 100644 --- a/manifests/kustomize-enterprise/deployment/enterprise-deployment.yaml +++ b/manifests/kustomize-enterprise/deployment/enterprise-deployment.yaml @@ -6,7 +6,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: deployment release: deployment @@ -18,7 +18,7 @@ metadata: name: arango-deployment-operator-rbac-crd labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: deployment release: deployment @@ -44,7 +44,7 @@ metadata: name: arango-deployment-operator-rbac-deployment labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: deployment release: deployment @@ -63,7 +63,7 @@ metadata: name: arango-deployment-operator-rbac-crd labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: deployment release: deployment @@ -83,7 +83,7 @@ metadata: name: arango-deployment-operator-rbac-deployment labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: deployment release: deployment @@ -104,7 +104,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: deployment release: deployment @@ -121,7 +121,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: deployment release: deployment @@ -162,7 +162,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: deployment release: deployment @@ -183,7 +183,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: deployment release: deployment @@ -204,7 +204,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: deployment release: deployment @@ -239,7 +239,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: deployment release: deployment @@ -257,7 +257,7 @@ spec: metadata: labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: deployment release: deployment @@ -296,7 +296,7 @@ spec: containers: - name: operator imagePullPolicy: Always - image: arangodb/kube-arangodb-enterprise:1.2.39 + image: arangodb/kube-arangodb-enterprise:1.2.40 args: - --scope=legacy - --operator.deployment diff --git a/manifests/kustomize-enterprise/k2kclustersync/enterprise-k2kclustersync.yaml b/manifests/kustomize-enterprise/k2kclustersync/enterprise-k2kclustersync.yaml index 88657df1b..d59845cf1 100644 --- a/manifests/kustomize-enterprise/k2kclustersync/enterprise-k2kclustersync.yaml +++ b/manifests/kustomize-enterprise/k2kclustersync/enterprise-k2kclustersync.yaml @@ -6,7 +6,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: k2kclustersync release: k2kclustersync @@ -18,7 +18,7 @@ metadata: name: arango-k2kclustersync-operator-rbac-crd labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: k2kclustersync release: k2kclustersync @@ -44,7 +44,7 @@ metadata: name: arango-k2kclustersync-operator-rbac-k2kclustersync labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: k2kclustersync release: k2kclustersync @@ -60,7 +60,7 @@ metadata: name: arango-k2kclustersync-operator-rbac-crd labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: k2kclustersync release: k2kclustersync @@ -80,7 +80,7 @@ metadata: name: arango-k2kclustersync-operator-rbac-k2kclustersync labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: k2kclustersync release: k2kclustersync @@ -101,7 +101,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: k2kclustersync release: k2kclustersync @@ -130,7 +130,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: k2kclustersync release: k2kclustersync @@ -151,7 +151,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: k2kclustersync release: k2kclustersync @@ -186,7 +186,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: k2kclustersync release: k2kclustersync @@ -204,7 +204,7 @@ spec: metadata: labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: k2kclustersync release: k2kclustersync @@ -243,7 +243,7 @@ spec: containers: - name: operator imagePullPolicy: Always - image: arangodb/kube-arangodb-enterprise:1.2.39 + image: arangodb/kube-arangodb-enterprise:1.2.40 args: - --scope=legacy - --mode.single diff --git a/manifests/kustomize-enterprise/storage/enterprise-storage.yaml b/manifests/kustomize-enterprise/storage/enterprise-storage.yaml index 2a7e599cd..d22a2b5b3 100644 --- a/manifests/kustomize-enterprise/storage/enterprise-storage.yaml +++ b/manifests/kustomize-enterprise/storage/enterprise-storage.yaml @@ -6,7 +6,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: storage release: storage @@ -18,7 +18,7 @@ metadata: name: arangolocalstorages.storage.arangodb.com labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: storage release: storage @@ -48,7 +48,7 @@ metadata: name: arango-storage-operator-rbac-crd labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: storage release: storage @@ -74,7 +74,7 @@ metadata: name: arango-storage-operator-rbac-storage labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: storage release: storage @@ -102,7 +102,7 @@ metadata: name: arango-storage-operator-rbac-crd labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: storage release: storage @@ -122,7 +122,7 @@ metadata: name: arango-storage-operator-rbac-storage labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: storage release: storage @@ -143,7 +143,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: storage release: storage @@ -169,7 +169,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: storage release: storage @@ -190,7 +190,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: storage release: storage @@ -225,7 +225,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: storage release: storage @@ -243,7 +243,7 @@ spec: metadata: labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: storage release: storage @@ -282,7 +282,7 @@ spec: containers: - name: operator imagePullPolicy: Always - image: arangodb/kube-arangodb-enterprise:1.2.39 + image: arangodb/kube-arangodb-enterprise:1.2.40 args: - --scope=legacy - --operator.storage diff --git a/manifests/kustomize/all/arango-all.yaml b/manifests/kustomize/all/arango-all.yaml index 4433191b5..7dc3a5c39 100644 --- a/manifests/kustomize/all/arango-all.yaml +++ b/manifests/kustomize/all/arango-all.yaml @@ -6,7 +6,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -19,7 +19,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -31,7 +31,7 @@ metadata: name: arangolocalstorages.storage.arangodb.com labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -61,7 +61,7 @@ metadata: name: arango-all-operator-rbac-apps labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -77,7 +77,7 @@ metadata: name: arango-all-operator-rbac-backup labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -93,7 +93,7 @@ metadata: name: arango-all-operator-rbac-crd labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -119,7 +119,7 @@ metadata: name: arango-all-operator-rbac-deployment labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -138,7 +138,7 @@ metadata: name: arango-all-operator-rbac-deployment-replication labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -157,7 +157,7 @@ metadata: name: arango-all-operator-rbac-k2kclustersync labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -173,7 +173,7 @@ metadata: name: arango-all-operator-rbac-ml labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -189,7 +189,7 @@ metadata: name: arango-all-operator-rbac-storage labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -217,7 +217,7 @@ metadata: name: arango-all-operator-rbac-apps labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -237,7 +237,7 @@ metadata: name: arango-all-operator-rbac-backup labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -257,7 +257,7 @@ metadata: name: arango-all-operator-rbac-crd labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -277,7 +277,7 @@ metadata: name: arango-all-operator-rbac-deployment labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -297,7 +297,7 @@ metadata: name: arango-all-operator-rbac-deployment-replication labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -317,7 +317,7 @@ metadata: name: arango-all-operator-rbac-k2kclustersync labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -337,7 +337,7 @@ metadata: name: arango-all-operator-rbac-ml labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -357,7 +357,7 @@ metadata: name: arango-all-operator-rbac-storage labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -378,7 +378,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -412,7 +412,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -429,7 +429,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -461,7 +461,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -478,7 +478,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -519,7 +519,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -545,7 +545,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -574,7 +574,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -592,6 +592,13 @@ rules: - "arangomlstorages/status" verbs: - "*" + - apiGroups: + - "scheduler.arangodb.com" + resources: + - "arangoprofiles" + - "arangoprofiles/status" + verbs: + - "*" - apiGroups: - "database.arangodb.com" resources: @@ -632,7 +639,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -658,7 +665,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -678,7 +685,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -699,7 +706,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -720,7 +727,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -741,7 +748,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -762,7 +769,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -783,7 +790,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -804,7 +811,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -825,7 +832,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -846,7 +853,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -881,7 +888,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -899,7 +906,7 @@ spec: metadata: labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: all release: all @@ -938,7 +945,7 @@ spec: containers: - name: operator imagePullPolicy: Always - image: arangodb/kube-arangodb:1.2.39 + image: arangodb/kube-arangodb:1.2.40 args: - --scope=legacy - --operator.deployment diff --git a/manifests/kustomize/apps/arango-apps.yaml b/manifests/kustomize/apps/arango-apps.yaml index 28aea7f45..654c60aa9 100644 --- a/manifests/kustomize/apps/arango-apps.yaml +++ b/manifests/kustomize/apps/arango-apps.yaml @@ -6,7 +6,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: apps release: apps @@ -19,7 +19,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: apps release: apps @@ -31,7 +31,7 @@ metadata: name: arango-apps-operator-rbac-apps labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: apps release: apps @@ -47,7 +47,7 @@ metadata: name: arango-apps-operator-rbac-crd labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: apps release: apps @@ -73,7 +73,7 @@ metadata: name: arango-apps-operator-rbac-apps labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: apps release: apps @@ -93,7 +93,7 @@ metadata: name: arango-apps-operator-rbac-crd labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: apps release: apps @@ -114,7 +114,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: apps release: apps @@ -148,7 +148,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: apps release: apps @@ -165,7 +165,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: apps release: apps @@ -185,7 +185,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: apps release: apps @@ -206,7 +206,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: apps release: apps @@ -241,7 +241,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: apps release: apps @@ -259,7 +259,7 @@ spec: metadata: labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: apps release: apps @@ -298,7 +298,7 @@ spec: containers: - name: operator imagePullPolicy: Always - image: arangodb/kube-arangodb:1.2.39 + image: arangodb/kube-arangodb:1.2.40 args: - --scope=legacy - --mode.single diff --git a/manifests/kustomize/apps/arango-ml.yaml b/manifests/kustomize/apps/arango-ml.yaml index 8ef29ff52..643f03f98 100644 --- a/manifests/kustomize/apps/arango-ml.yaml +++ b/manifests/kustomize/apps/arango-ml.yaml @@ -6,7 +6,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: ml release: ml @@ -18,7 +18,7 @@ metadata: name: arango-ml-operator-rbac-crd labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: ml release: ml @@ -44,7 +44,7 @@ metadata: name: arango-ml-operator-rbac-ml labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: ml release: ml @@ -60,7 +60,7 @@ metadata: name: arango-ml-operator-rbac-crd labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: ml release: ml @@ -80,7 +80,7 @@ metadata: name: arango-ml-operator-rbac-ml labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: ml release: ml @@ -101,7 +101,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: ml release: ml @@ -119,6 +119,13 @@ rules: - "arangomlstorages/status" verbs: - "*" + - apiGroups: + - "scheduler.arangodb.com" + resources: + - "arangoprofiles" + - "arangoprofiles/status" + verbs: + - "*" - apiGroups: - "database.arangodb.com" resources: @@ -159,7 +166,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: ml release: ml @@ -180,7 +187,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: ml release: ml @@ -215,7 +222,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: ml release: ml @@ -233,7 +240,7 @@ spec: metadata: labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: ml release: ml @@ -272,7 +279,7 @@ spec: containers: - name: operator imagePullPolicy: Always - image: arangodb/kube-arangodb:1.2.39 + image: arangodb/kube-arangodb:1.2.40 args: - --scope=legacy - --mode.single diff --git a/manifests/kustomize/apps/enterprise-ml.yaml b/manifests/kustomize/apps/enterprise-ml.yaml index b9f11d198..5f88c4d8b 100644 --- a/manifests/kustomize/apps/enterprise-ml.yaml +++ b/manifests/kustomize/apps/enterprise-ml.yaml @@ -6,7 +6,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: ml release: ml @@ -18,7 +18,7 @@ metadata: name: arango-ml-operator-rbac-crd labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: ml release: ml @@ -44,7 +44,7 @@ metadata: name: arango-ml-operator-rbac-ml labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: ml release: ml @@ -60,7 +60,7 @@ metadata: name: arango-ml-operator-rbac-crd labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: ml release: ml @@ -80,7 +80,7 @@ metadata: name: arango-ml-operator-rbac-ml labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: ml release: ml @@ -101,7 +101,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: ml release: ml @@ -119,6 +119,13 @@ rules: - "arangomlstorages/status" verbs: - "*" + - apiGroups: + - "scheduler.arangodb.com" + resources: + - "arangoprofiles" + - "arangoprofiles/status" + verbs: + - "*" - apiGroups: - "database.arangodb.com" resources: @@ -159,7 +166,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: ml release: ml @@ -180,7 +187,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: ml release: ml @@ -215,7 +222,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: ml release: ml @@ -233,7 +240,7 @@ spec: metadata: labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: ml release: ml @@ -272,7 +279,7 @@ spec: containers: - name: operator imagePullPolicy: Always - image: arangodb/kube-arangodb-enterprise:1.2.39 + image: arangodb/kube-arangodb-enterprise:1.2.40 args: - --scope=legacy - --mode.single diff --git a/manifests/kustomize/backup/arango-backup.yaml b/manifests/kustomize/backup/arango-backup.yaml index dd2eb7f35..c65e114c9 100644 --- a/manifests/kustomize/backup/arango-backup.yaml +++ b/manifests/kustomize/backup/arango-backup.yaml @@ -6,7 +6,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: backup release: backup @@ -18,7 +18,7 @@ metadata: name: arango-backup-operator-rbac-backup labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: backup release: backup @@ -34,7 +34,7 @@ metadata: name: arango-backup-operator-rbac-crd labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: backup release: backup @@ -60,7 +60,7 @@ metadata: name: arango-backup-operator-rbac-backup labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: backup release: backup @@ -80,7 +80,7 @@ metadata: name: arango-backup-operator-rbac-crd labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: backup release: backup @@ -101,7 +101,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: backup release: backup @@ -133,7 +133,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: backup release: backup @@ -154,7 +154,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: backup release: backup @@ -189,7 +189,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: backup release: backup @@ -207,7 +207,7 @@ spec: metadata: labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: backup release: backup @@ -246,7 +246,7 @@ spec: containers: - name: operator imagePullPolicy: Always - image: arangodb/kube-arangodb:1.2.39 + image: arangodb/kube-arangodb:1.2.40 args: - --scope=legacy - --operator.backup diff --git a/manifests/kustomize/crd/arango-crd.yaml b/manifests/kustomize/crd/arango-crd.yaml index 7e6798217..c5d31c213 100644 --- a/manifests/kustomize/crd/arango-crd.yaml +++ b/manifests/kustomize/crd/arango-crd.yaml @@ -482,3 +482,27 @@ spec: storage: true subresources: status: {} +--- +# File: chart/kube-arangodb/crds/scheduler-profile.yaml +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + name: arangoprofiles.scheduler.arangodb.com +spec: + group: scheduler.arangodb.com + names: + kind: ArangoProfile + listKind: ArangoProfileList + plural: arangoprofiles + singular: arangoprofile + scope: Namespaced + versions: + - name: v1alpha1 + schema: + openAPIV3Schema: + type: object + x-kubernetes-preserve-unknown-fields: true + served: true + storage: true + subresources: + status: {} diff --git a/manifests/kustomize/deployment-replication/arango-deployment-replication.yaml b/manifests/kustomize/deployment-replication/arango-deployment-replication.yaml index 2e086e822..976d2b333 100644 --- a/manifests/kustomize/deployment-replication/arango-deployment-replication.yaml +++ b/manifests/kustomize/deployment-replication/arango-deployment-replication.yaml @@ -6,7 +6,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: deployment-replication release: deployment-replication @@ -18,7 +18,7 @@ metadata: name: arango-deployment-replication-operator-rbac-crd labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: deployment-replication release: deployment-replication @@ -44,7 +44,7 @@ metadata: name: arango-deployment-replication-operator-rbac-deployment-replication labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: deployment-replication release: deployment-replication @@ -63,7 +63,7 @@ metadata: name: arango-deployment-replication-operator-rbac-crd labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: deployment-replication release: deployment-replication @@ -83,7 +83,7 @@ metadata: name: arango-deployment-replication-operator-rbac-deployment-replication labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: deployment-replication release: deployment-replication @@ -104,7 +104,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: deployment-replication release: deployment-replication @@ -130,7 +130,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: deployment-replication release: deployment-replication @@ -151,7 +151,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: deployment-replication release: deployment-replication @@ -186,7 +186,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: deployment-replication release: deployment-replication @@ -204,7 +204,7 @@ spec: metadata: labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: deployment-replication release: deployment-replication @@ -243,7 +243,7 @@ spec: containers: - name: operator imagePullPolicy: Always - image: arangodb/kube-arangodb:1.2.39 + image: arangodb/kube-arangodb:1.2.40 args: - --scope=legacy - --operator.deployment-replication diff --git a/manifests/kustomize/deployment/arango-deployment.yaml b/manifests/kustomize/deployment/arango-deployment.yaml index 5d464c4b6..7e818713e 100644 --- a/manifests/kustomize/deployment/arango-deployment.yaml +++ b/manifests/kustomize/deployment/arango-deployment.yaml @@ -6,7 +6,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: deployment release: deployment @@ -18,7 +18,7 @@ metadata: name: arango-deployment-operator-rbac-crd labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: deployment release: deployment @@ -44,7 +44,7 @@ metadata: name: arango-deployment-operator-rbac-deployment labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: deployment release: deployment @@ -63,7 +63,7 @@ metadata: name: arango-deployment-operator-rbac-crd labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: deployment release: deployment @@ -83,7 +83,7 @@ metadata: name: arango-deployment-operator-rbac-deployment labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: deployment release: deployment @@ -104,7 +104,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: deployment release: deployment @@ -121,7 +121,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: deployment release: deployment @@ -162,7 +162,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: deployment release: deployment @@ -183,7 +183,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: deployment release: deployment @@ -204,7 +204,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: deployment release: deployment @@ -239,7 +239,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: deployment release: deployment @@ -257,7 +257,7 @@ spec: metadata: labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: deployment release: deployment @@ -296,7 +296,7 @@ spec: containers: - name: operator imagePullPolicy: Always - image: arangodb/kube-arangodb:1.2.39 + image: arangodb/kube-arangodb:1.2.40 args: - --scope=legacy - --operator.deployment diff --git a/manifests/kustomize/k2kclustersync/arango-k2kclustersync.yaml b/manifests/kustomize/k2kclustersync/arango-k2kclustersync.yaml index 41daea46a..eb27c08bc 100644 --- a/manifests/kustomize/k2kclustersync/arango-k2kclustersync.yaml +++ b/manifests/kustomize/k2kclustersync/arango-k2kclustersync.yaml @@ -6,7 +6,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: k2kclustersync release: k2kclustersync @@ -18,7 +18,7 @@ metadata: name: arango-k2kclustersync-operator-rbac-crd labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: k2kclustersync release: k2kclustersync @@ -44,7 +44,7 @@ metadata: name: arango-k2kclustersync-operator-rbac-k2kclustersync labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: k2kclustersync release: k2kclustersync @@ -60,7 +60,7 @@ metadata: name: arango-k2kclustersync-operator-rbac-crd labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: k2kclustersync release: k2kclustersync @@ -80,7 +80,7 @@ metadata: name: arango-k2kclustersync-operator-rbac-k2kclustersync labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: k2kclustersync release: k2kclustersync @@ -101,7 +101,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: k2kclustersync release: k2kclustersync @@ -130,7 +130,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: k2kclustersync release: k2kclustersync @@ -151,7 +151,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: k2kclustersync release: k2kclustersync @@ -186,7 +186,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: k2kclustersync release: k2kclustersync @@ -204,7 +204,7 @@ spec: metadata: labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: k2kclustersync release: k2kclustersync @@ -243,7 +243,7 @@ spec: containers: - name: operator imagePullPolicy: Always - image: arangodb/kube-arangodb:1.2.39 + image: arangodb/kube-arangodb:1.2.40 args: - --scope=legacy - --mode.single diff --git a/manifests/kustomize/storage/arango-storage.yaml b/manifests/kustomize/storage/arango-storage.yaml index b21c72a1b..63605c86f 100644 --- a/manifests/kustomize/storage/arango-storage.yaml +++ b/manifests/kustomize/storage/arango-storage.yaml @@ -6,7 +6,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: storage release: storage @@ -18,7 +18,7 @@ metadata: name: arangolocalstorages.storage.arangodb.com labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: storage release: storage @@ -48,7 +48,7 @@ metadata: name: arango-storage-operator-rbac-crd labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: storage release: storage @@ -74,7 +74,7 @@ metadata: name: arango-storage-operator-rbac-storage labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: storage release: storage @@ -102,7 +102,7 @@ metadata: name: arango-storage-operator-rbac-crd labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: storage release: storage @@ -122,7 +122,7 @@ metadata: name: arango-storage-operator-rbac-storage labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: storage release: storage @@ -143,7 +143,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: storage release: storage @@ -169,7 +169,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: storage release: storage @@ -190,7 +190,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: storage release: storage @@ -225,7 +225,7 @@ metadata: namespace: default labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: storage release: storage @@ -243,7 +243,7 @@ spec: metadata: labels: app.kubernetes.io/name: kube-arangodb - helm.sh/chart: kube-arangodb-1.2.39 + helm.sh/chart: kube-arangodb-1.2.40 app.kubernetes.io/managed-by: Tiller app.kubernetes.io/instance: storage release: storage @@ -282,7 +282,7 @@ spec: containers: - name: operator imagePullPolicy: Always - image: arangodb/kube-arangodb:1.2.39 + image: arangodb/kube-arangodb:1.2.40 args: - --scope=legacy - --operator.storage diff --git a/pkg/apis/deployment/v1/conditions.go b/pkg/apis/deployment/v1/conditions.go index 724626541..f60865510 100644 --- a/pkg/apis/deployment/v1/conditions.go +++ b/pkg/apis/deployment/v1/conditions.go @@ -1,7 +1,7 @@ // // DISCLAIMER // -// Copyright 2023 ArangoDB GmbH, Cologne, Germany +// Copyright 2023-2024 ArangoDB GmbH, Cologne, Germany // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -43,6 +43,8 @@ const ( ConditionTypeReachable ConditionType = "Reachable" // ConditionTypeScheduled indicates that the member primary pod is scheduled. ConditionTypeScheduled ConditionType = "Scheduled" + // ConditionTypeScheduleSpecChanged indicates that the member schedule spec was changed. + ConditionTypeScheduleSpecChanged ConditionType = "ScheduleSpecChanged" // ConditionTypeServing indicates that the member core services are running. ConditionTypeServing ConditionType = "Serving" // ConditionTypeActive indicates that the member server container started. diff --git a/pkg/apis/deployment/v1/server_group_security_context_spec.go b/pkg/apis/deployment/v1/server_group_security_context_spec.go index 3d7b187d3..3e59ae83e 100644 --- a/pkg/apis/deployment/v1/server_group_security_context_spec.go +++ b/pkg/apis/deployment/v1/server_group_security_context_spec.go @@ -116,6 +116,15 @@ func (s *ServerGroupSpecSecurityContext) NewPodSecurityContext(secured bool) *co } } + if s != nil { + if psc == nil { + psc = &core.PodSecurityContext{} + } + + psc.SeccompProfile = s.SeccompProfile.DeepCopy() + psc.SELinuxOptions = s.SELinuxOptions.DeepCopy() + } + if s != nil && len(s.Sysctls) > 0 { var sysctls []core.Sysctl for k, v := range s.Sysctls { diff --git a/pkg/apis/deployment/v1/server_group_security_context_spec_test.go b/pkg/apis/deployment/v1/server_group_security_context_spec_test.go index bb66f3963..1bb3ba2ff 100644 --- a/pkg/apis/deployment/v1/server_group_security_context_spec_test.go +++ b/pkg/apis/deployment/v1/server_group_security_context_spec_test.go @@ -1,7 +1,7 @@ // // DISCLAIMER // -// Copyright 2016-2023 ArangoDB GmbH, Cologne, Germany +// Copyright 2016-2024 ArangoDB GmbH, Cologne, Germany // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -101,6 +101,28 @@ func TestServerGroupSpecSecurityContext_NewPodSecurityContext(t *testing.T) { }, }, }, + "pass seccompProfile opts": { + sc: &ServerGroupSpecSecurityContext{ + SeccompProfile: &core.SeccompProfile{ + Type: core.SeccompProfileTypeRuntimeDefault, + }, + }, + secured: false, + want: &core.PodSecurityContext{ + SeccompProfile: &core.SeccompProfile{ + Type: core.SeccompProfileTypeRuntimeDefault, + }, + }, + }, + "pass seLinuxOptions opts": { + sc: &ServerGroupSpecSecurityContext{ + SELinuxOptions: &core.SELinuxOptions{Type: "test"}, + }, + secured: false, + want: &core.PodSecurityContext{ + SELinuxOptions: &core.SELinuxOptions{Type: "test"}, + }, + }, } for testName, testCase := range testCases { @@ -225,6 +247,34 @@ func TestServerGroupSpecSecurityContext_NewSecurityContext(t *testing.T) { RunAsUser: util.NewType[int64](3001), }, }, + "pass seccompProfile opts": { + sc: &ServerGroupSpecSecurityContext{ + SeccompProfile: &core.SeccompProfile{ + Type: core.SeccompProfileTypeRuntimeDefault, + }, + }, + secured: false, + want: &core.SecurityContext{ + Capabilities: &core.Capabilities{ + Drop: []core.Capability{"ALL"}, + }, + SeccompProfile: &core.SeccompProfile{ + Type: core.SeccompProfileTypeRuntimeDefault, + }, + }, + }, + "pass seLinuxOptions opts": { + sc: &ServerGroupSpecSecurityContext{ + SELinuxOptions: &core.SELinuxOptions{Type: "test"}, + }, + secured: false, + want: &core.SecurityContext{ + Capabilities: &core.Capabilities{ + Drop: []core.Capability{"ALL"}, + }, + SELinuxOptions: &core.SELinuxOptions{Type: "test"}, + }, + }, } for testName, testCase := range tests { diff --git a/pkg/apis/deployment/v2alpha1/conditions.go b/pkg/apis/deployment/v2alpha1/conditions.go index 8a31c9662..33dcba8af 100644 --- a/pkg/apis/deployment/v2alpha1/conditions.go +++ b/pkg/apis/deployment/v2alpha1/conditions.go @@ -1,7 +1,7 @@ // // DISCLAIMER // -// Copyright 2023 ArangoDB GmbH, Cologne, Germany +// Copyright 2023-2024 ArangoDB GmbH, Cologne, Germany // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -43,6 +43,8 @@ const ( ConditionTypeReachable ConditionType = "Reachable" // ConditionTypeScheduled indicates that the member primary pod is scheduled. ConditionTypeScheduled ConditionType = "Scheduled" + // ConditionTypeScheduleSpecChanged indicates that the member schedule spec was changed. + ConditionTypeScheduleSpecChanged ConditionType = "ScheduleSpecChanged" // ConditionTypeServing indicates that the member core services are running. ConditionTypeServing ConditionType = "Serving" // ConditionTypeActive indicates that the member server container started. diff --git a/pkg/apis/deployment/v2alpha1/server_group_security_context_spec.go b/pkg/apis/deployment/v2alpha1/server_group_security_context_spec.go index 78e0fbedd..507fc2337 100644 --- a/pkg/apis/deployment/v2alpha1/server_group_security_context_spec.go +++ b/pkg/apis/deployment/v2alpha1/server_group_security_context_spec.go @@ -116,6 +116,15 @@ func (s *ServerGroupSpecSecurityContext) NewPodSecurityContext(secured bool) *co } } + if s != nil { + if psc == nil { + psc = &core.PodSecurityContext{} + } + + psc.SeccompProfile = s.SeccompProfile.DeepCopy() + psc.SELinuxOptions = s.SELinuxOptions.DeepCopy() + } + if s != nil && len(s.Sysctls) > 0 { var sysctls []core.Sysctl for k, v := range s.Sysctls { diff --git a/pkg/apis/deployment/v2alpha1/server_group_security_context_spec_test.go b/pkg/apis/deployment/v2alpha1/server_group_security_context_spec_test.go index a5f0788ad..6f6c8e9e0 100644 --- a/pkg/apis/deployment/v2alpha1/server_group_security_context_spec_test.go +++ b/pkg/apis/deployment/v2alpha1/server_group_security_context_spec_test.go @@ -1,7 +1,7 @@ // // DISCLAIMER // -// Copyright 2016-2023 ArangoDB GmbH, Cologne, Germany +// Copyright 2016-2024 ArangoDB GmbH, Cologne, Germany // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -101,6 +101,28 @@ func TestServerGroupSpecSecurityContext_NewPodSecurityContext(t *testing.T) { }, }, }, + "pass seccompProfile opts": { + sc: &ServerGroupSpecSecurityContext{ + SeccompProfile: &core.SeccompProfile{ + Type: core.SeccompProfileTypeRuntimeDefault, + }, + }, + secured: false, + want: &core.PodSecurityContext{ + SeccompProfile: &core.SeccompProfile{ + Type: core.SeccompProfileTypeRuntimeDefault, + }, + }, + }, + "pass seLinuxOptions opts": { + sc: &ServerGroupSpecSecurityContext{ + SELinuxOptions: &core.SELinuxOptions{Type: "test"}, + }, + secured: false, + want: &core.PodSecurityContext{ + SELinuxOptions: &core.SELinuxOptions{Type: "test"}, + }, + }, } for testName, testCase := range testCases { @@ -225,6 +247,34 @@ func TestServerGroupSpecSecurityContext_NewSecurityContext(t *testing.T) { RunAsUser: util.NewType[int64](3001), }, }, + "pass seccompProfile opts": { + sc: &ServerGroupSpecSecurityContext{ + SeccompProfile: &core.SeccompProfile{ + Type: core.SeccompProfileTypeRuntimeDefault, + }, + }, + secured: false, + want: &core.SecurityContext{ + Capabilities: &core.Capabilities{ + Drop: []core.Capability{"ALL"}, + }, + SeccompProfile: &core.SeccompProfile{ + Type: core.SeccompProfileTypeRuntimeDefault, + }, + }, + }, + "pass seLinuxOptions opts": { + sc: &ServerGroupSpecSecurityContext{ + SELinuxOptions: &core.SELinuxOptions{Type: "test"}, + }, + secured: false, + want: &core.SecurityContext{ + Capabilities: &core.Capabilities{ + Drop: []core.Capability{"ALL"}, + }, + SELinuxOptions: &core.SELinuxOptions{Type: "test"}, + }, + }, } for testName, testCase := range tests { diff --git a/pkg/apis/ml/v1alpha1/extension_spec.go b/pkg/apis/ml/v1alpha1/extension_spec.go index 4722e198e..f055534a4 100644 --- a/pkg/apis/ml/v1alpha1/extension_spec.go +++ b/pkg/apis/ml/v1alpha1/extension_spec.go @@ -21,7 +21,6 @@ package v1alpha1 import ( - schedulerContainerResourcesApi "github.com/arangodb/kube-arangodb/pkg/apis/scheduler/v1alpha1/container/resources" shared "github.com/arangodb/kube-arangodb/pkg/apis/shared" sharedApi "github.com/arangodb/kube-arangodb/pkg/apis/shared/v1" ) @@ -34,9 +33,6 @@ type ArangoMLExtensionSpec struct { // Storage specifies the ArangoMLStorage used within Extension Storage *sharedApi.Object `json:"storage,omitempty"` - // Image defines default image used for the extension - *schedulerContainerResourcesApi.Image `json:",inline"` - // ArangoMLExtensionTemplate define Init job specification Init *ArangoMLExtensionTemplate `json:"init,omitempty"` @@ -55,14 +51,6 @@ func (a *ArangoMLExtensionSpec) GetMetadataService() *ArangoMLExtensionSpecMetad return a.MetadataService } -func (a *ArangoMLExtensionSpec) GetImage() *schedulerContainerResourcesApi.Image { - if a == nil || a.Image == nil { - return nil - } - - return a.Image -} - func (a *ArangoMLExtensionSpec) GetInit() *ArangoMLExtensionTemplate { if a == nil || a.Init == nil { return nil @@ -101,9 +89,7 @@ func (a *ArangoMLExtensionSpec) Validate() error { return shared.WithErrors(shared.PrefixResourceErrors("spec", shared.PrefixResourceErrors("metadataService", a.GetMetadataService().Validate()), shared.PrefixResourceErrors("storage", shared.ValidateRequired(a.GetStorage(), func(obj sharedApi.Object) error { return obj.Validate() })), - a.GetImage().Validate(), shared.PrefixResourceErrors("init", a.GetInit().Validate()), - shared.ValidateAnyNotNil(".image or .init.image needs to be specified", a.GetImage(), a.GetInit().GetContainer().GetImage()), shared.PrefixResourceErrors("deployment", a.GetDeployment().Validate()), shared.PrefixResourceErrors("jobsTemplates", a.GetJobsTemplates().Validate()), )) diff --git a/pkg/apis/ml/v1alpha1/extension_spec_job.go b/pkg/apis/ml/v1alpha1/extension_spec_job.go index 15fda1bf6..b281e4a4b 100644 --- a/pkg/apis/ml/v1alpha1/extension_spec_job.go +++ b/pkg/apis/ml/v1alpha1/extension_spec_job.go @@ -21,9 +21,11 @@ package v1alpha1 import ( + schedulerApi "github.com/arangodb/kube-arangodb/pkg/apis/scheduler/v1alpha1" schedulerContainerApi "github.com/arangodb/kube-arangodb/pkg/apis/scheduler/v1alpha1/container" schedulerPodApi "github.com/arangodb/kube-arangodb/pkg/apis/scheduler/v1alpha1/pod" shared "github.com/arangodb/kube-arangodb/pkg/apis/shared" + "github.com/arangodb/kube-arangodb/pkg/util" ) type JobType string @@ -139,6 +141,32 @@ func (a *ArangoMLExtensionTemplate) GetContainer() *schedulerContainerApi.Contai return a.Container } +func (a *ArangoMLExtensionTemplate) AsTemplate(name string) *schedulerApi.ProfileTemplate { + if a == nil { + return nil + } + + if a.Pod == nil && a.Container == nil { + return nil + } + + t := &schedulerApi.ProfileTemplate{} + + if p := a.Pod; p != nil { + t.Pod = p.DeepCopy() + } + + if p := a.Container; p != nil { + t.Container = &schedulerApi.ProfileContainerTemplate{ + Containers: schedulerContainerApi.Containers{ + name: util.TypeOrDefault(p.DeepCopy()), + }, + } + } + + return t +} + func (a *ArangoMLExtensionTemplate) Validate() error { if a == nil { return nil diff --git a/pkg/apis/ml/v1alpha1/extension_status_reconciliation.go b/pkg/apis/ml/v1alpha1/extension_status_reconciliation.go index fd07afbc5..cab4c7426 100644 --- a/pkg/apis/ml/v1alpha1/extension_status_reconciliation.go +++ b/pkg/apis/ml/v1alpha1/extension_status_reconciliation.go @@ -1,7 +1,7 @@ // // DISCLAIMER // -// Copyright 2023 ArangoDB GmbH, Cologne, Germany +// Copyright 2023-2024 ArangoDB GmbH, Cologne, Germany // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -20,21 +20,23 @@ package v1alpha1 +import sharedApi "github.com/arangodb/kube-arangodb/pkg/apis/shared/v1" + type ArangoMLExtensionStatusReconciliation struct { - StatefulSetChecksum string `json:"statefulSetChecksum,omitempty"` - ServiceChecksum string `json:"serviceChecksum,omitempty"` + StatefulSet *sharedApi.Object `json:"statefulSet,omitempty"` + Service *sharedApi.Object `json:"service,omitempty"` } -func (r *ArangoMLExtensionStatusReconciliation) GetStatefulSetChecksum() string { +func (r *ArangoMLExtensionStatusReconciliation) GetStatefulSet() *sharedApi.Object { if r == nil { - return "" + return nil } - return r.StatefulSetChecksum + return r.StatefulSet } -func (r *ArangoMLExtensionStatusReconciliation) GetServiceChecksum() string { +func (r *ArangoMLExtensionStatusReconciliation) GetService() *sharedApi.Object { if r == nil { - return "" + return nil } - return r.ServiceChecksum + return r.Service } diff --git a/pkg/apis/ml/v1alpha1/zz_generated.deepcopy.go b/pkg/apis/ml/v1alpha1/zz_generated.deepcopy.go index 98219a607..ef431a0ce 100644 --- a/pkg/apis/ml/v1alpha1/zz_generated.deepcopy.go +++ b/pkg/apis/ml/v1alpha1/zz_generated.deepcopy.go @@ -28,7 +28,6 @@ package v1alpha1 import ( deploymentv1 "github.com/arangodb/kube-arangodb/pkg/apis/deployment/v1" container "github.com/arangodb/kube-arangodb/pkg/apis/scheduler/v1alpha1/container" - resources "github.com/arangodb/kube-arangodb/pkg/apis/scheduler/v1alpha1/container/resources" pod "github.com/arangodb/kube-arangodb/pkg/apis/scheduler/v1alpha1/pod" sharedv1 "github.com/arangodb/kube-arangodb/pkg/apis/shared/v1" v1 "k8s.io/api/batch/v1" @@ -340,11 +339,6 @@ func (in *ArangoMLExtensionSpec) DeepCopyInto(out *ArangoMLExtensionSpec) { *out = new(sharedv1.Object) (*in).DeepCopyInto(*out) } - if in.Image != nil { - in, out := &in.Image, &out.Image - *out = new(resources.Image) - (*in).DeepCopyInto(*out) - } if in.Init != nil { in, out := &in.Init, &out.Init *out = new(ArangoMLExtensionTemplate) @@ -546,7 +540,7 @@ func (in *ArangoMLExtensionStatus) DeepCopyInto(out *ArangoMLExtensionStatus) { if in.Reconciliation != nil { in, out := &in.Reconciliation, &out.Reconciliation *out = new(ArangoMLExtensionStatusReconciliation) - **out = **in + (*in).DeepCopyInto(*out) } return } @@ -637,6 +631,16 @@ func (in *ArangoMLExtensionStatusMetadataServiceLocal) DeepCopy() *ArangoMLExten // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *ArangoMLExtensionStatusReconciliation) DeepCopyInto(out *ArangoMLExtensionStatusReconciliation) { *out = *in + if in.StatefulSet != nil { + in, out := &in.StatefulSet, &out.StatefulSet + *out = new(sharedv1.Object) + (*in).DeepCopyInto(*out) + } + if in.Service != nil { + in, out := &in.Service, &out.Service + *out = new(sharedv1.Object) + (*in).DeepCopyInto(*out) + } return } diff --git a/pkg/apis/scheduler/definitions.go b/pkg/apis/scheduler/definitions.go index 916976392..af9e57cb9 100644 --- a/pkg/apis/scheduler/definitions.go +++ b/pkg/apis/scheduler/definitions.go @@ -21,5 +21,9 @@ package scheduler const ( + ArangoProfileCRDName = ArangoProfileResourcePlural + "." + ArangoSchedulerGroupName + ArangoProfileResourceKind = "ArangoProfile" + ArangoProfileResourcePlural = "arangoprofiles" + ArangoSchedulerGroupName = "scheduler.arangodb.com" ) diff --git a/pkg/apis/scheduler/v1alpha1/container/definition.go b/pkg/apis/scheduler/v1alpha1/container/definition.go index cac954d26..3a3b32101 100644 --- a/pkg/apis/scheduler/v1alpha1/container/definition.go +++ b/pkg/apis/scheduler/v1alpha1/container/definition.go @@ -28,18 +28,40 @@ import ( shared "github.com/arangodb/kube-arangodb/pkg/apis/shared" "github.com/arangodb/kube-arangodb/pkg/util" "github.com/arangodb/kube-arangodb/pkg/util/errors" - "github.com/arangodb/kube-arangodb/pkg/util/k8sutil/container" + kresources "github.com/arangodb/kube-arangodb/pkg/util/k8sutil/resources" ) type Containers map[string]Container +func (c *Containers) ExtendContainers(spec *Container, names ...string) { + if c == nil { + return + } + + r := c.DeepCopy() + + if r == nil { + r = Containers{} + } + + for _, n := range names { + if v, ok := r[n]; ok { + r[n] = util.TypeOrDefault(v.With(spec)) + } else { + r[n] = util.TypeOrDefault(spec.DeepCopy()) + } + } + + *c = r +} + func (c Containers) Apply(template *core.PodTemplateSpec) error { if len(c) == 0 { return nil } for k, v := range c { - if id := container.GetContainerIDByName(template.Spec.Containers, k); id >= 0 { + if id := kresources.GetContainerIDByName(template.Spec.Containers, k); id >= 0 { if err := v.Apply(template, &template.Spec.Containers[id]); err != nil { return err } @@ -104,6 +126,9 @@ func (c Containers) Validate() error { var _ interfaces.Container[Container] = &Container{} type Container struct { + // Core keeps the core settings for Container + *schedulerContainerResourcesApi.Core `json:",inline"` + // Security keeps the security settings for Container *schedulerContainerResourcesApi.Security `json:",inline"` @@ -135,6 +160,7 @@ func (c *Container) Apply(template *core.PodTemplateSpec, container *core.Contai } return shared.WithErrors( + c.Core.Apply(template, container), c.Security.Apply(template, container), c.Environments.Apply(template, container), c.Image.Apply(template, container), @@ -146,6 +172,14 @@ func (c *Container) Apply(template *core.PodTemplateSpec, container *core.Contai ) } +func (c *Container) GetCore() *schedulerContainerResourcesApi.Core { + if c == nil || c.Core == nil { + return nil + } + + return c.Core +} + func (c *Container) GetImage() *schedulerContainerResourcesApi.Image { if c == nil || c.Image == nil { return nil @@ -224,6 +258,7 @@ func (c *Container) With(other *Container) *Container { } return &Container{ + Core: c.Core.With(other.Core), Security: c.Security.With(other.Security), Environments: c.Environments.With(other.Environments), Image: c.Image.With(other.Image), @@ -241,6 +276,7 @@ func (c *Container) Validate() error { } return shared.WithErrors( + shared.PrefixResourceErrors("core", c.Core.Validate()), shared.PrefixResourceErrors("containerSecurity", c.Security.Validate()), shared.PrefixResourceErrors("containerEnvironments", c.Environments.Validate()), shared.PrefixResourceErrors("containerResources", c.Image.Validate()), diff --git a/pkg/apis/scheduler/v1alpha1/container/definition_container_test.go b/pkg/apis/scheduler/v1alpha1/container/definition_container_test.go index 4eab6cc5f..4af163118 100644 --- a/pkg/apis/scheduler/v1alpha1/container/definition_container_test.go +++ b/pkg/apis/scheduler/v1alpha1/container/definition_container_test.go @@ -90,6 +90,8 @@ func Test_Container(t *testing.T) { require.Nil(t, spec.Image) require.Nil(t, spec.Security) require.Nil(t, spec.Environments) + require.Nil(t, spec.VolumeMounts) + require.Nil(t, spec.Core) require.Len(t, container.Env, 0) }) @@ -100,12 +102,17 @@ func Test_Container(t *testing.T) { require.Nil(t, spec.Image) require.Nil(t, spec.Security) require.Nil(t, spec.Environments) + require.Nil(t, spec.VolumeMounts) + require.Nil(t, spec.Core) require.Len(t, container.Env, 0) }) }) t.Run("With fields", func(t *testing.T) { applyContainer(t, &core.PodTemplateSpec{}, &core.Container{}, &Container{ + Core: &schedulerContainerResourcesApi.Core{ + Args: []string{"A"}, + }, Security: &schedulerContainerResourcesApi.Security{ SecurityContext: &core.SecurityContext{ RunAsUser: util.NewType[int64](50), @@ -171,6 +178,12 @@ func Test_Container(t *testing.T) { }, })(func(t *testing.T, pod *core.PodTemplateSpec, container *core.Container, spec *Container) { // Spec + require.NotNil(t, spec.Core) + require.NotNil(t, spec.Core.Args) + require.Contains(t, spec.Core.Args, "A") + require.Empty(t, spec.Core.Command) + require.Empty(t, spec.Core.WorkingDir) + require.NotNil(t, spec.Resources) require.NotNil(t, spec.Resources.Resources) require.Contains(t, spec.Resources.Resources.Limits, core.ResourceCPU) @@ -225,6 +238,9 @@ func Test_Container_YAML(t *testing.T) { securityContext: runAsUser: 50 +args: +- A + env: - name: key1 value: value1 @@ -264,6 +280,12 @@ securityContext: runAsUser: 10 `)(func(t *testing.T, pod *core.PodTemplateSpec, container *core.Container, spec *Container) { // Spec + require.NotNil(t, spec.Core) + require.NotNil(t, spec.Core.Args) + require.Contains(t, spec.Core.Args, "A") + require.Empty(t, spec.Core.Command) + require.Empty(t, spec.Core.WorkingDir) + require.NotNil(t, spec.Resources) require.NotNil(t, spec.Resources.Resources) require.Contains(t, spec.Resources.Resources.Limits, core.ResourceCPU) diff --git a/pkg/apis/scheduler/v1alpha1/container/generic.go b/pkg/apis/scheduler/v1alpha1/container/generic.go index 132b5e29e..b8e3047a8 100644 --- a/pkg/apis/scheduler/v1alpha1/container/generic.go +++ b/pkg/apis/scheduler/v1alpha1/container/generic.go @@ -33,16 +33,20 @@ var _ interfaces.Pod[Generic] = &Generic{} type Generic struct { // Environments keeps the environment variables for Container *schedulerContainerResourcesApi.Environments `json:",inline"` + + // VolumeMounts define volume mounts assigned to the Container + *schedulerContainerResourcesApi.VolumeMounts `json:",inline"` } -func (c *Generic) Apply(template *core.PodTemplateSpec) error { - if c == nil { +func (g *Generic) Apply(template *core.PodTemplateSpec) error { + if g == nil { return nil } for id := range template.Spec.Containers { if err := shared.WithErrors( - c.Environments.Apply(template, &template.Spec.Containers[id]), + g.Environments.Apply(template, &template.Spec.Containers[id]), + g.VolumeMounts.Apply(template, &template.Spec.Containers[id]), ); err != nil { return err } @@ -51,38 +55,48 @@ func (c *Generic) Apply(template *core.PodTemplateSpec) error { return nil } -func (c *Generic) GetEnvironments() *schedulerContainerResourcesApi.Environments { - if c == nil || c.Environments == nil { +func (g *Generic) GetEnvironments() *schedulerContainerResourcesApi.Environments { + if g == nil || g.Environments == nil { + return nil + } + + return g.Environments +} + +func (g *Generic) GetVolumeMounts() *schedulerContainerResourcesApi.VolumeMounts { + if g == nil || g.VolumeMounts == nil { return nil } - return c.Environments + return g.VolumeMounts } -func (c *Generic) With(other *Generic) *Generic { - if c == nil && other == nil { +func (g *Generic) With(other *Generic) *Generic { + if g == nil && other == nil { return nil } - if c == nil { + if g == nil { return other.DeepCopy() } if other == nil { - return c.DeepCopy() + return g.DeepCopy() } return &Generic{ - Environments: c.Environments.With(other.Environments), + Environments: g.Environments.With(other.Environments), + VolumeMounts: g.VolumeMounts.With(other.VolumeMounts), } } -func (c *Generic) Validate() error { - if c == nil { +func (g *Generic) Validate() error { + if g == nil { return nil } return shared.WithErrors( - shared.PrefixResourceErrors("containerEnvironments", c.Environments.Validate()), + shared.PrefixResourceErrors("containerEnvironments", g.Environments.Validate()), + shared.PrefixResourceErrors("volumeMounts", g.VolumeMounts.Validate()), ) } diff --git a/pkg/apis/scheduler/v1alpha1/container/generic_test.go b/pkg/apis/scheduler/v1alpha1/container/generic_test.go index 65a4037d6..af0476f3f 100644 --- a/pkg/apis/scheduler/v1alpha1/container/generic_test.go +++ b/pkg/apis/scheduler/v1alpha1/container/generic_test.go @@ -76,11 +76,13 @@ func Test_Generic(t *testing.T) { t.Run("Nil", func(t *testing.T) { applyGeneric(t, nil, nil)(func(t *testing.T, pod *core.PodTemplateSpec, spec *Generic) { require.Nil(t, spec.Environments) + require.Nil(t, spec.VolumeMounts) }) }) t.Run("Empty template", func(t *testing.T) { applyGeneric(t, &core.PodTemplateSpec{})(func(t *testing.T, pod *core.PodTemplateSpec, spec *Generic) { require.Nil(t, spec.Environments) + require.Nil(t, spec.VolumeMounts) }) }) t.Run("With fields", func(t *testing.T) { @@ -99,7 +101,19 @@ func Test_Generic(t *testing.T) { }, }, }, + VolumeMounts: &schedulerContainerResourcesApi.VolumeMounts{ + VolumeMounts: []core.VolumeMount{ + { + Name: "TEST", + MountPath: "/data", + }, + }, + }, })(func(t *testing.T, pod *core.PodTemplateSpec, spec *Generic) { + require.NotNil(t, spec.VolumeMounts) + require.Len(t, spec.VolumeMounts.VolumeMounts, 1) + require.EqualValues(t, "TEST", spec.VolumeMounts.VolumeMounts[0].Name) + // Spec require.NotNil(t, spec.Environments) require.Len(t, spec.Environments.Env, 1) diff --git a/pkg/apis/scheduler/v1alpha1/container/resources/core.go b/pkg/apis/scheduler/v1alpha1/container/resources/core.go new file mode 100644 index 000000000..e310d8dc2 --- /dev/null +++ b/pkg/apis/scheduler/v1alpha1/container/resources/core.go @@ -0,0 +1,86 @@ +// +// DISCLAIMER +// +// Copyright 2024 ArangoDB GmbH, Cologne, Germany +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Copyright holder is ArangoDB GmbH, Cologne, Germany +// + +package resources + +import ( + core "k8s.io/api/core/v1" + + "github.com/arangodb/kube-arangodb/pkg/apis/scheduler/v1alpha1/interfaces" +) + +var _ interfaces.Container[Core] = &Core{} + +type Core struct { + // Entrypoint array. Not executed within a shell. + // The container image's ENTRYPOINT is used if this is not provided. + // Variable references $(VAR_NAME) are expanded using the container's environment. 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. Cannot be updated. + // +doc/link: Kubernetes Docs|https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell + Command []string `json:"command,omitempty"` + + // Arguments to the entrypoint. + // The container image's CMD is used if this is not provided. + // Variable references $(VAR_NAME) are expanded using the container's environment. 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. Cannot be updated. + // +doc/link: Kubernetes Docs|https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell + Args []string `json:"args,omitempty"` + + // Container's working directory. + // If not specified, the container runtime's default will be used, which + // might be configured in the container image. + WorkingDir string `json:"workingDir,omitempty"` +} + +func (c *Core) Apply(_ *core.PodTemplateSpec, container *core.Container) error { + if c == nil { + return nil + } + + d := c.DeepCopy() + + container.Args = d.Args + container.Command = d.Command + container.WorkingDir = d.WorkingDir + + return nil +} + +func (c *Core) With(other *Core) *Core { + if c == nil && other == nil { + return nil + } + + if other == nil { + return c.DeepCopy() + } + + return other.DeepCopy() +} + +func (c *Core) Validate() error { + return nil +} diff --git a/pkg/apis/scheduler/v1alpha1/container/resources/core_test.go b/pkg/apis/scheduler/v1alpha1/container/resources/core_test.go new file mode 100644 index 000000000..f26fcd863 --- /dev/null +++ b/pkg/apis/scheduler/v1alpha1/container/resources/core_test.go @@ -0,0 +1,107 @@ +// +// DISCLAIMER +// +// Copyright 2024 ArangoDB GmbH, Cologne, Germany +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Copyright holder is ArangoDB GmbH, Cologne, Germany +// + +package resources + +import ( + "testing" + + "github.com/stretchr/testify/require" + core "k8s.io/api/core/v1" +) + +func applyCore(t *testing.T, template *core.PodTemplateSpec, container *core.Container, ns ...*Core) func(in func(t *testing.T, pod *core.PodTemplateSpec, container *core.Container)) { + var i *Core + + for _, n := range ns { + require.NoError(t, n.Validate()) + + i = i.With(n) + + require.NoError(t, i.Validate()) + } + + template = template.DeepCopy() + + if template == nil { + template = &core.PodTemplateSpec{} + } + + container = container.DeepCopy() + if container == nil { + container = &core.Container{} + } + + template.Spec.Containers = append(template.Spec.Containers, *container) + + container = &template.Spec.Containers[0] + + require.NoError(t, i.Apply(template, container)) + + return func(in func(t *testing.T, spec *core.PodTemplateSpec, container *core.Container)) { + t.Run("Validate", func(t *testing.T) { + in(t, template, container) + }) + } +} + +func Test_Core(t *testing.T) { + t.Run("With Nil", func(t *testing.T) { + applyCore(t, nil, nil)(func(t *testing.T, _ *core.PodTemplateSpec, container *core.Container) { + require.Len(t, container.Args, 0) + require.Len(t, container.Command, 0) + }) + }) + t.Run("With Empty", func(t *testing.T) { + applyCore(t, &core.PodTemplateSpec{}, &core.Container{})(func(t *testing.T, _ *core.PodTemplateSpec, container *core.Container) { + require.Len(t, container.Args, 0) + require.Len(t, container.Command, 0) + }) + }) + t.Run("With One", func(t *testing.T) { + applyCore(t, &core.PodTemplateSpec{}, &core.Container{}, &Core{ + Command: []string{"A"}, + Args: []string{"B"}, + WorkingDir: "C", + })(func(t *testing.T, _ *core.PodTemplateSpec, container *core.Container) { + require.Len(t, container.Args, 1) + require.Contains(t, container.Args, "B") + + require.Len(t, container.Command, 1) + require.Contains(t, container.Command, "A") + + require.EqualValues(t, "C", container.WorkingDir) + }) + }) + t.Run("With Override", func(t *testing.T) { + applyCore(t, &core.PodTemplateSpec{}, &core.Container{}, &Core{ + Command: []string{"B"}, + Args: []string{"A"}, + })(func(t *testing.T, _ *core.PodTemplateSpec, container *core.Container) { + require.Len(t, container.Args, 1) + require.Contains(t, container.Args, "A") + + require.Len(t, container.Command, 1) + require.Contains(t, container.Command, "B") + + require.EqualValues(t, "", container.WorkingDir) + }) + }) +} diff --git a/pkg/apis/scheduler/v1alpha1/container/resources/image.go b/pkg/apis/scheduler/v1alpha1/container/resources/image.go index c29e81d10..4f06422e1 100644 --- a/pkg/apis/scheduler/v1alpha1/container/resources/image.go +++ b/pkg/apis/scheduler/v1alpha1/container/resources/image.go @@ -28,8 +28,6 @@ import ( "github.com/arangodb/kube-arangodb/pkg/util" ) -type ImagePullSecrets []string - var _ interfaces.Container[Image] = &Image{} type Image struct { @@ -39,9 +37,6 @@ type Image struct { // ImagePullPolicy define Image pull policy // +doc/default: IfNotPresent ImagePullPolicy *core.PullPolicy `json:"imagePullPolicy,omitempty"` - - // ImagePullSecrets define Secrets used to pull Image from registry - ImagePullSecrets ImagePullSecrets `json:"imagePullSecrets,omitempty"` } func (i *Image) Apply(pod *core.PodTemplateSpec, container *core.Container) error { @@ -52,16 +47,6 @@ func (i *Image) Apply(pod *core.PodTemplateSpec, container *core.Container) erro container.Image = util.WithDefault(i.Image) container.ImagePullPolicy = util.WithDefault(i.ImagePullPolicy) - for _, secret := range i.ImagePullSecrets { - if hasImagePullSecret(pod.Spec.ImagePullSecrets, secret) { - continue - } - - pod.Spec.ImagePullSecrets = append(pod.Spec.ImagePullSecrets, core.LocalObjectReference{ - Name: secret, - }) - } - return nil } @@ -93,16 +78,5 @@ func (i *Image) Validate() error { return shared.WithErrors( shared.PrefixResourceErrors("image", shared.ValidateRequired(i.Image, shared.ValidateImage)), shared.PrefixResourceErrors("imagePullPolicy", shared.ValidateOptional(i.ImagePullPolicy, shared.ValidatePullPolicy)), - shared.PrefixResourceErrors("pullSecrets", shared.ValidateList(i.ImagePullSecrets, shared.ValidateResourceName)), ) } - -func hasImagePullSecret(secrets []core.LocalObjectReference, secret string) bool { - for _, sec := range secrets { - if sec.Name == secret { - return true - } - } - - return false -} diff --git a/pkg/apis/scheduler/v1alpha1/container/resources/image_test.go b/pkg/apis/scheduler/v1alpha1/container/resources/image_test.go index eb1316859..47082a9f0 100644 --- a/pkg/apis/scheduler/v1alpha1/container/resources/image_test.go +++ b/pkg/apis/scheduler/v1alpha1/container/resources/image_test.go @@ -92,29 +92,18 @@ func Test_Image(t *testing.T) { applyImage(t, &core.PodTemplateSpec{}, &core.Container{}, &Image{ Image: util.NewType("image"), ImagePullPolicy: util.NewType(core.PullAlways), - ImagePullSecrets: []string{ - "secret", - }, })(func(t *testing.T, pod *core.PodTemplateSpec, container *core.Container) { require.EqualValues(t, "image", container.Image) require.EqualValues(t, core.PullAlways, container.ImagePullPolicy) - require.Len(t, pod.Spec.ImagePullSecrets, 1) - require.Equal(t, "secret", pod.Spec.ImagePullSecrets[0].Name) }) }) t.Run("With PS2", func(t *testing.T) { applyImage(t, &core.PodTemplateSpec{}, &core.Container{}, &Image{ Image: util.NewType("image"), ImagePullPolicy: util.NewType(core.PullAlways), - ImagePullSecrets: []string{ - "secret", - "secret", - }, })(func(t *testing.T, pod *core.PodTemplateSpec, container *core.Container) { require.EqualValues(t, "image", container.Image) require.EqualValues(t, core.PullAlways, container.ImagePullPolicy) - require.Len(t, pod.Spec.ImagePullSecrets, 1) - require.Equal(t, "secret", pod.Spec.ImagePullSecrets[0].Name) }) }) } diff --git a/pkg/apis/scheduler/v1alpha1/container/resources/resources.go b/pkg/apis/scheduler/v1alpha1/container/resources/resources.go index bbe91f2a5..32beffc12 100644 --- a/pkg/apis/scheduler/v1alpha1/container/resources/resources.go +++ b/pkg/apis/scheduler/v1alpha1/container/resources/resources.go @@ -42,7 +42,10 @@ func (r *Resources) Apply(_ *core.PodTemplateSpec, template *core.Container) err return nil } - template.Resources = r.GetResources() + res := r.GetResources() + + template.Resources.Limits = kresources.UpscaleContainerResourceList(template.Resources.Limits, res.Limits) + template.Resources.Requests = kresources.UpscaleContainerResourceList(template.Resources.Requests, res.Requests) return nil } diff --git a/pkg/apis/scheduler/v1alpha1/container/resources/volume_mounts.go b/pkg/apis/scheduler/v1alpha1/container/resources/volume_mounts.go index fdbf5cd83..d3a5acb78 100644 --- a/pkg/apis/scheduler/v1alpha1/container/resources/volume_mounts.go +++ b/pkg/apis/scheduler/v1alpha1/container/resources/volume_mounts.go @@ -42,7 +42,7 @@ func (v *VolumeMounts) Apply(_ *core.PodTemplateSpec, container *core.Container) obj := v.DeepCopy() - container.VolumeMounts = obj.VolumeMounts + container.VolumeMounts = kresources.MergeVolumeMounts(container.VolumeMounts, obj.VolumeMounts...) return nil } diff --git a/pkg/apis/scheduler/v1alpha1/container/resources/zz_generated.deepcopy.go b/pkg/apis/scheduler/v1alpha1/container/resources/zz_generated.deepcopy.go index 0fd4b28db..1a201856b 100644 --- a/pkg/apis/scheduler/v1alpha1/container/resources/zz_generated.deepcopy.go +++ b/pkg/apis/scheduler/v1alpha1/container/resources/zz_generated.deepcopy.go @@ -29,6 +29,32 @@ import ( v1 "k8s.io/api/core/v1" ) +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Core) DeepCopyInto(out *Core) { + *out = *in + if in.Command != nil { + in, out := &in.Command, &out.Command + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.Args != nil { + in, out := &in.Args, &out.Args + *out = make([]string, len(*in)) + copy(*out, *in) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Core. +func (in *Core) DeepCopy() *Core { + if in == nil { + return nil + } + out := new(Core) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *Environments) DeepCopyInto(out *Environments) { *out = *in @@ -72,11 +98,6 @@ func (in *Image) DeepCopyInto(out *Image) { *out = new(v1.PullPolicy) **out = **in } - if in.ImagePullSecrets != nil { - in, out := &in.ImagePullSecrets, &out.ImagePullSecrets - *out = make(ImagePullSecrets, len(*in)) - copy(*out, *in) - } return } @@ -90,26 +111,6 @@ func (in *Image) DeepCopy() *Image { return out } -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in ImagePullSecrets) DeepCopyInto(out *ImagePullSecrets) { - { - in := &in - *out = make(ImagePullSecrets, len(*in)) - copy(*out, *in) - return - } -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ImagePullSecrets. -func (in ImagePullSecrets) DeepCopy() ImagePullSecrets { - if in == nil { - return nil - } - out := new(ImagePullSecrets) - in.DeepCopyInto(out) - return *out -} - // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *Lifecycle) DeepCopyInto(out *Lifecycle) { *out = *in diff --git a/pkg/apis/scheduler/v1alpha1/container/zz_generated.deepcopy.go b/pkg/apis/scheduler/v1alpha1/container/zz_generated.deepcopy.go index d606f5b8b..3d2ef582c 100644 --- a/pkg/apis/scheduler/v1alpha1/container/zz_generated.deepcopy.go +++ b/pkg/apis/scheduler/v1alpha1/container/zz_generated.deepcopy.go @@ -32,6 +32,11 @@ import ( // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *Container) DeepCopyInto(out *Container) { *out = *in + if in.Core != nil { + in, out := &in.Core, &out.Core + *out = new(resources.Core) + (*in).DeepCopyInto(*out) + } if in.Security != nil { in, out := &in.Security, &out.Security *out = new(resources.Security) @@ -115,6 +120,11 @@ func (in *Generic) DeepCopyInto(out *Generic) { *out = new(resources.Environments) (*in).DeepCopyInto(*out) } + if in.VolumeMounts != nil { + in, out := &in.VolumeMounts, &out.VolumeMounts + *out = new(resources.VolumeMounts) + (*in).DeepCopyInto(*out) + } return } diff --git a/pkg/apis/scheduler/v1alpha1/pod/definition.go b/pkg/apis/scheduler/v1alpha1/pod/definition.go index 7daa08615..9648d2cfb 100644 --- a/pkg/apis/scheduler/v1alpha1/pod/definition.go +++ b/pkg/apis/scheduler/v1alpha1/pod/definition.go @@ -31,6 +31,12 @@ import ( var _ interfaces.Pod[Pod] = &Pod{} type Pod struct { + // Metadata keeps the metadata settings for Pod + *schedulerPodResourcesApi.Metadata `json:",inline"` + + // Image keeps the image information + *schedulerPodResourcesApi.Image `json:",inline"` + // Scheduling keeps the scheduling information *schedulerPodResourcesApi.Scheduling `json:",inline"` @@ -42,6 +48,9 @@ type Pod struct { // Volumes keeps the volumes settings for Pod *schedulerPodResourcesApi.Volumes `json:",inline"` + + // ServiceAccount keeps the service account settings for Pod + *schedulerPodResourcesApi.ServiceAccount `json:",inline"` } func (a *Pod) With(other *Pod) *Pod { @@ -58,10 +67,13 @@ func (a *Pod) With(other *Pod) *Pod { } return &Pod{ - Scheduling: a.Scheduling.With(other.Scheduling), - Namespace: a.Namespace.With(other.Namespace), - Security: a.Security.With(other.Security), - Volumes: a.Volumes.With(other.Volumes), + Scheduling: a.Scheduling.With(other.Scheduling), + Image: a.Image.With(other.Image), + Namespace: a.Namespace.With(other.Namespace), + Security: a.Security.With(other.Security), + Volumes: a.Volumes.With(other.Volumes), + ServiceAccount: a.ServiceAccount.With(other.ServiceAccount), + Metadata: a.Metadata.With(other.Metadata), } } @@ -72,9 +84,12 @@ func (a *Pod) Apply(template *core.PodTemplateSpec) error { return shared.WithErrors( a.Scheduling.Apply(template), + a.Image.Apply(template), a.Namespace.Apply(template), a.Security.Apply(template), a.Volumes.Apply(template), + a.ServiceAccount.Apply(template), + a.Metadata.Apply(template), ) } @@ -86,6 +101,14 @@ func (a *Pod) GetSecurity() *schedulerPodResourcesApi.Security { return a.Security } +func (a *Pod) GetImage() *schedulerPodResourcesApi.Image { + if a == nil { + return nil + } + + return a.Image +} + func (a *Pod) GetScheduling() *schedulerPodResourcesApi.Scheduling { if a == nil { return nil @@ -110,14 +133,33 @@ func (a *Pod) GetVolumes() *schedulerPodResourcesApi.Volumes { return a.Volumes } +func (a *Pod) GetServiceAccount() *schedulerPodResourcesApi.ServiceAccount { + if a == nil { + return nil + } + + return a.ServiceAccount +} + +func (a *Pod) GetMetadata() *schedulerPodResourcesApi.Metadata { + if a == nil { + return nil + } + + return a.Metadata +} + func (a *Pod) Validate() error { if a == nil { return nil } return shared.WithErrors( a.Scheduling.Validate(), + a.Image.Validate(), a.Namespace.Validate(), a.Security.Validate(), a.Volumes.Validate(), + a.ServiceAccount.Validate(), + a.Metadata.Validate(), ) } diff --git a/pkg/apis/scheduler/v1alpha1/pod/definition_test.go b/pkg/apis/scheduler/v1alpha1/pod/definition_test.go index 1c8835f64..b9a40c5c7 100644 --- a/pkg/apis/scheduler/v1alpha1/pod/definition_test.go +++ b/pkg/apis/scheduler/v1alpha1/pod/definition_test.go @@ -78,12 +78,14 @@ func Test_Pod(t *testing.T) { applyPod(t, nil)(func(t *testing.T, pod *core.PodTemplateSpec, _ *Pod) { require.Nil(t, pod.Spec.SecurityContext) require.Nil(t, pod.Spec.Affinity) + require.Empty(t, pod.Spec.ServiceAccountName) }) }) t.Run("Empty template", func(t *testing.T) { applyPod(t, &core.PodTemplateSpec{})(func(t *testing.T, pod *core.PodTemplateSpec, _ *Pod) { require.Nil(t, pod.Spec.SecurityContext) require.Nil(t, pod.Spec.Affinity) + require.Empty(t, pod.Spec.ServiceAccountName) }) }) t.Run("Add scheduling", func(t *testing.T) { @@ -128,12 +130,16 @@ func Test_Pod_YAML(t *testing.T) { require.Nil(t, spec.Security) require.Nil(t, spec.Scheduling) require.Nil(t, spec.Namespace) + require.Nil(t, spec.ServiceAccount) + require.Nil(t, spec.Metadata) }) }) t.Run("Empty template", func(t *testing.T) { applyPodYAML(t, &core.PodTemplateSpec{})(func(t *testing.T, pod *core.PodTemplateSpec, _ *Pod) { require.Nil(t, pod.Spec.SecurityContext) require.Nil(t, pod.Spec.Affinity) + require.Empty(t, pod.Spec.ServiceAccountName) + require.Nil(t, pod.Labels) }) }) t.Run("Add nodeSelector", func(t *testing.T) { @@ -182,6 +188,9 @@ nodeSelector: podSecurityContext: runAsUser: 10 hostPID: true +serviceAccountName: test +labels: + A: B volumes: - name: test emptyDir: {} @@ -202,6 +211,11 @@ volumes: require.Len(t, spec.Volumes.Volumes, 1) require.EqualValues(t, "test", spec.Volumes.Volumes[0].Name) require.NotNil(t, spec.Volumes.Volumes[0].EmptyDir) + require.NotNil(t, spec.ServiceAccount) + require.EqualValues(t, "test", spec.ServiceAccount.ServiceAccountName) + require.NotNil(t, spec.Labels) + require.Contains(t, spec.Labels, "A") + require.EqualValues(t, "B", spec.Labels["A"]) // Pod require.NotNil(t, pod.Spec.SecurityContext) @@ -217,6 +231,9 @@ volumes: require.Len(t, pod.Spec.Volumes, 1) require.EqualValues(t, "test", pod.Spec.Volumes[0].Name) require.NotNil(t, pod.Spec.Volumes[0].EmptyDir) + require.NotNil(t, pod.Labels) + require.Contains(t, pod.Labels, "A") + require.EqualValues(t, "B", spec.Labels["A"]) }) }) } diff --git a/pkg/apis/scheduler/v1alpha1/pod/resources/image.go b/pkg/apis/scheduler/v1alpha1/pod/resources/image.go new file mode 100644 index 000000000..495fe3e30 --- /dev/null +++ b/pkg/apis/scheduler/v1alpha1/pod/resources/image.go @@ -0,0 +1,87 @@ +// +// DISCLAIMER +// +// Copyright 2024 ArangoDB GmbH, Cologne, Germany +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Copyright holder is ArangoDB GmbH, Cologne, Germany +// + +package resources + +import ( + core "k8s.io/api/core/v1" + + "github.com/arangodb/kube-arangodb/pkg/apis/scheduler/v1alpha1/interfaces" + shared "github.com/arangodb/kube-arangodb/pkg/apis/shared" +) + +type ImagePullSecrets []string + +var _ interfaces.Pod[Image] = &Image{} + +type Image struct { + // ImagePullSecrets define Secrets used to pull Image from registry + ImagePullSecrets ImagePullSecrets `json:"imagePullSecrets,omitempty"` +} + +func (i *Image) Apply(pod *core.PodTemplateSpec) error { + if i == nil { + return nil + } + + for _, secret := range i.ImagePullSecrets { + if hasImagePullSecret(pod.Spec.ImagePullSecrets, secret) { + continue + } + + pod.Spec.ImagePullSecrets = append(pod.Spec.ImagePullSecrets, core.LocalObjectReference{ + Name: secret, + }) + } + + return nil +} + +func (i *Image) With(other *Image) *Image { + if i == nil && other == nil { + return nil + } + + if other == nil { + return i.DeepCopy() + } + + return other.DeepCopy() +} + +func (i *Image) Validate() error { + if i == nil { + return nil + } + + return shared.WithErrors( + shared.PrefixResourceErrors("pullSecrets", shared.ValidateList(i.ImagePullSecrets, shared.ValidateResourceName)), + ) +} + +func hasImagePullSecret(secrets []core.LocalObjectReference, secret string) bool { + for _, sec := range secrets { + if sec.Name == secret { + return true + } + } + + return false +} diff --git a/pkg/apis/scheduler/v1alpha1/pod/resources/image_test.go b/pkg/apis/scheduler/v1alpha1/pod/resources/image_test.go new file mode 100644 index 000000000..0c44770b2 --- /dev/null +++ b/pkg/apis/scheduler/v1alpha1/pod/resources/image_test.go @@ -0,0 +1,88 @@ +// +// DISCLAIMER +// +// Copyright 2024 ArangoDB GmbH, Cologne, Germany +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Copyright holder is ArangoDB GmbH, Cologne, Germany +// + +package resources + +import ( + "testing" + + "github.com/stretchr/testify/require" + core "k8s.io/api/core/v1" +) + +func applyImage(t *testing.T, template *core.PodTemplateSpec, ns ...*Image) func(in func(t *testing.T, pod *core.PodTemplateSpec)) { + var i *Image + + for _, n := range ns { + require.NoError(t, n.Validate()) + + i = i.With(n) + + require.NoError(t, i.Validate()) + } + + template = template.DeepCopy() + + if template == nil { + template = &core.PodTemplateSpec{} + } + + require.NoError(t, i.Apply(template)) + + return func(in func(t *testing.T, spec *core.PodTemplateSpec)) { + t.Run("Validate", func(t *testing.T) { + in(t, template) + }) + } +} + +func Test_Image(t *testing.T) { + t.Run("With Nil", func(t *testing.T) { + applyImage(t, nil, nil)(func(t *testing.T, pod *core.PodTemplateSpec) { + require.Len(t, pod.Spec.ImagePullSecrets, 0) + }) + }) + t.Run("With Empty", func(t *testing.T) { + applyImage(t, &core.PodTemplateSpec{})(func(t *testing.T, pod *core.PodTemplateSpec) { + require.Len(t, pod.Spec.ImagePullSecrets, 0) + }) + }) + t.Run("With PS", func(t *testing.T) { + applyImage(t, &core.PodTemplateSpec{}, &Image{ + ImagePullSecrets: []string{ + "secret", + }, + })(func(t *testing.T, pod *core.PodTemplateSpec) { + require.Len(t, pod.Spec.ImagePullSecrets, 1) + require.Equal(t, "secret", pod.Spec.ImagePullSecrets[0].Name) + }) + }) + t.Run("With PS2", func(t *testing.T) { + applyImage(t, &core.PodTemplateSpec{}, &Image{ + ImagePullSecrets: []string{ + "secret", + "secret", + }, + })(func(t *testing.T, pod *core.PodTemplateSpec) { + require.Len(t, pod.Spec.ImagePullSecrets, 1) + require.Equal(t, "secret", pod.Spec.ImagePullSecrets[0].Name) + }) + }) +} diff --git a/pkg/apis/scheduler/v1alpha1/pod/resources/metadata.go b/pkg/apis/scheduler/v1alpha1/pod/resources/metadata.go new file mode 100644 index 000000000..bb557305d --- /dev/null +++ b/pkg/apis/scheduler/v1alpha1/pod/resources/metadata.go @@ -0,0 +1,91 @@ +// +// DISCLAIMER +// +// Copyright 2024 ArangoDB GmbH, Cologne, Germany +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Copyright holder is ArangoDB GmbH, Cologne, Germany +// + +package resources + +import ( + core "k8s.io/api/core/v1" + meta "k8s.io/apimachinery/pkg/apis/meta/v1" + + "github.com/arangodb/kube-arangodb/pkg/apis/scheduler/v1alpha1/interfaces" + "github.com/arangodb/kube-arangodb/pkg/util" + kresources "github.com/arangodb/kube-arangodb/pkg/util/k8sutil/resources" +) + +var _ interfaces.Pod[Metadata] = &Metadata{} + +type Metadata struct { + // Map of string keys and values that can be used to organize and categorize + // (scope and select) objects. May match selectors of replication controllers + // and services. + // +doc/link: Kubernetes docs|https://kubernetes.io/docs/concepts/overview/working-with-objects/labels + Labels map[string]string `json:"labels,omitempty"` + + // Annotations is an unstructured key value map stored with a resource that may be + // set by external tools to store and retrieve arbitrary metadata. They are not + // queryable and should be preserved when modifying objects. + // +doc/link: Kubernetes docs|https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations + Annotations map[string]string `json:"annotations,omitempty"` + + // List of objects depended by this object. If ALL objects in the list have + // been deleted, this object will be garbage collected. If this object is managed by a controller, + // then an entry in this list will point to this controller, with the controller field set to true. + // There cannot be more than one managing controller. + // +doc/type: meta.OwnerReference + OwnerReferences []meta.OwnerReference `json:"ownerReferences,omitempty"` +} + +func (m *Metadata) Apply(template *core.PodTemplateSpec) error { + if m == nil { + return nil + } + + z := m.DeepCopy() + + template.Labels = z.Labels + template.Annotations = z.Annotations + template.OwnerReferences = z.OwnerReferences + + return nil +} + +func (m *Metadata) With(other *Metadata) *Metadata { + if m == nil && other == nil { + return nil + } + + if m == nil { + return other.DeepCopy() + } + + if other == nil { + return m.DeepCopy() + } + + return &Metadata{ + Labels: util.MergeMaps(true, m.Labels, other.Labels), + Annotations: util.MergeMaps(true, m.Annotations, other.Annotations), + OwnerReferences: kresources.MergeOwnerReferences(m.OwnerReferences, other.OwnerReferences), + } +} + +func (m *Metadata) Validate() error { + return nil +} diff --git a/pkg/apis/scheduler/v1alpha1/pod/resources/metadata_test.go b/pkg/apis/scheduler/v1alpha1/pod/resources/metadata_test.go new file mode 100644 index 000000000..ad4558078 --- /dev/null +++ b/pkg/apis/scheduler/v1alpha1/pod/resources/metadata_test.go @@ -0,0 +1,139 @@ +// +// DISCLAIMER +// +// Copyright 2024 ArangoDB GmbH, Cologne, Germany +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Copyright holder is ArangoDB GmbH, Cologne, Germany +// + +package resources + +import ( + "testing" + + "github.com/stretchr/testify/require" + core "k8s.io/api/core/v1" + meta "k8s.io/apimachinery/pkg/apis/meta/v1" +) + +func applyMetadata(t *testing.T, template *core.PodTemplateSpec, ns ...*Metadata) func(in func(t *testing.T, pod *core.PodTemplateSpec)) { + var i *Metadata + + for _, n := range ns { + require.NoError(t, n.Validate()) + + i = i.With(n) + + require.NoError(t, i.Validate()) + } + + template = template.DeepCopy() + + if template == nil { + template = &core.PodTemplateSpec{} + } + + require.NoError(t, i.Apply(template)) + + return func(in func(t *testing.T, spec *core.PodTemplateSpec)) { + t.Run("Validate", func(t *testing.T) { + in(t, template) + }) + } +} + +func Test_Metadata(t *testing.T) { + t.Run("Apply", func(t *testing.T) { + applyMetadata(t, &core.PodTemplateSpec{})(func(t *testing.T, pod *core.PodTemplateSpec) { + require.Len(t, pod.Labels, 0) + require.Len(t, pod.Annotations, 0) + require.Len(t, pod.OwnerReferences, 0) + }) + }) + t.Run("Apply nil", func(t *testing.T) { + applyMetadata(t, nil)(func(t *testing.T, pod *core.PodTemplateSpec) { + require.Len(t, pod.Labels, 0) + require.Len(t, pod.Annotations, 0) + require.Len(t, pod.OwnerReferences, 0) + }) + }) + t.Run("One", func(t *testing.T) { + applyMetadata(t, nil, &Metadata{ + Labels: map[string]string{ + "A": "1", + }, + Annotations: map[string]string{ + "B": "2", + }, + OwnerReferences: []meta.OwnerReference{ + { + UID: "test", + }, + }, + })(func(t *testing.T, pod *core.PodTemplateSpec) { + require.Len(t, pod.Labels, 1) + require.Contains(t, pod.Labels, "A") + require.EqualValues(t, "1", pod.Labels["A"]) + + require.Len(t, pod.Annotations, 1) + require.Contains(t, pod.Annotations, "B") + require.EqualValues(t, "2", pod.Annotations["B"]) + + require.Len(t, pod.OwnerReferences, 1) + require.EqualValues(t, "test", pod.OwnerReferences[0].UID) + }) + }) + t.Run("Update", func(t *testing.T) { + applyMetadata(t, nil, &Metadata{ + Labels: map[string]string{ + "A": "1", + }, + Annotations: map[string]string{ + "B": "2", + }, + OwnerReferences: []meta.OwnerReference{ + { + UID: "test", + }, + }, + }, &Metadata{ + Labels: map[string]string{ + "A": "3", + }, + Annotations: map[string]string{ + "B2": "4", + }, + OwnerReferences: []meta.OwnerReference{ + { + UID: "test2", + }, + }, + })(func(t *testing.T, pod *core.PodTemplateSpec) { + require.Len(t, pod.Labels, 1) + require.Contains(t, pod.Labels, "A") + require.EqualValues(t, "3", pod.Labels["A"]) + + require.Len(t, pod.Annotations, 2) + require.Contains(t, pod.Annotations, "B") + require.EqualValues(t, "2", pod.Annotations["B"]) + require.Contains(t, pod.Annotations, "B2") + require.EqualValues(t, "4", pod.Annotations["B2"]) + + require.Len(t, pod.OwnerReferences, 2) + require.EqualValues(t, "test", pod.OwnerReferences[0].UID) + require.EqualValues(t, "test2", pod.OwnerReferences[1].UID) + }) + }) +} diff --git a/pkg/apis/scheduler/v1alpha1/pod/resources/service_account.go b/pkg/apis/scheduler/v1alpha1/pod/resources/service_account.go new file mode 100644 index 000000000..68099a796 --- /dev/null +++ b/pkg/apis/scheduler/v1alpha1/pod/resources/service_account.go @@ -0,0 +1,74 @@ +// +// DISCLAIMER +// +// Copyright 2024 ArangoDB GmbH, Cologne, Germany +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Copyright holder is ArangoDB GmbH, Cologne, Germany +// + +package resources + +import ( + core "k8s.io/api/core/v1" + + "github.com/arangodb/kube-arangodb/pkg/apis/scheduler/v1alpha1/interfaces" +) + +var _ interfaces.Pod[ServiceAccount] = &ServiceAccount{} + +type ServiceAccount struct { + + // ServiceAccountName is the name of the ServiceAccount to use to run this pod. + // +doc/link: Kubernetes docs|https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/ + ServiceAccountName string `json:"serviceAccountName,omitempty"` + + // AutomountServiceAccountToken indicates whether a service account token should be automatically mounted. + AutomountServiceAccountToken *bool `json:"automountServiceAccountToken,omitempty"` +} + +func (s *ServiceAccount) Apply(template *core.PodTemplateSpec) error { + if s == nil { + return nil + } + + c := s.DeepCopy() + + template.Spec.ServiceAccountName = c.ServiceAccountName + if c.AutomountServiceAccountToken != nil { + template.Spec.AutomountServiceAccountToken = c.AutomountServiceAccountToken + } + + return nil +} + +func (s *ServiceAccount) With(newResources *ServiceAccount) *ServiceAccount { + if s == nil && newResources == nil { + return nil + } + + if s == nil { + return newResources.DeepCopy() + } + + if newResources == nil { + return s.DeepCopy() + } + + return newResources.DeepCopy() +} + +func (s *ServiceAccount) Validate() error { + return nil +} diff --git a/pkg/apis/scheduler/v1alpha1/pod/resources/service_account_test.go b/pkg/apis/scheduler/v1alpha1/pod/resources/service_account_test.go new file mode 100644 index 000000000..6097c58d1 --- /dev/null +++ b/pkg/apis/scheduler/v1alpha1/pod/resources/service_account_test.go @@ -0,0 +1,94 @@ +// +// DISCLAIMER +// +// Copyright 2024 ArangoDB GmbH, Cologne, Germany +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Copyright holder is ArangoDB GmbH, Cologne, Germany +// + +package resources + +import ( + "testing" + + "github.com/stretchr/testify/require" + core "k8s.io/api/core/v1" + + "github.com/arangodb/kube-arangodb/pkg/util" +) + +func applyServiceAccount(t *testing.T, template *core.PodTemplateSpec, ns ...*ServiceAccount) func(in func(t *testing.T, pod *core.PodTemplateSpec)) { + var i *ServiceAccount + + for _, n := range ns { + require.NoError(t, n.Validate()) + + i = i.With(n) + + require.NoError(t, i.Validate()) + } + + template = template.DeepCopy() + + if template == nil { + template = &core.PodTemplateSpec{} + } + + require.NoError(t, i.Apply(template)) + + return func(in func(t *testing.T, spec *core.PodTemplateSpec)) { + t.Run("Validate", func(t *testing.T) { + in(t, template) + }) + } +} + +func Test_ServiceAccount(t *testing.T) { + t.Run("Nil", func(t *testing.T) { + applyServiceAccount(t, nil)(func(t *testing.T, pod *core.PodTemplateSpec) { + require.Empty(t, pod.Spec.ServiceAccountName) + require.Nil(t, pod.Spec.AutomountServiceAccountToken) + }) + }) + t.Run("Empty", func(t *testing.T) { + applyServiceAccount(t, &core.PodTemplateSpec{})(func(t *testing.T, pod *core.PodTemplateSpec) { + require.Empty(t, pod.Spec.ServiceAccountName) + require.Nil(t, pod.Spec.AutomountServiceAccountToken) + }) + }) + t.Run("One Provided", func(t *testing.T) { + applyServiceAccount(t, &core.PodTemplateSpec{}, &ServiceAccount{ + ServiceAccountName: "test", + AutomountServiceAccountToken: util.NewType(true), + })(func(t *testing.T, pod *core.PodTemplateSpec) { + require.EqualValues(t, "test", pod.Spec.ServiceAccountName) + + require.NotNil(t, pod.Spec.AutomountServiceAccountToken) + require.True(t, *pod.Spec.AutomountServiceAccountToken) + }) + }) + t.Run("Override", func(t *testing.T) { + applyServiceAccount(t, &core.PodTemplateSpec{}, &ServiceAccount{ + ServiceAccountName: "test", + AutomountServiceAccountToken: util.NewType(true), + }, &ServiceAccount{ + ServiceAccountName: "test2", + })(func(t *testing.T, pod *core.PodTemplateSpec) { + require.EqualValues(t, "test2", pod.Spec.ServiceAccountName) + + require.Nil(t, pod.Spec.AutomountServiceAccountToken) + }) + }) +} diff --git a/pkg/apis/scheduler/v1alpha1/pod/resources/volumes.go b/pkg/apis/scheduler/v1alpha1/pod/resources/volumes.go index 3e561cdab..9e2bd6efd 100644 --- a/pkg/apis/scheduler/v1alpha1/pod/resources/volumes.go +++ b/pkg/apis/scheduler/v1alpha1/pod/resources/volumes.go @@ -43,7 +43,7 @@ func (v *Volumes) Apply(template *core.PodTemplateSpec) error { obj := v.DeepCopy() - template.Spec.Volumes = obj.Volumes + template.Spec.Volumes = kresources.MergeVolumes(template.Spec.Volumes, obj.Volumes...) return nil } diff --git a/pkg/apis/scheduler/v1alpha1/pod/resources/zz_generated.deepcopy.go b/pkg/apis/scheduler/v1alpha1/pod/resources/zz_generated.deepcopy.go index 22c16a422..b35c27c24 100644 --- a/pkg/apis/scheduler/v1alpha1/pod/resources/zz_generated.deepcopy.go +++ b/pkg/apis/scheduler/v1alpha1/pod/resources/zz_generated.deepcopy.go @@ -26,9 +26,88 @@ package resources import ( - v1 "k8s.io/api/core/v1" + corev1 "k8s.io/api/core/v1" + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" ) +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Image) DeepCopyInto(out *Image) { + *out = *in + if in.ImagePullSecrets != nil { + in, out := &in.ImagePullSecrets, &out.ImagePullSecrets + *out = make(ImagePullSecrets, len(*in)) + copy(*out, *in) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Image. +func (in *Image) DeepCopy() *Image { + if in == nil { + return nil + } + out := new(Image) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in ImagePullSecrets) DeepCopyInto(out *ImagePullSecrets) { + { + in := &in + *out = make(ImagePullSecrets, len(*in)) + copy(*out, *in) + return + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ImagePullSecrets. +func (in ImagePullSecrets) DeepCopy() ImagePullSecrets { + if in == nil { + return nil + } + out := new(ImagePullSecrets) + in.DeepCopyInto(out) + return *out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Metadata) DeepCopyInto(out *Metadata) { + *out = *in + if in.Labels != nil { + in, out := &in.Labels, &out.Labels + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.Annotations != nil { + in, out := &in.Annotations, &out.Annotations + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.OwnerReferences != nil { + in, out := &in.OwnerReferences, &out.OwnerReferences + *out = make([]v1.OwnerReference, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Metadata. +func (in *Metadata) DeepCopy() *Metadata { + if in == nil { + return nil + } + out := new(Metadata) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *Namespace) DeepCopyInto(out *Namespace) { *out = *in @@ -77,7 +156,7 @@ func (in *Scheduling) DeepCopyInto(out *Scheduling) { } if in.Affinity != nil { in, out := &in.Affinity, &out.Affinity - *out = new(v1.Affinity) + *out = new(corev1.Affinity) (*in).DeepCopyInto(*out) } if in.Tolerations != nil { @@ -110,7 +189,7 @@ func (in *Security) DeepCopyInto(out *Security) { *out = *in if in.PodSecurityContext != nil { in, out := &in.PodSecurityContext, &out.PodSecurityContext - *out = new(v1.PodSecurityContext) + *out = new(corev1.PodSecurityContext) (*in).DeepCopyInto(*out) } return @@ -126,6 +205,27 @@ func (in *Security) DeepCopy() *Security { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ServiceAccount) DeepCopyInto(out *ServiceAccount) { + *out = *in + if in.AutomountServiceAccountToken != nil { + in, out := &in.AutomountServiceAccountToken, &out.AutomountServiceAccountToken + *out = new(bool) + **out = **in + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceAccount. +func (in *ServiceAccount) DeepCopy() *ServiceAccount { + if in == nil { + return nil + } + out := new(ServiceAccount) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in Tolerations) DeepCopyInto(out *Tolerations) { { @@ -153,7 +253,7 @@ func (in *Volumes) DeepCopyInto(out *Volumes) { *out = *in if in.Volumes != nil { in, out := &in.Volumes, &out.Volumes - *out = make([]v1.Volume, len(*in)) + *out = make([]corev1.Volume, len(*in)) for i := range *in { (*in)[i].DeepCopyInto(&(*out)[i]) } diff --git a/pkg/apis/scheduler/v1alpha1/pod/zz_generated.deepcopy.go b/pkg/apis/scheduler/v1alpha1/pod/zz_generated.deepcopy.go index f61d14ab0..5274a706e 100644 --- a/pkg/apis/scheduler/v1alpha1/pod/zz_generated.deepcopy.go +++ b/pkg/apis/scheduler/v1alpha1/pod/zz_generated.deepcopy.go @@ -32,6 +32,16 @@ import ( // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *Pod) DeepCopyInto(out *Pod) { *out = *in + if in.Metadata != nil { + in, out := &in.Metadata, &out.Metadata + *out = new(resources.Metadata) + (*in).DeepCopyInto(*out) + } + if in.Image != nil { + in, out := &in.Image, &out.Image + *out = new(resources.Image) + (*in).DeepCopyInto(*out) + } if in.Scheduling != nil { in, out := &in.Scheduling, &out.Scheduling *out = new(resources.Scheduling) @@ -52,6 +62,11 @@ func (in *Pod) DeepCopyInto(out *Pod) { *out = new(resources.Volumes) (*in).DeepCopyInto(*out) } + if in.ServiceAccount != nil { + in, out := &in.ServiceAccount, &out.ServiceAccount + *out = new(resources.ServiceAccount) + (*in).DeepCopyInto(*out) + } return } diff --git a/pkg/apis/scheduler/v1alpha1/profile.go b/pkg/apis/scheduler/v1alpha1/profile.go new file mode 100644 index 000000000..599f866e3 --- /dev/null +++ b/pkg/apis/scheduler/v1alpha1/profile.go @@ -0,0 +1,45 @@ +// +// DISCLAIMER +// +// Copyright 2024 ArangoDB GmbH, Cologne, Germany +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Copyright holder is ArangoDB GmbH, Cologne, Germany +// + +package v1alpha1 + +import meta "k8s.io/apimachinery/pkg/apis/meta/v1" + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// ArangoProfileList is a list of Arango Profile. +type ArangoProfileList struct { + meta.TypeMeta `json:",inline"` + meta.ListMeta `json:"metadata,omitempty"` + + Items []ArangoProfile `json:"items"` +} + +// +genclient +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// ArangoProfile contains definition and status of the Arango Profile. +type ArangoProfile struct { + meta.TypeMeta `json:",inline"` + meta.ObjectMeta `json:"metadata,omitempty"` + + Spec ProfileSpec `json:"spec"` + Status ProfileStatus `json:"status"` +} diff --git a/pkg/apis/scheduler/v1alpha1/profile_selectors.go b/pkg/apis/scheduler/v1alpha1/profile_selectors.go new file mode 100644 index 000000000..8e2f33470 --- /dev/null +++ b/pkg/apis/scheduler/v1alpha1/profile_selectors.go @@ -0,0 +1,49 @@ +// +// DISCLAIMER +// +// Copyright 2024 ArangoDB GmbH, Cologne, Germany +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Copyright holder is ArangoDB GmbH, Cologne, Germany +// + +package v1alpha1 + +import ( + meta "k8s.io/apimachinery/pkg/apis/meta/v1" + + kresources "github.com/arangodb/kube-arangodb/pkg/util/k8sutil/resources" +) + +type ProfileSelectors struct { + // Label keeps information about label selector + // +doc/type: meta.LabelSelector + Label *meta.LabelSelector `json:"label,omitempty"` +} + +func (p *ProfileSelectors) Validate() error { + if p == nil { + return nil + } + + return nil +} + +func (p *ProfileSelectors) Select(labels map[string]string) bool { + if p == nil || p.Label == nil { + return false + } + + return kresources.SelectLabels(p.Label, labels) +} diff --git a/pkg/apis/scheduler/v1alpha1/profile_spec.go b/pkg/apis/scheduler/v1alpha1/profile_spec.go new file mode 100644 index 000000000..30bef5c4b --- /dev/null +++ b/pkg/apis/scheduler/v1alpha1/profile_spec.go @@ -0,0 +1,44 @@ +// +// DISCLAIMER +// +// Copyright 2024 ArangoDB GmbH, Cologne, Germany +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Copyright holder is ArangoDB GmbH, Cologne, Germany +// + +package v1alpha1 + +import ( + shared "github.com/arangodb/kube-arangodb/pkg/apis/shared" +) + +type ProfileSpec struct { + // Selectors keeps information about ProfileSelectors + Selectors *ProfileSelectors `json:"selectors,omitempty"` + + // Template keeps the Profile Template + Template *ProfileTemplate `json:"template,omitempty"` +} + +func (p *ProfileSpec) Validate() error { + if p == nil { + return nil + } + + return shared.WithErrors( + shared.PrefixResourceErrors("selectors", p.Selectors.Validate()), + shared.PrefixResourceErrors("template", p.Template.Validate()), + ) +} diff --git a/pkg/apis/scheduler/v1alpha1/profile_status.go b/pkg/apis/scheduler/v1alpha1/profile_status.go new file mode 100644 index 000000000..76a78cea9 --- /dev/null +++ b/pkg/apis/scheduler/v1alpha1/profile_status.go @@ -0,0 +1,24 @@ +// +// DISCLAIMER +// +// Copyright 2024 ArangoDB GmbH, Cologne, Germany +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Copyright holder is ArangoDB GmbH, Cologne, Germany +// + +package v1alpha1 + +type ProfileStatus struct { +} diff --git a/pkg/apis/scheduler/v1alpha1/profile_template.go b/pkg/apis/scheduler/v1alpha1/profile_template.go index 7aae1f646..d24b1420a 100644 --- a/pkg/apis/scheduler/v1alpha1/profile_template.go +++ b/pkg/apis/scheduler/v1alpha1/profile_template.go @@ -23,6 +23,7 @@ package v1alpha1 import ( schedulerPodApi "github.com/arangodb/kube-arangodb/pkg/apis/scheduler/v1alpha1/pod" shared "github.com/arangodb/kube-arangodb/pkg/apis/shared" + "github.com/arangodb/kube-arangodb/pkg/util" ) type ProfileTemplate struct { @@ -33,6 +34,50 @@ type ProfileTemplate struct { Container *ProfileContainerTemplate `json:"container,omitempty"` } +func (p *ProfileTemplate) GetPod() *schedulerPodApi.Pod { + if p == nil || p.Pod == nil { + return nil + } + + return p.Pod +} + +func (p *ProfileTemplate) GetContainer() *ProfileContainerTemplate { + if p == nil || p.Container == nil { + return nil + } + + return p.Container +} + +func (p *ProfileTemplate) GetPriority() int { + if p == nil || p.Priority == nil { + return 0 + } + + return *p.Priority +} + +func (p *ProfileTemplate) With(other *ProfileTemplate) *ProfileTemplate { + if p == nil && other == nil { + return nil + } + + if p == nil { + return other.DeepCopy() + } + + if other == nil { + return p.DeepCopy() + } + + return &ProfileTemplate{ + Priority: util.NewType(max(p.GetPriority(), other.GetPriority())), + Pod: p.Pod.With(other.Pod), + Container: p.Container.With(other.Container), + } +} + func (p *ProfileTemplate) Validate() error { if p == nil { return nil diff --git a/pkg/apis/scheduler/v1alpha1/profile_templates.go b/pkg/apis/scheduler/v1alpha1/profile_templates.go index de38a0bcf..f3e87557e 100644 --- a/pkg/apis/scheduler/v1alpha1/profile_templates.go +++ b/pkg/apis/scheduler/v1alpha1/profile_templates.go @@ -25,16 +25,15 @@ import ( core "k8s.io/api/core/v1" - "github.com/arangodb/kube-arangodb/pkg/util" "github.com/arangodb/kube-arangodb/pkg/util/errors" ) -type ProfileTemplates []ProfileTemplate +type ProfileTemplates []*ProfileTemplate func (p ProfileTemplates) Sort() ProfileTemplates { sort.Slice(p, func(i, j int) bool { - if a, b := util.WithDefault(p[i].Priority), util.WithDefault(p[j].Priority); a != b { - return a < b + if a, b := p[i].GetPriority(), p[j].GetPriority(); a != b { + return a > b } return false @@ -43,27 +42,33 @@ func (p ProfileTemplates) Sort() ProfileTemplates { return p } -func (p ProfileTemplates) Render() (*core.PodTemplateSpec, error) { - var pod core.PodTemplateSpec +func (p ProfileTemplates) Merge() *ProfileTemplate { + var z *ProfileTemplate - // Apply Pod Spec - for id := range p { - if err := p[id].Pod.Apply(&pod); err != nil { - return nil, errors.Wrapf(err, "Error while rendering Pod for %d", id) - } + for id := len(p) - 1; id >= 0; id-- { + z = z.With(p[id]) } - // Apply Containers Spec - for id := range p { - if err := p[id].Container.ApplyContainers(&pod); err != nil { - return nil, errors.Wrapf(err, "Error while rendering Pod for %d", id) - } + + return z +} + +func (p ProfileTemplates) RenderOnTemplate(pod *core.PodTemplateSpec) error { + t := p.Merge() + + // Apply Pod Spec + if err := t.GetPod().Apply(pod); err != nil { + return errors.Wrapf(err, "Error while rendering Pod") } + // Apply Generic Containers Spec - for id := range p { - if err := p[id].Container.ApplyGeneric(&pod); err != nil { - return nil, errors.Wrapf(err, "Error while rendering Pod for %d", id) - } + if err := t.GetContainer().ApplyGeneric(pod); err != nil { + return errors.Wrapf(err, "Error while rendering Pod") + } + + // Apply Containers Spec + if err := t.GetContainer().ApplyContainers(pod); err != nil { + return errors.Wrapf(err, "Error while rendering Pod") } - return pod.DeepCopy(), nil + return nil } diff --git a/pkg/apis/scheduler/v1alpha1/register.go b/pkg/apis/scheduler/v1alpha1/register.go index 70e098a1e..f31aeaefb 100644 --- a/pkg/apis/scheduler/v1alpha1/register.go +++ b/pkg/apis/scheduler/v1alpha1/register.go @@ -47,7 +47,10 @@ func Resource(resource string) schema.GroupResource { // addKnownTypes adds the set of types defined in this package to the supplied scheme. func addKnownTypes(s *runtime.Scheme) error { - s.AddKnownTypes(SchemeGroupVersion) + s.AddKnownTypes(SchemeGroupVersion, + &ArangoProfile{}, + &ArangoProfileList{}, + ) meta.AddToGroupVersion(s, SchemeGroupVersion) return nil } diff --git a/pkg/apis/scheduler/v1alpha1/zz_generated.deepcopy.go b/pkg/apis/scheduler/v1alpha1/zz_generated.deepcopy.go index 3fbf82417..19ef99b6f 100644 --- a/pkg/apis/scheduler/v1alpha1/zz_generated.deepcopy.go +++ b/pkg/apis/scheduler/v1alpha1/zz_generated.deepcopy.go @@ -28,8 +28,71 @@ package v1alpha1 import ( container "github.com/arangodb/kube-arangodb/pkg/apis/scheduler/v1alpha1/container" pod "github.com/arangodb/kube-arangodb/pkg/apis/scheduler/v1alpha1/pod" + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + runtime "k8s.io/apimachinery/pkg/runtime" ) +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ArangoProfile) DeepCopyInto(out *ArangoProfile) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + out.Status = in.Status + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ArangoProfile. +func (in *ArangoProfile) DeepCopy() *ArangoProfile { + if in == nil { + return nil + } + out := new(ArangoProfile) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ArangoProfile) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ArangoProfileList) DeepCopyInto(out *ArangoProfileList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]ArangoProfile, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ArangoProfileList. +func (in *ArangoProfileList) DeepCopy() *ArangoProfileList { + if in == nil { + return nil + } + out := new(ArangoProfileList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ArangoProfileList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *ProfileContainerTemplate) DeepCopyInto(out *ProfileContainerTemplate) { *out = *in @@ -58,6 +121,69 @@ func (in *ProfileContainerTemplate) DeepCopy() *ProfileContainerTemplate { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ProfileSelectors) DeepCopyInto(out *ProfileSelectors) { + *out = *in + if in.Label != nil { + in, out := &in.Label, &out.Label + *out = new(v1.LabelSelector) + (*in).DeepCopyInto(*out) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProfileSelectors. +func (in *ProfileSelectors) DeepCopy() *ProfileSelectors { + if in == nil { + return nil + } + out := new(ProfileSelectors) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ProfileSpec) DeepCopyInto(out *ProfileSpec) { + *out = *in + if in.Selectors != nil { + in, out := &in.Selectors, &out.Selectors + *out = new(ProfileSelectors) + (*in).DeepCopyInto(*out) + } + if in.Template != nil { + in, out := &in.Template, &out.Template + *out = new(ProfileTemplate) + (*in).DeepCopyInto(*out) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProfileSpec. +func (in *ProfileSpec) DeepCopy() *ProfileSpec { + if in == nil { + return nil + } + out := new(ProfileSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ProfileStatus) DeepCopyInto(out *ProfileStatus) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProfileStatus. +func (in *ProfileStatus) DeepCopy() *ProfileStatus { + if in == nil { + return nil + } + out := new(ProfileStatus) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *ProfileTemplate) DeepCopyInto(out *ProfileTemplate) { *out = *in @@ -95,7 +221,11 @@ func (in ProfileTemplates) DeepCopyInto(out *ProfileTemplates) { in := &in *out = make(ProfileTemplates, len(*in)) for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(ProfileTemplate) + (*in).DeepCopyInto(*out) + } } return } diff --git a/pkg/apis/shared/v1/object.go b/pkg/apis/shared/v1/object.go index ea81a06b5..fd1ec59a1 100644 --- a/pkg/apis/shared/v1/object.go +++ b/pkg/apis/shared/v1/object.go @@ -1,7 +1,7 @@ // // DISCLAIMER // -// Copyright 2023 ArangoDB GmbH, Cologne, Germany +// Copyright 2023-2024 ArangoDB GmbH, Cologne, Germany // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -28,6 +28,12 @@ import ( "github.com/arangodb/kube-arangodb/pkg/util" ) +func NewObjectWithChecksum(object meta.Object, checksum string) Object { + obj := NewObject(object) + obj.Checksum = util.NewType(checksum) + return obj +} + func NewObject(object meta.Object) Object { var n Object @@ -50,6 +56,9 @@ type Object struct { // UID keeps the information about object UID UID *types.UID `json:"uid,omitempty"` + + // UID keeps the information about object Checksum + Checksum *string `json:"checksum,omitempty"` } func (o *Object) IsEmpty() bool { @@ -85,6 +94,16 @@ func (o *Object) GetUID() types.UID { return "" } +func (o *Object) GetChecksum() string { + if o != nil { + if n := o.Checksum; n != nil { + return *n + } + } + + return "" +} + func (o *Object) Equals(obj meta.Object) bool { if o == nil { return false diff --git a/pkg/apis/shared/v1/zz_generated.deepcopy.go b/pkg/apis/shared/v1/zz_generated.deepcopy.go index 1ac9e9d82..27caeebad 100644 --- a/pkg/apis/shared/v1/zz_generated.deepcopy.go +++ b/pkg/apis/shared/v1/zz_generated.deepcopy.go @@ -62,6 +62,11 @@ func (in *Object) DeepCopyInto(out *Object) { *out = new(types.UID) **out = **in } + if in.Checksum != nil { + in, out := &in.Checksum, &out.Checksum + *out = new(string) + **out = **in + } return } diff --git a/pkg/crd/apply.go b/pkg/crd/apply.go index 4d37192af..73a625307 100644 --- a/pkg/crd/apply.go +++ b/pkg/crd/apply.go @@ -1,7 +1,7 @@ // // DISCLAIMER // -// Copyright 2016-2023 ArangoDB GmbH, Cologne, Germany +// Copyright 2016-2024 ArangoDB GmbH, Cologne, Germany // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -22,7 +22,6 @@ package crd import ( "context" - "fmt" authorization "k8s.io/api/authorization/v1" apiextensions "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" @@ -33,6 +32,7 @@ import ( "github.com/arangodb/kube-arangodb/pkg/crd/crds" "github.com/arangodb/kube-arangodb/pkg/logging" + kresources "github.com/arangodb/kube-arangodb/pkg/util/k8sutil/resources" "github.com/arangodb/kube-arangodb/pkg/util/kclient" ) @@ -150,31 +150,7 @@ func verifyCRDAccess(ctx context.Context, client kclient.Client, crd string, ver return *c } - r, err := verifyCRDAccessRequest(ctx, client, crd, verb) - if err != nil { - return authorization.SubjectAccessReviewStatus{ - Allowed: false, - Reason: fmt.Sprintf("Unable to check access: %s", err.Error()), - } - } - - return r.Status + return kresources.VerifyAccessRequestStatus(ctx, client.Kubernetes(), verb, "apiextensions.k8s.io", "v1", "customresourcedefinitions", "", crd, "") } var verifyCRDAccessForTests *authorization.SubjectAccessReviewStatus - -func verifyCRDAccessRequest(ctx context.Context, client kclient.Client, crd string, verb string) (*authorization.SelfSubjectAccessReview, error) { - review := authorization.SelfSubjectAccessReview{ - Spec: authorization.SelfSubjectAccessReviewSpec{ - ResourceAttributes: &authorization.ResourceAttributes{ - Verb: verb, - Group: "apiextensions.k8s.io", - Version: "v1", - Resource: "customresourcedefinitions", - Name: crd, - }, - }, - } - - return client.Kubernetes().AuthorizationV1().SelfSubjectAccessReviews().Create(ctx, &review, meta.CreateOptions{}) -} diff --git a/pkg/crd/arangoprofile.go b/pkg/crd/arangoprofile.go new file mode 100644 index 000000000..4c2f7df15 --- /dev/null +++ b/pkg/crd/arangoprofile.go @@ -0,0 +1,31 @@ +// +// DISCLAIMER +// +// Copyright 2024 ArangoDB GmbH, Cologne, Germany +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Copyright holder is ArangoDB GmbH, Cologne, Germany +// + +package crd + +import ( + "github.com/arangodb/kube-arangodb/pkg/crd/crds" +) + +func init() { + registerCRDWithPanic(func(opts *crds.CRDOptions) crds.Definition { + return crds.SchedulerProfileDefinitionWithOptions(opts.AsFunc()) + }, nil) +} diff --git a/pkg/crd/crds/crds.go b/pkg/crd/crds/crds.go index 9136096db..16ec303a0 100644 --- a/pkg/crd/crds/crds.go +++ b/pkg/crd/crds/crds.go @@ -63,6 +63,9 @@ func AllDefinitions() []Definition { MLStorageDefinitionWithOptions(), MLCronJobDefinitionWithOptions(), MLBatchJobDefinitionWithOptions(), + + // Scheduler + SchedulerProfileDefinitionWithOptions(), } } diff --git a/pkg/crd/crds/crds_test.go b/pkg/crd/crds/crds_test.go index f230403f1..cd70d598d 100644 --- a/pkg/crd/crds/crds_test.go +++ b/pkg/crd/crds/crds_test.go @@ -1,7 +1,7 @@ // // DISCLAIMER // -// Copyright 2023 ArangoDB GmbH, Cologne, Germany +// Copyright 2023-2024 ArangoDB GmbH, Cologne, Germany // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -32,6 +32,7 @@ import ( "github.com/arangodb/kube-arangodb/pkg/apis/deployment" "github.com/arangodb/kube-arangodb/pkg/apis/ml" "github.com/arangodb/kube-arangodb/pkg/apis/replication" + "github.com/arangodb/kube-arangodb/pkg/apis/scheduler" "github.com/arangodb/kube-arangodb/pkg/apis/storage" ) @@ -73,6 +74,7 @@ func Test_CRD(t *testing.T) { {ml.ArangoMLStorageCRDName, MLStorageDefinitionWithOptions}, {ml.ArangoMLCronJobCRDName, MLCronJobDefinitionWithOptions}, {ml.ArangoMLBatchJobCRDName, MLBatchJobDefinitionWithOptions}, + {scheduler.ArangoProfileCRDName, SchedulerProfileDefinitionWithOptions}, } for _, tc := range testCases { @@ -108,6 +110,7 @@ func Test_CRDGetters(t *testing.T) { MLStorageWithOptions, ReplicationDeploymentReplicationWithOptions, StorageLocalStorageWithOptions, + SchedulerProfileWithOptions, } require.Equal(t, len(AllDefinitions()), len(getters)) diff --git a/pkg/crd/crds/ml-extension.schema.generated.yaml b/pkg/crd/crds/ml-extension.schema.generated.yaml index d788990da..35ea28a4a 100644 --- a/pkg/crd/crds/ml-extension.schema.generated.yaml +++ b/pkg/crd/crds/ml-extension.schema.generated.yaml @@ -337,16 +337,47 @@ v1alpha1: type: array type: object type: object + annotations: + additionalProperties: + type: string + type: object + automountServiceAccountToken: + type: boolean hostIPC: type: boolean hostNetwork: type: boolean hostPID: type: boolean + imagePullSecrets: + items: + type: string + type: array + labels: + additionalProperties: + type: string + type: object nodeSelector: additionalProperties: type: string type: object + ownerReferences: + items: + properties: + apiVersion: + type: string + blockOwnerDeletion: + type: boolean + controller: + type: boolean + kind: + type: string + name: + type: string + uid: + type: string + type: object + type: array podSecurityContext: properties: fsGroup: @@ -409,6 +440,14 @@ v1alpha1: prediction: description: Prediction defines how Prediction workload will be deployed properties: + args: + items: + type: string + type: array + command: + items: + type: string + type: array env: items: properties: @@ -483,10 +522,6 @@ v1alpha1: type: string imagePullPolicy: type: string - imagePullSecrets: - items: - type: string - type: array lifecycle: properties: postStart: @@ -890,10 +925,20 @@ v1alpha1: type: string type: object type: array + workingDir: + type: string type: object project: description: Project defines how Project workload will be deployed properties: + args: + items: + type: string + type: array + command: + items: + type: string + type: array env: items: properties: @@ -968,10 +1013,6 @@ v1alpha1: type: string imagePullPolicy: type: string - imagePullSecrets: - items: - type: string - type: array lifecycle: properties: postStart: @@ -1375,6 +1416,8 @@ v1alpha1: type: string type: object type: array + workingDir: + type: string type: object replicas: description: Replicas defines the number of replicas running specified components. No replicas created if no components are defined. @@ -1394,6 +1437,8 @@ v1alpha1: - ExternalName type: string type: object + serviceAccountName: + type: string shareProcessNamespace: type: boolean tolerations: @@ -1415,6 +1460,14 @@ v1alpha1: training: description: Training defines how Training workload will be deployed properties: + args: + items: + type: string + type: array + command: + items: + type: string + type: array env: items: properties: @@ -1489,10 +1542,6 @@ v1alpha1: type: string imagePullPolicy: type: string - imagePullSecrets: - items: - type: string - type: array lifecycle: properties: postStart: @@ -1896,6 +1945,8 @@ v1alpha1: type: string type: object type: array + workingDir: + type: string type: object volumes: items: @@ -2578,14 +2629,6 @@ v1alpha1: type: object type: array type: object - image: - type: string - imagePullPolicy: - type: string - imagePullSecrets: - items: - type: string - type: array init: description: ArangoMLExtensionTemplate define Init job specification properties: @@ -2920,6 +2963,20 @@ v1alpha1: type: array type: object type: object + annotations: + additionalProperties: + type: string + type: object + args: + items: + type: string + type: array + automountServiceAccountToken: + type: boolean + command: + items: + type: string + type: array env: items: properties: @@ -3001,6 +3058,10 @@ v1alpha1: items: type: string type: array + labels: + additionalProperties: + type: string + type: object lifecycle: properties: postStart: @@ -3163,6 +3224,23 @@ v1alpha1: additionalProperties: type: string type: object + ownerReferences: + items: + properties: + apiVersion: + type: string + blockOwnerDeletion: + type: boolean + controller: + type: boolean + kind: + type: string + name: + type: string + uid: + type: string + type: object + type: array podSecurityContext: properties: fsGroup: @@ -3383,6 +3461,8 @@ v1alpha1: type: string type: object type: object + serviceAccountName: + type: string shareProcessNamespace: type: boolean startupProbe: @@ -4163,6 +4243,8 @@ v1alpha1: type: object type: object type: array + workingDir: + type: string type: object jobsTemplates: description: JobsTemplates defines templates for jobs @@ -4504,6 +4586,20 @@ v1alpha1: type: array type: object type: object + annotations: + additionalProperties: + type: string + type: object + args: + items: + type: string + type: array + automountServiceAccountToken: + type: boolean + command: + items: + type: string + type: array env: items: properties: @@ -4585,6 +4681,10 @@ v1alpha1: items: type: string type: array + labels: + additionalProperties: + type: string + type: object lifecycle: properties: postStart: @@ -4747,6 +4847,23 @@ v1alpha1: additionalProperties: type: string type: object + ownerReferences: + items: + properties: + apiVersion: + type: string + blockOwnerDeletion: + type: boolean + controller: + type: boolean + kind: + type: string + name: + type: string + uid: + type: string + type: object + type: array podSecurityContext: properties: fsGroup: @@ -4967,6 +5084,8 @@ v1alpha1: type: string type: object type: object + serviceAccountName: + type: string shareProcessNamespace: type: boolean startupProbe: @@ -5747,6 +5866,8 @@ v1alpha1: type: object type: object type: array + workingDir: + type: string type: object gpu: description: GPU defines templates for GPU jobs @@ -6082,6 +6203,20 @@ v1alpha1: type: array type: object type: object + annotations: + additionalProperties: + type: string + type: object + args: + items: + type: string + type: array + automountServiceAccountToken: + type: boolean + command: + items: + type: string + type: array env: items: properties: @@ -6163,6 +6298,10 @@ v1alpha1: items: type: string type: array + labels: + additionalProperties: + type: string + type: object lifecycle: properties: postStart: @@ -6325,6 +6464,23 @@ v1alpha1: additionalProperties: type: string type: object + ownerReferences: + items: + properties: + apiVersion: + type: string + blockOwnerDeletion: + type: boolean + controller: + type: boolean + kind: + type: string + name: + type: string + uid: + type: string + type: object + type: array podSecurityContext: properties: fsGroup: @@ -6545,6 +6701,8 @@ v1alpha1: type: string type: object type: object + serviceAccountName: + type: string shareProcessNamespace: type: boolean startupProbe: @@ -7325,6 +7483,8 @@ v1alpha1: type: object type: object type: array + workingDir: + type: string type: object type: object prediction: @@ -7664,6 +7824,20 @@ v1alpha1: type: array type: object type: object + annotations: + additionalProperties: + type: string + type: object + args: + items: + type: string + type: array + automountServiceAccountToken: + type: boolean + command: + items: + type: string + type: array env: items: properties: @@ -7745,6 +7919,10 @@ v1alpha1: items: type: string type: array + labels: + additionalProperties: + type: string + type: object lifecycle: properties: postStart: @@ -7907,6 +8085,23 @@ v1alpha1: additionalProperties: type: string type: object + ownerReferences: + items: + properties: + apiVersion: + type: string + blockOwnerDeletion: + type: boolean + controller: + type: boolean + kind: + type: string + name: + type: string + uid: + type: string + type: object + type: array podSecurityContext: properties: fsGroup: @@ -8127,6 +8322,8 @@ v1alpha1: type: string type: object type: object + serviceAccountName: + type: string shareProcessNamespace: type: boolean startupProbe: @@ -8907,6 +9104,8 @@ v1alpha1: type: object type: object type: array + workingDir: + type: string type: object gpu: description: GPU defines templates for GPU jobs @@ -9242,6 +9441,20 @@ v1alpha1: type: array type: object type: object + annotations: + additionalProperties: + type: string + type: object + args: + items: + type: string + type: array + automountServiceAccountToken: + type: boolean + command: + items: + type: string + type: array env: items: properties: @@ -9323,6 +9536,10 @@ v1alpha1: items: type: string type: array + labels: + additionalProperties: + type: string + type: object lifecycle: properties: postStart: @@ -9485,6 +9702,23 @@ v1alpha1: additionalProperties: type: string type: object + ownerReferences: + items: + properties: + apiVersion: + type: string + blockOwnerDeletion: + type: boolean + controller: + type: boolean + kind: + type: string + name: + type: string + uid: + type: string + type: object + type: array podSecurityContext: properties: fsGroup: @@ -9705,6 +9939,8 @@ v1alpha1: type: string type: object type: object + serviceAccountName: + type: string shareProcessNamespace: type: boolean startupProbe: @@ -10485,6 +10721,8 @@ v1alpha1: type: object type: object type: array + workingDir: + type: string type: object type: object training: @@ -10824,6 +11062,20 @@ v1alpha1: type: array type: object type: object + annotations: + additionalProperties: + type: string + type: object + args: + items: + type: string + type: array + automountServiceAccountToken: + type: boolean + command: + items: + type: string + type: array env: items: properties: @@ -10905,6 +11157,10 @@ v1alpha1: items: type: string type: array + labels: + additionalProperties: + type: string + type: object lifecycle: properties: postStart: @@ -11067,6 +11323,23 @@ v1alpha1: additionalProperties: type: string type: object + ownerReferences: + items: + properties: + apiVersion: + type: string + blockOwnerDeletion: + type: boolean + controller: + type: boolean + kind: + type: string + name: + type: string + uid: + type: string + type: object + type: array podSecurityContext: properties: fsGroup: @@ -11287,6 +11560,8 @@ v1alpha1: type: string type: object type: object + serviceAccountName: + type: string shareProcessNamespace: type: boolean startupProbe: @@ -12067,6 +12342,8 @@ v1alpha1: type: object type: object type: array + workingDir: + type: string type: object gpu: description: GPU defines templates for GPU jobs @@ -12402,6 +12679,20 @@ v1alpha1: type: array type: object type: object + annotations: + additionalProperties: + type: string + type: object + args: + items: + type: string + type: array + automountServiceAccountToken: + type: boolean + command: + items: + type: string + type: array env: items: properties: @@ -12483,6 +12774,10 @@ v1alpha1: items: type: string type: array + labels: + additionalProperties: + type: string + type: object lifecycle: properties: postStart: @@ -12645,6 +12940,23 @@ v1alpha1: additionalProperties: type: string type: object + ownerReferences: + items: + properties: + apiVersion: + type: string + blockOwnerDeletion: + type: boolean + controller: + type: boolean + kind: + type: string + name: + type: string + uid: + type: string + type: object + type: array podSecurityContext: properties: fsGroup: @@ -12865,6 +13177,8 @@ v1alpha1: type: string type: object type: object + serviceAccountName: + type: string shareProcessNamespace: type: boolean startupProbe: @@ -13645,6 +13959,8 @@ v1alpha1: type: object type: object type: array + workingDir: + type: string type: object type: object type: object @@ -13665,6 +13981,9 @@ v1alpha1: storage: description: Storage specifies the ArangoMLStorage used within Extension properties: + checksum: + description: UID keeps the information about object Checksum + type: string name: description: Name of the object type: string diff --git a/pkg/crd/crds/ml-storage.schema.generated.yaml b/pkg/crd/crds/ml-storage.schema.generated.yaml index 74f727914..ff9ae5fb0 100644 --- a/pkg/crd/crds/ml-storage.schema.generated.yaml +++ b/pkg/crd/crds/ml-storage.schema.generated.yaml @@ -19,6 +19,9 @@ v1alpha1: - `ca.crt` PEM encoded public key of the CA certificate - `ca.key` PEM encoded private key of the CA certificate properties: + checksum: + description: UID keeps the information about object Checksum + type: string name: description: Name of the object type: string @@ -34,6 +37,9 @@ v1alpha1: CredentialsSecret specifies the Kubernetes Secret containing AccessKey and SecretKey for S3 API authorization Required properties: + checksum: + description: UID keeps the information about object Checksum + type: string name: description: Name of the object type: string @@ -68,6 +74,14 @@ v1alpha1: sidecar: description: Sidecar mode runs the storage implementation as a sidecar properties: + args: + items: + type: string + type: array + command: + items: + type: string + type: array controllerListenPort: description: ControllerListenPort defines on which port the sidecar container will be listening for controller requests format: int32 @@ -143,10 +157,6 @@ v1alpha1: type: string imagePullPolicy: type: string - imagePullSecrets: - items: - type: string - type: array lifecycle: properties: postStart: @@ -550,6 +560,8 @@ v1alpha1: type: string type: object type: array + workingDir: + type: string type: object type: object type: object diff --git a/pkg/crd/crds/scheduler-profile.go b/pkg/crd/crds/scheduler-profile.go new file mode 100644 index 000000000..8baf57301 --- /dev/null +++ b/pkg/crd/crds/scheduler-profile.go @@ -0,0 +1,55 @@ +// +// DISCLAIMER +// +// Copyright 2023-2024 ArangoDB GmbH, Cologne, Germany +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Copyright holder is ArangoDB GmbH, Cologne, Germany +// + +package crds + +import ( + _ "embed" + + apiextensions "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" + + "github.com/arangodb/go-driver" + + "github.com/arangodb/kube-arangodb/pkg/util" +) + +const ( + SchedulerProfileVersion = driver.Version("1.0.0") +) + +func SchedulerProfileWithOptions(opts ...func(*CRDOptions)) *apiextensions.CustomResourceDefinition { + return getCRD(schedulerProfileCRD, schedulerProfileCRDSchemas, opts...) +} + +func SchedulerProfileDefinitionWithOptions(opts ...func(*CRDOptions)) Definition { + return Definition{ + Version: SchedulerProfileVersion, + CRD: SchedulerProfileWithOptions(opts...), + } +} + +var schedulerProfileCRD = util.NewYamlLoader[apiextensions.CustomResourceDefinition](schedulerProfile) +var schedulerProfileCRDSchemas = util.NewYamlLoader[crdSchemas](schedulerProfileSchemaRaw) + +//go:embed scheduler-profile.yaml +var schedulerProfile []byte + +//go:embed scheduler-profile.schema.generated.yaml +var schedulerProfileSchemaRaw []byte diff --git a/pkg/crd/crds/scheduler-profile.schema.generated.yaml b/pkg/crd/crds/scheduler-profile.schema.generated.yaml new file mode 100644 index 000000000..6dda17df0 --- /dev/null +++ b/pkg/crd/crds/scheduler-profile.schema.generated.yaml @@ -0,0 +1,1751 @@ +v1alpha1: + openAPIV3Schema: + properties: + spec: + properties: + selectors: + description: Selectors keeps information about ProfileSelectors + properties: + label: + description: Label keeps information about label selector + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + type: object + template: + description: Template keeps the Profile Template + properties: + container: + properties: + all: + properties: + env: + items: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + type: object + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + type: object + resourceFieldRef: + properties: + containerName: + type: string + divisor: + type: string + resource: + type: string + type: object + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + type: object + type: object + type: object + type: array + envFrom: + items: + properties: + configMapRef: + properties: + name: + type: string + optional: + type: boolean + type: object + prefix: + type: string + secretRef: + properties: + name: + type: string + optional: + type: boolean + type: object + type: object + type: array + volumeMounts: + items: + properties: + mountPath: + type: string + mountPropagation: + type: string + name: + type: string + readOnly: + type: boolean + subPath: + type: string + subPathExpr: + type: string + type: object + type: array + type: object + containers: + additionalProperties: + properties: + args: + items: + type: string + type: array + command: + items: + type: string + type: array + env: + items: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + type: object + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + type: object + resourceFieldRef: + properties: + containerName: + type: string + divisor: + type: string + resource: + type: string + type: object + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + type: object + type: object + type: object + type: array + envFrom: + items: + properties: + configMapRef: + properties: + name: + type: string + optional: + type: boolean + type: object + prefix: + type: string + secretRef: + properties: + name: + type: string + optional: + type: boolean + type: object + type: object + type: array + image: + type: string + imagePullPolicy: + type: string + lifecycle: + properties: + postStart: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + type: object + type: array + path: + type: string + port: + format: int-or-string + type: string + scheme: + type: string + type: object + sleep: + properties: + seconds: + format: int64 + type: integer + type: object + tcpSocket: + properties: + host: + type: string + port: + format: int-or-string + type: string + type: object + type: object + preStop: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + type: object + type: array + path: + type: string + port: + format: int-or-string + type: string + scheme: + type: string + type: object + sleep: + properties: + seconds: + format: int64 + type: integer + type: object + tcpSocket: + properties: + host: + type: string + port: + format: int-or-string + type: string + type: object + type: object + type: object + livenessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + type: object + type: array + path: + type: string + port: + format: int-or-string + type: string + scheme: + type: string + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + format: int-or-string + type: string + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + ports: + items: + properties: + containerPort: + format: int32 + type: integer + hostIP: + type: string + hostPort: + format: int32 + type: integer + name: + type: string + protocol: + type: string + type: object + type: array + readinessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + type: object + type: array + path: + type: string + port: + format: int-or-string + type: string + scheme: + type: string + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + format: int-or-string + type: string + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + resources: + properties: + claims: + items: + properties: + name: + type: string + type: object + type: array + limits: + additionalProperties: + type: string + type: object + requests: + additionalProperties: + type: string + type: object + type: object + securityContext: + properties: + allowPrivilegeEscalation: + type: boolean + capabilities: + properties: + add: + items: + type: string + type: array + drop: + items: + type: string + type: array + type: object + privileged: + type: boolean + procMount: + type: string + readOnlyRootFilesystem: + type: boolean + runAsGroup: + format: int64 + type: integer + runAsNonRoot: + type: boolean + runAsUser: + format: int64 + type: integer + seLinuxOptions: + properties: + level: + type: string + role: + type: string + type: + type: string + user: + type: string + type: object + seccompProfile: + properties: + localhostProfile: + type: string + type: + type: string + type: object + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + hostProcess: + type: boolean + runAsUserName: + type: string + type: object + type: object + startupProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + grpc: + properties: + port: + format: int32 + type: integer + service: + type: string + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + type: object + type: array + path: + type: string + port: + format: int-or-string + type: string + scheme: + type: string + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + format: int-or-string + type: string + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeoutSeconds: + format: int32 + type: integer + type: object + volumeMounts: + items: + properties: + mountPath: + type: string + mountPropagation: + type: string + name: + type: string + readOnly: + type: boolean + subPath: + type: string + subPathExpr: + type: string + type: object + type: array + workingDir: + type: string + type: object + type: object + type: object + pod: + properties: + affinity: + properties: + nodeAffinity: + properties: + preferredDuringSchedulingIgnoredDuringExecution: + items: + properties: + preference: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + type: object + type: array + matchFields: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + type: object + type: array + type: object + weight: + format: int32 + type: integer + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + properties: + nodeSelectorTerms: + items: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + type: object + type: array + matchFields: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + type: object + type: array + type: object + type: array + type: object + type: object + podAffinity: + properties: + preferredDuringSchedulingIgnoredDuringExecution: + items: + properties: + podAffinityTerm: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + matchLabelKeys: + items: + type: string + type: array + mismatchLabelKeys: + items: + type: string + type: array + namespaceSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + namespaces: + items: + type: string + type: array + topologyKey: + type: string + type: object + weight: + format: int32 + type: integer + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + items: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + matchLabelKeys: + items: + type: string + type: array + mismatchLabelKeys: + items: + type: string + type: array + namespaceSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + namespaces: + items: + type: string + type: array + topologyKey: + type: string + type: object + type: array + type: object + podAntiAffinity: + properties: + preferredDuringSchedulingIgnoredDuringExecution: + items: + properties: + podAffinityTerm: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + matchLabelKeys: + items: + type: string + type: array + mismatchLabelKeys: + items: + type: string + type: array + namespaceSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + namespaces: + items: + type: string + type: array + topologyKey: + type: string + type: object + weight: + format: int32 + type: integer + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + items: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + matchLabelKeys: + items: + type: string + type: array + mismatchLabelKeys: + items: + type: string + type: array + namespaceSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + namespaces: + items: + type: string + type: array + topologyKey: + type: string + type: object + type: array + type: object + type: object + annotations: + additionalProperties: + type: string + type: object + automountServiceAccountToken: + type: boolean + hostIPC: + type: boolean + hostNetwork: + type: boolean + hostPID: + type: boolean + imagePullSecrets: + items: + type: string + type: array + labels: + additionalProperties: + type: string + type: object + nodeSelector: + additionalProperties: + type: string + type: object + ownerReferences: + items: + properties: + apiVersion: + type: string + blockOwnerDeletion: + type: boolean + controller: + type: boolean + kind: + type: string + name: + type: string + uid: + type: string + type: object + type: array + podSecurityContext: + properties: + fsGroup: + format: int64 + type: integer + fsGroupChangePolicy: + type: string + runAsGroup: + format: int64 + type: integer + runAsNonRoot: + type: boolean + runAsUser: + format: int64 + type: integer + seLinuxOptions: + properties: + level: + type: string + role: + type: string + type: + type: string + user: + type: string + type: object + seccompProfile: + properties: + localhostProfile: + type: string + type: + type: string + type: object + supplementalGroups: + items: + format: int64 + type: integer + type: array + sysctls: + items: + properties: + name: + type: string + value: + type: string + type: object + type: array + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + hostProcess: + type: boolean + runAsUserName: + type: string + type: object + type: object + schedulerName: + type: string + serviceAccountName: + type: string + shareProcessNamespace: + type: boolean + tolerations: + items: + properties: + effect: + type: string + key: + type: string + operator: + type: string + tolerationSeconds: + format: int64 + type: integer + value: + type: string + type: object + type: array + volumes: + items: + properties: + awsElasticBlockStore: + properties: + fsType: + type: string + partition: + format: int32 + type: integer + readOnly: + type: boolean + volumeID: + type: string + type: object + azureDisk: + properties: + cachingMode: + type: string + diskName: + type: string + diskURI: + type: string + fsType: + type: string + kind: + type: string + readOnly: + type: boolean + type: object + azureFile: + properties: + readOnly: + type: boolean + secretName: + type: string + shareName: + type: string + type: object + cephfs: + properties: + monitors: + items: + type: string + type: array + path: + type: string + readOnly: + type: boolean + secretFile: + type: string + secretRef: + properties: + name: + type: string + type: object + user: + type: string + type: object + cinder: + properties: + fsType: + type: string + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + volumeID: + type: string + type: object + configMap: + properties: + defaultMode: + format: int32 + type: integer + items: + items: + properties: + key: + type: string + mode: + format: int32 + type: integer + path: + type: string + type: object + type: array + name: + type: string + optional: + type: boolean + type: object + csi: + properties: + driver: + type: string + fsType: + type: string + nodePublishSecretRef: + properties: + name: + type: string + type: object + readOnly: + type: boolean + volumeAttributes: + additionalProperties: + type: string + type: object + type: object + downwardAPI: + properties: + defaultMode: + format: int32 + type: integer + items: + items: + properties: + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + type: object + mode: + format: int32 + type: integer + path: + type: string + resourceFieldRef: + properties: + containerName: + type: string + divisor: + type: string + resource: + type: string + type: object + type: object + type: array + type: object + emptyDir: + properties: + medium: + type: string + sizeLimit: + type: string + type: object + ephemeral: + properties: + volumeClaimTemplate: + properties: + metadata: + properties: + annotations: + additionalProperties: + type: string + type: object + creationTimestamp: + format: date-time + type: string + deletionGracePeriodSeconds: + format: int64 + type: integer + deletionTimestamp: + format: date-time + type: string + finalizers: + items: + type: string + type: array + generateName: + type: string + generation: + format: int64 + type: integer + labels: + additionalProperties: + type: string + type: object + managedFields: + items: + properties: + apiVersion: + type: string + fieldsType: + type: string + fieldsV1: + type: object + manager: + type: string + operation: + type: string + subresource: + type: string + time: + format: date-time + type: string + type: object + type: array + name: + type: string + namespace: + type: string + ownerReferences: + items: + properties: + apiVersion: + type: string + blockOwnerDeletion: + type: boolean + controller: + type: boolean + kind: + type: string + name: + type: string + uid: + type: string + type: object + type: array + resourceVersion: + type: string + selfLink: + type: string + uid: + type: string + type: object + spec: + properties: + accessModes: + items: + type: string + type: array + dataSource: + properties: + apiGroup: + type: string + kind: + type: string + name: + type: string + type: object + dataSourceRef: + properties: + apiGroup: + type: string + kind: + type: string + name: + type: string + namespace: + type: string + type: object + resources: + properties: + limits: + additionalProperties: + type: string + type: object + requests: + additionalProperties: + type: string + type: object + type: object + selector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + storageClassName: + type: string + volumeAttributesClassName: + type: string + volumeMode: + type: string + volumeName: + type: string + type: object + type: object + type: object + fc: + properties: + fsType: + type: string + lun: + format: int32 + type: integer + readOnly: + type: boolean + targetWWNs: + items: + type: string + type: array + wwids: + items: + type: string + type: array + type: object + flexVolume: + properties: + driver: + type: string + fsType: + type: string + options: + additionalProperties: + type: string + type: object + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + type: object + flocker: + properties: + datasetName: + type: string + datasetUUID: + type: string + type: object + gcePersistentDisk: + properties: + fsType: + type: string + partition: + format: int32 + type: integer + pdName: + type: string + readOnly: + type: boolean + type: object + gitRepo: + properties: + directory: + type: string + repository: + type: string + revision: + type: string + type: object + glusterfs: + properties: + endpoints: + type: string + path: + type: string + readOnly: + type: boolean + type: object + hostPath: + properties: + path: + type: string + type: + type: string + type: object + iscsi: + properties: + chapAuthDiscovery: + type: boolean + chapAuthSession: + type: boolean + fsType: + type: string + initiatorName: + type: string + iqn: + type: string + iscsiInterface: + type: string + lun: + format: int32 + type: integer + portals: + items: + type: string + type: array + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + targetPortal: + type: string + type: object + name: + type: string + nfs: + properties: + path: + type: string + readOnly: + type: boolean + server: + type: string + type: object + persistentVolumeClaim: + properties: + claimName: + type: string + readOnly: + type: boolean + type: object + photonPersistentDisk: + properties: + fsType: + type: string + pdID: + type: string + type: object + portworxVolume: + properties: + fsType: + type: string + readOnly: + type: boolean + volumeID: + type: string + type: object + projected: + properties: + defaultMode: + format: int32 + type: integer + sources: + items: + properties: + clusterTrustBundle: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + name: + type: string + optional: + type: boolean + path: + type: string + signerName: + type: string + type: object + configMap: + properties: + items: + items: + properties: + key: + type: string + mode: + format: int32 + type: integer + path: + type: string + type: object + type: array + name: + type: string + optional: + type: boolean + type: object + downwardAPI: + properties: + items: + items: + properties: + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + type: object + mode: + format: int32 + type: integer + path: + type: string + resourceFieldRef: + properties: + containerName: + type: string + divisor: + type: string + resource: + type: string + type: object + type: object + type: array + type: object + secret: + properties: + items: + items: + properties: + key: + type: string + mode: + format: int32 + type: integer + path: + type: string + type: object + type: array + name: + type: string + optional: + type: boolean + type: object + serviceAccountToken: + properties: + audience: + type: string + expirationSeconds: + format: int64 + type: integer + path: + type: string + type: object + type: object + type: array + type: object + quobyte: + properties: + group: + type: string + readOnly: + type: boolean + registry: + type: string + tenant: + type: string + user: + type: string + volume: + type: string + type: object + rbd: + properties: + fsType: + type: string + image: + type: string + keyring: + type: string + monitors: + items: + type: string + type: array + pool: + type: string + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + user: + type: string + type: object + scaleIO: + properties: + fsType: + type: string + gateway: + type: string + protectionDomain: + type: string + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + sslEnabled: + type: boolean + storageMode: + type: string + storagePool: + type: string + system: + type: string + volumeName: + type: string + type: object + secret: + properties: + defaultMode: + format: int32 + type: integer + items: + items: + properties: + key: + type: string + mode: + format: int32 + type: integer + path: + type: string + type: object + type: array + optional: + type: boolean + secretName: + type: string + type: object + storageos: + properties: + fsType: + type: string + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + volumeName: + type: string + volumeNamespace: + type: string + type: object + vsphereVolume: + properties: + fsType: + type: string + storagePolicyID: + type: string + storagePolicyName: + type: string + volumePath: + type: string + type: object + type: object + type: array + type: object + priority: + format: int32 + type: integer + type: object + type: object + type: object + x-kubernetes-preserve-unknown-fields: true diff --git a/pkg/crd/crds/scheduler-profile.yaml b/pkg/crd/crds/scheduler-profile.yaml new file mode 100644 index 000000000..685448169 --- /dev/null +++ b/pkg/crd/crds/scheduler-profile.yaml @@ -0,0 +1,22 @@ +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + name: arangoprofiles.scheduler.arangodb.com +spec: + group: scheduler.arangodb.com + names: + kind: ArangoProfile + listKind: ArangoProfileList + plural: arangoprofiles + singular: arangoprofile + scope: Namespaced + versions: + - name: v1alpha1 + schema: + openAPIV3Schema: + type: object + x-kubernetes-preserve-unknown-fields: true + served: true + storage: true + subresources: + status: {} diff --git a/pkg/debug_package/cli/cli.go b/pkg/debug_package/cli/cli.go index ba1fa32e5..37fdcd772 100644 --- a/pkg/debug_package/cli/cli.go +++ b/pkg/debug_package/cli/cli.go @@ -1,7 +1,7 @@ // // DISCLAIMER // -// Copyright 2016-2023 ArangoDB GmbH, Cologne, Germany +// Copyright 2016-2024 ArangoDB GmbH, Cologne, Germany // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -20,11 +20,15 @@ package cli -import "github.com/spf13/cobra" +import ( + "github.com/spf13/cobra" + + "github.com/arangodb/kube-arangodb/pkg/util/constants" +) func Register(cmd *cobra.Command) { f := cmd.Flags() - f.StringVarP(&input.Namespace, "namespace", "n", "default", "Kubernetes namespace") + f.StringVarP(&input.Namespace, "namespace", "n", constants.NamespaceWithDefault("default"), "Kubernetes namespace") f.BoolVar(&input.HideSensitiveData, "hide-sensitive-data", true, "Hide sensitive data") f.BoolVar(&input.PodLogs, "pod-logs", true, "Collect pod logs") } diff --git a/pkg/debug_package/generator.go b/pkg/debug_package/generator.go index 5ddee7610..bb0105be6 100644 --- a/pkg/debug_package/generator.go +++ b/pkg/debug_package/generator.go @@ -43,6 +43,8 @@ var rootFactories = []shared.Factory{ kubernetes.Deployments(), kubernetes.AgencyDump(), kubernetes.ML(), + kubernetes.Backup(), + kubernetes.Scheduler(), } func InitCommand(cmd *cobra.Command) { diff --git a/pkg/debug_package/generators/kubernetes/arango_backup.go b/pkg/debug_package/generators/kubernetes/arango_backup.go new file mode 100644 index 000000000..fa2b52a4d --- /dev/null +++ b/pkg/debug_package/generators/kubernetes/arango_backup.go @@ -0,0 +1,52 @@ +// +// DISCLAIMER +// +// Copyright 2024 ArangoDB GmbH, Cologne, Germany +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Copyright holder is ArangoDB GmbH, Cologne, Germany +// + +package kubernetes + +import ( + "github.com/rs/zerolog" + + "github.com/arangodb/kube-arangodb/pkg/debug_package/shared" + "github.com/arangodb/kube-arangodb/pkg/util/errors" + "github.com/arangodb/kube-arangodb/pkg/util/kclient" +) + +func Backup() shared.Factory { + return shared.NewFactory("backupBackup", true, backup) +} + +func backup(logger zerolog.Logger, files chan<- shared.File) error { + k, ok := kclient.GetDefaultFactory().Client() + if !ok { + return errors.Errorf("Client is not initialised") + } + + if err := backupBackups(logger, files, k); err != nil { + logger.Err(err).Msgf("Error while collecting arango backup") + return err + } + + if err := backupPolicies(logger, files, k); err != nil { + logger.Err(err).Msgf("Error while collecting arango backup policye") + return err + } + + return nil +} diff --git a/pkg/debug_package/generators/kubernetes/arango_backup_backup.go b/pkg/debug_package/generators/kubernetes/arango_backup_backup.go new file mode 100644 index 000000000..368bb3141 --- /dev/null +++ b/pkg/debug_package/generators/kubernetes/arango_backup_backup.go @@ -0,0 +1,73 @@ +// +// DISCLAIMER +// +// Copyright 2024 ArangoDB GmbH, Cologne, Germany +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Copyright holder is ArangoDB GmbH, Cologne, Germany +// + +package kubernetes + +import ( + "context" + "fmt" + + "github.com/rs/zerolog" + + backupApi "github.com/arangodb/kube-arangodb/pkg/apis/backup/v1" + "github.com/arangodb/kube-arangodb/pkg/debug_package/cli" + "github.com/arangodb/kube-arangodb/pkg/debug_package/shared" + "github.com/arangodb/kube-arangodb/pkg/util/errors" + "github.com/arangodb/kube-arangodb/pkg/util/k8sutil/kerrors" + "github.com/arangodb/kube-arangodb/pkg/util/kclient" +) + +func backupBackups(logger zerolog.Logger, files chan<- shared.File, client kclient.Client) error { + backups, err := listBackupBackups(client) + if err != nil { + if kerrors.IsForbiddenOrNotFound(err) { + return nil + } + + return err + } + + if err := errors.ExecuteWithErrorArrayP2(backupBackup, client, files, backups...); err != nil { + logger.Err(err).Msgf("Error while collecting arango ml batchjobs") + return err + } + + return nil +} + +func backupBackup(client kclient.Client, files chan<- shared.File, ext *backupApi.ArangoBackup) error { + files <- shared.NewYAMLFile(fmt.Sprintf("kubernetes/arango/backup/backups/%s.yaml", ext.GetName()), func() ([]interface{}, error) { + return []interface{}{ext}, nil + }) + + return nil +} + +func listBackupBackups(client kclient.Client) ([]*backupApi.ArangoBackup, error) { + return ListObjects[*backupApi.ArangoBackupList, *backupApi.ArangoBackup](context.Background(), client.Arango().BackupV1().ArangoBackups(cli.GetInput().Namespace), func(result *backupApi.ArangoBackupList) []*backupApi.ArangoBackup { + q := make([]*backupApi.ArangoBackup, len(result.Items)) + + for id, e := range result.Items { + q[id] = e.DeepCopy() + } + + return q + }) +} diff --git a/pkg/debug_package/generators/kubernetes/arango_backup_policy.go b/pkg/debug_package/generators/kubernetes/arango_backup_policy.go new file mode 100644 index 000000000..8a2fc390a --- /dev/null +++ b/pkg/debug_package/generators/kubernetes/arango_backup_policy.go @@ -0,0 +1,73 @@ +// +// DISCLAIMER +// +// Copyright 2024 ArangoDB GmbH, Cologne, Germany +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Copyright holder is ArangoDB GmbH, Cologne, Germany +// + +package kubernetes + +import ( + "context" + "fmt" + + "github.com/rs/zerolog" + + backupApi "github.com/arangodb/kube-arangodb/pkg/apis/backup/v1" + "github.com/arangodb/kube-arangodb/pkg/debug_package/cli" + "github.com/arangodb/kube-arangodb/pkg/debug_package/shared" + "github.com/arangodb/kube-arangodb/pkg/util/errors" + "github.com/arangodb/kube-arangodb/pkg/util/k8sutil/kerrors" + "github.com/arangodb/kube-arangodb/pkg/util/kclient" +) + +func backupPolicies(logger zerolog.Logger, files chan<- shared.File, client kclient.Client) error { + backups, err := listBackupPolicies(client) + if err != nil { + if kerrors.IsForbiddenOrNotFound(err) { + return nil + } + + return err + } + + if err := errors.ExecuteWithErrorArrayP2(backupPolicy, client, files, backups...); err != nil { + logger.Err(err).Msgf("Error while collecting arango ml batchjobs") + return err + } + + return nil +} + +func backupPolicy(client kclient.Client, files chan<- shared.File, ext *backupApi.ArangoBackupPolicy) error { + files <- shared.NewYAMLFile(fmt.Sprintf("kubernetes/arango/backup/policies/%s.yaml", ext.GetName()), func() ([]interface{}, error) { + return []interface{}{ext}, nil + }) + + return nil +} + +func listBackupPolicies(client kclient.Client) ([]*backupApi.ArangoBackupPolicy, error) { + return ListObjects[*backupApi.ArangoBackupPolicyList, *backupApi.ArangoBackupPolicy](context.Background(), client.Arango().BackupV1().ArangoBackupPolicies(cli.GetInput().Namespace), func(result *backupApi.ArangoBackupPolicyList) []*backupApi.ArangoBackupPolicy { + q := make([]*backupApi.ArangoBackupPolicy, len(result.Items)) + + for id, e := range result.Items { + q[id] = e.DeepCopy() + } + + return q + }) +} diff --git a/pkg/debug_package/generators/kubernetes/arango_scheduler.go b/pkg/debug_package/generators/kubernetes/arango_scheduler.go new file mode 100644 index 000000000..cf6dd16e9 --- /dev/null +++ b/pkg/debug_package/generators/kubernetes/arango_scheduler.go @@ -0,0 +1,47 @@ +// +// DISCLAIMER +// +// Copyright 2023-2024 ArangoDB GmbH, Cologne, Germany +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Copyright holder is ArangoDB GmbH, Cologne, Germany +// + +package kubernetes + +import ( + "github.com/rs/zerolog" + + "github.com/arangodb/kube-arangodb/pkg/debug_package/shared" + "github.com/arangodb/kube-arangodb/pkg/util/errors" + "github.com/arangodb/kube-arangodb/pkg/util/kclient" +) + +func Scheduler() shared.Factory { + return shared.NewFactory("scheduler", true, scheduler) +} + +func scheduler(logger zerolog.Logger, files chan<- shared.File) error { + k, ok := kclient.GetDefaultFactory().Client() + if !ok { + return errors.Errorf("Client is not initialised") + } + + if err := schedulerProfiles(logger, files, k); err != nil { + logger.Err(err).Msgf("Error while collecting arango scheduler extension") + return err + } + + return nil +} diff --git a/pkg/debug_package/generators/kubernetes/arango_scheduler_profile.go b/pkg/debug_package/generators/kubernetes/arango_scheduler_profile.go new file mode 100644 index 000000000..49b0f07bc --- /dev/null +++ b/pkg/debug_package/generators/kubernetes/arango_scheduler_profile.go @@ -0,0 +1,73 @@ +// +// DISCLAIMER +// +// Copyright 2024 ArangoDB GmbH, Cologne, Germany +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Copyright holder is ArangoDB GmbH, Cologne, Germany +// + +package kubernetes + +import ( + "context" + "fmt" + + "github.com/rs/zerolog" + + schedulerApi "github.com/arangodb/kube-arangodb/pkg/apis/scheduler/v1alpha1" + "github.com/arangodb/kube-arangodb/pkg/debug_package/cli" + "github.com/arangodb/kube-arangodb/pkg/debug_package/shared" + "github.com/arangodb/kube-arangodb/pkg/util/errors" + "github.com/arangodb/kube-arangodb/pkg/util/k8sutil/kerrors" + "github.com/arangodb/kube-arangodb/pkg/util/kclient" +) + +func schedulerProfiles(logger zerolog.Logger, files chan<- shared.File, client kclient.Client) error { + profiles, err := listSchedulerProfiles(client) + if err != nil { + if kerrors.IsForbiddenOrNotFound(err) { + return nil + } + + return err + } + + if err := errors.ExecuteWithErrorArrayP2(schedulerProfile, client, files, profiles...); err != nil { + logger.Err(err).Msgf("Error while collecting arango scheduler profiles") + return err + } + + return nil +} + +func schedulerProfile(client kclient.Client, files chan<- shared.File, ext *schedulerApi.ArangoProfile) error { + files <- shared.NewYAMLFile(fmt.Sprintf("kubernetes/arango/scheduler/profiles/%s.yaml", ext.GetName()), func() ([]interface{}, error) { + return []interface{}{ext}, nil + }) + + return nil +} + +func listSchedulerProfiles(client kclient.Client) ([]*schedulerApi.ArangoProfile, error) { + return ListObjects[*schedulerApi.ArangoProfileList, *schedulerApi.ArangoProfile](context.Background(), client.Arango().SchedulerV1alpha1().ArangoProfiles(cli.GetInput().Namespace), func(result *schedulerApi.ArangoProfileList) []*schedulerApi.ArangoProfile { + q := make([]*schedulerApi.ArangoProfile, len(result.Items)) + + for id, e := range result.Items { + q[id] = e.DeepCopy() + } + + return q + }) +} diff --git a/pkg/debug_package/generators/kubernetes/lister.go b/pkg/debug_package/generators/kubernetes/lister.go index c29ac86f2..e4c486733 100644 --- a/pkg/debug_package/generators/kubernetes/lister.go +++ b/pkg/debug_package/generators/kubernetes/lister.go @@ -1,7 +1,7 @@ // // DISCLAIMER // -// Copyright 2023 ArangoDB GmbH, Cologne, Germany +// Copyright 2023-2024 ArangoDB GmbH, Cologne, Germany // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -22,16 +22,95 @@ package kubernetes import ( "context" + "sort" meta "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/types" + "github.com/arangodb/kube-arangodb/pkg/util" "github.com/arangodb/kube-arangodb/pkg/util/k8sutil" ) +func Extract[T1, T2 any](in List[T1], ex func(in T1) T2) List[T2] { + r := make(List[T2], len(in)) + + for id := range r { + r[id] = ex(in[id]) + } + + return r +} + +type List[T any] []T + +func (l List[T]) Sort(pred func(a, b T) bool) List[T] { + sort.Slice(l, func(i, j int) bool { + return pred(l[i], l[j]) + }) + + return l +} + +func (l List[T]) Append(obj ...T) List[T] { + r := make(List[T], 0, len(l)+len(obj)) + + r = append(r, l...) + r = append(r, obj...) + + return r +} + +func (l List[T]) Filter(f func(a T) bool) List[T] { + r := make(List[T], 0, len(l)) + + for _, o := range l { + if !f(o) { + continue + } + + r = append(r, o) + } + + return r +} + +func (l List[T]) Contains(f func(a T) bool) bool { + for _, o := range l { + if f(o) { + return true + } + } + + return false +} + +func (l List[T]) Unique(f func(existing List[T], a T) bool) List[T] { + r := make(List[T], 0, len(l)) + + for _, o := range l { + if f(r, o) { + continue + } + + r = append(r, o) + } + + return r +} + type ObjectList[T meta.Object] map[types.UID]T -func (d ObjectList[T]) AsList() []T { +func (d ObjectList[T]) ByName(name string) (T, bool) { + for _, obj := range d { + if obj.GetName() == name { + return obj, true + } + } + + return util.Default[T](), false +} + +func (d ObjectList[T]) AsList() List[T] { list := make([]T, 0, len(d)) for _, p := range d { list = append(list, p) diff --git a/pkg/deployment/deployment.go b/pkg/deployment/deployment.go index 6edbdd13b..50700765c 100644 --- a/pkg/deployment/deployment.go +++ b/pkg/deployment/deployment.go @@ -498,8 +498,12 @@ func (d *Deployment) acceptNewSpec(ctx context.Context, depl *api.ArangoDeployme } func (d *Deployment) patchAcceptedSpec(ctx context.Context, spec *api.DeploymentSpec, checksum string) error { - return d.ApplyPatch(ctx, patch.ItemReplace(patch.NewPath("status", "accepted-spec"), spec), - patch.ItemReplace(patch.NewPath("status", "acceptedSpecVersion"), checksum)) + s := d.GetStatus() + + s.AcceptedSpecVersion = util.NewType(checksum) + s.AcceptedSpec = spec.DeepCopy() + + return d.updateCRStatus(ctx, s) } // handleArangoDeploymentUpdatedEvent is called when the deployment is updated by the user. diff --git a/pkg/deployment/deployment_suite_test.go b/pkg/deployment/deployment_suite_test.go index 3be1ce8cc..3c1ad9c1a 100644 --- a/pkg/deployment/deployment_suite_test.go +++ b/pkg/deployment/deployment_suite_test.go @@ -53,9 +53,9 @@ import ( "github.com/arangodb/kube-arangodb/pkg/util" "github.com/arangodb/kube-arangodb/pkg/util/constants" "github.com/arangodb/kube-arangodb/pkg/util/k8sutil" - "github.com/arangodb/kube-arangodb/pkg/util/k8sutil/container" "github.com/arangodb/kube-arangodb/pkg/util/k8sutil/inspector/throttle" "github.com/arangodb/kube-arangodb/pkg/util/k8sutil/probes" + kresources "github.com/arangodb/kube-arangodb/pkg/util/k8sutil/resources" "github.com/arangodb/kube-arangodb/pkg/util/kclient" ) @@ -893,7 +893,7 @@ func addLifecycle(name string, uuidRequired bool, license string, group api.Serv p.Spec.Containers[0].VolumeMounts = append(p.Spec.Containers[0].VolumeMounts, k8sutil.LifecycleVolumeMount()) } - if _, ok := container.GetAnyContainerByName(p.Spec.InitContainers, "init-lifecycle"); !ok { + if _, ok := kresources.GetAnyContainerByName(p.Spec.InitContainers, "init-lifecycle"); !ok { p.Spec.InitContainers = append( []core.Container{createTestLifecycleContainer(emptyResources)}, p.Spec.InitContainers..., @@ -901,7 +901,7 @@ func addLifecycle(name string, uuidRequired bool, license string, group api.Serv } } - if _, ok := container.GetAnyContainerByName(p.Spec.InitContainers, "uuid"); !ok { + if _, ok := kresources.GetAnyContainerByName(p.Spec.InitContainers, "uuid"); !ok { binaryPath, _ := os.Executable() p.Spec.InitContainers = append( []core.Container{ diff --git a/pkg/deployment/member/phase_updates.go b/pkg/deployment/member/phase_updates.go index 947c3c93f..7bde9f727 100644 --- a/pkg/deployment/member/phase_updates.go +++ b/pkg/deployment/member/phase_updates.go @@ -1,7 +1,7 @@ // // DISCLAIMER // -// Copyright 2016-2023 ArangoDB GmbH, Cologne, Germany +// Copyright 2016-2024 ArangoDB GmbH, Cologne, Germany // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -85,6 +85,7 @@ func removeMemberConditionsMapFunc(m *api.MemberStatus) { m.Conditions.Remove(api.ConditionTypeActive) m.Conditions.Remove(api.ConditionTypeStarted) m.Conditions.Remove(api.ConditionTypeScheduled) + m.Conditions.Remove(api.ConditionTypeScheduleSpecChanged) m.Conditions.Remove(api.ConditionTypeReachable) m.Conditions.Remove(api.ConditionTypeServing) m.Conditions.Remove(api.ConditionTypeTerminated) diff --git a/pkg/deployment/reconcile/action_runtime_container_image_update.go b/pkg/deployment/reconcile/action_runtime_container_image_update.go index e7fb768b0..513945a9e 100644 --- a/pkg/deployment/reconcile/action_runtime_container_image_update.go +++ b/pkg/deployment/reconcile/action_runtime_container_image_update.go @@ -31,7 +31,7 @@ import ( "github.com/arangodb/kube-arangodb/pkg/deployment/rotation" "github.com/arangodb/kube-arangodb/pkg/util/errors" "github.com/arangodb/kube-arangodb/pkg/util/k8sutil" - "github.com/arangodb/kube-arangodb/pkg/util/k8sutil/container" + kresources "github.com/arangodb/kube-arangodb/pkg/util/k8sutil/resources" ) func newRuntimeContainerImageUpdateAction(action api.Action, actionCtx ActionContext) Action { @@ -286,13 +286,13 @@ func (a actionRuntimeContainerImageUpdate) CheckProgress(ctx context.Context) (b return true, false, nil } - cspec, ok := container.GetContainerByName(pod, name) + cspec, ok := kresources.GetContainerByName(pod, name) if !ok { a.log.Info("Unable to find container spec") return true, false, nil } - cstatus, ok := container.GetContainerStatusByName(pod, name) + cstatus, ok := kresources.GetContainerStatusByName(pod, name) if !ok { a.log.Info("Unable to find container status") return true, false, nil diff --git a/pkg/deployment/reconcile/plan_builder_member_pod_scheduling_failure.go b/pkg/deployment/reconcile/plan_builder_member_pod_scheduling_failure.go index a3334efe3..49f699a1b 100644 --- a/pkg/deployment/reconcile/plan_builder_member_pod_scheduling_failure.go +++ b/pkg/deployment/reconcile/plan_builder_member_pod_scheduling_failure.go @@ -1,7 +1,7 @@ // // DISCLAIMER // -// Copyright 2023 ArangoDB GmbH, Cologne, Germany +// Copyright 2023-2024 ArangoDB GmbH, Cologne, Germany // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -23,12 +23,14 @@ package reconcile import ( "context" "reflect" + "time" core "k8s.io/api/core/v1" api "github.com/arangodb/kube-arangodb/pkg/apis/deployment/v1" "github.com/arangodb/kube-arangodb/pkg/deployment/actions" "github.com/arangodb/kube-arangodb/pkg/util" + "github.com/arangodb/kube-arangodb/pkg/util/globals" "github.com/arangodb/kube-arangodb/pkg/util/k8sutil" ) @@ -38,12 +40,20 @@ func (r *Reconciler) createMemberPodSchedulingFailurePlan(ctx context.Context, _ k8sutil.APIObject, spec api.DeploymentSpec, status api.DeploymentStatus, context PlanBuilderContext) api.Plan { var p api.Plan + + if globals.GetGlobalTimeouts().PodSchedulingGracePeriod().Get() == 0 { + // Scheduling grace period is not enabled + return nil + } + if !status.Conditions.IsTrue(api.ConditionTypePodSchedulingFailure) { return p } + q := r.log.Str("step", "CreateMemberPodSchedulingFailurePlan") + for _, m := range status.Members.AsList() { - l := r.log.Str("id", m.Member.ID).Str("role", m.Group.AsRole()) + l := q.Str("id", m.Member.ID).Str("role", m.Group.AsRole()) if m.Member.Phase != api.MemberPhaseCreated || m.Member.Pod.GetName() == "" { // Act only when phase is created @@ -55,45 +65,63 @@ func (r *Reconciler) createMemberPodSchedulingFailurePlan(ctx context.Context, continue } - imageInfo, imageFound := context.SelectImageForMember(spec, status, m.Member) - if !imageFound { - l.Warn("could not find image for already created member") + if c, ok := m.Member.Conditions.Get(api.ConditionTypeScheduled); !ok { + // Action cant proceed if pod is not scheduled + l.Debug("Unable to find scheduled condition") + continue + } else if c.LastTransitionTime.IsZero() { + // LastTransitionTime is not set + l.Debug("Scheduled condition LastTransitionTime is zero") continue + } else { + if d := time.Since(c.LastTransitionTime.Time); d <= globals.GetGlobalTimeouts().PodSchedulingGracePeriod().Get() { + // In grace period + l.Dur("since", d).Debug("Still in grace period") + continue + } } - renderedPod, err := context.RenderPodForMember(ctx, context.ACS(), spec, status, m.Member.ID, imageInfo) - if err != nil { - l.Err(err).Warn("could not render pod for already created member") + cache, ok := context.ACS().ClusterCache(m.Member.ClusterID) + if !ok { + l.Warn("Unable to get member name") continue } - if r.isSchedulingParametersChanged(renderedPod.Spec, m.Member, context) { - l.Info("Adding KillMemberPod action: scheduling failed and parameters already updated") + memberName := m.Member.ArangoMemberName(context.GetName(), m.Group) + member, ok := cache.ArangoMember().V1().GetSimple(memberName) + if !ok { + l.Warn("Unable to get ArangoMember") + continue + } + + if m.Member.Conditions.IsTrue(api.ConditionTypeScheduleSpecChanged) { + l.Info("Adding KillMemberPod action: scheduling failed and scheduling changed condition is present") p = append(p, actions.NewAction(api.ActionTypeKillMemberPod, m.Group, m.Member, "Scheduling failed"), ) + } else { + if statusTemplate, specTemplate := member.Status.Template, member.Spec.Template; statusTemplate != nil && specTemplate != nil { + if statusTemplateSpec, specTemplateSpec := statusTemplate.PodSpec, specTemplate.PodSpec; statusTemplateSpec != nil && specTemplateSpec != nil { + if !r.schedulingParametersAreTheSame(specTemplateSpec.Spec, statusTemplateSpec.Spec) { + l.Info("Adding KillMemberPod action: scheduling failed and parameters already updated") + p = append(p, + actions.NewAction(api.ActionTypeKillMemberPod, m.Group, m.Member, "Scheduling failed"), + ) + } else { + l.Info("Scheduling parameters are not updated") + } + } else { + l.Warn("Pod TemplateSpec is nil") + } + } else { + l.Warn("Pod Template is nil") + } } } return p } -// isSchedulingParametersChanged returns true if parameters related to pod scheduling has changed -func (r *Reconciler) isSchedulingParametersChanged(expectedSpec core.PodSpec, member api.MemberStatus, context PlanBuilderContext) bool { - cache, ok := context.ACS().ClusterCache(member.ClusterID) - if !ok { - return false - } - pod, ok := cache.Pod().V1().GetSimple(member.Pod.GetName()) - if !ok { - return false - } - if r.schedulingParametersAreTheSame(expectedSpec, pod.Spec) { - return false - } - return true -} - func (r *Reconciler) schedulingParametersAreTheSame(expectedSpec, actualSpec core.PodSpec) bool { if expectedSpec.PriorityClassName != actualSpec.PriorityClassName { return false diff --git a/pkg/deployment/resources/pod_inspector.go b/pkg/deployment/resources/pod_inspector.go index 97c0a990c..3f50c35dc 100644 --- a/pkg/deployment/resources/pod_inspector.go +++ b/pkg/deployment/resources/pod_inspector.go @@ -39,11 +39,11 @@ import ( "github.com/arangodb/kube-arangodb/pkg/util/errors" "github.com/arangodb/kube-arangodb/pkg/util/globals" "github.com/arangodb/kube-arangodb/pkg/util/k8sutil" - "github.com/arangodb/kube-arangodb/pkg/util/k8sutil/container" "github.com/arangodb/kube-arangodb/pkg/util/k8sutil/info" inspectorInterface "github.com/arangodb/kube-arangodb/pkg/util/k8sutil/inspector" podv1 "github.com/arangodb/kube-arangodb/pkg/util/k8sutil/inspector/pod/v1" "github.com/arangodb/kube-arangodb/pkg/util/k8sutil/kerrors" + kresources "github.com/arangodb/kube-arangodb/pkg/util/k8sutil/resources" ) var ( @@ -57,11 +57,10 @@ const ( // we will mark the pod as scheduled for termination recheckSoonPodInspectorInterval = util.Interval(time.Second) // Time between Pod inspection if we think something will change soon maxPodInspectorInterval = util.Interval(time.Hour) // Maximum time between Pod inspection (if nothing else happens) - forcePodDeletionGracePeriod = 15 * time.Minute ) func (r *Resources) handleRestartedPod(pod *core.Pod, memberStatus *api.MemberStatus, wasTerminated, markAsTerminated *bool) { - containerStatus, exist := container.GetContainerStatusByName(pod, api.ServerGroupReservedContainerNameServer) + containerStatus, exist := kresources.GetContainerStatusByName(pod, api.ServerGroupReservedContainerNameServer) if exist && containerStatus.State.Terminated != nil { // do not record termination time again in the code below *wasTerminated = true @@ -178,11 +177,11 @@ func (r *Resources) InspectPods(ctx context.Context, cachedStatus inspectorInter } if markAsTerminated && memberStatus.Conditions.Update(api.ConditionTypeTerminated, true, "Pod Failed", "") { - if containers := container.GetFailedContainerNames(pod.Status.InitContainerStatuses); len(containers) > 0 { + if containers := kresources.GetFailedContainerNames(pod.Status.InitContainerStatuses); len(containers) > 0 { for id := range containers { switch containers[id] { case api.ServerGroupReservedInitContainerNameVersionCheck: - if c, ok := container.GetAnyContainerStatusByName(pod.Status.InitContainerStatuses, containers[id]); ok { + if c, ok := kresources.GetAnyContainerStatusByName(pod.Status.InitContainerStatuses, containers[id]); ok { if t := c.State.Terminated; t != nil && t.ExitCode == 11 { memberStatus.Upgrade = true updateMemberStatusNeeded = true @@ -192,7 +191,7 @@ func (r *Resources) InspectPods(ctx context.Context, cachedStatus inspectorInter memberStatus.Conditions.Update(api.ConditionTypeUpgradeFailed, true, "Upgrade Failed", "") } - if c, ok := container.GetAnyContainerStatusByName(pod.Status.InitContainerStatuses, containers[id]); ok { + if c, ok := kresources.GetAnyContainerStatusByName(pod.Status.InitContainerStatuses, containers[id]); ok { if t := c.State.Terminated; t != nil && t.ExitCode != 0 { log.Str("member", memberStatus.ID). Str("pod", pod.GetName()). @@ -212,9 +211,9 @@ func (r *Resources) InspectPods(ctx context.Context, cachedStatus inspectorInter } } - if containers := container.GetFailedContainerNames(pod.Status.ContainerStatuses); len(containers) > 0 { + if containers := kresources.GetFailedContainerNames(pod.Status.ContainerStatuses); len(containers) > 0 { for id := range containers { - if c, ok := container.GetAnyContainerStatusByName(pod.Status.ContainerStatuses, containers[id]); ok { + if c, ok := kresources.GetAnyContainerStatusByName(pod.Status.ContainerStatuses, containers[id]); ok { if t := c.State.Terminated; t != nil && t.ExitCode != 0 { log.Str("member", memberStatus.ID). Str("pod", pod.GetName()). @@ -394,6 +393,11 @@ func (r *Resources) InspectPods(ctx context.Context, cachedStatus inspectorInter nextInterval = nextInterval.ReduceTo(recheckSoonPodInspectorInterval) } } else { + if memberStatus.Conditions.Update(api.ConditionTypeScheduled, false, "Pod is not scheduled", "") { + updateMemberStatusNeeded = true + nextInterval = nextInterval.ReduceTo(recheckSoonPodInspectorInterval) + } + if k8sutil.IsPodNotScheduledFor(pod, podScheduleTimeout) { // Pod cannot be scheduled for to long log.Str("pod-name", pod.GetName()).Debug("Pod scheduling timeout") @@ -426,13 +430,15 @@ func (r *Resources) InspectPods(ctx context.Context, cachedStatus inspectorInter var gps int64 = 10 forceDelete := false - if t := k8sutil.PodStopTime(pod); !t.IsZero() { - if time.Since(t) > forcePodDeletionGracePeriod { - forceDelete = true - } - } else if t := pod.DeletionTimestamp; t != nil { - if time.Since(t.Time) > forcePodDeletionGracePeriod { - forceDelete = true + if gracePeriod := globals.GetGlobalTimeouts().ForcePodDeletionGracePeriodTimeout().Get(); gracePeriod > 0 { + if t := k8sutil.PodStopTime(pod); !t.IsZero() { + if time.Since(t) > gracePeriod { + forceDelete = true + } + } else if t := pod.DeletionTimestamp; t != nil { + if time.Since(t.Time) > gracePeriod { + forceDelete = true + } } } diff --git a/pkg/deployment/resources/pod_termination.go b/pkg/deployment/resources/pod_termination.go index 1d6272c5a..47e5cbb3a 100644 --- a/pkg/deployment/resources/pod_termination.go +++ b/pkg/deployment/resources/pod_termination.go @@ -34,7 +34,7 @@ import ( "github.com/arangodb/kube-arangodb/pkg/util/errors" "github.com/arangodb/kube-arangodb/pkg/util/globals" "github.com/arangodb/kube-arangodb/pkg/util/k8sutil" - "github.com/arangodb/kube-arangodb/pkg/util/k8sutil/container" + kresources "github.com/arangodb/kube-arangodb/pkg/util/k8sutil/resources" ) // prepareAgencyPodTermination checks if the given agency pod is allowed to terminate @@ -175,7 +175,7 @@ func (r *Resources) prepareDBServerPodTermination(ctx context.Context, p *core.P log.Err(err).Debug("Failed to access cluster") if r.context.GetSpec().Recovery.Get().GetAutoRecover() { - if c, ok := container.GetContainerStatusByName(p, shared.ServerContainerName); ok { + if c, ok := kresources.GetContainerStatusByName(p, shared.ServerContainerName); ok { if t := c.State.Terminated; t != nil { return nil } diff --git a/pkg/deployment/rotation/arangod.go b/pkg/deployment/rotation/arangod.go index cd0c35c68..a783ccba7 100644 --- a/pkg/deployment/rotation/arangod.go +++ b/pkg/deployment/rotation/arangod.go @@ -1,7 +1,7 @@ // // DISCLAIMER // -// Copyright 2016-2023 ArangoDB GmbH, Cologne, Germany +// Copyright 2016-2024 ArangoDB GmbH, Cologne, Germany // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -54,6 +54,7 @@ func affinityCompare(_ api.DeploymentSpec, _ api.ServerGroup, spec, status *core e = err return } else if specC != statusC { + plan = append(plan, SchedulingChangeAction(builder)) mode = mode.And(compare.SilentRotation) status.Spec.Affinity = spec.Spec.Affinity.DeepCopy() return diff --git a/pkg/deployment/rotation/arangod_tolerations.go b/pkg/deployment/rotation/arangod_tolerations.go index 4034f123a..9cd879c30 100644 --- a/pkg/deployment/rotation/arangod_tolerations.go +++ b/pkg/deployment/rotation/arangod_tolerations.go @@ -1,7 +1,7 @@ // // DISCLAIMER // -// Copyright 2016-2023 ArangoDB GmbH, Cologne, Germany +// Copyright 2016-2024 ArangoDB GmbH, Cologne, Germany // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -32,7 +32,10 @@ import ( func comparePodTolerations(_ api.DeploymentSpec, _ api.ServerGroup, spec, status *core.PodTemplateSpec) compare.Func { return func(builder api.ActionBuilder) (mode compare.Mode, plan api.Plan, err error) { if !reflect.DeepEqual(spec.Spec.Tolerations, status.Spec.Tolerations) { - plan = append(plan, builder.NewAction(api.ActionTypeRuntimeContainerSyncTolerations)) + plan = append(plan, + SchedulingChangeAction(builder), + builder.NewAction(api.ActionTypeRuntimeContainerSyncTolerations), + ) status.Spec.Tolerations = spec.Spec.Tolerations mode = mode.And(compare.InPlaceRotation) @@ -42,4 +45,5 @@ func comparePodTolerations(_ api.DeploymentSpec, _ api.ServerGroup, spec, status return } + } diff --git a/pkg/ml/container_ca.go b/pkg/deployment/rotation/helper.go similarity index 51% rename from pkg/ml/container_ca.go rename to pkg/deployment/rotation/helper.go index fc6e1a130..7e297e822 100644 --- a/pkg/ml/container_ca.go +++ b/pkg/deployment/rotation/helper.go @@ -18,34 +18,13 @@ // Copyright holder is ArangoDB GmbH, Cologne, Germany // -package ml +package rotation import ( - core "k8s.io/api/core/v1" - api "github.com/arangodb/kube-arangodb/pkg/apis/deployment/v1" - "github.com/arangodb/kube-arangodb/pkg/deployment/resources" + sharedReconcile "github.com/arangodb/kube-arangodb/pkg/deployment/reconcile/shared" ) -func AddTLSToContainers(deployment *api.ArangoDeployment, spec *core.PodTemplateSpec, containers ...*core.Container) { - if !deployment.GetAcceptedSpec().TLS.IsSecure() { - return - } - - spec.Spec.Volumes = append(spec.Spec.Volumes, core.Volume{ - Name: "deployment-ca", - VolumeSource: core.VolumeSource{ - Secret: &core.SecretVolumeSource{ - SecretName: resources.GetCASecretName(deployment), - }, - }, - }) - - for _, container := range containers { - container.VolumeMounts = append(container.VolumeMounts, core.VolumeMount{ - Name: "deployment-ca", - ReadOnly: true, - MountPath: "/etc/arangodb/tls", - }) - } +func SchedulingChangeAction(builder api.ActionBuilder) api.Action { + return sharedReconcile.UpdateMemberConditionActionV2("Scheduling Changed", api.ConditionTypeScheduleSpecChanged, builder.Group(), builder.MemberID(), true, "Scheduling Changed", "", "") } diff --git a/pkg/generated/clientset/versioned/typed/scheduler/v1alpha1/arangoprofile.go b/pkg/generated/clientset/versioned/typed/scheduler/v1alpha1/arangoprofile.go new file mode 100644 index 000000000..e733e17ba --- /dev/null +++ b/pkg/generated/clientset/versioned/typed/scheduler/v1alpha1/arangoprofile.go @@ -0,0 +1,199 @@ +// +// DISCLAIMER +// +// Copyright 2024 ArangoDB GmbH, Cologne, Germany +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Copyright holder is ArangoDB GmbH, Cologne, Germany +// + +// Code generated by client-gen. DO NOT EDIT. + +package v1alpha1 + +import ( + "context" + "time" + + v1alpha1 "github.com/arangodb/kube-arangodb/pkg/apis/scheduler/v1alpha1" + scheme "github.com/arangodb/kube-arangodb/pkg/generated/clientset/versioned/scheme" + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + types "k8s.io/apimachinery/pkg/types" + watch "k8s.io/apimachinery/pkg/watch" + rest "k8s.io/client-go/rest" +) + +// ArangoProfilesGetter has a method to return a ArangoProfileInterface. +// A group's client should implement this interface. +type ArangoProfilesGetter interface { + ArangoProfiles(namespace string) ArangoProfileInterface +} + +// ArangoProfileInterface has methods to work with ArangoProfile resources. +type ArangoProfileInterface interface { + Create(ctx context.Context, arangoProfile *v1alpha1.ArangoProfile, opts v1.CreateOptions) (*v1alpha1.ArangoProfile, error) + Update(ctx context.Context, arangoProfile *v1alpha1.ArangoProfile, opts v1.UpdateOptions) (*v1alpha1.ArangoProfile, error) + UpdateStatus(ctx context.Context, arangoProfile *v1alpha1.ArangoProfile, opts v1.UpdateOptions) (*v1alpha1.ArangoProfile, error) + Delete(ctx context.Context, name string, opts v1.DeleteOptions) error + DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error + Get(ctx context.Context, name string, opts v1.GetOptions) (*v1alpha1.ArangoProfile, error) + List(ctx context.Context, opts v1.ListOptions) (*v1alpha1.ArangoProfileList, error) + Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) + Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha1.ArangoProfile, err error) + ArangoProfileExpansion +} + +// arangoProfiles implements ArangoProfileInterface +type arangoProfiles struct { + client rest.Interface + ns string +} + +// newArangoProfiles returns a ArangoProfiles +func newArangoProfiles(c *SchedulerV1alpha1Client, namespace string) *arangoProfiles { + return &arangoProfiles{ + client: c.RESTClient(), + ns: namespace, + } +} + +// Get takes name of the arangoProfile, and returns the corresponding arangoProfile object, and an error if there is any. +func (c *arangoProfiles) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1alpha1.ArangoProfile, err error) { + result = &v1alpha1.ArangoProfile{} + err = c.client.Get(). + Namespace(c.ns). + Resource("arangoprofiles"). + Name(name). + VersionedParams(&options, scheme.ParameterCodec). + Do(ctx). + Into(result) + return +} + +// List takes label and field selectors, and returns the list of ArangoProfiles that match those selectors. +func (c *arangoProfiles) List(ctx context.Context, opts v1.ListOptions) (result *v1alpha1.ArangoProfileList, err error) { + var timeout time.Duration + if opts.TimeoutSeconds != nil { + timeout = time.Duration(*opts.TimeoutSeconds) * time.Second + } + result = &v1alpha1.ArangoProfileList{} + err = c.client.Get(). + Namespace(c.ns). + Resource("arangoprofiles"). + VersionedParams(&opts, scheme.ParameterCodec). + Timeout(timeout). + Do(ctx). + Into(result) + return +} + +// Watch returns a watch.Interface that watches the requested arangoProfiles. +func (c *arangoProfiles) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) { + var timeout time.Duration + if opts.TimeoutSeconds != nil { + timeout = time.Duration(*opts.TimeoutSeconds) * time.Second + } + opts.Watch = true + return c.client.Get(). + Namespace(c.ns). + Resource("arangoprofiles"). + VersionedParams(&opts, scheme.ParameterCodec). + Timeout(timeout). + Watch(ctx) +} + +// Create takes the representation of a arangoProfile and creates it. Returns the server's representation of the arangoProfile, and an error, if there is any. +func (c *arangoProfiles) Create(ctx context.Context, arangoProfile *v1alpha1.ArangoProfile, opts v1.CreateOptions) (result *v1alpha1.ArangoProfile, err error) { + result = &v1alpha1.ArangoProfile{} + err = c.client.Post(). + Namespace(c.ns). + Resource("arangoprofiles"). + VersionedParams(&opts, scheme.ParameterCodec). + Body(arangoProfile). + Do(ctx). + Into(result) + return +} + +// Update takes the representation of a arangoProfile and updates it. Returns the server's representation of the arangoProfile, and an error, if there is any. +func (c *arangoProfiles) Update(ctx context.Context, arangoProfile *v1alpha1.ArangoProfile, opts v1.UpdateOptions) (result *v1alpha1.ArangoProfile, err error) { + result = &v1alpha1.ArangoProfile{} + err = c.client.Put(). + Namespace(c.ns). + Resource("arangoprofiles"). + Name(arangoProfile.Name). + VersionedParams(&opts, scheme.ParameterCodec). + Body(arangoProfile). + Do(ctx). + Into(result) + return +} + +// UpdateStatus was generated because the type contains a Status member. +// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus(). +func (c *arangoProfiles) UpdateStatus(ctx context.Context, arangoProfile *v1alpha1.ArangoProfile, opts v1.UpdateOptions) (result *v1alpha1.ArangoProfile, err error) { + result = &v1alpha1.ArangoProfile{} + err = c.client.Put(). + Namespace(c.ns). + Resource("arangoprofiles"). + Name(arangoProfile.Name). + SubResource("status"). + VersionedParams(&opts, scheme.ParameterCodec). + Body(arangoProfile). + Do(ctx). + Into(result) + return +} + +// Delete takes name of the arangoProfile and deletes it. Returns an error if one occurs. +func (c *arangoProfiles) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error { + return c.client.Delete(). + Namespace(c.ns). + Resource("arangoprofiles"). + Name(name). + Body(&opts). + Do(ctx). + Error() +} + +// DeleteCollection deletes a collection of objects. +func (c *arangoProfiles) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error { + var timeout time.Duration + if listOpts.TimeoutSeconds != nil { + timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second + } + return c.client.Delete(). + Namespace(c.ns). + Resource("arangoprofiles"). + VersionedParams(&listOpts, scheme.ParameterCodec). + Timeout(timeout). + Body(&opts). + Do(ctx). + Error() +} + +// Patch applies the patch and returns the patched arangoProfile. +func (c *arangoProfiles) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha1.ArangoProfile, err error) { + result = &v1alpha1.ArangoProfile{} + err = c.client.Patch(pt). + Namespace(c.ns). + Resource("arangoprofiles"). + Name(name). + SubResource(subresources...). + VersionedParams(&opts, scheme.ParameterCodec). + Body(data). + Do(ctx). + Into(result) + return +} diff --git a/pkg/generated/clientset/versioned/typed/scheduler/v1alpha1/fake/fake_arangoprofile.go b/pkg/generated/clientset/versioned/typed/scheduler/v1alpha1/fake/fake_arangoprofile.go new file mode 100644 index 000000000..0c058c681 --- /dev/null +++ b/pkg/generated/clientset/versioned/typed/scheduler/v1alpha1/fake/fake_arangoprofile.go @@ -0,0 +1,145 @@ +// +// DISCLAIMER +// +// Copyright 2024 ArangoDB GmbH, Cologne, Germany +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Copyright holder is ArangoDB GmbH, Cologne, Germany +// + +// Code generated by client-gen. DO NOT EDIT. + +package fake + +import ( + "context" + + v1alpha1 "github.com/arangodb/kube-arangodb/pkg/apis/scheduler/v1alpha1" + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + labels "k8s.io/apimachinery/pkg/labels" + types "k8s.io/apimachinery/pkg/types" + watch "k8s.io/apimachinery/pkg/watch" + testing "k8s.io/client-go/testing" +) + +// FakeArangoProfiles implements ArangoProfileInterface +type FakeArangoProfiles struct { + Fake *FakeSchedulerV1alpha1 + ns string +} + +var arangoprofilesResource = v1alpha1.SchemeGroupVersion.WithResource("arangoprofiles") + +var arangoprofilesKind = v1alpha1.SchemeGroupVersion.WithKind("ArangoProfile") + +// Get takes name of the arangoProfile, and returns the corresponding arangoProfile object, and an error if there is any. +func (c *FakeArangoProfiles) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1alpha1.ArangoProfile, err error) { + obj, err := c.Fake. + Invokes(testing.NewGetAction(arangoprofilesResource, c.ns, name), &v1alpha1.ArangoProfile{}) + + if obj == nil { + return nil, err + } + return obj.(*v1alpha1.ArangoProfile), err +} + +// List takes label and field selectors, and returns the list of ArangoProfiles that match those selectors. +func (c *FakeArangoProfiles) List(ctx context.Context, opts v1.ListOptions) (result *v1alpha1.ArangoProfileList, err error) { + obj, err := c.Fake. + Invokes(testing.NewListAction(arangoprofilesResource, arangoprofilesKind, c.ns, opts), &v1alpha1.ArangoProfileList{}) + + if obj == nil { + return nil, err + } + + label, _, _ := testing.ExtractFromListOptions(opts) + if label == nil { + label = labels.Everything() + } + list := &v1alpha1.ArangoProfileList{ListMeta: obj.(*v1alpha1.ArangoProfileList).ListMeta} + for _, item := range obj.(*v1alpha1.ArangoProfileList).Items { + if label.Matches(labels.Set(item.Labels)) { + list.Items = append(list.Items, item) + } + } + return list, err +} + +// Watch returns a watch.Interface that watches the requested arangoProfiles. +func (c *FakeArangoProfiles) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) { + return c.Fake. + InvokesWatch(testing.NewWatchAction(arangoprofilesResource, c.ns, opts)) + +} + +// Create takes the representation of a arangoProfile and creates it. Returns the server's representation of the arangoProfile, and an error, if there is any. +func (c *FakeArangoProfiles) Create(ctx context.Context, arangoProfile *v1alpha1.ArangoProfile, opts v1.CreateOptions) (result *v1alpha1.ArangoProfile, err error) { + obj, err := c.Fake. + Invokes(testing.NewCreateAction(arangoprofilesResource, c.ns, arangoProfile), &v1alpha1.ArangoProfile{}) + + if obj == nil { + return nil, err + } + return obj.(*v1alpha1.ArangoProfile), err +} + +// Update takes the representation of a arangoProfile and updates it. Returns the server's representation of the arangoProfile, and an error, if there is any. +func (c *FakeArangoProfiles) Update(ctx context.Context, arangoProfile *v1alpha1.ArangoProfile, opts v1.UpdateOptions) (result *v1alpha1.ArangoProfile, err error) { + obj, err := c.Fake. + Invokes(testing.NewUpdateAction(arangoprofilesResource, c.ns, arangoProfile), &v1alpha1.ArangoProfile{}) + + if obj == nil { + return nil, err + } + return obj.(*v1alpha1.ArangoProfile), err +} + +// UpdateStatus was generated because the type contains a Status member. +// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus(). +func (c *FakeArangoProfiles) UpdateStatus(ctx context.Context, arangoProfile *v1alpha1.ArangoProfile, opts v1.UpdateOptions) (*v1alpha1.ArangoProfile, error) { + obj, err := c.Fake. + Invokes(testing.NewUpdateSubresourceAction(arangoprofilesResource, "status", c.ns, arangoProfile), &v1alpha1.ArangoProfile{}) + + if obj == nil { + return nil, err + } + return obj.(*v1alpha1.ArangoProfile), err +} + +// Delete takes name of the arangoProfile and deletes it. Returns an error if one occurs. +func (c *FakeArangoProfiles) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error { + _, err := c.Fake. + Invokes(testing.NewDeleteActionWithOptions(arangoprofilesResource, c.ns, name, opts), &v1alpha1.ArangoProfile{}) + + return err +} + +// DeleteCollection deletes a collection of objects. +func (c *FakeArangoProfiles) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error { + action := testing.NewDeleteCollectionAction(arangoprofilesResource, c.ns, listOpts) + + _, err := c.Fake.Invokes(action, &v1alpha1.ArangoProfileList{}) + return err +} + +// Patch applies the patch and returns the patched arangoProfile. +func (c *FakeArangoProfiles) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha1.ArangoProfile, err error) { + obj, err := c.Fake. + Invokes(testing.NewPatchSubresourceAction(arangoprofilesResource, c.ns, name, pt, data, subresources...), &v1alpha1.ArangoProfile{}) + + if obj == nil { + return nil, err + } + return obj.(*v1alpha1.ArangoProfile), err +} diff --git a/pkg/generated/clientset/versioned/typed/scheduler/v1alpha1/fake/fake_scheduler_client.go b/pkg/generated/clientset/versioned/typed/scheduler/v1alpha1/fake/fake_scheduler_client.go index b1827faaf..f2ee4d1da 100644 --- a/pkg/generated/clientset/versioned/typed/scheduler/v1alpha1/fake/fake_scheduler_client.go +++ b/pkg/generated/clientset/versioned/typed/scheduler/v1alpha1/fake/fake_scheduler_client.go @@ -23,6 +23,7 @@ package fake import ( + v1alpha1 "github.com/arangodb/kube-arangodb/pkg/generated/clientset/versioned/typed/scheduler/v1alpha1" rest "k8s.io/client-go/rest" testing "k8s.io/client-go/testing" ) @@ -31,6 +32,10 @@ type FakeSchedulerV1alpha1 struct { *testing.Fake } +func (c *FakeSchedulerV1alpha1) ArangoProfiles(namespace string) v1alpha1.ArangoProfileInterface { + return &FakeArangoProfiles{c, namespace} +} + // RESTClient returns a RESTClient that is used to communicate // with API server by this client implementation. func (c *FakeSchedulerV1alpha1) RESTClient() rest.Interface { diff --git a/pkg/generated/clientset/versioned/typed/scheduler/v1alpha1/generated_expansion.go b/pkg/generated/clientset/versioned/typed/scheduler/v1alpha1/generated_expansion.go index 74f850aac..18e272f9a 100644 --- a/pkg/generated/clientset/versioned/typed/scheduler/v1alpha1/generated_expansion.go +++ b/pkg/generated/clientset/versioned/typed/scheduler/v1alpha1/generated_expansion.go @@ -21,3 +21,5 @@ // Code generated by client-gen. DO NOT EDIT. package v1alpha1 + +type ArangoProfileExpansion interface{} diff --git a/pkg/generated/clientset/versioned/typed/scheduler/v1alpha1/scheduler_client.go b/pkg/generated/clientset/versioned/typed/scheduler/v1alpha1/scheduler_client.go index f80279a18..ceed8f900 100644 --- a/pkg/generated/clientset/versioned/typed/scheduler/v1alpha1/scheduler_client.go +++ b/pkg/generated/clientset/versioned/typed/scheduler/v1alpha1/scheduler_client.go @@ -32,6 +32,7 @@ import ( type SchedulerV1alpha1Interface interface { RESTClient() rest.Interface + ArangoProfilesGetter } // SchedulerV1alpha1Client is used to interact with features provided by the scheduler.arangodb.com group. @@ -39,6 +40,10 @@ type SchedulerV1alpha1Client struct { restClient rest.Interface } +func (c *SchedulerV1alpha1Client) ArangoProfiles(namespace string) ArangoProfileInterface { + return newArangoProfiles(c, namespace) +} + // NewForConfig creates a new SchedulerV1alpha1Client for the given config. // NewForConfig is equivalent to NewForConfigAndClient(c, httpClient), // where httpClient was generated with rest.HTTPClientFor(c). diff --git a/pkg/generated/informers/externalversions/factory.go b/pkg/generated/informers/externalversions/factory.go index 21147cde1..3c63d2075 100644 --- a/pkg/generated/informers/externalversions/factory.go +++ b/pkg/generated/informers/externalversions/factory.go @@ -34,6 +34,7 @@ import ( internalinterfaces "github.com/arangodb/kube-arangodb/pkg/generated/informers/externalversions/internalinterfaces" ml "github.com/arangodb/kube-arangodb/pkg/generated/informers/externalversions/ml" replication "github.com/arangodb/kube-arangodb/pkg/generated/informers/externalversions/replication" + scheduler "github.com/arangodb/kube-arangodb/pkg/generated/informers/externalversions/scheduler" storage "github.com/arangodb/kube-arangodb/pkg/generated/informers/externalversions/storage" v1 "k8s.io/apimachinery/pkg/apis/meta/v1" runtime "k8s.io/apimachinery/pkg/runtime" @@ -267,6 +268,7 @@ type SharedInformerFactory interface { Database() deployment.Interface Ml() ml.Interface Replication() replication.Interface + Scheduler() scheduler.Interface Storage() storage.Interface } @@ -290,6 +292,10 @@ func (f *sharedInformerFactory) Replication() replication.Interface { return replication.New(f, f.namespace, f.tweakListOptions) } +func (f *sharedInformerFactory) Scheduler() scheduler.Interface { + return scheduler.New(f, f.namespace, f.tweakListOptions) +} + func (f *sharedInformerFactory) Storage() storage.Interface { return storage.New(f, f.namespace, f.tweakListOptions) } diff --git a/pkg/generated/informers/externalversions/generic.go b/pkg/generated/informers/externalversions/generic.go index 5c4332b11..d9a68a773 100644 --- a/pkg/generated/informers/externalversions/generic.go +++ b/pkg/generated/informers/externalversions/generic.go @@ -32,6 +32,7 @@ import ( v1alpha1 "github.com/arangodb/kube-arangodb/pkg/apis/ml/v1alpha1" replicationv1 "github.com/arangodb/kube-arangodb/pkg/apis/replication/v1" replicationv2alpha1 "github.com/arangodb/kube-arangodb/pkg/apis/replication/v2alpha1" + schedulerv1alpha1 "github.com/arangodb/kube-arangodb/pkg/apis/scheduler/v1alpha1" v1alpha "github.com/arangodb/kube-arangodb/pkg/apis/storage/v1alpha" schema "k8s.io/apimachinery/pkg/runtime/schema" cache "k8s.io/client-go/tools/cache" @@ -111,6 +112,10 @@ func (f *sharedInformerFactory) ForResource(resource schema.GroupVersionResource case replicationv2alpha1.SchemeGroupVersion.WithResource("arangodeploymentreplications"): return &genericInformer{resource: resource.GroupResource(), informer: f.Replication().V2alpha1().ArangoDeploymentReplications().Informer()}, nil + // Group=scheduler.arangodb.com, Version=v1alpha1 + case schedulerv1alpha1.SchemeGroupVersion.WithResource("arangoprofiles"): + return &genericInformer{resource: resource.GroupResource(), informer: f.Scheduler().V1alpha1().ArangoProfiles().Informer()}, nil + // Group=storage.arangodb.com, Version=v1alpha case v1alpha.SchemeGroupVersion.WithResource("arangolocalstorages"): return &genericInformer{resource: resource.GroupResource(), informer: f.Storage().V1alpha().ArangoLocalStorages().Informer()}, nil diff --git a/pkg/generated/informers/externalversions/scheduler/interface.go b/pkg/generated/informers/externalversions/scheduler/interface.go new file mode 100644 index 000000000..bb28e6d0b --- /dev/null +++ b/pkg/generated/informers/externalversions/scheduler/interface.go @@ -0,0 +1,50 @@ +// +// DISCLAIMER +// +// Copyright 2024 ArangoDB GmbH, Cologne, Germany +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Copyright holder is ArangoDB GmbH, Cologne, Germany +// + +// Code generated by informer-gen. DO NOT EDIT. + +package scheduler + +import ( + internalinterfaces "github.com/arangodb/kube-arangodb/pkg/generated/informers/externalversions/internalinterfaces" + v1alpha1 "github.com/arangodb/kube-arangodb/pkg/generated/informers/externalversions/scheduler/v1alpha1" +) + +// Interface provides access to each of this group's versions. +type Interface interface { + // V1alpha1 provides access to shared informers for resources in V1alpha1. + V1alpha1() v1alpha1.Interface +} + +type group struct { + factory internalinterfaces.SharedInformerFactory + namespace string + tweakListOptions internalinterfaces.TweakListOptionsFunc +} + +// New returns a new Interface. +func New(f internalinterfaces.SharedInformerFactory, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) Interface { + return &group{factory: f, namespace: namespace, tweakListOptions: tweakListOptions} +} + +// V1alpha1 returns a new v1alpha1.Interface. +func (g *group) V1alpha1() v1alpha1.Interface { + return v1alpha1.New(g.factory, g.namespace, g.tweakListOptions) +} diff --git a/pkg/generated/informers/externalversions/scheduler/v1alpha1/arangoprofile.go b/pkg/generated/informers/externalversions/scheduler/v1alpha1/arangoprofile.go new file mode 100644 index 000000000..05c628e69 --- /dev/null +++ b/pkg/generated/informers/externalversions/scheduler/v1alpha1/arangoprofile.go @@ -0,0 +1,94 @@ +// +// DISCLAIMER +// +// Copyright 2024 ArangoDB GmbH, Cologne, Germany +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Copyright holder is ArangoDB GmbH, Cologne, Germany +// + +// Code generated by informer-gen. DO NOT EDIT. + +package v1alpha1 + +import ( + "context" + time "time" + + schedulerv1alpha1 "github.com/arangodb/kube-arangodb/pkg/apis/scheduler/v1alpha1" + versioned "github.com/arangodb/kube-arangodb/pkg/generated/clientset/versioned" + internalinterfaces "github.com/arangodb/kube-arangodb/pkg/generated/informers/externalversions/internalinterfaces" + v1alpha1 "github.com/arangodb/kube-arangodb/pkg/generated/listers/scheduler/v1alpha1" + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + runtime "k8s.io/apimachinery/pkg/runtime" + watch "k8s.io/apimachinery/pkg/watch" + cache "k8s.io/client-go/tools/cache" +) + +// ArangoProfileInformer provides access to a shared informer and lister for +// ArangoProfiles. +type ArangoProfileInformer interface { + Informer() cache.SharedIndexInformer + Lister() v1alpha1.ArangoProfileLister +} + +type arangoProfileInformer struct { + factory internalinterfaces.SharedInformerFactory + tweakListOptions internalinterfaces.TweakListOptionsFunc + namespace string +} + +// NewArangoProfileInformer constructs a new informer for ArangoProfile type. +// Always prefer using an informer factory to get a shared informer instead of getting an independent +// one. This reduces memory footprint and number of connections to the server. +func NewArangoProfileInformer(client versioned.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer { + return NewFilteredArangoProfileInformer(client, namespace, resyncPeriod, indexers, nil) +} + +// NewFilteredArangoProfileInformer constructs a new informer for ArangoProfile type. +// Always prefer using an informer factory to get a shared informer instead of getting an independent +// one. This reduces memory footprint and number of connections to the server. +func NewFilteredArangoProfileInformer(client versioned.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer { + return cache.NewSharedIndexInformer( + &cache.ListWatch{ + ListFunc: func(options v1.ListOptions) (runtime.Object, error) { + if tweakListOptions != nil { + tweakListOptions(&options) + } + return client.SchedulerV1alpha1().ArangoProfiles(namespace).List(context.TODO(), options) + }, + WatchFunc: func(options v1.ListOptions) (watch.Interface, error) { + if tweakListOptions != nil { + tweakListOptions(&options) + } + return client.SchedulerV1alpha1().ArangoProfiles(namespace).Watch(context.TODO(), options) + }, + }, + &schedulerv1alpha1.ArangoProfile{}, + resyncPeriod, + indexers, + ) +} + +func (f *arangoProfileInformer) defaultInformer(client versioned.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer { + return NewFilteredArangoProfileInformer(client, f.namespace, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions) +} + +func (f *arangoProfileInformer) Informer() cache.SharedIndexInformer { + return f.factory.InformerFor(&schedulerv1alpha1.ArangoProfile{}, f.defaultInformer) +} + +func (f *arangoProfileInformer) Lister() v1alpha1.ArangoProfileLister { + return v1alpha1.NewArangoProfileLister(f.Informer().GetIndexer()) +} diff --git a/pkg/generated/informers/externalversions/scheduler/v1alpha1/interface.go b/pkg/generated/informers/externalversions/scheduler/v1alpha1/interface.go new file mode 100644 index 000000000..c55e20f3c --- /dev/null +++ b/pkg/generated/informers/externalversions/scheduler/v1alpha1/interface.go @@ -0,0 +1,49 @@ +// +// DISCLAIMER +// +// Copyright 2024 ArangoDB GmbH, Cologne, Germany +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Copyright holder is ArangoDB GmbH, Cologne, Germany +// + +// Code generated by informer-gen. DO NOT EDIT. + +package v1alpha1 + +import ( + internalinterfaces "github.com/arangodb/kube-arangodb/pkg/generated/informers/externalversions/internalinterfaces" +) + +// Interface provides access to all the informers in this group version. +type Interface interface { + // ArangoProfiles returns a ArangoProfileInformer. + ArangoProfiles() ArangoProfileInformer +} + +type version struct { + factory internalinterfaces.SharedInformerFactory + namespace string + tweakListOptions internalinterfaces.TweakListOptionsFunc +} + +// New returns a new Interface. +func New(f internalinterfaces.SharedInformerFactory, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) Interface { + return &version{factory: f, namespace: namespace, tweakListOptions: tweakListOptions} +} + +// ArangoProfiles returns a ArangoProfileInformer. +func (v *version) ArangoProfiles() ArangoProfileInformer { + return &arangoProfileInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions} +} diff --git a/pkg/generated/listers/scheduler/v1alpha1/arangoprofile.go b/pkg/generated/listers/scheduler/v1alpha1/arangoprofile.go new file mode 100644 index 000000000..ab68f9f20 --- /dev/null +++ b/pkg/generated/listers/scheduler/v1alpha1/arangoprofile.go @@ -0,0 +1,103 @@ +// +// DISCLAIMER +// +// Copyright 2024 ArangoDB GmbH, Cologne, Germany +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Copyright holder is ArangoDB GmbH, Cologne, Germany +// + +// Code generated by lister-gen. DO NOT EDIT. + +package v1alpha1 + +import ( + v1alpha1 "github.com/arangodb/kube-arangodb/pkg/apis/scheduler/v1alpha1" + "k8s.io/apimachinery/pkg/api/errors" + "k8s.io/apimachinery/pkg/labels" + "k8s.io/client-go/tools/cache" +) + +// ArangoProfileLister helps list ArangoProfiles. +// All objects returned here must be treated as read-only. +type ArangoProfileLister interface { + // List lists all ArangoProfiles in the indexer. + // Objects returned here must be treated as read-only. + List(selector labels.Selector) (ret []*v1alpha1.ArangoProfile, err error) + // ArangoProfiles returns an object that can list and get ArangoProfiles. + ArangoProfiles(namespace string) ArangoProfileNamespaceLister + ArangoProfileListerExpansion +} + +// arangoProfileLister implements the ArangoProfileLister interface. +type arangoProfileLister struct { + indexer cache.Indexer +} + +// NewArangoProfileLister returns a new ArangoProfileLister. +func NewArangoProfileLister(indexer cache.Indexer) ArangoProfileLister { + return &arangoProfileLister{indexer: indexer} +} + +// List lists all ArangoProfiles in the indexer. +func (s *arangoProfileLister) List(selector labels.Selector) (ret []*v1alpha1.ArangoProfile, err error) { + err = cache.ListAll(s.indexer, selector, func(m interface{}) { + ret = append(ret, m.(*v1alpha1.ArangoProfile)) + }) + return ret, err +} + +// ArangoProfiles returns an object that can list and get ArangoProfiles. +func (s *arangoProfileLister) ArangoProfiles(namespace string) ArangoProfileNamespaceLister { + return arangoProfileNamespaceLister{indexer: s.indexer, namespace: namespace} +} + +// ArangoProfileNamespaceLister helps list and get ArangoProfiles. +// All objects returned here must be treated as read-only. +type ArangoProfileNamespaceLister interface { + // List lists all ArangoProfiles in the indexer for a given namespace. + // Objects returned here must be treated as read-only. + List(selector labels.Selector) (ret []*v1alpha1.ArangoProfile, err error) + // Get retrieves the ArangoProfile from the indexer for a given namespace and name. + // Objects returned here must be treated as read-only. + Get(name string) (*v1alpha1.ArangoProfile, error) + ArangoProfileNamespaceListerExpansion +} + +// arangoProfileNamespaceLister implements the ArangoProfileNamespaceLister +// interface. +type arangoProfileNamespaceLister struct { + indexer cache.Indexer + namespace string +} + +// List lists all ArangoProfiles in the indexer for a given namespace. +func (s arangoProfileNamespaceLister) List(selector labels.Selector) (ret []*v1alpha1.ArangoProfile, err error) { + err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) { + ret = append(ret, m.(*v1alpha1.ArangoProfile)) + }) + return ret, err +} + +// Get retrieves the ArangoProfile from the indexer for a given namespace and name. +func (s arangoProfileNamespaceLister) Get(name string) (*v1alpha1.ArangoProfile, error) { + obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name) + if err != nil { + return nil, err + } + if !exists { + return nil, errors.NewNotFound(v1alpha1.Resource("arangoprofile"), name) + } + return obj.(*v1alpha1.ArangoProfile), nil +} diff --git a/pkg/generated/listers/scheduler/v1alpha1/expansion_generated.go b/pkg/generated/listers/scheduler/v1alpha1/expansion_generated.go new file mode 100644 index 000000000..06299687c --- /dev/null +++ b/pkg/generated/listers/scheduler/v1alpha1/expansion_generated.go @@ -0,0 +1,31 @@ +// +// DISCLAIMER +// +// Copyright 2024 ArangoDB GmbH, Cologne, Germany +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Copyright holder is ArangoDB GmbH, Cologne, Germany +// + +// Code generated by lister-gen. DO NOT EDIT. + +package v1alpha1 + +// ArangoProfileListerExpansion allows custom methods to be added to +// ArangoProfileLister. +type ArangoProfileListerExpansion interface{} + +// ArangoProfileNamespaceListerExpansion allows custom methods to be added to +// ArangoProfileNamespaceLister. +type ArangoProfileNamespaceListerExpansion interface{} diff --git a/pkg/integrations/scheduler_v1.go b/pkg/integrations/scheduler_v1.go new file mode 100644 index 000000000..34cb3c565 --- /dev/null +++ b/pkg/integrations/scheduler_v1.go @@ -0,0 +1,69 @@ +// +// DISCLAIMER +// +// Copyright 2024 ArangoDB GmbH, Cologne, Germany +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Copyright holder is ArangoDB GmbH, Cologne, Germany +// + +package integrations + +import ( + "context" + + "github.com/spf13/cobra" + + pbImplSchedulerV1 "github.com/arangodb/kube-arangodb/integrations/scheduler/v1" + "github.com/arangodb/kube-arangodb/pkg/util/constants" + "github.com/arangodb/kube-arangodb/pkg/util/errors" + "github.com/arangodb/kube-arangodb/pkg/util/kclient" + "github.com/arangodb/kube-arangodb/pkg/util/svc" +) + +func init() { + register(func() Integration { + return &schedulerV1{} + }) +} + +type schedulerV1 struct { + Configuration pbImplSchedulerV1.Configuration +} + +func (b *schedulerV1) Name() string { + return "scheduler.v1" +} + +func (b *schedulerV1) Description() string { + return "SchedulerV1 Integration" +} + +func (b *schedulerV1) Register(cmd *cobra.Command, arg ArgGen) error { + f := cmd.Flags() + + f.StringVar(&b.Configuration.Namespace, arg("namespace"), constants.NamespaceWithDefault("default"), "Kubernetes Namespace") + f.BoolVar(&b.Configuration.VerifyAccess, arg("verify-access"), true, "Verify the CRD Access") + + return nil +} + +func (b *schedulerV1) Handler(ctx context.Context) (svc.Handler, error) { + client, ok := kclient.GetDefaultFactory().Client() + if !ok { + return nil, errors.Errorf("Unable to create Kubernetes Client") + } + + return pbImplSchedulerV1.New(ctx, client, b.Configuration) +} diff --git a/pkg/logging/cli.go b/pkg/logging/cli.go new file mode 100644 index 000000000..381561b9b --- /dev/null +++ b/pkg/logging/cli.go @@ -0,0 +1,85 @@ +// +// DISCLAIMER +// +// Copyright 2024 ArangoDB GmbH, Cologne, Germany +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Copyright holder is ArangoDB GmbH, Cologne, Germany +// + +package logging + +import ( + "fmt" + "os" + "strings" + "sync" + + "github.com/rs/zerolog" + "github.com/spf13/cobra" + + "github.com/arangodb/kube-arangodb/pkg/util/errors" +) + +const ( + defaultLogLevel = "info" +) + +var ( + enableLock sync.Mutex + enabled bool + + cli struct { + format string + levels []string + sampling bool + } +) + +func Init(cmd *cobra.Command) error { + f := cmd.PersistentFlags() + + f.StringVar(&cli.format, "log.format", "pretty", "Set log format. Allowed values: 'pretty', 'JSON'. If empty, default format is used") + f.StringArrayVar(&cli.levels, "log.level", []string{defaultLogLevel}, fmt.Sprintf("Set log levels in format or =. Possible loggers: %s", strings.Join(Global().Names(), ", "))) + f.BoolVar(&cli.sampling, "log.sampling", true, "If true, operator will try to minimize duplication of logging events") + + return nil +} + +func Enable() error { + enableLock.Lock() + defer enableLock.Unlock() + + if enabled { + return errors.Errorf("Logger already enabled") + } + + levels, err := ParseLogLevelsFromArgs(cli.levels) + if err != nil { + return errors.WithMessagef(err, "Unable to parse levels") + } + + // Set root logger to stdout (JSON formatted) if not prettified + if strings.ToUpper(cli.format) == "JSON" { + Global().SetRoot(zerolog.New(os.Stdout).With().Timestamp().Logger()) + } else if strings.ToLower(cli.format) != "pretty" && cli.format != "" { + return errors.Errorf("Unknown log format: %s", cli.format) + } + Global().Configure(Config{ + Levels: levels, + Sampling: cli.sampling, + }) + + return nil +} diff --git a/pkg/ml/container_auth_jwt.go b/pkg/ml/container_auth_jwt.go deleted file mode 100644 index 443657372..000000000 --- a/pkg/ml/container_auth_jwt.go +++ /dev/null @@ -1,84 +0,0 @@ -// -// DISCLAIMER -// -// Copyright 2024 ArangoDB GmbH, Cologne, Germany -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -// Copyright holder is ArangoDB GmbH, Cologne, Germany -// - -package ml - -import ( - "fmt" - "strings" - - core "k8s.io/api/core/v1" - - api "github.com/arangodb/kube-arangodb/pkg/apis/deployment/v1" - mlApi "github.com/arangodb/kube-arangodb/pkg/apis/ml/v1alpha1" - sharedApi "github.com/arangodb/kube-arangodb/pkg/apis/shared/v1" -) - -func GetJWTAuthFileTokenPath(prefix string) string { - base := "/etc/arangodb/jwt" - if prefix == "" { - return base - } - - return fmt.Sprintf("%s-%s", base, prefix) -} - -func AddJWTAuthFileToContainers(ext *mlApi.ArangoMLExtension, deployment *api.ArangoDeployment, spec *core.PodTemplateSpec, containers ...*core.Container) { - authSpec := deployment.GetAcceptedSpec().Authentication - if !authSpec.IsAuthenticated() { - return - } - - if ext.GetStatus().ArangoDB == nil { - // not ready yet, skip for now - return - } - - mountJWTTokenSecret("", ext.GetStatus().ArangoDB.JWTTokenSecret, spec, containers...) - mountJWTTokenSecret("METADATA", ext.GetStatus().MetadataService.JWTTokenSecret, spec, containers...) -} - -// mountJWTTokenSecret is assuming that prefix contains only alphanumeric symbols and/or '-' -func mountJWTTokenSecret(prefix string, secret *sharedApi.Object, spec *core.PodTemplateSpec, containers ...*core.Container) { - if secret.IsEmpty() { - return - } - - mountName := "deployment-auth-jwt" - if prefix != "" { - mountName = fmt.Sprintf("%s-%s", mountName, strings.ToLower(prefix)) - } - spec.Spec.Volumes = append(spec.Spec.Volumes, core.Volume{ - Name: mountName, - VolumeSource: core.VolumeSource{ - Secret: &core.SecretVolumeSource{ - SecretName: secret.GetName(), - }, - }, - }) - - for _, container := range containers { - container.VolumeMounts = append(container.VolumeMounts, core.VolumeMount{ - Name: mountName, - ReadOnly: true, - MountPath: GetJWTAuthFileTokenPath(prefix), - }) - } -} diff --git a/pkg/ml/container_jwt.go b/pkg/ml/container_jwt.go deleted file mode 100644 index 758753693..000000000 --- a/pkg/ml/container_jwt.go +++ /dev/null @@ -1,55 +0,0 @@ -// -// DISCLAIMER -// -// Copyright 2024 ArangoDB GmbH, Cologne, Germany -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -// Copyright holder is ArangoDB GmbH, Cologne, Germany -// - -package ml - -import ( - core "k8s.io/api/core/v1" - - api "github.com/arangodb/kube-arangodb/pkg/apis/deployment/v1" - shared "github.com/arangodb/kube-arangodb/pkg/apis/shared" - "github.com/arangodb/kube-arangodb/pkg/deployment/pod" -) - -func AddJWTFolderToPod(deployment *api.ArangoDeployment, spec *core.PodTemplateSpec, integrationContainer *core.Container) { - if deployment.GetAcceptedSpec().Authentication.IsAuthenticated() { - spec.Spec.Volumes = append(spec.Spec.Volumes, core.Volume{ - Name: shared.ClusterJWTSecretVolumeName, - VolumeSource: core.VolumeSource{ - Secret: &core.SecretVolumeSource{ - SecretName: pod.JWTSecretFolder(deployment.GetName()), - }, - }, - }) - } else { - spec.Spec.Volumes = append(spec.Spec.Volumes, core.Volume{ - Name: shared.ClusterJWTSecretVolumeName, - VolumeSource: core.VolumeSource{ - EmptyDir: &core.EmptyDirVolumeSource{}, - }, - }) - } - - integrationContainer.VolumeMounts = append(integrationContainer.VolumeMounts, core.VolumeMount{ - Name: shared.ClusterJWTSecretVolumeName, - ReadOnly: true, - MountPath: shared.ClusterJWTSecretVolumeMountDir, - }) -} diff --git a/pkg/operatorV2/operator_worker.go b/pkg/operatorV2/operator_worker.go index 83913e7da..aac85d0f0 100644 --- a/pkg/operatorV2/operator_worker.go +++ b/pkg/operatorV2/operator_worker.go @@ -23,6 +23,7 @@ package operator import ( "context" "fmt" + "runtime/debug" "github.com/arangodb/kube-arangodb/pkg/operatorV2/operation" "github.com/arangodb/kube-arangodb/pkg/util/errors" @@ -52,6 +53,10 @@ func (o *operator) processNextItem() bool { e.Interface("err", obj) } + if v := debug.Stack(); len(v) != 0 { + e = e.Str("stack", string(v)) + } + e.Error("Recovered from panic") } }() diff --git a/pkg/scheduler/input.go b/pkg/scheduler/input.go new file mode 100644 index 000000000..6a31349a2 --- /dev/null +++ b/pkg/scheduler/input.go @@ -0,0 +1,88 @@ +// +// DISCLAIMER +// +// Copyright 2024 ArangoDB GmbH, Cologne, Germany +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Copyright holder is ArangoDB GmbH, Cologne, Germany +// + +package scheduler + +import ( + "math" + + core "k8s.io/api/core/v1" + + pbSchedulerV1 "github.com/arangodb/kube-arangodb/integrations/scheduler/v1/definition" + schedulerApi "github.com/arangodb/kube-arangodb/pkg/apis/scheduler/v1alpha1" + schedulerContainerApi "github.com/arangodb/kube-arangodb/pkg/apis/scheduler/v1alpha1/container" + schedulerContainerResourcesApi "github.com/arangodb/kube-arangodb/pkg/apis/scheduler/v1alpha1/container/resources" + schedulerPodApi "github.com/arangodb/kube-arangodb/pkg/apis/scheduler/v1alpha1/pod" + schedulerPodResourcesApi "github.com/arangodb/kube-arangodb/pkg/apis/scheduler/v1alpha1/pod/resources" + "github.com/arangodb/kube-arangodb/pkg/util" +) + +func baseAsTemplate(in *pbSchedulerV1.Spec) *schedulerApi.ProfileTemplate { + containers := schedulerContainerApi.Containers{} + + for n, c := range in.Containers { + if c == nil { + continue + } + + var container schedulerContainerApi.Container + + if image := c.Image; image != nil { + container.Image = &schedulerContainerResourcesApi.Image{ + Image: c.Image, + } + } + + if len(c.Args) > 0 { + container.Core = &schedulerContainerResourcesApi.Core{ + Args: c.Args, + } + } + + if len(c.EnvironmentVariables) > 0 { + container.Environments = &schedulerContainerResourcesApi.Environments{} + + for k, v := range c.EnvironmentVariables { + container.Env = append(container.Env, core.EnvVar{ + Name: k, + Value: v, + }) + } + } + + containers[n] = container + } + + var t = schedulerApi.ProfileTemplate{ + Priority: util.NewType(math.MaxInt), + Pod: &schedulerPodApi.Pod{}, + Container: &schedulerApi.ProfileContainerTemplate{ + Containers: containers, + }, + } + + if job := in.Job; job != nil { + t.Pod.Metadata = &schedulerPodResourcesApi.Metadata{ + Labels: job.Labels, + } + } + + return &t +} diff --git a/pkg/scheduler/scheduler.go b/pkg/scheduler/scheduler.go new file mode 100644 index 000000000..0affbb801 --- /dev/null +++ b/pkg/scheduler/scheduler.go @@ -0,0 +1,136 @@ +// +// DISCLAIMER +// +// Copyright 2024 ArangoDB GmbH, Cologne, Germany +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Copyright holder is ArangoDB GmbH, Cologne, Germany +// + +package scheduler + +import ( + "context" + + core "k8s.io/api/core/v1" + + pbSchedulerV1 "github.com/arangodb/kube-arangodb/integrations/scheduler/v1/definition" + schedulerApi "github.com/arangodb/kube-arangodb/pkg/apis/scheduler/v1alpha1" + "github.com/arangodb/kube-arangodb/pkg/debug_package/generators/kubernetes" + "github.com/arangodb/kube-arangodb/pkg/util/errors" + "github.com/arangodb/kube-arangodb/pkg/util/kclient" +) + +func NewScheduler(client kclient.Client, namespace string) Scheduler { + return scheduler{ + client: client, + namespace: namespace, + } +} + +type Scheduler interface { + Render(ctx context.Context, in *pbSchedulerV1.Spec, templates ...*schedulerApi.ProfileTemplate) (*core.PodTemplateSpec, []string, error) +} + +type scheduler struct { + client kclient.Client + namespace string +} + +func (s scheduler) Render(ctx context.Context, in *pbSchedulerV1.Spec, templates ...*schedulerApi.ProfileTemplate) (*core.PodTemplateSpec, []string, error) { + if in == nil { + return nil, nil, errors.Errorf("Unable to parse nil Spec") + } + + profileMap, err := kubernetes.MapObjects[*schedulerApi.ArangoProfileList, *schedulerApi.ArangoProfile](ctx, s.client.Arango().SchedulerV1alpha1().ArangoProfiles(s.namespace), func(result *schedulerApi.ArangoProfileList) []*schedulerApi.ArangoProfile { + q := make([]*schedulerApi.ArangoProfile, len(result.Items)) + + for id, e := range result.Items { + q[id] = e.DeepCopy() + } + + return q + }) + + if err != nil { + return nil, nil, err + } + + var labels map[string]string + var additionalProfiles []string + + if job := in.Job; job != nil { + labels = job.Labels + additionalProfiles = job.Profiles + } + + if len(in.Containers) == 0 { + return nil, nil, errors.Errorf("Required at least 1 container") + } + + profiles := profileMap.AsList().Filter(func(a *schedulerApi.ArangoProfile) bool { + return a != nil && a.Spec.Template != nil + }).Filter(func(a *schedulerApi.ArangoProfile) bool { + if a.Spec.Selectors == nil { + return false + } + + if !a.Spec.Selectors.Select(labels) { + return false + } + + return true + }) + + for _, name := range additionalProfiles { + p, ok := profileMap.ByName(name) + if !ok { + return nil, nil, errors.Errorf("Profile with name `%s` is missing", name) + } + + profiles = append(profiles, p) + } + + profiles = profiles.Unique(func(existing kubernetes.List[*schedulerApi.ArangoProfile], o *schedulerApi.ArangoProfile) bool { + return existing.Contains(func(a *schedulerApi.ArangoProfile) bool { + return a.GetName() == o.GetName() + }) + }) + + profiles = profiles.Sort(func(a, b *schedulerApi.ArangoProfile) bool { + return a.Spec.Template.GetPriority() > b.Spec.Template.GetPriority() + }) + + if err := errors.Errors(kubernetes.Extract(profiles, func(in *schedulerApi.ArangoProfile) error { + return in.Spec.Validate() + })...); err != nil { + return nil, nil, err + } + + extracted := schedulerApi.ProfileTemplates(kubernetes.Extract(profiles, func(in *schedulerApi.ArangoProfile) *schedulerApi.ProfileTemplate { + return in.Spec.Template + }).Append(templates...).Append(baseAsTemplate(in))) + + names := kubernetes.Extract(profiles, func(in *schedulerApi.ArangoProfile) string { + return in.GetName() + }) + + var pod core.PodTemplateSpec + + if err := extracted.RenderOnTemplate(&pod); err != nil { + return nil, names, err + } + + return &pod, names, nil +} diff --git a/pkg/scheduler/scheduler_test.go b/pkg/scheduler/scheduler_test.go new file mode 100644 index 000000000..149382eb4 --- /dev/null +++ b/pkg/scheduler/scheduler_test.go @@ -0,0 +1,344 @@ +// +// DISCLAIMER +// +// Copyright 2024 ArangoDB GmbH, Cologne, Germany +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Copyright holder is ArangoDB GmbH, Cologne, Germany +// + +package scheduler + +import ( + "context" + "strings" + "testing" + + "github.com/stretchr/testify/require" + core "k8s.io/api/core/v1" + meta "k8s.io/apimachinery/pkg/apis/meta/v1" + "sigs.k8s.io/yaml" + + pbSchedulerV1 "github.com/arangodb/kube-arangodb/integrations/scheduler/v1/definition" + schedulerApi "github.com/arangodb/kube-arangodb/pkg/apis/scheduler/v1alpha1" + schedulerContainerApi "github.com/arangodb/kube-arangodb/pkg/apis/scheduler/v1alpha1/container" + schedulerContainerResourcesApi "github.com/arangodb/kube-arangodb/pkg/apis/scheduler/v1alpha1/container/resources" + "github.com/arangodb/kube-arangodb/pkg/util" + "github.com/arangodb/kube-arangodb/pkg/util/kclient" + "github.com/arangodb/kube-arangodb/pkg/util/tests" +) + +const DefaultContainerName = "job" + +func newScheduler(t *testing.T, objects ...*schedulerApi.ArangoProfile) Scheduler { + client := kclient.NewFakeClientBuilder().Client() + + objs := make([]interface{}, len(objects)) + for id := range objs { + objs[id] = &objects[id] + } + + tests.CreateObjects(t, client.Kubernetes(), client.Arango(), objs...) + + return NewScheduler(client, tests.FakeNamespace) +} + +type validatorExec func(in validator) + +type validator func(t *testing.T, err error, template *core.PodTemplateSpec, accepted []string) + +func getRequest(in ...func(obj *pbSchedulerV1.Spec)) *pbSchedulerV1.Spec { + var r pbSchedulerV1.Spec + for _, i := range in { + i(&r) + } + + return &r +} + +func withProfiles(profiles ...string) func(obj *pbSchedulerV1.Spec) { + return func(obj *pbSchedulerV1.Spec) { + if obj.Job == nil { + obj.Job = &pbSchedulerV1.JobBase{} + } + + obj.Job.Profiles = append(obj.Job.Profiles, profiles...) + } +} + +func withLabels(labels map[string]string) func(obj *pbSchedulerV1.Spec) { + return func(obj *pbSchedulerV1.Spec) { + if obj.Job == nil { + obj.Job = &pbSchedulerV1.JobBase{} + } + + if obj.Job.Labels == nil { + obj.Job.Labels = make(map[string]string) + } + + for k, v := range labels { + obj.Job.Labels[k] = v + } + } +} + +func withDefaultContainer(in ...func(obj *pbSchedulerV1.ContainerBase)) func(obj *pbSchedulerV1.Spec) { + return func(obj *pbSchedulerV1.Spec) { + if obj.Containers == nil { + obj.Containers = make(map[string]*pbSchedulerV1.ContainerBase) + } + + var c pbSchedulerV1.ContainerBase + + for _, i := range in { + i(&c) + } + + obj.Containers[DefaultContainerName] = &c + } +} + +func render(t *testing.T, s Scheduler, in *pbSchedulerV1.Spec, templates ...*schedulerApi.ProfileTemplate) validatorExec { + pod, accepted, err := s.Render(context.Background(), in, templates...) + t.Logf("Accepted templates: %s", strings.Join(accepted, ", ")) + if err != nil { + return runValidate(t, err, pod, accepted) + } + require.NoError(t, err) + + data, err := yaml.Marshal(pod) + require.NoError(t, err) + + t.Logf("Rendered Template:\n%s", string(data)) + + return runValidate(t, nil, pod, accepted) +} + +func runValidate(t *testing.T, err error, template *core.PodTemplateSpec, accepted []string) validatorExec { + return func(in validator) { + t.Run("Validate", func(t *testing.T) { + in(t, err, template, accepted) + }) + } +} + +func Test_Nil(t *testing.T) { + render(t, newScheduler(t, tests.NewMetaObjectInDefaultNamespace[*schedulerApi.ArangoProfile](t, "test")), nil)(func(t *testing.T, err error, template *core.PodTemplateSpec, accepted []string) { + require.EqualError(t, err, "Unable to parse nil Spec") + }) +} + +func Test_NoProfiles(t *testing.T) { + render(t, newScheduler(t, tests.NewMetaObjectInDefaultNamespace[*schedulerApi.ArangoProfile](t, "test")), &pbSchedulerV1.Spec{})(func(t *testing.T, err error, template *core.PodTemplateSpec, accepted []string) { + require.EqualError(t, err, "Required at least 1 container") + }) +} + +func Test_MissingSelectedProfile(t *testing.T) { + render(t, newScheduler(t, tests.NewMetaObjectInDefaultNamespace[*schedulerApi.ArangoProfile](t, "test")), + getRequest(withProfiles("missing"), withDefaultContainer()), + )(func(t *testing.T, err error, template *core.PodTemplateSpec, accepted []string) { + require.EqualError(t, err, "Profile with name `missing` is missing") + }) +} + +func Test_SelectorWithoutSelector(t *testing.T) { + render(t, newScheduler(t, tests.NewMetaObjectInDefaultNamespace[*schedulerApi.ArangoProfile](t, "test", func(t *testing.T, obj *schedulerApi.ArangoProfile) { + obj.Spec.Template = &schedulerApi.ProfileTemplate{ + Container: &schedulerApi.ProfileContainerTemplate{ + Containers: schedulerContainerApi.Containers{ + DefaultContainerName: { + Image: &schedulerContainerResourcesApi.Image{ + Image: util.NewType("image:1"), + }, + }, + }, + }, + } + })), getRequest(withDefaultContainer(func(obj *pbSchedulerV1.ContainerBase) { + obj.Image = util.NewType("") + })))(func(t *testing.T, err error, template *core.PodTemplateSpec, accepted []string) { + require.NoError(t, err) + + require.Len(t, accepted, 0) + + c := tests.GetContainerByNameT(t, template.Spec.Containers, DefaultContainerName) + require.Equal(t, "", c.Image) + }) +} + +func Test_SelectorWithSelectorAll(t *testing.T) { + render(t, newScheduler(t, tests.NewMetaObjectInDefaultNamespace[*schedulerApi.ArangoProfile](t, "test", func(t *testing.T, obj *schedulerApi.ArangoProfile) { + obj.Spec.Selectors = &schedulerApi.ProfileSelectors{ + Label: &meta.LabelSelector{}, + } + obj.Spec.Template = &schedulerApi.ProfileTemplate{ + Container: &schedulerApi.ProfileContainerTemplate{ + Containers: schedulerContainerApi.Containers{ + DefaultContainerName: { + Image: &schedulerContainerResourcesApi.Image{ + Image: util.NewType("image:1"), + }, + }, + }, + }, + } + })), getRequest(withDefaultContainer()))(func(t *testing.T, err error, template *core.PodTemplateSpec, accepted []string) { + require.NoError(t, err) + + require.Len(t, accepted, 1) + require.Equal(t, []string{ + "test", + }, accepted) + + c := tests.GetContainerByNameT(t, template.Spec.Containers, DefaultContainerName) + require.Equal(t, "image:1", c.Image) + }) +} + +func Test_SelectorWithSpecificSelector_MissingLabel(t *testing.T) { + render(t, newScheduler(t, tests.NewMetaObjectInDefaultNamespace[*schedulerApi.ArangoProfile](t, "test", func(t *testing.T, obj *schedulerApi.ArangoProfile) { + obj.Spec.Selectors = &schedulerApi.ProfileSelectors{ + Label: &meta.LabelSelector{ + MatchExpressions: []meta.LabelSelectorRequirement{ + { + Key: "ml.arangodb.com/type", + Operator: meta.LabelSelectorOpExists, + }, + }, + }, + } + obj.Spec.Template = &schedulerApi.ProfileTemplate{ + Container: &schedulerApi.ProfileContainerTemplate{ + Containers: schedulerContainerApi.Containers{ + DefaultContainerName: { + Image: &schedulerContainerResourcesApi.Image{ + Image: util.NewType("image:1"), + }, + }, + }, + }, + } + })), getRequest(withDefaultContainer()))(func(t *testing.T, err error, template *core.PodTemplateSpec, accepted []string) { + require.NoError(t, err) + + require.Len(t, accepted, 0) + + c := tests.GetContainerByNameT(t, template.Spec.Containers, DefaultContainerName) + require.Equal(t, "", c.Image) + }) +} + +func Test_SelectorWithSpecificSelector_PresentLabel(t *testing.T) { + render(t, newScheduler(t, tests.NewMetaObjectInDefaultNamespace[*schedulerApi.ArangoProfile](t, "test", func(t *testing.T, obj *schedulerApi.ArangoProfile) { + obj.Spec.Selectors = &schedulerApi.ProfileSelectors{ + Label: &meta.LabelSelector{ + MatchExpressions: []meta.LabelSelectorRequirement{ + { + Key: "ml.arangodb.com/type", + Operator: meta.LabelSelectorOpExists, + }, + }, + }, + } + obj.Spec.Template = &schedulerApi.ProfileTemplate{ + Container: &schedulerApi.ProfileContainerTemplate{ + Containers: schedulerContainerApi.Containers{ + DefaultContainerName: { + Image: &schedulerContainerResourcesApi.Image{ + Image: util.NewType("image:1"), + }, + }, + }, + }, + } + })), getRequest(withDefaultContainer(), withLabels(map[string]string{ + "ml.arangodb.com/type": "training", + })), nil)(func(t *testing.T, err error, template *core.PodTemplateSpec, accepted []string) { + require.NoError(t, err) + + require.Len(t, accepted, 1) + require.Equal(t, []string{ + "test", + }, accepted) + + c := tests.GetContainerByNameT(t, template.Spec.Containers, DefaultContainerName) + require.Equal(t, "image:1", c.Image) + }) +} + +func Test_SelectorWithSpecificSelector_PresentLabel_ByPriority(t *testing.T) { + render(t, newScheduler(t, + tests.NewMetaObjectInDefaultNamespace[*schedulerApi.ArangoProfile](t, "test", func(t *testing.T, obj *schedulerApi.ArangoProfile) { + obj.Spec.Selectors = &schedulerApi.ProfileSelectors{ + Label: &meta.LabelSelector{ + MatchExpressions: []meta.LabelSelectorRequirement{ + { + Key: "ml.arangodb.com/type", + Operator: meta.LabelSelectorOpExists, + }, + }, + }, + } + obj.Spec.Template = &schedulerApi.ProfileTemplate{ + Priority: util.NewType(1), + Container: &schedulerApi.ProfileContainerTemplate{ + Containers: schedulerContainerApi.Containers{ + DefaultContainerName: { + Image: &schedulerContainerResourcesApi.Image{ + Image: util.NewType("image:1"), + }, + }, + }, + }, + } + }), tests.NewMetaObjectInDefaultNamespace[*schedulerApi.ArangoProfile](t, "test2", func(t *testing.T, obj *schedulerApi.ArangoProfile) { + obj.Spec.Selectors = &schedulerApi.ProfileSelectors{ + Label: &meta.LabelSelector{ + MatchExpressions: []meta.LabelSelectorRequirement{ + { + Key: "ml.arangodb.com/type", + Operator: meta.LabelSelectorOpExists, + }, + }, + }, + } + obj.Spec.Template = &schedulerApi.ProfileTemplate{ + Priority: util.NewType(2), + Container: &schedulerApi.ProfileContainerTemplate{ + Containers: schedulerContainerApi.Containers{ + DefaultContainerName: { + Image: &schedulerContainerResourcesApi.Image{ + Image: util.NewType("image:2"), + }, + }, + }, + }, + } + })), getRequest(withDefaultContainer(), withLabels(map[string]string{ + "ml.arangodb.com/type": "training", + }, + )))(func(t *testing.T, err error, template *core.PodTemplateSpec, accepted []string) { + require.NoError(t, err) + + require.Len(t, accepted, 2) + require.Equal(t, []string{ + "test2", + "test", + }, accepted) + + c := tests.GetContainerByNameT(t, template.Spec.Containers, DefaultContainerName) + require.Equal(t, "image:2", c.Image) + }) +} diff --git a/pkg/util/constants/constants.go b/pkg/util/constants/constants.go index b684ed57f..5824722e0 100644 --- a/pkg/util/constants/constants.go +++ b/pkg/util/constants/constants.go @@ -31,6 +31,9 @@ const ( EnvOperatorPodIP = "MY_POD_IP" EnvArangoJobSAName = "ARANGOJOB_SA_NAME" + PathMountServiceAccount = "/var/run/secrets/kubernetes.io/serviceaccount" + PathMountServiceAccountNamespace = PathMountServiceAccount + "/namespace" + EnvArangoLicenseKey = "ARANGO_LICENSE_KEY" // Contains the License Key for the Docker Image EnvArangoSyncMonitoringToken = "ARANGOSYNC_MONITORING_TOKEN" // Constains monitoring token for ArangoSync servers diff --git a/pkg/util/constants/namespace.go b/pkg/util/constants/namespace.go new file mode 100644 index 000000000..6b9845feb --- /dev/null +++ b/pkg/util/constants/namespace.go @@ -0,0 +1,56 @@ +// +// DISCLAIMER +// +// Copyright 2024 ArangoDB GmbH, Cologne, Germany +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Copyright holder is ArangoDB GmbH, Cologne, Germany +// + +package constants + +import ( + "os" + "strings" +) + +func NamespaceWithDefault(def string) string { + if v, ok := Namespace(); ok { + return v + } + + return def +} + +func Namespace() (string, bool) { + return namespaceWithSAAndEnv(PathMountServiceAccountNamespace, EnvOperatorPodNamespace) +} + +func namespaceWithSAAndEnv(sa, env string) (string, bool) { + // Extract from env + if e, ok := os.LookupEnv(env); ok && e != "" { + if v := strings.TrimSpace(e); v != "" { + return v, true + } + } + + // Extract from file + if data, err := os.ReadFile(sa); err == nil && len(data) > 0 { + if v := strings.TrimSpace(string(data)); v != "" { + return v, true + } + } + + return "", false +} diff --git a/pkg/util/constants/namespace_test.go b/pkg/util/constants/namespace_test.go new file mode 100644 index 000000000..7dc8fd4f0 --- /dev/null +++ b/pkg/util/constants/namespace_test.go @@ -0,0 +1,123 @@ +// +// DISCLAIMER +// +// Copyright 2024 ArangoDB GmbH, Cologne, Germany +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Copyright holder is ArangoDB GmbH, Cologne, Germany +// + +package constants + +import ( + "fmt" + "os" + "path" + "strings" + "testing" + + "github.com/dchest/uniuri" + "github.com/stretchr/testify/require" +) + +func withFile(t *testing.T, ns string) func(in func(file string)) { + return func(in func(key string)) { + p := t.TempDir() + + ret := path.Join(p, strings.ToLower(uniuri.NewLen(32))) + + require.NoError(t, os.WriteFile(ret, []byte(ns), 0644)) + + in(ret) + } +} + +func withEnv(t *testing.T, ns string) func(in func(env string)) { + return func(in func(key string)) { + key := fmt.Sprintf("MY_NS_ENV_%s", strings.ToUpper(uniuri.NewLen(8))) + + require.NoError(t, os.Setenv(key, ns)) + defer func() { + require.NoError(t, os.Unsetenv(key)) + }() + + in(key) + } +} + +func Test_Namespace(t *testing.T) { + t.Run("Default", func(t *testing.T) { + n, ok := namespaceWithSAAndEnv(PathMountServiceAccountNamespace, EnvOperatorPodNamespace) + require.False(t, ok) + require.EqualValues(t, "", n) + }) + t.Run("With Env", func(t *testing.T) { + withEnv(t, "myNs1")(func(env string) { + n, ok := namespaceWithSAAndEnv(PathMountServiceAccountNamespace, env) + require.True(t, ok) + require.EqualValues(t, "myNs1", n) + }) + }) + t.Run("With Empty Env", func(t *testing.T) { + withEnv(t, "")(func(env string) { + n, ok := namespaceWithSAAndEnv(PathMountServiceAccountNamespace, env) + require.False(t, ok) + require.EqualValues(t, "", n) + }) + }) + t.Run("With Whitespace Env", func(t *testing.T) { + withEnv(t, " \n ")(func(env string) { + n, ok := namespaceWithSAAndEnv(PathMountServiceAccountNamespace, env) + require.False(t, ok) + require.EqualValues(t, "", n) + }) + }) + t.Run("With File", func(t *testing.T) { + withFile(t, "myNs2")(func(file string) { + n, ok := namespaceWithSAAndEnv(file, EnvOperatorPodNamespace) + require.True(t, ok) + require.EqualValues(t, "myNs2", n) + }) + }) + t.Run("With Missing File", func(t *testing.T) { + withFile(t, "myNs2")(func(file string) { + n, ok := namespaceWithSAAndEnv(fmt.Sprintf("%s.missing", file), EnvOperatorPodNamespace) + require.False(t, ok) + require.EqualValues(t, "", n) + }) + }) + t.Run("With Empty File", func(t *testing.T) { + withFile(t, "")(func(file string) { + n, ok := namespaceWithSAAndEnv(file, EnvOperatorPodNamespace) + require.False(t, ok) + require.EqualValues(t, "", n) + }) + }) + t.Run("With Whitespace File", func(t *testing.T) { + withFile(t, " \n ")(func(file string) { + n, ok := namespaceWithSAAndEnv(file, EnvOperatorPodNamespace) + require.False(t, ok) + require.EqualValues(t, "", n) + }) + }) + t.Run("With File & Env", func(t *testing.T) { + withFile(t, "myNs2")(func(file string) { + withEnv(t, "myNs1")(func(env string) { + n, ok := namespaceWithSAAndEnv(file, env) + require.True(t, ok) + require.EqualValues(t, "myNs1", n) + }) + }) + }) +} diff --git a/pkg/util/dict.go b/pkg/util/dict.go index fa138e97b..c356b246a 100644 --- a/pkg/util/dict.go +++ b/pkg/util/dict.go @@ -1,7 +1,7 @@ // // DISCLAIMER // -// Copyright 2016-2023 ArangoDB GmbH, Cologne, Germany +// Copyright 2016-2024 ArangoDB GmbH, Cologne, Germany // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -55,6 +55,24 @@ func CopyFullMap[K comparable, V any](src map[K]V) map[K]V { return r } +func MergeMaps[K comparable, V any](override bool, maps ...map[K]V) map[K]V { + r := map[K]V{} + + for _, m := range maps { + for k, v := range m { + if !override { + if _, ok := r[k]; ok { + continue + } + } + + r[k] = v + } + } + + return r +} + func CopyMap[K comparable, V any](dst, src map[K]V) { // TODO: replace with maps.Copy when switching to go1.21 for k, v := range src { diff --git a/pkg/util/errors/errors.go b/pkg/util/errors/errors.go index fd249da1c..221b8948a 100644 --- a/pkg/util/errors/errors.go +++ b/pkg/util/errors/errors.go @@ -31,8 +31,6 @@ import ( "github.com/pkg/errors" driver "github.com/arangodb/go-driver" - - "github.com/arangodb/kube-arangodb/pkg/logging" ) func Cause(err error) error { @@ -209,12 +207,6 @@ func libCause(err error) (bool, error) { } } -func LogError(logger logging.Logger, msg string, f func() error) { - if err := f(); err != nil { - logger.Err(err).Error(msg) - } -} - type Causer interface { Cause() error } diff --git a/pkg/util/globals/global.go b/pkg/util/globals/global.go index e9952f11a..eb5d2c173 100644 --- a/pkg/util/globals/global.go +++ b/pkg/util/globals/global.go @@ -1,7 +1,7 @@ // // DISCLAIMER // -// Copyright 2016-2023 ArangoDB GmbH, Cologne, Germany +// Copyright 2016-2024 ArangoDB GmbH, Cologne, Germany // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -23,11 +23,13 @@ package globals import "time" const ( - DefaultKubernetesTimeout = 2 * time.Second - DefaultArangoDTimeout = time.Second * 5 - DefaultArangoDAgencyTimeout = time.Second * 10 - DefaultArangoDCheckTimeout = time.Second * 2 - DefaultReconciliationTimeout = time.Minute + DefaultKubernetesTimeout = 2 * time.Second + DefaultArangoDTimeout = time.Second * 5 + DefaultArangoDAgencyTimeout = time.Second * 10 + DefaultArangoDCheckTimeout = time.Second * 2 + DefaultReconciliationTimeout = time.Minute + DefaultForcePodDeletionGracePeriodTimeout = 15 * time.Minute + DefaultPodSchedulingGracePeriod = 15 * time.Second BackupDefaultArangoClientTimeout = 30 * time.Second BackupUploadArangoClientTimeout = 300 * time.Second @@ -50,15 +52,17 @@ const ( var globalObj = &globals{ timeouts: &globalTimeouts{ - requests: NewTimeout(DefaultKubernetesTimeout), - arangod: NewTimeout(DefaultArangoDTimeout), - arangodCheck: NewTimeout(DefaultArangoDCheckTimeout), - reconciliation: NewTimeout(DefaultReconciliationTimeout), - agency: NewTimeout(DefaultArangoDAgencyTimeout), - shardRebuild: NewTimeout(DefaultOutSyncedShardRebuildTimeout), - shardRebuildRetry: NewTimeout(DefaultOutSyncedShardRebuildRetryTimeout), - backupArangoClientTimeout: NewTimeout(BackupDefaultArangoClientTimeout), - backupArangoClientUploadTimeout: NewTimeout(BackupUploadArangoClientTimeout), + requests: NewTimeout(DefaultKubernetesTimeout), + arangod: NewTimeout(DefaultArangoDTimeout), + arangodCheck: NewTimeout(DefaultArangoDCheckTimeout), + reconciliation: NewTimeout(DefaultReconciliationTimeout), + agency: NewTimeout(DefaultArangoDAgencyTimeout), + shardRebuild: NewTimeout(DefaultOutSyncedShardRebuildTimeout), + shardRebuildRetry: NewTimeout(DefaultOutSyncedShardRebuildRetryTimeout), + backupArangoClientTimeout: NewTimeout(BackupDefaultArangoClientTimeout), + backupArangoClientUploadTimeout: NewTimeout(BackupUploadArangoClientTimeout), + forcePodDeletionGracePeriodTimeout: NewTimeout(DefaultForcePodDeletionGracePeriodTimeout), + podSchedulingGracePeriod: NewTimeout(DefaultPodSchedulingGracePeriod), }, kubernetes: &globalKubernetes{ requestBatchSize: NewInt64(DefaultKubernetesRequestBatchSize), @@ -144,6 +148,9 @@ type GlobalTimeouts interface { ArangoDCheck() Timeout Agency() Timeout + ForcePodDeletionGracePeriodTimeout() Timeout + PodSchedulingGracePeriod() Timeout + BackupArangoClientTimeout() Timeout BackupArangoClientUploadTimeout() Timeout } @@ -152,6 +159,15 @@ type globalTimeouts struct { requests, arangod, reconciliation, arangodCheck, agency, shardRebuild, shardRebuildRetry Timeout backupArangoClientTimeout Timeout backupArangoClientUploadTimeout Timeout + forcePodDeletionGracePeriodTimeout, podSchedulingGracePeriod Timeout +} + +func (g *globalTimeouts) ForcePodDeletionGracePeriodTimeout() Timeout { + return g.forcePodDeletionGracePeriodTimeout +} + +func (g *globalTimeouts) PodSchedulingGracePeriod() Timeout { + return g.podSchedulingGracePeriod } func (g *globalTimeouts) Agency() Timeout { diff --git a/pkg/util/k8sutil/helpers/service_account.go b/pkg/util/k8sutil/helpers/service_account.go index c67622725..77bb42d2e 100644 --- a/pkg/util/k8sutil/helpers/service_account.go +++ b/pkg/util/k8sutil/helpers/service_account.go @@ -383,12 +383,3 @@ func EnsureServiceAccount(ctx context.Context, client kubernetes.Interface, owne return false, nil } - -func AppendServiceAccount(obj *sharedApi.ServiceAccount, spec *core.PodTemplateSpec) { - if obj == nil || obj.Object == nil || spec == nil { - return - } - - spec.Spec.ServiceAccountName = obj.Object.GetName() - spec.Spec.AutomountServiceAccountToken = util.NewType(true) -} diff --git a/pkg/util/k8sutil/images.go b/pkg/util/k8sutil/images.go index 3f0585840..9bbd881bc 100644 --- a/pkg/util/k8sutil/images.go +++ b/pkg/util/k8sutil/images.go @@ -27,7 +27,7 @@ import ( schedulerContainerResourcesApi "github.com/arangodb/kube-arangodb/pkg/apis/scheduler/v1alpha1/container/resources" "github.com/arangodb/kube-arangodb/pkg/util/errors" - "github.com/arangodb/kube-arangodb/pkg/util/k8sutil/container" + kresources "github.com/arangodb/kube-arangodb/pkg/util/k8sutil/resources" ) const ( @@ -77,7 +77,7 @@ func GetArangoDBImageIDFromPod(pod *core.Pod, names ...string) (string, error) { // GetArangoDBImageIDFromContainerStatuses returns the ArangoDB specific image from a container statuses func GetArangoDBImageIDFromContainerStatuses(containers []core.ContainerStatus, names ...string) (string, bool) { for _, name := range names { - if id := container.GetContainerStatusIDByName(containers, name); id != -1 { + if id := kresources.GetContainerStatusIDByName(containers, name); id != -1 { if image := containers[id].ImageID; image != "" { if disc := ConvertImageID2Image(image); disc != "" { return disc, true @@ -92,7 +92,7 @@ func GetArangoDBImageIDFromContainerStatuses(containers []core.ContainerStatus, // GetArangoDBImageFromContainers returns the ArangoDB specific image from a container specs func GetArangoDBImageFromContainers(containers []core.Container, names ...string) (string, bool) { for _, name := range names { - if id := container.GetContainerIDByName(containers, name); id != -1 { + if id := kresources.GetContainerIDByName(containers, name); id != -1 { if image := containers[id].Image; image != "" { return image, true } diff --git a/pkg/util/k8sutil/resources/access.go b/pkg/util/k8sutil/resources/access.go new file mode 100644 index 000000000..3a26c40bf --- /dev/null +++ b/pkg/util/k8sutil/resources/access.go @@ -0,0 +1,126 @@ +// +// DISCLAIMER +// +// Copyright 2024 ArangoDB GmbH, Cologne, Germany +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Copyright holder is ArangoDB GmbH, Cologne, Germany +// + +package resources + +import ( + "context" + "fmt" + "strings" + "sync" + + authorization "k8s.io/api/authorization/v1" + meta "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/client-go/kubernetes" + + "github.com/arangodb/kube-arangodb/pkg/util/errors" +) + +type AccessRequest struct { + Verb, Group, Version, Resource, SubResource, Name, Namespace string +} + +func (a AccessRequest) Verify(ctx context.Context, client kubernetes.Interface) authorization.SubjectAccessReviewStatus { + return VerifyAccessRequestStatus(ctx, client, a.Verb, a.Group, a.Version, a.Resource, a.SubResource, a.Name, a.Namespace) +} + +func (a AccessRequest) VerifyErr(ctx context.Context, client kubernetes.Interface) error { + res := a.Verify(ctx, client) + if res.Allowed { + return nil + } + if res.Reason != "" { + return errors.Errorf("Unable to access %s: %s", a.String(), res.Reason) + } + + return errors.Errorf("Unable to access %s", a.String()) +} + +func (a AccessRequest) String() string { + gv := a.Version + if a.Group != "" { + gv = fmt.Sprintf("%s/%s", a.Group, a.Version) + } + + res := a.Resource + + if a.SubResource != "" { + res = fmt.Sprintf("%s/%s", a.Resource, a.SubResource) + } + + n := a.Name + + if a.Namespace != "" { + n = fmt.Sprintf("%s/%s", a.Namespace, a.Name) + } + + return fmt.Sprintf("%s/%s/%s %s", gv, res, n, strings.ToUpper(a.Verb)) +} + +func VerifyAll(ctx context.Context, client kubernetes.Interface, requests ...AccessRequest) error { + var wg sync.WaitGroup + + errs := make([]error, len(requests)) + + for id := range requests { + wg.Add(1) + + go func(id int) { + defer wg.Done() + + errs[id] = requests[id].VerifyErr(ctx, client) + }(id) + } + + wg.Wait() + + return errors.Errors(errs...) +} + +func VerifyAccessRequestStatus(ctx context.Context, client kubernetes.Interface, verb, group, version, resource, subResource, name, namespace string) authorization.SubjectAccessReviewStatus { + resp, err := VerifyAccessRequest(ctx, client, verb, group, version, resource, subResource, name, namespace) + + if err != nil { + return authorization.SubjectAccessReviewStatus{ + Allowed: false, + Reason: fmt.Sprintf("Unable to check access: %s", err.Error()), + } + } + + return resp.Status +} + +func VerifyAccessRequest(ctx context.Context, client kubernetes.Interface, verb, group, version, resource, subResource, name, namespace string) (*authorization.SelfSubjectAccessReview, error) { + review := authorization.SelfSubjectAccessReview{ + Spec: authorization.SelfSubjectAccessReviewSpec{ + ResourceAttributes: &authorization.ResourceAttributes{ + Namespace: namespace, + Verb: verb, + Group: group, + Version: version, + Resource: resource, + Subresource: subResource, + Name: name, + }, + }, + } + + return client.AuthorizationV1().SelfSubjectAccessReviews().Create(ctx, &review, meta.CreateOptions{}) +} diff --git a/pkg/util/k8sutil/container/container.go b/pkg/util/k8sutil/resources/container.go similarity index 99% rename from pkg/util/k8sutil/container/container.go rename to pkg/util/k8sutil/resources/container.go index db9ba532f..baca99b8b 100644 --- a/pkg/util/k8sutil/container/container.go +++ b/pkg/util/k8sutil/resources/container.go @@ -18,7 +18,7 @@ // Copyright holder is ArangoDB GmbH, Cologne, Germany // -package container +package resources import ( core "k8s.io/api/core/v1" diff --git a/pkg/util/k8sutil/resources/metadata.go b/pkg/util/k8sutil/resources/metadata.go new file mode 100644 index 000000000..3d7ff7a99 --- /dev/null +++ b/pkg/util/k8sutil/resources/metadata.go @@ -0,0 +1,36 @@ +// +// DISCLAIMER +// +// Copyright 2024 ArangoDB GmbH, Cologne, Germany +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Copyright holder is ArangoDB GmbH, Cologne, Germany +// + +package resources + +import meta "k8s.io/apimachinery/pkg/apis/meta/v1" + +func MergeOwnerReferences(refs ...[]meta.OwnerReference) []meta.OwnerReference { + var ret []meta.OwnerReference + for _, ref := range refs { + for _, r := range ref { + var o meta.OwnerReference + r.DeepCopyInto(&o) + ret = append(ret, o) + } + } + + return ret +} diff --git a/pkg/util/k8sutil/resources/selectors.go b/pkg/util/k8sutil/resources/selectors.go new file mode 100644 index 000000000..8f2532fe0 --- /dev/null +++ b/pkg/util/k8sutil/resources/selectors.go @@ -0,0 +1,76 @@ +// +// DISCLAIMER +// +// Copyright 2024 ArangoDB GmbH, Cologne, Germany +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Copyright holder is ArangoDB GmbH, Cologne, Germany +// + +package resources + +import ( + meta "k8s.io/apimachinery/pkg/apis/meta/v1" + + "github.com/arangodb/kube-arangodb/pkg/util/strings" +) + +func SelectLabels(selector *meta.LabelSelector, labels map[string]string) bool { + if selector == nil { + return false + } + + for k, v := range selector.MatchLabels { + if v2, ok := labels[k]; !ok || v2 != v { + return false + } + } + + for _, req := range selector.MatchExpressions { + switch req.Operator { + case meta.LabelSelectorOpIn: + if len(req.Values) == 0 { + return false + } + + if v, ok := labels[req.Key]; !ok { + return false + } else if !strings.ListContains(req.Values, v) { + return false + } + case meta.LabelSelectorOpNotIn: + if len(req.Values) == 0 { + return false + } + + if v, ok := labels[req.Key]; ok { + if strings.ListContains(req.Values, v) { + return false + } + } + case meta.LabelSelectorOpExists: + if _, ok := labels[req.Key]; !ok { + return false + } + case meta.LabelSelectorOpDoesNotExist: + if _, ok := labels[req.Key]; ok { + return false + } + default: + return false + } + } + + return true +} diff --git a/pkg/util/k8sutil/resources/selectors_test.go b/pkg/util/k8sutil/resources/selectors_test.go new file mode 100644 index 000000000..3505d6006 --- /dev/null +++ b/pkg/util/k8sutil/resources/selectors_test.go @@ -0,0 +1,249 @@ +// +// DISCLAIMER +// +// Copyright 2024 ArangoDB GmbH, Cologne, Germany +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Copyright holder is ArangoDB GmbH, Cologne, Germany +// + +package resources + +import ( + "testing" + + "github.com/stretchr/testify/require" + meta "k8s.io/apimachinery/pkg/apis/meta/v1" +) + +func Test_Selectors_Labels(t *testing.T) { + labels := map[string]string{ + "A": "B", + "C": "D", + "E": "F", + } + + t.Run("Match", func(t *testing.T) { + t.Run("Do not match with nil", func(t *testing.T) { + require.False(t, SelectLabels(nil, nil)) + }) + t.Run("Match with any", func(t *testing.T) { + require.True(t, SelectLabels(&meta.LabelSelector{}, nil)) + }) + t.Run("Match with dedicated labels select", func(t *testing.T) { + require.True(t, SelectLabels(&meta.LabelSelector{ + MatchLabels: map[string]string{ + "A": "B", + }, + }, labels)) + }) + t.Run("Match with multiple dedicated labels select", func(t *testing.T) { + require.True(t, SelectLabels(&meta.LabelSelector{ + MatchLabels: map[string]string{ + "A": "B", + "E": "F", + }, + }, labels)) + }) + t.Run("Match with mismatch dedicated labels select", func(t *testing.T) { + require.False(t, SelectLabels(&meta.LabelSelector{ + MatchLabels: map[string]string{ + "A": "B", + "E": "G", + }, + }, labels)) + }) + }) + + t.Run("Match Expression", func(t *testing.T) { + t.Run("Exists", func(t *testing.T) { + t.Run("Present", func(t *testing.T) { + require.True(t, SelectLabels(&meta.LabelSelector{ + MatchExpressions: []meta.LabelSelectorRequirement{ + { + Key: "A", + Operator: meta.LabelSelectorOpExists, + }, + }, + }, labels)) + }) + t.Run("Missing", func(t *testing.T) { + require.False(t, SelectLabels(&meta.LabelSelector{ + MatchExpressions: []meta.LabelSelectorRequirement{ + { + Key: "B", + Operator: meta.LabelSelectorOpExists, + }, + }, + }, labels)) + }) + }) + + t.Run("Exists", func(t *testing.T) { + t.Run("Present", func(t *testing.T) { + require.False(t, SelectLabels(&meta.LabelSelector{ + MatchExpressions: []meta.LabelSelectorRequirement{ + { + Key: "A", + Operator: meta.LabelSelectorOpDoesNotExist, + }, + }, + }, labels)) + }) + t.Run("Missing", func(t *testing.T) { + require.True(t, SelectLabels(&meta.LabelSelector{ + MatchExpressions: []meta.LabelSelectorRequirement{ + { + Key: "B", + Operator: meta.LabelSelectorOpDoesNotExist, + }, + }, + }, labels)) + }) + }) + + t.Run("In", func(t *testing.T) { + t.Run("Empty", func(t *testing.T) { + require.False(t, SelectLabels(&meta.LabelSelector{ + MatchExpressions: []meta.LabelSelectorRequirement{ + { + Key: "A", + Operator: meta.LabelSelectorOpIn, + }, + }, + }, labels)) + }) + t.Run("Present", func(t *testing.T) { + require.True(t, SelectLabels(&meta.LabelSelector{ + MatchExpressions: []meta.LabelSelectorRequirement{ + { + Key: "A", + Operator: meta.LabelSelectorOpIn, + Values: []string{ + "B", + }, + }, + }, + }, labels)) + }) + t.Run("Present Multiple", func(t *testing.T) { + require.True(t, SelectLabels(&meta.LabelSelector{ + MatchExpressions: []meta.LabelSelectorRequirement{ + { + Key: "A", + Operator: meta.LabelSelectorOpIn, + Values: []string{ + "E", + "Z", + "B", + }, + }, + }, + }, labels)) + }) + t.Run("Missing", func(t *testing.T) { + require.False(t, SelectLabels(&meta.LabelSelector{ + MatchExpressions: []meta.LabelSelectorRequirement{ + { + Key: "B", + Operator: meta.LabelSelectorOpIn, + Values: []string{ + "B", + }, + }, + }, + }, labels)) + }) + }) + + t.Run("NotIn", func(t *testing.T) { + t.Run("Not Existing", func(t *testing.T) { + require.False(t, SelectLabels(&meta.LabelSelector{ + MatchExpressions: []meta.LabelSelectorRequirement{ + { + Key: "Z", + Operator: meta.LabelSelectorOpNotIn, + }, + }, + }, labels)) + }) + t.Run("Empty", func(t *testing.T) { + require.False(t, SelectLabels(&meta.LabelSelector{ + MatchExpressions: []meta.LabelSelectorRequirement{ + { + Key: "A", + Operator: meta.LabelSelectorOpNotIn, + }, + }, + }, labels)) + }) + t.Run("Present", func(t *testing.T) { + require.False(t, SelectLabels(&meta.LabelSelector{ + MatchExpressions: []meta.LabelSelectorRequirement{ + { + Key: "A", + Operator: meta.LabelSelectorOpNotIn, + Values: []string{ + "B", + }, + }, + }, + }, labels)) + }) + t.Run("Present Multiple", func(t *testing.T) { + require.False(t, SelectLabels(&meta.LabelSelector{ + MatchExpressions: []meta.LabelSelectorRequirement{ + { + Key: "A", + Operator: meta.LabelSelectorOpNotIn, + Values: []string{ + "E", + "Z", + "B", + }, + }, + }, + }, labels)) + }) + t.Run("Missing", func(t *testing.T) { + require.True(t, SelectLabels(&meta.LabelSelector{ + MatchExpressions: []meta.LabelSelectorRequirement{ + { + Key: "B", + Operator: meta.LabelSelectorOpNotIn, + Values: []string{ + "B", + }, + }, + }, + }, labels)) + }) + t.Run("Missing Value", func(t *testing.T) { + require.True(t, SelectLabels(&meta.LabelSelector{ + MatchExpressions: []meta.LabelSelectorRequirement{ + { + Key: "A", + Operator: meta.LabelSelectorOpNotIn, + Values: []string{ + "R", + "Z", + "D", + }, + }, + }, + }, labels)) + }) + }) + }) +} diff --git a/pkg/util/refs.go b/pkg/util/refs.go index bb03b8708..c3234a8ab 100644 --- a/pkg/util/refs.go +++ b/pkg/util/refs.go @@ -63,6 +63,12 @@ func Default[T interface{}]() T { return d } +// DefaultInterface returns generic default value for type T as Interface +func DefaultInterface[T interface{}]() interface{} { + var d T + return d +} + // First returns first not nil value func First[T interface{}](input ...*T) *T { for _, i := range input { diff --git a/pkg/util/tests/kubernetes.go b/pkg/util/tests/kubernetes.go index 7e0dc23e4..31a052a41 100644 --- a/pkg/util/tests/kubernetes.go +++ b/pkg/util/tests/kubernetes.go @@ -41,11 +41,14 @@ import ( api "github.com/arangodb/kube-arangodb/pkg/apis/deployment/v1" "github.com/arangodb/kube-arangodb/pkg/apis/ml" mlApi "github.com/arangodb/kube-arangodb/pkg/apis/ml/v1alpha1" + "github.com/arangodb/kube-arangodb/pkg/apis/scheduler" + schedulerApi "github.com/arangodb/kube-arangodb/pkg/apis/scheduler/v1alpha1" arangoClientSet "github.com/arangodb/kube-arangodb/pkg/generated/clientset/versioned" operator "github.com/arangodb/kube-arangodb/pkg/operatorV2" "github.com/arangodb/kube-arangodb/pkg/operatorV2/operation" "github.com/arangodb/kube-arangodb/pkg/util/errors" "github.com/arangodb/kube-arangodb/pkg/util/k8sutil/kerrors" + "github.com/arangodb/kube-arangodb/pkg/util/kclient" ) type handleFunc struct { @@ -205,6 +208,12 @@ func CreateObjects(t *testing.T, k8s kubernetes.Interface, arango arangoClientSe vl := *v _, err := arango.MlV1alpha1().ArangoMLCronJobs(vl.GetNamespace()).Create(context.Background(), vl, meta.CreateOptions{}) require.NoError(t, err) + case **schedulerApi.ArangoProfile: + require.NotNil(t, v) + + vl := *v + _, err := arango.SchedulerV1alpha1().ArangoProfiles(vl.GetNamespace()).Create(context.Background(), vl, meta.CreateOptions{}) + require.NoError(t, err) default: require.Fail(t, fmt.Sprintf("Unable to create object: %s", reflect.TypeOf(v).String())) } @@ -215,6 +224,10 @@ func CreateObjects(t *testing.T, k8s kubernetes.Interface, arango arangoClientSe } } +func UpdateObjectsC(t *testing.T, client kclient.Client, objects ...interface{}) func(t *testing.T) { + return UpdateObjects(t, client.Kubernetes(), client.Arango(), objects...) +} + func UpdateObjects(t *testing.T, k8s kubernetes.Interface, arango arangoClientSet.Interface, objects ...interface{}) func(t *testing.T) { for _, object := range objects { switch v := object.(type) { @@ -325,6 +338,12 @@ func UpdateObjects(t *testing.T, k8s kubernetes.Interface, arango arangoClientSe vl := *v _, err := k8s.RbacV1().RoleBindings(vl.GetNamespace()).Update(context.Background(), vl, meta.UpdateOptions{}) require.NoError(t, err) + case **schedulerApi.ArangoProfile: + require.NotNil(t, v) + + vl := *v + _, err := arango.SchedulerV1alpha1().ArangoProfiles(vl.GetNamespace()).Update(context.Background(), vl, meta.UpdateOptions{}) + require.NoError(t, err) default: require.Fail(t, fmt.Sprintf("Unable to create object: %s", reflect.TypeOf(v).String())) } @@ -335,7 +354,7 @@ func UpdateObjects(t *testing.T, k8s kubernetes.Interface, arango arangoClientSe } } -func DeleteObjects(t *testing.T, k8s kubernetes.Interface, arango arangoClientSet.Interface, objects ...interface{}) func(t *testing.T) { +func DeleteObjects(t *testing.T, k8s kubernetes.Interface, arango arangoClientSet.Interface, objects ...interface{}) { for _, object := range objects { switch v := object.(type) { case **batch.CronJob: @@ -358,11 +377,21 @@ func DeleteObjects(t *testing.T, k8s kubernetes.Interface, arango arangoClientSe vl := *v require.NoError(t, k8s.CoreV1().Secrets(vl.GetNamespace()).Delete(context.Background(), vl.GetName(), meta.DeleteOptions{})) + case **core.Service: + require.NotNil(t, v) + + vl := *v + require.NoError(t, k8s.CoreV1().Services(vl.GetNamespace()).Delete(context.Background(), vl.GetName(), meta.DeleteOptions{})) case **core.ServiceAccount: require.NotNil(t, v) vl := *v require.NoError(t, k8s.CoreV1().ServiceAccounts(vl.GetNamespace()).Delete(context.Background(), vl.GetName(), meta.DeleteOptions{})) + case **apps.StatefulSet: + require.NotNil(t, v) + vl := *v + err := k8s.AppsV1().StatefulSets(vl.GetNamespace()).Delete(context.Background(), vl.GetName(), meta.DeleteOptions{}) + require.NoError(t, err) case **api.ArangoDeployment: require.NotNil(t, v) @@ -418,14 +447,19 @@ func DeleteObjects(t *testing.T, k8s kubernetes.Interface, arango arangoClientSe vl := *v require.NoError(t, k8s.RbacV1().RoleBindings(vl.GetNamespace()).Delete(context.Background(), vl.GetName(), meta.DeleteOptions{})) + case **schedulerApi.ArangoProfile: + require.NotNil(t, v) + + vl := *v + require.NoError(t, arango.SchedulerV1alpha1().ArangoProfiles(vl.GetNamespace()).Delete(context.Background(), vl.GetName(), meta.DeleteOptions{})) default: - require.Fail(t, fmt.Sprintf("Unable to create object: %s", reflect.TypeOf(v).String())) + require.Fail(t, fmt.Sprintf("Unable to delete object: %s", reflect.TypeOf(v).String())) } } +} - return func(t *testing.T) { - RefreshObjects(t, k8s, arango, objects...) - } +func RefreshObjectsC(t *testing.T, client kclient.Client, objects ...interface{}) { + RefreshObjects(t, client.Kubernetes(), client.Arango(), objects...) } func RefreshObjects(t *testing.T, k8s kubernetes.Interface, arango arangoClientSet.Interface, objects ...interface{}) { @@ -700,6 +734,21 @@ func RefreshObjects(t *testing.T, k8s kubernetes.Interface, arango arangoClientS } else { *v = vn } + case **schedulerApi.ArangoProfile: + require.NotNil(t, v) + + vl := *v + + vn, err := arango.SchedulerV1alpha1().ArangoProfiles(vl.GetNamespace()).Get(context.Background(), vl.GetName(), meta.GetOptions{}) + if err != nil { + if kerrors.IsNotFound(err) { + *v = nil + } else { + require.NoError(t, err) + } + } else { + *v = vn + } default: require.Fail(t, fmt.Sprintf("Unable to get object: %s", reflect.TypeOf(v).String())) } @@ -832,11 +881,23 @@ func SetMetaBasedOnType(t *testing.T, object meta.Object) { ml.ArangoMLCronJobResourcePlural, object.GetNamespace(), object.GetName())) + case *schedulerApi.ArangoProfile: + v.Kind = scheduler.ArangoProfileResourceKind + v.APIVersion = schedulerApi.SchemeGroupVersion.String() + v.SetSelfLink(fmt.Sprintf("/api/%s/%s/%s/%s", + schedulerApi.SchemeGroupVersion.String(), + scheduler.ArangoProfileResourcePlural, + object.GetNamespace(), + object.GetName())) default: require.Fail(t, fmt.Sprintf("Unable to create object: %s", reflect.TypeOf(v).String())) } } +func NewMetaObjectInDefaultNamespace[T meta.Object](t *testing.T, name string, mods ...MetaObjectMod[T]) T { + return NewMetaObject[T](t, FakeNamespace, name, mods...) +} + func NewMetaObject[T meta.Object](t *testing.T, namespace, name string, mods ...MetaObjectMod[T]) T { var obj T @@ -951,6 +1012,10 @@ func NewItem(t *testing.T, o operation.Operation, object meta.Object) operation. item.Group = ml.ArangoMLGroupName item.Version = mlApi.ArangoMLVersion item.Kind = ml.ArangoMLCronJobResourceKind + case *schedulerApi.ArangoProfile: + item.Group = scheduler.ArangoSchedulerGroupName + item.Version = schedulerApi.ArangoSchedulerVersion + item.Kind = scheduler.ArangoProfileResourceKind default: require.Fail(t, fmt.Sprintf("Unable to create object: %s", reflect.TypeOf(v).String())) } diff --git a/pkg/util/tests/kubernetes_test.go b/pkg/util/tests/kubernetes_test.go index 00af39dba..f5c466d4f 100644 --- a/pkg/util/tests/kubernetes_test.go +++ b/pkg/util/tests/kubernetes_test.go @@ -1,7 +1,7 @@ // // DISCLAIMER // -// Copyright 2023 ArangoDB GmbH, Cologne, Germany +// Copyright 2023-2024 ArangoDB GmbH, Cologne, Germany // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -34,6 +34,7 @@ import ( backupApi "github.com/arangodb/kube-arangodb/pkg/apis/backup/v1" api "github.com/arangodb/kube-arangodb/pkg/apis/deployment/v1" mlApi "github.com/arangodb/kube-arangodb/pkg/apis/ml/v1alpha1" + schedulerApi "github.com/arangodb/kube-arangodb/pkg/apis/scheduler/v1alpha1" "github.com/arangodb/kube-arangodb/pkg/operatorV2/operation" "github.com/arangodb/kube-arangodb/pkg/util/kclient" ) @@ -56,6 +57,8 @@ func NewMetaObjectRun[T meta.Object](t *testing.T) { refresh(t) UpdateObjects(t, c.Kubernetes(), c.Arango(), &obj) + + DeleteObjects(t, c.Kubernetes(), c.Arango(), &obj) }) }) } @@ -76,4 +79,5 @@ func Test_NewMetaObject(t *testing.T) { NewMetaObjectRun[*backupApi.ArangoBackup](t) NewMetaObjectRun[*mlApi.ArangoMLExtension](t) NewMetaObjectRun[*mlApi.ArangoMLStorage](t) + NewMetaObjectRun[*schedulerApi.ArangoProfile](t) } diff --git a/pkg/util/tests/resources.go b/pkg/util/tests/resources.go new file mode 100644 index 000000000..5241e4971 --- /dev/null +++ b/pkg/util/tests/resources.go @@ -0,0 +1,36 @@ +// +// DISCLAIMER +// +// Copyright 2024 ArangoDB GmbH, Cologne, Germany +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Copyright holder is ArangoDB GmbH, Cologne, Germany +// + +package tests + +import ( + "testing" + + "github.com/stretchr/testify/require" + core "k8s.io/api/core/v1" + + kresources "github.com/arangodb/kube-arangodb/pkg/util/k8sutil/resources" +) + +func GetContainerByNameT(t *testing.T, containers []core.Container, name string) core.Container { + id := kresources.GetContainerIDByName(containers, name) + require.NotEqualValues(t, -1, id) + return containers[id] +} diff --git a/pkg/util/tests/time.go b/pkg/util/tests/time.go index 330d07463..7b197807c 100644 --- a/pkg/util/tests/time.go +++ b/pkg/util/tests/time.go @@ -1,7 +1,7 @@ // // DISCLAIMER // -// Copyright 2016-2022 ArangoDB GmbH, Cologne, Germany +// Copyright 2016-2024 ArangoDB GmbH, Cologne, Germany // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -25,6 +25,8 @@ import ( "time" "github.com/stretchr/testify/require" + + "github.com/arangodb/kube-arangodb/pkg/util/errors" ) func DurationBetween() func(t *testing.T, expected time.Duration, skew float64) { @@ -39,3 +41,48 @@ func DurationBetween() func(t *testing.T, expected time.Duration, skew float64) } } } + +func Interrupt() error { + return interrupt{} +} + +type interrupt struct { +} + +func (i interrupt) Error() string { + return "interrupt" +} + +func NewTimeout(in Timeout) Timeout { + return in +} + +type Timeout func() error + +func (t Timeout) WithTimeout(timeout, interval time.Duration) error { + timeoutT := time.NewTimer(timeout) + defer timeoutT.Stop() + + intervalT := time.NewTicker(interval) + defer intervalT.Stop() + + for { + select { + case <-timeoutT.C: + return errors.Errorf("Timeouted!") + case <-intervalT.C: + if err := t(); err != nil { + var interrupt interrupt + if errors.As(err, &interrupt) { + return nil + } + + return err + } + } + } +} + +func (t Timeout) WithTimeoutT(z *testing.T, timeout, interval time.Duration) { + require.NoError(z, t.WithTimeout(timeout, interval)) +}