Added:
dev/incubator/polaris/apache-polaris-1.0.0-incubating/helm-chart/templates/_helpers.tpl
==============================================================================
---
dev/incubator/polaris/apache-polaris-1.0.0-incubating/helm-chart/templates/_helpers.tpl
(added)
+++
dev/incubator/polaris/apache-polaris-1.0.0-incubating/helm-chart/templates/_helpers.tpl
Tue Jun 24 00:39:22 2025
@@ -0,0 +1,320 @@
+{{/*
+ Copyright (C) 2024 Dremio
+
+ 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.
+*/}}
+
+{{/*
+ Expand the name of the chart.
+*/}}
+{{- define "polaris.name" -}}
+{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }}
+{{- end }}
+
+{{/*
+ Create a default fully qualified app name.
+ We truncate at 63 chars because some Kubernetes name fields are limited to
this (by the DNS naming spec).
+ If release name contains chart name it will be used as a full name.
+*/}}
+{{- define "polaris.fullname" -}}
+{{- if .Values.fullnameOverride }}
+{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }}
+{{- else }}
+{{- $name := default .Chart.Name .Values.nameOverride }}
+{{- if contains $name .Release.Name }}
+{{- .Release.Name | trunc 63 | trimSuffix "-" }}
+{{- else }}
+{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }}
+{{- end }}
+{{- end }}
+{{- end }}
+
+{{/*
+ Create a default fully qualified app name, with a custom suffix. Useful when
the name will
+ have a suffix appended to it, such as for the management service name.
+*/}}
+{{- define "polaris.fullnameWithSuffix" -}}
+{{- $global := index . 0 }}
+{{- $suffix := index . 1 }}
+{{- if not (hasPrefix "-" $suffix) }}
+{{- $suffix = printf "-%s" $suffix }}
+{{- end }}
+{{- $length := int (sub 63 (len $suffix)) }}
+{{- if $global.Values.fullnameOverride }}
+{{- $global.Values.fullnameOverride | trunc $length }}{{ $suffix }}
+{{- else }}
+{{- $name := default $global.Chart.Name $global.Values.nameOverride }}
+{{- if contains $name $global.Release.Name }}
+{{- $global.Release.Name | trunc $length }}{{ $suffix }}
+{{- else }}
+{{- printf "%s-%s" $global.Release.Name $name | trunc $length }}{{ $suffix }}
+{{- end }}
+{{- end }}
+{{- end }}
+
+{{/*
+ Create chart name and version as used by the chart label.
+*/}}
+{{- define "polaris.chart" -}}
+{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 |
trimSuffix "-" }}
+{{- end }}
+
+{{/*
+ Common labels
+*/}}
+{{- define "polaris.labels" -}}
+helm.sh/chart: {{ include "polaris.chart" . }}
+{{ include "polaris.selectorLabels" . }}
+{{- if .Chart.AppVersion }}
+app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
+{{- end }}
+app.kubernetes.io/managed-by: {{ .Release.Service }}
+{{- end }}
+
+{{/*
+ Selector labels
+*/}}
+{{- define "polaris.selectorLabels" -}}
+app.kubernetes.io/name: {{ include "polaris.name" . }}
+app.kubernetes.io/instance: {{ .Release.Name }}
+{{- end }}
+
+{{/*
+ Create the name of the service account to use
+*/}}
+{{- define "polaris.serviceAccountName" -}}
+{{- if .Values.serviceAccount.create }}
+{{- default (include "polaris.fullname" .) .Values.serviceAccount.name }}
+{{- else }}
+{{- default "default" .Values.serviceAccount.name }}
+{{- end }}
+{{- end }}
+
+{{/*
+Merges a configuration tree into the destination configuration map. See
configmap.yaml template.
+Two styles of configuration trees are supported:
+- Flattened configuration tree: The configuration option names are specified
as a dot-separated
+ string, and the configuration option values are the values of the
configuration options. E.g.:
+ "key1.subkey1": "value1"
+ "key1.subkey2.subsubkey1": "value2"
+- Nested configuration tree: The configuration option names are specified as a
nested structure.
+ The resulting option names are formed by concatenating the nested keys with
a dot separator.
+ E.g.:
+ key1:
+ subkey1: "value1"
+ subkey2:
+ subsubkey1: "value2"
+The configuration option values are evaluated as templates against the global
context before being
+printed.
+*/}}
+{{- define "polaris.mergeConfigTree" -}}
+{{- $advConfig := index . 0 -}}
+{{- $prefix := index . 1 -}}
+{{- $dest := index . 2 -}}
+{{- range $key, $val := $advConfig -}}
+{{- $name := ternary $key (print $prefix "." $key) (eq $prefix "") -}}
+{{- if kindOf $val | eq "map" -}}
+{{- list $val $name $dest | include "polaris.mergeConfigTree" -}}
+{{- else -}}
+{{- $_ := set $dest $name $val -}}
+{{- end -}}
+{{- end -}}
+{{- end -}}
+
+{{/*
+Prints the configuration option to the destination configmap entry. See
configmap.yaml template.
+Any nil values will be printed as empty config options; otherwise, the value
will be evaluated
+as a template against the global context, then printed. Furthermore, if the
value contains
+line breaks, they will be escaped and a multi-line option will be printed.
+*/}}
+{{- define "polaris.appendConfigOption" -}}
+{{- $key := index . 0 -}}
+{{- $value := index . 1 -}}
+{{- $global := index . 2 -}}
+{{- $valAsString := "" -}}
+{{- if ne $value nil -}}
+{{- $valAsString = tpl (toString $value) $global -}}
+{{- if contains "\r\n" $valAsString -}}
+{{- $valAsString = $valAsString | nindent 4 | replace "\r\n" "\\\r\n" -}}
+{{- else if contains "\n" $valAsString -}}
+{{- $valAsString = $valAsString | nindent 4 | replace "\n" "\\\n" -}}
+{{- end -}}
+{{- end -}}
+{{ print $key "=" $valAsString }}
+{{- end -}}
+
+{{/*
+Convert a dict into a string formed by a comma-separated list of key-value
pairs: key1=value1,key2=value2, ...
+*/}}
+{{- define "polaris.dictToString" -}}
+{{- $list := list -}}
+{{- range $k, $v := . -}}
+{{- $list = append $list (printf "%s=%s" $k $v) -}}
+{{- end -}}
+{{ join "," $list }}
+{{- end -}}
+
+{{/*
+Prints the config volume definition for deployments and jobs.
+*/}}
+{{- define "polaris.configVolume" -}}
+- name: config-volume
+ projected:
+ sources:
+ - configMap:
+ name: {{ include "polaris.fullname" . }}
+ items:
+ - key: application.properties
+ path: application.properties
+ {{- if .Values.authentication.tokenBroker.secret.name }}
+ - secret:
+ name: {{ tpl .Values.authentication.tokenBroker.secret.name . }}
+ items:
+ {{- if eq .Values.authentication.tokenBroker.type "rsa-key-pair" }}
+ - key: {{ tpl .Values.authentication.tokenBroker.secret.publicKey
. }}
+ path: public.pem
+ - key: {{ tpl .Values.authentication.tokenBroker.secret.privateKey
. }}
+ path: private.pem
+ {{- end }}
+ {{- if eq .Values.authentication.tokenBroker.type "symmetric-key" }}
+ - key: {{ tpl .Values.authentication.tokenBroker.secret.secretKey
. }}
+ path: symmetric.key
+ {{- end }}
+ {{- end }}
+ {{- if and ( eq .Values.persistence.type "eclipse-link" )
.Values.persistence.eclipseLink.secret.name }}
+ - secret:
+ name: {{ tpl .Values.persistence.eclipseLink.secret.name . }}
+ items:
+ - key: {{ tpl .Values.persistence.eclipseLink.secret.key . }}
+ path: persistence.xml
+ {{- end }}
+{{- end -}}
+
+{{/*
+Prints an environment variable for a secret key reference.
+*/}}
+{{- define "polaris.secretToEnv" -}}
+{{- $secret := index . 0 -}}
+{{- $keyRef := index . 1 -}}
+{{- $varName := index . 2 -}}
+{{- $key := get $secret $keyRef -}}
+{{- if and $secret.name $key }}
+- name: {{ $varName }}
+ valueFrom:
+ secretKeyRef:
+ name: {{ $secret.name }}
+ key: {{ $key }}
+{{- end -}}
+{{- end -}}
+
+{{/*
+Converts a Kubernetes quantity to a number (int64 if possible or float64
otherwise).
+It handles raw numbers as well as quantities with suffixes
+like m, k, M, G, T, P, E, ki, Mi, Gi, Ti, Pi, Ei.
+It also handles scientific notation.
+Quantities should be positive, so negative values, zero, or any unparseable
number
+will result in a failure.
+https://kubernetes.io/docs/reference/kubernetes-api/common-definitions/quantity/
+*/}}
+{{- define "polaris.quantity" -}}
+{{- $quantity := . -}}
+{{- $n := $quantity | float64 -}}
+{{- if kindIs "string" $quantity -}}
+{{- if hasSuffix "m" $quantity -}}
+{{- $n = divf (trimSuffix "m" $quantity | float64) 1000.0 -}}
+{{- else if hasSuffix "k" $quantity -}}
+{{- $n = trimSuffix "k" $quantity | int64 | mul 1000 -}}
+{{- else if hasSuffix "M" $quantity -}}
+{{- $n = trimSuffix "M" $quantity | int64 | mul 1000000 -}}
+{{- else if hasSuffix "G" $quantity -}}
+{{- $n = trimSuffix "G" $quantity | int64 | mul 1000000000 -}}
+{{- else if hasSuffix "T" $quantity -}}
+{{- $n = trimSuffix "T" $quantity | int64 | mul 1000000000000 -}}
+{{- else if hasSuffix "P" $quantity -}}
+{{- $n = trimSuffix "P" $quantity | int64 | mul 1000000000000000 -}}
+{{- else if hasSuffix "E" $quantity -}}
+{{- $n = trimSuffix "E" $quantity | int64 | mul 1000000000000000000 -}}
+{{- else if hasSuffix "ki" $quantity -}}
+{{- $n = trimSuffix "ki" $quantity | int64 | mul 1024 -}}
+{{- else if hasSuffix "Mi" $quantity -}}
+{{- $n = trimSuffix "Mi" $quantity | int64 | mul 1048576 -}}
+{{- else if hasSuffix "Gi" $quantity -}}
+{{- $n = trimSuffix "Gi" $quantity | int64 | mul 1073741824 -}}
+{{- else if hasSuffix "Ti" $quantity -}}
+{{- $n = trimSuffix "Ti" $quantity | int64 | mul 1099511627776 -}}
+{{- else if hasSuffix "Pi" $quantity -}}
+{{- $n = trimSuffix "Pi" $quantity | int64 | mul 1125899906842624 -}}
+{{- else if hasSuffix "Ei" $quantity -}}
+{{- $n = trimSuffix "Ei" $quantity | int64 | mul 1152921504606846976 -}}
+{{- end -}}
+{{- end -}}
+{{- if le ($n | float64) 0.0 -}}
+{{- fail (print "invalid quantity: " $quantity) -}}
+{{- end -}}
+{{- if kindIs "float64" $n -}}
+{{- printf "%f" $n -}}
+{{- else -}}
+{{- printf "%v" $n -}}
+{{- end -}}
+{{- end -}}
+
+{{/*
+Prints the ports section of the container spec. Also validates all port names
to ensure
+that they are unique.
+*/}}
+{{- define "polaris.containerPorts" -}}
+{{- $ports := dict -}}
+{{- $protocols := dict -}}
+{{- /* Main service ports */ -}}
+{{- range $i, $port := .Values.service.ports -}}
+{{- if hasKey $ports $port.name -}}
+{{- fail (printf "service.ports[%d]: port name already taken: %v" $i
$port.name) -}}
+{{- end -}}
+{{- $portNumber := coalesce $port.targetPort $port.port -}}
+{{- $_ := set $ports $port.name $portNumber -}}
+{{- $_ = set $protocols $port.name ($port.protocol | default "TCP") -}}
+{{- end -}}
+{{- /* Management service ports */ -}}
+{{- range $i, $port := .Values.managementService.ports -}}
+{{- if hasKey $ports $port.name -}}
+{{- fail (printf "managementService.ports[%d]: port name already taken: %v" $i
$port.name) -}}
+{{- end -}}
+{{- $portNumber := coalesce $port.targetPort $port.port -}}
+{{- $_ := set $ports $port.name $portNumber }}
+{{- $_ = set $protocols $port.name ($port.protocol | default "TCP") -}}
+{{- end -}}
+{{- /* Extra service ports */ -}}
+{{- range $i, $svc := .Values.extraServices -}}
+{{- range $j, $port := $svc.ports -}}
+{{- $portNumber := coalesce $port.targetPort $port.port -}}
+{{- if hasKey $ports $port.name -}}
+{{- if ne $portNumber (get $ports $port.name) -}}
+{{- fail (printf "extraServices[%d].ports[%d]: wrong port number for port %s,
expected %v, got %v" $i $j $port.name (get $ports $port.name) $portNumber) -}}
+{{- end -}}
+{{- end -}}
+{{- if hasKey $protocols $port.name -}}
+{{- if ne ($port.protocol | default "TCP") (get $protocols $port.name) -}}
+{{- fail (printf "extraServices[%d].ports[%d]: wrong protocol for port %s,
expected %v, got %v" $i $j $port.name (get $protocols $port.name)
$port.protocol) -}}
+{{- end -}}
+{{- end -}}
+{{- $_ := set $ports $port.name $portNumber -}}
+{{- $_ = set $protocols $port.name ($port.protocol | default "TCP") -}}
+{{- end -}}
+{{- end }}
+ports:
+{{- range $portName, $portNumber := $ports }}
+ - name: {{ $portName }}
+ containerPort: {{ $portNumber }}
+ protocol: {{ get $protocols $portName }}
+{{- end }}
+{{- end -}}
Added:
dev/incubator/polaris/apache-polaris-1.0.0-incubating/helm-chart/templates/configmap.yaml
==============================================================================
---
dev/incubator/polaris/apache-polaris-1.0.0-incubating/helm-chart/templates/configmap.yaml
(added)
+++
dev/incubator/polaris/apache-polaris-1.0.0-incubating/helm-chart/templates/configmap.yaml
Tue Jun 24 00:39:22 2025
@@ -0,0 +1,205 @@
+{{/*
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you 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.
+*/}}
+
+apiVersion: v1
+kind: ConfigMap
+metadata:
+ name: {{ include "polaris.fullname" . }}
+ namespace: {{ .Release.Namespace }}
+ labels:
+ {{- include "polaris.labels" . | nindent 4 }}
+ {{- if .Values.configMapLabels }}
+ {{- tpl (toYaml .Values.configMapLabels) . | nindent 4 }}
+ {{- end }}
+data:
+ application.properties: |-
+ {{- $map := dict -}}
+
+ {{- /* Realm Context */ -}}
+ {{- $_ := set $map "polaris.realm-context.type" .Values.realmContext.type
-}}
+ {{- $_ = set $map "polaris.realm-context.realms" (join ","
.Values.realmContext.realms) -}}
+
+ {{- /* Features */ -}}
+ {{- range $k, $v := .Values.features -}}
+ {{- if ( ne $k "realmOverrides" ) -}}
+ {{- $_ = set $map (printf "polaris.features.\"%s\"" $k) (toJson $v) -}}
+ {{- end -}}
+ {{- end -}}
+ {{- range $realm, $overrides := .Values.features.realmOverrides -}}
+ {{- range $k, $v := $overrides -}}
+ {{- $_ = set $map (printf "polaris.features.realm-overrides.\"%s\".\"%s\""
$realm $k) (toJson $v) -}}
+ {{- end -}}
+ {{- end -}}
+
+ {{- /* Persistence */ -}}
+ {{- $_ = set $map "polaris.persistence.type" .Values.persistence.type -}}
+ {{- if and ( eq .Values.persistence.type "eclipse-link" )
.Values.persistence.eclipseLink.secret.name -}}
+ {{- $_ = set $map "polaris.persistence.eclipselink.persistence-unit"
.Values.persistence.eclipseLink.persistenceUnit -}}
+ {{- $_ = set $map "polaris.persistence.eclipselink.configuration-file"
(printf "%s/persistence.xml" .Values.image.configDir ) -}}
+ {{- end -}}
+
+ {{- /* File IO */ -}}
+ {{- $_ = set $map "polaris.file-io.type" .Values.fileIo.type -}}
+
+ {{- /* Storage */ -}}
+ {{- if .Values.storage.secret.gcpTokenLifespan -}}
+ {{- $_ = set $map "polaris.storage.gcp.lifespan"
.Values.storage.secret.gcpTokenLifespan -}}
+ {{- end -}}
+
+ {{- /* Rate Limiter */ -}}
+ {{- $_ = set $map "polaris.rate-limiter.filter.type"
.Values.rateLimiter.type -}}
+ {{- if ne .Values.rateLimiter.type "no-op" -}}
+ {{- $_ = set $map "polaris.rate-limiter.token-bucket.type"
.Values.rateLimiter.tokenBucket.type -}}
+ {{- $_ = set $map "polaris.rate-limiter.token-bucket.requests-per-second"
.Values.rateLimiter.tokenBucket.requestsPerSecond -}}
+ {{- $_ = set $map "polaris.rate-limiter.token-bucket.window"
.Values.rateLimiter.tokenBucket.window -}}
+ {{- end -}}
+
+ {{- /* Tasks */ -}}
+ {{- if .Values.tasks.maxConcurrentTasks -}}
+ {{- $_ = set $map "polaris.tasks.max-concurrent-tasks"
.Values.tasks.maxConcurrentTasks -}}
+ {{- end -}}
+ {{- if .Values.tasks.maxQueuedTasks -}}
+ {{- $_ = set $map "polaris.tasks.max-queued-tasks"
.Values.tasks.maxQueuedTasks -}}
+ {{- end -}}
+
+ {{- /* Authentication */ -}}
+ {{- $_ = set $map "polaris.authentication.authenticator.type"
.Values.authentication.authenticator.type -}}
+ {{- $_ = set $map "polaris.authentication.token-service.type"
.Values.authentication.tokenService.type -}}
+ {{- $_ = set $map "polaris.authentication.token-broker.type"
.Values.authentication.tokenBroker.type -}}
+ {{- $_ = set $map
"polaris.authentication.token-broker.max-token-generation"
.Values.authentication.tokenBroker.maxTokenGeneration -}}
+ {{- if .Values.authentication.tokenBroker.secret.name -}}
+ {{- if eq .Values.authentication.tokenBroker.type "rsa-key-pair" -}}
+ {{- $_ = set $map
"polaris.authentication.token-broker.rsa-key-pair.public-key-file" (printf
"%s/public.pem" .Values.image.configDir ) -}}
+ {{- $_ = set $map
"polaris.authentication.token-broker.rsa-key-pair.private-key-file" (printf
"%s/private.pem" .Values.image.configDir ) -}}
+ {{- end -}}
+ {{- if eq .Values.authentication.tokenBroker.type "symmetric-key" -}}
+ {{- $_ = set $map "polaris.authentication.token-broker.symmetric-key.file"
(printf "%s/symmetric.key" .Values.image.configDir ) -}}
+ {{- end -}}
+ {{- end -}}
+
+ {{- /* HTTP ports */ -}}
+ {{- $_ = set $map "quarkus.http.port" (get (first .Values.service.ports)
"port") -}}
+ {{- $_ = set $map "quarkus.management.port" (get (first
.Values.managementService.ports) "port") -}}
+
+ {{- /* CORS */ -}}
+ {{- if .Values.cors.allowedOrigins -}}
+ {{- $_ = set $map "quarkus.http.cors.origins" (join ","
.Values.cors.allowedOrigins) -}}
+ {{- end -}}
+ {{- if .Values.cors.allowedMethods -}}
+ {{- $_ = set $map "quarkus.http.cors.methods" (join ","
.Values.cors.allowedMethods) -}}
+ {{- end -}}
+ {{- if .Values.cors.allowedHeaders -}}
+ {{- $_ = set $map "quarkus.http.cors.headers" (join ","
.Values.cors.allowedHeaders) -}}
+ {{- end -}}
+ {{- if .Values.cors.exposedHeaders -}}
+ {{- $_ = set $map "quarkus.http.cors.exposed-headers" (join ","
.Values.cors.exposedHeaders) -}}
+ {{- end -}}
+ {{- if .Values.cors.accessControlMaxAge -}}
+ {{- $_ = set $map "quarkus.http.cors.access-control-max-age"
.Values.cors.accessControlMaxAge -}}
+ {{- end -}}
+ {{- if ne .Values.cors.accessControlAllowCredentials nil -}}
+ {{- $_ = set $map "quarkus.http.cors.access-control-allow-credentials"
.Values.cors.accessControlAllowCredentials -}}
+ {{- end -}}
+
+ {{- /* Logging */ -}}
+ {{- $_ = set $map "quarkus.log.level" .Values.logging.level -}}
+ {{- if .Values.logging.console.enabled -}}
+ {{- $_ = set $map "quarkus.log.console.enable" "true" -}}
+ {{- $_ = set $map "quarkus.log.console.level"
.Values.logging.console.threshold -}}
+ {{- if .Values.logging.console.json -}}
+ {{- $_ = set $map "quarkus.log.console.json" "true" -}}
+ {{- else -}}
+ {{- $_ = set $map "quarkus.log.console.format"
.Values.logging.console.format -}}
+ {{- end -}}
+ {{- else -}}
+ {{- $_ = set $map "quarkus.log.console.enable" "false" -}}
+ {{- end -}}
+ {{- if .Values.logging.file.enabled -}}
+ {{- $_ = set $map "quarkus.log.file.enable" "true" -}}
+ {{- $_ = set $map "quarkus.log.file.level" .Values.logging.file.threshold
-}}
+ {{- $_ = set $map "quarkus.log.file.path" (printf "%s/%s"
.Values.logging.file.logsDir .Values.logging.file.fileName) -}}
+ {{- $_ = set $map "quarkus.log.file.rotation.max-file-size" (include
"polaris.quantity" .Values.logging.file.rotation.maxFileSize) -}}
+ {{- $_ = set $map "quarkus.log.file.rotation.max-backup-index"
.Values.logging.file.rotation.maxBackupIndex -}}
+ {{- if .Values.logging.file.rotation.fileSuffix -}}
+ {{- $_ = set $map "quarkus.log.file.rotation.file-suffix"
.Values.logging.file.rotation.fileSuffix -}}
+ {{- end -}}
+ {{- if .Values.logging.file.json -}}
+ {{- $_ = set $map "quarkus.log.file.json" "true" -}}
+ {{- else -}}
+ {{- $_ = set $map "quarkus.log.file.format" .Values.logging.file.format -}}
+ {{- end -}}
+ {{- else -}}
+ {{- $_ = set $map "quarkus.log.file.enable" "false" -}}
+ {{- end -}}
+ {{- $categories := dict -}}
+ {{- list .Values.logging.categories "" $categories | include
"polaris.mergeConfigTree" -}}
+ {{- range $k, $v := $categories -}}
+ {{- $_ = set $map (printf "quarkus.log.category.\"%s\".level" $k) $v -}}
+ {{- end -}}
+ {{- $_ = set $map "polaris.log.request-id-header-name"
.Values.logging.requestIdHeaderName -}}
+ {{- $mdc := dict -}}
+ {{- list .Values.logging.mdc "" $mdc | include "polaris.mergeConfigTree"
-}}
+ {{- range $k, $v := $mdc -}}
+ {{- $_ = set $map (printf "polaris.log.mdc.\"%s\"" $k) $v -}}
+ {{- end -}}
+
+ {{- /* Telemetry */ -}}
+ {{- if .Values.tracing.enabled -}}
+ {{- $_ = set $map "quarkus.otel.exporter.otlp.endpoint"
.Values.tracing.endpoint -}}
+ {{- if .Values.tracing.attributes -}}
+ {{- $attributes := dict -}}
+ {{- list .Values.tracing.attributes "" $attributes | include
"polaris.mergeConfigTree" -}}
+ {{- $i := 0 -}}
+ {{- range $k, $v := $attributes -}}
+ {{- $_ = set $map (printf "quarkus.otel.resource.attributes[%d]" $i)
(printf "%s=%s" $k $v) -}}
+ {{- $i = add1 $i -}}
+ {{- end -}}
+ {{- end -}}
+ {{- if .Values.tracing.sample -}}
+ {{- $sample := toString .Values.tracing.sample -}}
+ {{ if eq $sample "all" -}}
+ {{- $_ = set $map "quarkus.otel.traces.sampler" "parentbased_always_on" -}}
+ {{- else if eq $sample "none" -}}
+ {{- $_ = set $map "quarkus.otel.traces.sampler" "always_off" -}}
+ {{- else -}}
+ {{- $_ = set $map "quarkus.otel.traces.sampler" "parentbased_traceidratio"
-}}
+ {{- $_ = set $map "quarkus.otel.traces.sampler.arg" $sample -}}
+ {{- end -}}
+ {{- end -}}
+ {{- else -}}
+ {{- $_ = set $map "quarkus.otel.sdk.disabled" true -}}
+ {{- end -}}
+
+ {{- /* Metrics */ -}}
+ {{- if .Values.metrics.enabled -}}
+ {{- range $name, $value := .Values.metrics.tags -}}
+ {{- $_ = set $map (print "polaris.metrics.tags." $name) $value -}}
+ {{- end -}}
+ {{- else -}}
+ {{- $_ = set $map "quarkus.micrometer.enabled" "false" -}}
+ {{- end -}}
+
+ {{- /* Advanced Configuration (must be done last since it can override any
of the settings above) */ -}}
+ {{- list .Values.advancedConfig "" $map | include
"polaris.mergeConfigTree" -}}
+
+ {{- /* Print the resulting configmap; each configuration option is
templatized */ -}}
+ {{- $global := . -}}
+ {{- range $k, $v := $map }}
+ {{ include "polaris.appendConfigOption" (list $k $v $global) }}
+ {{- end }}
Added:
dev/incubator/polaris/apache-polaris-1.0.0-incubating/helm-chart/templates/deployment.yaml
==============================================================================
---
dev/incubator/polaris/apache-polaris-1.0.0-incubating/helm-chart/templates/deployment.yaml
(added)
+++
dev/incubator/polaris/apache-polaris-1.0.0-incubating/helm-chart/templates/deployment.yaml
Tue Jun 24 00:39:22 2025
@@ -0,0 +1,148 @@
+{{/*
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you 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.
+*/}}
+
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ name: {{ include "polaris.fullname" . }}
+ namespace: {{ .Release.Namespace }}
+ labels:
+ {{- include "polaris.labels" . | nindent 4 }}
+ {{- if .Values.podLabels }}
+ {{- tpl (toYaml .Values.podLabels) . | nindent 4 }}
+ {{- end }}
+spec:
+ {{- if not .Values.autoscaling.enabled }}
+ replicas: {{ .Values.replicaCount }}
+ {{- end }}
+ {{- if not (has (quote .Values.revisionHistoryLimit) (list "" (quote ""))) }}
+ revisionHistoryLimit: {{ .Values.revisionHistoryLimit }}
+ {{- end }}
+ selector:
+ matchLabels:
+ {{- include "polaris.selectorLabels" . | nindent 6 }}
+ template:
+ metadata:
+ {{- if .Values.podAnnotations }}
+ annotations:
+ {{- tpl (toYaml .Values.podAnnotations) . | nindent 8 }}
+ {{- end }}
+ labels:
+ {{- include "polaris.selectorLabels" . | nindent 8 }}
+ {{- if .Values.podLabels }}
+ {{- tpl (toYaml .Values.podLabels) . | nindent 8 }}
+ {{- end }}
+ spec:
+ {{- if .Values.imagePullSecrets }}
+ imagePullSecrets:
+ {{- range .Values.imagePullSecrets }}
+ - name: {{ . | quote }}
+ {{- end }}
+ {{- end }}
+ serviceAccountName: {{ include "polaris.serviceAccountName" . }}
+ {{- if .Values.podSecurityContext }}
+ securityContext:
+ {{- tpl (toYaml .Values.podSecurityContext) . | nindent 8 }}
+ {{- end }}
+ {{- if .Values.extraInitContainers }}
+ initContainers:
+ {{- tpl (toYaml .Values.extraInitContainers) . | nindent 8 }}
+ {{- end }}
+ containers:
+ - name: {{ .Chart.Name }}
+ {{- if .Values.containerSecurityContext }}
+ securityContext:
+ {{- tpl (toYaml .Values.containerSecurityContext) . | nindent 12 }}
+ {{- end }}
+ image: "{{ tpl .Values.image.repository . }}:{{ tpl
.Values.image.tag . | default .Chart.Version }}"
+ imagePullPolicy: {{ tpl .Values.image.pullPolicy . }}
+ {{ if or .Values.storage.secret.name .Values.extraEnv -}}
+ env:
+ {{- include "polaris.secretToEnv" (list .Values.storage.secret
"awsAccessKeyId" "polaris.storage.aws.access-key") | indent 12 -}}
+ {{- include "polaris.secretToEnv" (list .Values.storage.secret
"awsSecretAccessKey" "polaris.storage.aws.secret-key") | indent 12 -}}
+ {{- include "polaris.secretToEnv" (list .Values.storage.secret
"gcpToken" "polaris.storage.gcp.token") | indent 12 -}}
+ {{- if .Values.extraEnv -}}
+ {{- tpl (toYaml .Values.extraEnv) . | nindent 12 -}}
+ {{- end -}}
+ {{- end }}
+ volumeMounts:
+ - name: config-volume
+ mountPath: {{ trimSuffix "/" .Values.image.configDir }}
+ readOnly: true
+ {{- if .Values.logging.file.enabled }}
+ - name: logs-storage
+ mountPath: {{ .Values.logging.file.logsDir }}
+ readOnly: false
+ {{- end }}
+ - name: temp-dir
+ mountPath: /tmp
+ readOnly: false
+ {{- if .Values.extraVolumeMounts }}
+ {{- tpl (toYaml .Values.extraVolumeMounts) . | nindent 12 }}
+ {{- end }}
+ {{- include "polaris.containerPorts" . | trim | nindent 10 }}
+ livenessProbe:
+ httpGet:
+ path: /q/health/live
+ port: {{ get (first .Values.managementService.ports) "name" }}
+ scheme: HTTP
+ initialDelaySeconds: {{ .Values.livenessProbe.initialDelaySeconds
}}
+ periodSeconds: {{ .Values.livenessProbe.periodSeconds }}
+ successThreshold: {{ .Values.livenessProbe.successThreshold }}
+ failureThreshold: {{ .Values.livenessProbe.failureThreshold }}
+ timeoutSeconds: {{ .Values.livenessProbe.timeoutSeconds }}
+ terminationGracePeriodSeconds: {{
.Values.livenessProbe.terminationGracePeriodSeconds }}
+ readinessProbe:
+ httpGet:
+ path: /q/health/ready
+ port: {{ get (first .Values.managementService.ports) "name" }}
+ scheme: HTTP
+ initialDelaySeconds: {{ .Values.readinessProbe.initialDelaySeconds
}}
+ periodSeconds: {{ .Values.readinessProbe.periodSeconds }}
+ successThreshold: {{ .Values.readinessProbe.successThreshold }}
+ failureThreshold: {{ .Values.readinessProbe.failureThreshold }}
+ timeoutSeconds: {{ .Values.readinessProbe.timeoutSeconds }}
+ {{- if .Values.resources }}
+ resources:
+ {{- tpl (toYaml .Values.resources) . | nindent 12 }}
+ {{- end }}
+ volumes:
+ {{- include "polaris.configVolume" . | nindent 8 }}
+ {{- if .Values.logging.file.enabled }}
+ - name: logs-storage
+ persistentVolumeClaim:
+ claimName: {{ include "polaris.fullnameWithSuffix" (list . "logs")
}}
+ {{- end }}
+ - name: temp-dir
+ emptyDir: {}
+ {{- if .Values.extraVolumes }}
+ {{- tpl (toYaml .Values.extraVolumes) . | nindent 8 }}
+ {{- end }}
+ {{- if .Values.nodeSelector }}
+ nodeSelector:
+ {{- tpl (toYaml .Values.nodeSelector) . | nindent 8 }}
+ {{- end }}
+ {{- if .Values.affinity }}
+ affinity:
+ {{- tpl (toYaml .Values.affinity) . | nindent 8 }}
+ {{- end }}
+ {{- if .Values.tolerations }}
+ tolerations:
+ {{- tpl (toYaml .Values.tolerations) . | nindent 8 }}
+ {{- end }}
Added:
dev/incubator/polaris/apache-polaris-1.0.0-incubating/helm-chart/templates/hpa.yaml
==============================================================================
---
dev/incubator/polaris/apache-polaris-1.0.0-incubating/helm-chart/templates/hpa.yaml
(added)
+++
dev/incubator/polaris/apache-polaris-1.0.0-incubating/helm-chart/templates/hpa.yaml
Tue Jun 24 00:39:22 2025
@@ -0,0 +1,52 @@
+{{/*
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you 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.
+*/}}
+
+{{- if .Values.autoscaling.enabled }}
+apiVersion: autoscaling/v2
+kind: HorizontalPodAutoscaler
+metadata:
+ name: {{ include "polaris.fullname" . }}
+ namespace: {{ .Release.Namespace }}
+ labels:
+ {{- include "polaris.labels" . | nindent 4 }}
+spec:
+ scaleTargetRef:
+ apiVersion: apps/v1
+ kind: Deployment
+ name: {{ include "polaris.fullname" . }}
+ minReplicas: {{ .Values.autoscaling.minReplicas }}
+ maxReplicas: {{ .Values.autoscaling.maxReplicas }}
+ metrics:
+ {{- if .Values.autoscaling.targetCPUUtilizationPercentage }}
+ - type: Resource
+ resource:
+ name: cpu
+ target:
+ type: Utilization
+ averageUtilization: {{
.Values.autoscaling.targetCPUUtilizationPercentage }}
+ {{- end }}
+ {{- if .Values.autoscaling.targetMemoryUtilizationPercentage }}
+ - type: Resource
+ resource:
+ name: memory
+ target:
+ type: Utilization
+ averageUtilization: {{
.Values.autoscaling.targetMemoryUtilizationPercentage }}
+ {{- end }}
+{{- end }}
Added:
dev/incubator/polaris/apache-polaris-1.0.0-incubating/helm-chart/templates/ingress.yaml
==============================================================================
---
dev/incubator/polaris/apache-polaris-1.0.0-incubating/helm-chart/templates/ingress.yaml
(added)
+++
dev/incubator/polaris/apache-polaris-1.0.0-incubating/helm-chart/templates/ingress.yaml
Tue Jun 24 00:39:22 2025
@@ -0,0 +1,63 @@
+{{/*
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you 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.
+*/}}
+
+{{- if .Values.ingress.enabled }}
+{{- $fullName := include "polaris.fullname" . }}
+{{- $svcPort := get (first .Values.service.ports) "port" }}
+apiVersion: networking.k8s.io/v1
+kind: Ingress
+metadata:
+ name: {{ $fullName }}
+ namespace: {{ .Release.Namespace }}
+ labels:
+ {{- include "polaris.labels" . | nindent 4 }}
+ {{- if .Values.ingress.annotations }}
+ annotations:
+ {{- tpl (toYaml .Values.ingress.annotations) . | nindent 4 }}
+ {{- end }}
+spec:
+ {{- if .Values.ingress.className }}
+ ingressClassName: {{ .Values.ingress.className | quote }}
+ {{- end }}
+ {{- if .Values.ingress.tls }}
+ tls:
+ {{- range .Values.ingress.tls }}
+ - hosts:
+ {{- range .hosts }}
+ - {{ . | quote }}
+ {{- end }}
+ secretName: {{ .secretName }}
+ {{- end }}
+ {{- end }}
+ rules:
+ {{- range .Values.ingress.hosts }}
+ - host: {{ .host | quote }}
+ http:
+ paths:
+ {{- range .paths }}
+ - path: {{ .path }}
+ pathType: {{ .pathType }}
+ backend:
+ service:
+ name: {{ $fullName }}
+ port:
+ number: {{ $svcPort }}
+ {{- end }}
+ {{- end }}
+ {{- end }}
\ No newline at end of file
Added:
dev/incubator/polaris/apache-polaris-1.0.0-incubating/helm-chart/templates/service-extra.yaml
==============================================================================
---
dev/incubator/polaris/apache-polaris-1.0.0-incubating/helm-chart/templates/service-extra.yaml
(added)
+++
dev/incubator/polaris/apache-polaris-1.0.0-incubating/helm-chart/templates/service-extra.yaml
Tue Jun 24 00:39:22 2025
@@ -0,0 +1,69 @@
+{{/*
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you 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.
+*/}}
+
+{{- range $i, $svc := .Values.extraServices }}
+{{- if not $svc.nameSuffix }}
+{{- fail (printf "extraServices[%d]: missing required nameSuffix" $i) }}
+{{- else if or (eq $svc.nameSuffix "-mgmt") (eq $svc.nameSuffix "mgmt") }}
+{{- fail (printf "extraServices[%d]: invalid nameSuffix" $i) }}
+{{- end }}
+---
+apiVersion: v1
+kind: Service
+metadata:
+ name: {{ include "polaris.fullnameWithSuffix" (list $ $svc.nameSuffix) }}
+ namespace: {{ $.Release.Namespace }}
+ labels:
+ {{- include "polaris.labels" $ | nindent 4 }}
+ {{- with $svc.annotations }}
+ annotations:
+ {{- toYaml . | nindent 4 }}
+ {{- end }}
+spec:
+ type: {{ $svc.type }}
+ selector:
+ {{- include "polaris.selectorLabels" $ | nindent 4 }}
+ ports:
+ {{- range $svc.ports }}
+ - name: {{ .name }}
+ port: {{ .port }}
+ {{- if .targetPort }}
+ targetPort: {{ .targetPort }}
+ {{- end }}
+ {{- if .nodePort }}
+ nodePort: {{ .nodePort }}
+ {{- end }}
+ protocol: {{ default "TCP" .protocol }}
+ {{- end }}
+ {{- if $svc.sessionAffinity }}
+ sessionAffinity: {{ $svc.sessionAffinity }}
+ {{- end }}
+ {{- if $svc.clusterIP }}
+ clusterIP: {{ $svc.clusterIP }}
+ {{- end }}
+ {{- if and $svc.externalTrafficPolicy (or (eq $svc.type "LoadBalancer") (eq
$svc.type "NodePort")) }}
+ externalTrafficPolicy: {{ $svc.externalTrafficPolicy }}
+ {{- end }}
+ {{- if $svc.internalTrafficPolicy }}
+ internalTrafficPolicy: {{ $svc.internalTrafficPolicy }}
+ {{- end }}
+ {{- if and $svc.trafficDistribution (ge (int
$.Capabilities.KubeVersion.Minor) 31) }}
+ trafficDistribution: {{ $svc.trafficDistribution }}
+ {{- end }}
+{{- end }}
Added:
dev/incubator/polaris/apache-polaris-1.0.0-incubating/helm-chart/templates/service-mgmt.yaml
==============================================================================
---
dev/incubator/polaris/apache-polaris-1.0.0-incubating/helm-chart/templates/service-mgmt.yaml
(added)
+++
dev/incubator/polaris/apache-polaris-1.0.0-incubating/helm-chart/templates/service-mgmt.yaml
Tue Jun 24 00:39:22 2025
@@ -0,0 +1,61 @@
+{{/*
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you 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.
+*/}}
+
+apiVersion: v1
+kind: Service
+metadata:
+ name: {{ include "polaris.fullnameWithSuffix" (list . "mgmt") }}
+ namespace: {{ .Release.Namespace }}
+ labels:
+ {{- include "polaris.labels" . | nindent 4 }}
+ {{- with .Values.managementService.annotations }}
+ annotations:
+ {{- toYaml . | nindent 4 }}
+ {{- end }}
+spec:
+ type: {{ .Values.managementService.type }}
+ selector:
+ {{- include "polaris.selectorLabels" . | nindent 4 }}
+ ports:
+ {{- range .Values.managementService.ports }}
+ - name: {{ .name }}
+ port: {{ .port }}
+ {{- if .targetPort }}
+ targetPort: {{ .targetPort }}
+ {{- end }}
+ {{- if .nodePort }}
+ nodePort: {{ .nodePort }}
+ {{- end }}
+ protocol: {{ default "TCP" .protocol }}
+ {{- end }}
+ {{- if .Values.managementService.sessionAffinity }}
+ sessionAffinity: {{ .Values.managementService.sessionAffinity }}
+ {{- end }}
+ {{- if .Values.managementService.clusterIP }}
+ clusterIP: {{ .Values.managementService.clusterIP }}
+ {{- end }}
+ {{- if and .Values.managementService.externalTrafficPolicy (or (eq
.Values.managementService.type "LoadBalancer") (eq
.Values.managementService.type "NodePort")) }}
+ externalTrafficPolicy: {{ .Values.managementService.externalTrafficPolicy }}
+ {{- end }}
+ {{- if .Values.managementService.internalTrafficPolicy }}
+ internalTrafficPolicy: {{ .Values.managementService.internalTrafficPolicy }}
+ {{- end }}
+ {{- if and .Values.managementService.trafficDistribution (ge (int
$.Capabilities.KubeVersion.Minor) 31) }}
+ trafficDistribution: {{ .Values.managementService.trafficDistribution }}
+ {{- end }}
Added:
dev/incubator/polaris/apache-polaris-1.0.0-incubating/helm-chart/templates/service.yaml
==============================================================================
---
dev/incubator/polaris/apache-polaris-1.0.0-incubating/helm-chart/templates/service.yaml
(added)
+++
dev/incubator/polaris/apache-polaris-1.0.0-incubating/helm-chart/templates/service.yaml
Tue Jun 24 00:39:22 2025
@@ -0,0 +1,61 @@
+{{/*
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you 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.
+*/}}
+
+apiVersion: v1
+kind: Service
+metadata:
+ name: {{ include "polaris.fullname" . }}
+ namespace: {{ .Release.Namespace }}
+ labels:
+ {{- include "polaris.labels" . | nindent 4 }}
+ {{- with .Values.service.annotations }}
+ annotations:
+ {{- toYaml . | nindent 4 }}
+ {{- end }}
+spec:
+ type: {{ .Values.service.type }}
+ selector:
+ {{- include "polaris.selectorLabels" . | nindent 4 }}
+ ports:
+ {{- range .Values.service.ports }}
+ - name: {{ .name }}
+ port: {{ .port }}
+ {{- if .targetPort }}
+ targetPort: {{ .targetPort }}
+ {{- end }}
+ {{- if and (eq $.Values.service.type "NodePort") .nodePort }}
+ nodePort: {{ .nodePort }}
+ {{- end }}
+ protocol: {{ default "TCP" .protocol }}
+ {{- end }}
+ {{- if .Values.service.sessionAffinity }}
+ sessionAffinity: {{ .Values.service.sessionAffinity }}
+ {{- end }}
+ {{- if .Values.service.clusterIP }}
+ clusterIP: {{ .Values.service.clusterIP }}
+ {{- end }}
+ {{- if and .Values.service.externalTrafficPolicy (or (eq
.Values.service.type "LoadBalancer") (eq .Values.service.type "NodePort")) }}
+ externalTrafficPolicy: {{ .Values.service.externalTrafficPolicy }}
+ {{- end }}
+ {{- if .Values.service.internalTrafficPolicy }}
+ internalTrafficPolicy: {{ .Values.service.internalTrafficPolicy }}
+ {{- end }}
+ {{- if and .Values.service.trafficDistribution (ge (int
.Capabilities.KubeVersion.Minor) 31) }}
+ trafficDistribution: {{ .Values.service.trafficDistribution }}
+ {{- end }}
Added:
dev/incubator/polaris/apache-polaris-1.0.0-incubating/helm-chart/templates/serviceaccount.yaml
==============================================================================
---
dev/incubator/polaris/apache-polaris-1.0.0-incubating/helm-chart/templates/serviceaccount.yaml
(added)
+++
dev/incubator/polaris/apache-polaris-1.0.0-incubating/helm-chart/templates/serviceaccount.yaml
Tue Jun 24 00:39:22 2025
@@ -0,0 +1,29 @@
+{{/*
+ Copyright (C) 2024 Dremio
+
+ 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.
+*/}}
+
+{{- if .Values.serviceAccount.create }}
+apiVersion: v1
+kind: ServiceAccount
+metadata:
+ name: {{ include "polaris.serviceAccountName" . }}
+ namespace: {{ .Release.Namespace }}
+ labels:
+ {{- include "polaris.labels" . | nindent 4 }}
+ {{- if .Values.serviceAccount.annotations }}
+ annotations:
+ {{- tpl (toYaml .Values.serviceAccount.annotations) . | nindent 4 }}
+ {{- end }}
+{{- end }}
Added:
dev/incubator/polaris/apache-polaris-1.0.0-incubating/helm-chart/templates/servicemonitor.yaml
==============================================================================
---
dev/incubator/polaris/apache-polaris-1.0.0-incubating/helm-chart/templates/servicemonitor.yaml
(added)
+++
dev/incubator/polaris/apache-polaris-1.0.0-incubating/helm-chart/templates/servicemonitor.yaml
Tue Jun 24 00:39:22 2025
@@ -0,0 +1,46 @@
+{{/**
+ Copyright (C) 2024 Dremio
+
+ 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.
+**/}}
+
+{{- if and ( .Capabilities.APIVersions.Has "monitoring.coreos.com/v1" )
.Values.serviceMonitor.enabled }}
+apiVersion: monitoring.coreos.com/v1
+kind: ServiceMonitor
+metadata:
+ name: {{ include "polaris.fullname" . }}
+ namespace: {{ .Release.Namespace }}
+ labels:
+ {{- include "polaris.labels" . | nindent 4 }}
+ {{- if .Values.serviceMonitor.labels }}
+ {{ toYaml .Values.serviceMonitor.labels | nindent 4 }}
+ {{- end }}
+spec:
+ endpoints:
+ - port: {{ get (first .Values.managementService.ports) "name" }}
+ scheme: http
+ {{- if .Values.serviceMonitor.interval }}
+ interval: {{ .Values.serviceMonitor.interval }}
+ {{- end }}
+ path: /q/metrics
+ {{- with .Values.serviceMonitor.metricRelabelings }}
+ metricRelabelings:
+ {{- toYaml . | nindent 8 }}
+ {{- end }}
+ namespaceSelector:
+ matchNames:
+ - {{ .Release.Namespace }}
+ selector:
+ matchLabels:
+ {{- include "polaris.selectorLabels" . | nindent 6 }}
+{{- end }}
Added:
dev/incubator/polaris/apache-polaris-1.0.0-incubating/helm-chart/templates/storage.yaml
==============================================================================
---
dev/incubator/polaris/apache-polaris-1.0.0-incubating/helm-chart/templates/storage.yaml
(added)
+++
dev/incubator/polaris/apache-polaris-1.0.0-incubating/helm-chart/templates/storage.yaml
Tue Jun 24 00:39:22 2025
@@ -0,0 +1,38 @@
+{{/**
+ Copyright (C) 2024 Dremio
+
+ 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.
+**/}}
+
+{{- if .Values.logging.file.enabled }}
+apiVersion: v1
+kind: PersistentVolumeClaim
+metadata:
+ name: {{ include "polaris.fullnameWithSuffix" (list . "logs") }}
+ namespace: {{ .Release.Namespace }}
+ labels:
+ {{- include "polaris.labels" . | nindent 4 }}
+spec:
+ accessModes:
+ - ReadWriteOnce
+ volumeMode: Filesystem
+ storageClassName: {{ .Values.logging.file.storage.className }}
+ resources:
+ requests:
+ storage: "{{ .Values.logging.file.storage.size }}"
+{{- if .Values.logging.file.storage.selectorLabels }}
+ selector:
+ matchLabels:
+ {{- toYaml .Values.logging.file.storage.selectorLabels | nindent 6 }}
+{{- end }}
+{{- end }}
Added:
dev/incubator/polaris/apache-polaris-1.0.0-incubating/helm-chart/templates/tests/test-connection.yaml
==============================================================================
---
dev/incubator/polaris/apache-polaris-1.0.0-incubating/helm-chart/templates/tests/test-connection.yaml
(added)
+++
dev/incubator/polaris/apache-polaris-1.0.0-incubating/helm-chart/templates/tests/test-connection.yaml
Tue Jun 24 00:39:22 2025
@@ -0,0 +1,44 @@
+{{/*
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you 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.
+*/}}
+
+apiVersion: v1
+kind: Pod
+metadata:
+ name: "{{ include "polaris.fullname" . }}-test-connection"
+ namespace: {{ .Release.Namespace }}
+ labels:
+ helm.sh/chart: {{ include "polaris.chart" . }}
+ app.kubernetes.io/managed-by: {{ .Release.Service }}
+ {{- if .Chart.AppVersion }}
+ app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
+ {{- end }}
+ annotations:
+ "helm.sh/hook": test
+spec:
+ containers:
+ - name: check-connection
+ image: busybox
+ command: ['sh', '-c']
+ args:
+ - |
+ for i in $(seq 1 10); do
+ wget --spider '{{ include "polaris.fullnameWithSuffix" (list .
"mgmt") }}:{{ get (first .Values.managementService.ports) "port"
}}/q/health/ready' && exit 0 || sleep 3;
+ done;
+ exit 1
+ restartPolicy: Never
\ No newline at end of file
Added:
dev/incubator/polaris/apache-polaris-1.0.0-incubating/helm-chart/tests/configmap_test.yaml
==============================================================================
---
dev/incubator/polaris/apache-polaris-1.0.0-incubating/helm-chart/tests/configmap_test.yaml
(added)
+++
dev/incubator/polaris/apache-polaris-1.0.0-incubating/helm-chart/tests/configmap_test.yaml
Tue Jun 24 00:39:22 2025
@@ -0,0 +1,340 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you 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.
+#
+
+chart:
+ version: 1.2.3
+ appVersion: 4.5.6
+
+release:
+ name: polaris-release
+ namespace: polaris-ns
+
+templates:
+ - configmap.yaml
+
+tests:
+
+ # metadata.name
+ - it: should set config map name
+ asserts:
+ - equal:
+ path: metadata.name
+ value: polaris-release
+ - it: should set config map name with override
+ set:
+ nameOverride: polaris-override
+ asserts:
+ - equal:
+ path: metadata.name
+ value: polaris-release-polaris-override
+ - it: should set config map name with full override
+ set:
+ fullnameOverride: polaris-override
+ asserts:
+ - equal:
+ path: metadata.name
+ value: polaris-override
+
+ # metadata.namespace
+ - it: should set config map namespace
+ asserts:
+ - equal:
+ path: metadata.namespace
+ value: polaris-ns
+
+ # metadata.labels
+ - it: should set config map default labels
+ asserts:
+ - isSubset:
+ path: metadata.labels
+ content:
+ app.kubernetes.io/name: polaris
+ app.kubernetes.io/instance: polaris-release
+ app.kubernetes.io/version: 4.5.6
+ app.kubernetes.io/managed-by: Helm
+ helm.sh/chart: polaris-1.2.3
+ - it: should set include podLabels in deployment labels
+ set:
+ configMapLabels:
+ app.kubernetes.io/component: polaris
+ asserts:
+ - isSubset:
+ path: metadata.labels
+ content:
+ app.kubernetes.io/component: polaris
+
+ - it: should configure realm context
+ set:
+ realmContext: { type: "custom", realms: [ "realm1", "realm2" ] }
+ asserts:
+ - matchRegex: { path: 'data["application.properties"]', pattern:
"polaris.realm-context.type=custom" }
+ - matchRegex: { path: 'data["application.properties"]', pattern:
"polaris.realm-context.realms=realm1,realm2" }
+
+ - it: should configure features
+ set:
+ features:
+ feature1: true
+ feature2: 42
+ realmOverrides:
+ realm1:
+ feature1: false
+ realm2:
+ feature2: 43
+ asserts:
+ - matchRegex: { path: 'data["application.properties"]', pattern:
"polaris.features.\"feature1\"=true" }
+ - matchRegex: { path: 'data["application.properties"]', pattern:
"polaris.features.\"feature2\"=42" }
+ - matchRegex: { path: 'data["application.properties"]', pattern:
"polaris.features.realm-overrides.\"realm1\".\"feature1\"=false" }
+ - matchRegex: { path: 'data["application.properties"]', pattern:
"polaris.features.realm-overrides.\"realm2\".\"feature2\"=43" }
+
+ - it: should configure persistence
+ set:
+ persistence: { type: "eclipse-link", eclipseLink: { persistenceUnit:
"polaris", secret: { name: "polaris-persistence" } } }
+ asserts:
+ - matchRegex: { path: 'data["application.properties"]', pattern:
"polaris.persistence.type=eclipse-link" }
+ - matchRegex: { path: 'data["application.properties"]', pattern:
"polaris.persistence.eclipselink.persistence-unit=polaris" }
+ - matchRegex: { path: 'data["application.properties"]', pattern:
"polaris.persistence.eclipselink.configuration-file=/deployments/config/persistence.xml"
}
+
+ - it: should configure file-io
+ set:
+ fileIo.type: "custom"
+ asserts:
+ - matchRegex: { path: 'data["application.properties"]', pattern:
"polaris.file-io.type=custom" }
+
+ - it: should configure GCP token lifespan
+ set:
+ storage: { secret: { gcpTokenLifespan: "PT2H" } }
+ asserts:
+ - matchRegex: { path: 'data["application.properties"]', pattern:
"polaris.storage.gcp.lifespan=PT2H" }
+
+ - it: should configure authentication with RSA key pair
+ set:
+ authentication: { authenticator: { type: custom }, tokenService: { type:
custom }, tokenBroker: { type: rsa-key-pair, maxTokenGeneration: PT2H, secret:
{ name: polaris-auth } } }
+ asserts:
+ - matchRegex: { path: 'data["application.properties"]', pattern:
"polaris.authentication.authenticator.type=custom" }
+ - matchRegex: { path: 'data["application.properties"]', pattern:
"polaris.authentication.token-service.type=custom" }
+ - matchRegex: { path: 'data["application.properties"]', pattern:
"polaris.authentication.token-broker.type=rsa-key-pair" }
+ - matchRegex: { path: 'data["application.properties"]', pattern:
"polaris.authentication.token-broker.max-token-generation=PT2H" }
+ - matchRegex: { path: 'data["application.properties"]', pattern:
"polaris.authentication.token-broker.rsa-key-pair.public-key-file=/deployments/config/public.pem"
}
+ - matchRegex: { path: 'data["application.properties"]', pattern:
"polaris.authentication.token-broker.rsa-key-pair.private-key-file=/deployments/config/private.pem"
}
+
+ - it: should configure authentication with symmetric key
+ set:
+ authentication: { tokenBroker: { type: symmetric-key, secret: { name:
polaris-auth } } }
+ asserts:
+ - matchRegex: { path: 'data["application.properties"]', pattern:
"polaris.authentication.authenticator.type=default" }
+ - matchRegex: { path: 'data["application.properties"]', pattern:
"polaris.authentication.token-service.type=default" }
+ - matchRegex: { path: 'data["application.properties"]', pattern:
"polaris.authentication.token-broker.type=symmetric-key" }
+ - matchRegex: { path: 'data["application.properties"]', pattern:
"polaris.authentication.token-broker.max-token-generation=PT1H" }
+ - matchRegex: { path: 'data["application.properties"]', pattern:
"polaris.authentication.token-broker.symmetric-key.file=/deployments/config/symmetric.key"
}
+
+ - it: should derive HTTP ports from service configuration
+ set:
+ service: { ports: [ { port: 8080 } ] }
+ managementService: { ports: [ { port: 8081 } ] }
+ asserts:
+ - matchRegex: { path: 'data["application.properties"]', pattern:
"quarkus.http.port=8080" }
+ - matchRegex: { path: 'data["application.properties"]', pattern:
"quarkus.management.port=8081" }
+
+ - it: should configure console logging
+ set:
+ logging: { level: DEBUG, console: { enabled: true, threshold: INFO,
format: custom } }
+ asserts:
+ - matchRegex: { path: 'data["application.properties"]', pattern:
"quarkus.log.level=DEBUG" }
+ - matchRegex: { path: 'data["application.properties"]', pattern:
"quarkus.log.console.enable=true" }
+ - matchRegex: { path: 'data["application.properties"]', pattern:
"quarkus.log.console.level=INFO" }
+ - matchRegex: { path: 'data["application.properties"]', pattern:
"quarkus.log.console.format=custom" }
+
+ - it: should configure file logging
+ set:
+ logging: { file: { enabled: true, threshold: DEBUG, format: custom,
logsDir: /mnt/logs, fileName: custom.log, rotation: { maxFileSize: 50Mi,
maxBackupIndex: 2, fileSuffix: .yyyy-MM-dd } } }
+ asserts:
+ - matchRegex: { path: 'data["application.properties"]', pattern:
"quarkus.log.file.enable=true" }
+ - matchRegex: { path: 'data["application.properties"]', pattern:
"quarkus.log.file.level=DEBUG" }
+ - matchRegex: { path: 'data["application.properties"]', pattern:
"quarkus.log.file.path=/mnt/logs/custom.log" }
+ - matchRegex: { path: 'data["application.properties"]', pattern:
"quarkus.log.file.rotation.max-file-size=52428800" }
+ - matchRegex: { path: 'data["application.properties"]', pattern:
"quarkus.log.file.rotation.max-backup-index=2" }
+ - matchRegex: { path: 'data["application.properties"]', pattern:
"quarkus.log.file.rotation.file-suffix=.yyyy-MM-dd" }
+
+ - it: should disable logging
+ set:
+ logging: { file: { enabled: false }, console: { enabled: false } }
+ asserts:
+ - matchRegex: { path: 'data["application.properties"]', pattern:
"quarkus.log.file.enable=false" }
+ - matchRegex: { path: 'data["application.properties"]', pattern:
"quarkus.log.console.enable=false" }
+
+ - it: should enable JSON logging
+ set:
+ logging: { file: { enabled: true, json: true }, console: { enabled:
true, json: true } }
+ asserts:
+ - matchRegex: { path: 'data["application.properties"]', pattern:
"quarkus.log.file.enable=true" }
+ - matchRegex: { path: 'data["application.properties"]', pattern:
"quarkus.log.console.enable=true" }
+ - matchRegex: { path: 'data["application.properties"]', pattern:
"quarkus.log.file.json=true" }
+ - matchRegex: { path: 'data["application.properties"]', pattern:
"quarkus.log.console.json=true" }
+
+ - it: should include logging categories
+ set:
+ logging:
+ categories:
+ # compact style
+ org.acme: DEBUG
+ # expanded style
+ org:
+ acme:
+ service: INFO
+ asserts:
+ - matchRegex: { path: 'data["application.properties"]', pattern:
"quarkus.log.category.\"org.acme\".level=DEBUG" }
+ - matchRegex: { path: 'data["application.properties"]', pattern:
"quarkus.log.category.\"org.acme.service\".level=INFO" }
+
+ - it: should include MDC context
+ set:
+ logging:
+ mdc:
+ # compact style
+ org.acme: foo
+ # expanded style
+ org:
+ acme:
+ service: foo
+ asserts:
+ - matchRegex: { path: 'data["application.properties"]', pattern:
"polaris.log.mdc.\"org.acme\"=foo" }
+ - matchRegex: { path: 'data["application.properties"]', pattern:
"polaris.log.mdc.\"org.acme.service\"=foo" }
+
+ - it: should include telemetry configuration
+ set:
+ tracing: { enabled: true, endpoint: http://custom:4317, attributes: {
service.name: custom, foo: bar } }
+ asserts:
+ - matchRegex: { path: 'data["application.properties"]', pattern:
"quarkus.otel.exporter.otlp.endpoint=http://custom:4317" }
+ - matchRegex: { path: 'data["application.properties"]', pattern:
"quarkus.otel.resource.attributes\\[\\d\\]=service.name=custom" }
+ - matchRegex: { path: 'data["application.properties"]', pattern:
"quarkus.otel.resource.attributes\\[\\d\\]=foo=bar" }
+
+ - it: should include set sample rate numeric
+ set:
+ tracing: { enabled: true, sample: "0.123" }
+ asserts:
+ - matchRegex: { path: 'data["application.properties"]', pattern:
"quarkus.otel.traces.sampler=parentbased_traceidratio" }
+ - matchRegex: { path: 'data["application.properties"]', pattern:
"quarkus.otel.traces.sampler.arg=0.123" }
+
+ - it: should include set sample rate "all"
+ set:
+ tracing: { enabled: true, sample: "all" }
+ asserts:
+ - matchRegex: { path: 'data["application.properties"]', pattern:
"quarkus.otel.traces.sampler=parentbased_always_on" }
+
+ - it: should include set sample rate "none"
+ set:
+ tracing: { enabled: true, sample: "none" }
+ asserts:
+ - matchRegex: { path: 'data["application.properties"]', pattern:
"quarkus.otel.traces.sampler=always_off" }
+
+ - it: should disable tracing by default
+ asserts:
+ - matchRegex: { path: 'data["application.properties"]', pattern:
"quarkus.otel.sdk.disabled=true" }
+
+ - it: should disable tracing
+ set:
+ tracing: { enabled: false }
+ asserts:
+ - matchRegex: { path: 'data["application.properties"]', pattern:
"quarkus.otel.sdk.disabled=true" }
+
+ - it: should include custom metrics
+ set:
+ metrics: { enabled: true, tags: { app: custom, foo: bar } }
+ asserts:
+ - matchRegex: { path: 'data["application.properties"]', pattern:
"polaris.metrics.tags.app=custom" }
+ - matchRegex: { path: 'data["application.properties"]', pattern:
"polaris.metrics.tags.foo=bar" }
+
+ - it: should disable metrics
+ set:
+ metrics: { enabled: false }
+ asserts:
+ - matchRegex: { path: 'data["application.properties"]', pattern:
"quarkus.micrometer.enabled=false" }
+
+ - it: should include advanced configuration
+ set:
+ advancedConfig:
+ # compact style
+ quarkus.compact.custom: true
+ # expanded style
+ quarkus:
+ expanded:
+ custom: foo
+ asserts:
+ - matchRegex: { path: 'data["application.properties"]', pattern:
"quarkus.compact.custom=true" }
+ - matchRegex: { path: 'data["application.properties"]', pattern:
"quarkus.expanded.custom=foo" }
+
+ - it: should not include CORS configuration by default
+ asserts:
+ - matchRegex: { path: 'data["application.properties"]', pattern:
"quarkus.http.cors" }
+ not: true
+
+ - it: should include CORS configuration if defined
+ set:
+ cors: { allowedOrigins: [ "http://localhost:3000",
"https://localhost:4000" ], allowedMethods: [ "GET", "POST" ], allowedHeaders:
[ "X-Custom1", "X-Custom2" ], exposedHeaders: [ "X-Exposed-Custom1",
"X-Exposed-Custom2" ], accessControlMaxAge: "PT1H",
accessControlAllowCredentials: false }
+ asserts:
+ - matchRegex: { path: 'data["application.properties"]', pattern:
"quarkus.http.cors.origins=http://localhost:3000,https://localhost:4000" }
+ - matchRegex: { path: 'data["application.properties"]', pattern:
"quarkus.http.cors.methods=GET,POST" }
+ - matchRegex: { path: 'data["application.properties"]', pattern:
"quarkus.http.cors.headers=X-Custom1,X-Custom2" }
+ - matchRegex: { path: 'data["application.properties"]', pattern:
"quarkus.http.cors.exposed-headers=X-Exposed-Custom1,X-Exposed-Custom2" }
+ - matchRegex: { path: 'data["application.properties"]', pattern:
"quarkus.http.cors.access-control-max-age=PT1H" }
+ - matchRegex: { path: 'data["application.properties"]', pattern:
"quarkus.http.cors.access-control-allow-credentials=false" }
+
+ - it: should configure rate-limiter with default values
+ asserts:
+ - matchRegex: { path: 'data["application.properties"]', pattern:
"polaris.rate-limiter.filter.type=no-op" }
+
+ - it: should configure rate-limiter no-op
+ set:
+ rateLimiter.type: no-op
+ asserts:
+ - matchRegex: { path: 'data["application.properties"]', pattern:
"polaris.rate-limiter.filter.type=no-op" }
+
+ - it: should configure rate-limiter with default token bucket values
+ set:
+ rateLimiter.type: default
+ asserts:
+ - matchRegex: { path: 'data["application.properties"]', pattern:
"polaris.rate-limiter.filter.type=default" }
+ - matchRegex: { path: 'data["application.properties"]', pattern:
"polaris.rate-limiter.token-bucket.type=default" }
+ - matchRegex: { path: 'data["application.properties"]', pattern:
"polaris.rate-limiter.token-bucket.requests-per-second=9999" }
+ - matchRegex: { path: 'data["application.properties"]', pattern:
"polaris.rate-limiter.token-bucket.window=PT10S" }
+
+ - it: should configure rate-limiter with custom token bucket values
+ set:
+ rateLimiter:
+ type: custom
+ tokenBucket:
+ type: custom
+ requestsPerSecond: 1234
+ window: PT5S
+ asserts:
+ - matchRegex: { path: 'data["application.properties"]', pattern:
"polaris.rate-limiter.filter.type=custom" }
+ - matchRegex: { path: 'data["application.properties"]', pattern:
"polaris.rate-limiter.token-bucket.type=custom" }
+ - matchRegex: { path: 'data["application.properties"]', pattern:
"polaris.rate-limiter.token-bucket.requests-per-second=1234" }
+ - matchRegex: { path: 'data["application.properties"]', pattern:
"polaris.rate-limiter.token-bucket.window=PT5S" }
+
+ - it: should not include tasks configuration by default
+ asserts:
+ - matchRegex: { path: 'data["application.properties"]', pattern:
"polaris.tasks" }
+ not: true
+
+ - it: should include tasks configuration if defined
+ set:
+ tasks: { maxConcurrentTasks: 10, maxQueuedTasks: 20 }
+ asserts:
+ - matchRegex: { path: 'data["application.properties"]', pattern:
"polaris.tasks.max-concurrent-tasks=10" }
+ - matchRegex: { path: 'data["application.properties"]', pattern:
"polaris.tasks.max-queued-tasks=20" }