# Copyright © 2018 Amdocs, AT&T, Bell Canada
# Modifications Copyright (C) 2021 Bell Canada.
#
# 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.

#################################################################
# Global configuration defaults.
#################################################################
global:
  nodePortPrefix: 302
  persistence: {}

#################################################################
# Secrets metaconfig
#################################################################
secrets:
  - uid: '{{ include "common.postgres.secret.rootPassUID" . }}'
    type: password
    externalSecret: '{{ tpl (default "" .Values.config.pgRootPasswordExternalSecret) . }}'
    password: '{{ .Values.config.pgRootPassword }}'
  - uid: '{{ include "common.postgres.secret.userCredentialsUID" . }}'
    type: basicAuth
    externalSecret: '{{ tpl (default "" .Values.config.pgUserExternalSecret) . }}'
    login: '{{ .Values.config.pgUserName }}'
    password: '{{ .Values.config.pgUserPassword }}'
  - uid: '{{ include "common.postgres.secret.primaryPasswordUID" . }}'
    type: password
    externalSecret: '{{ tpl (default "" .Values.config.pgPrimaryPasswordExternalSecret) . }}'
    password: '{{ .Values.config.pgPrimaryPassword }}'

#################################################################
# Application configuration defaults.
#################################################################

# bitnami image doesn't support well single quote in password
passwordStrengthOverride: basic

pullPolicy: Always

# application configuration
config:
  pgUserName: testuser
  pgDatabase: userdb
  pgDataPath: data
  # pgPrimaryPassword: password
  # pgUserPassword: password
  # pgRootPassword: password

container:
  name:
    primary: pgset-primary
    replica: pgset-replica

nodeSelector: {}

affinity: {}

# probe configuration parameters
liveness:
  initialDelaySeconds: 300
  periodSeconds: 10
  timeoutSeconds: 5
  # necessary to disable liveness probe when setting breakpoints
  # in debugger so K8s doesn't restart unresponsive container
  enabled: true

readiness:
  initialDelaySeconds: 10
  periodSeconds: 10

## Persist data to a persitent volume
persistence:
  enabled: true

  ## A manually managed Persistent Volume and Claim
  ## Requires persistence.enabled: true
  ## If defined, PVC must be created manually before volume will be bound
  # existingClaim:
  volumeReclaimPolicy: Retain

  ## database data Persistent Volume Storage Class
  ## If defined, storageClassName: <storageClass>
  ## If set to "-", storageClassName: "", which disables dynamic provisioning
  ## If undefined (the default) or set to null, no storageClassName spec is
  ##   set, choosing the default provisioner.  (gp2 on AWS, standard on
  ##   GKE, AWS & OpenStack)
  accessMode: ReadWriteOnce
  size: 1Gi
  mountPath: /dockerdata-nfs
  mountSubPath: postgres/data
  mountInitPath: postgres

service:
  type: ClusterIP
  name: pgset
  portName: tcp-postgres
  externalPort: 5432
  internalPort: 5432
  type2: ClusterIP
  name2: tcp-pgset-primary
  portName2: tcp-postgres
  externalPort2: 5432
  internalPort2: 5432
  type3: ClusterIP
  name3: tcp-pgset-replica
  portName3: tcp-postgres
  externalPort3: 5432
  internalPort3: 5432

ingress:
  enabled: false

flavor: small

#resources: {}
# We usually recommend not to specify default resources and to leave this as a conscious
# choice for the user. This also increases chances charts run on environments with little
# resources, such as Minikube. If you do want to specify resources, uncomment the following
# lines, adjust them as necessary, and remove the curly braces after 'resources:'.
#
# Example:
# Configure resource requests and limits
# ref: http://kubernetes.io/docs/user-guide/compute-resources/
# Minimum memory for development is 2 CPU cores and 4GB memory
# Minimum memory for production is 4 CPU cores and 8GB memory
resources:
  small:
    limits:
      cpu: 100m
      memory: 300Mi
    requests:
      cpu: 10m
      memory: 90Mi
  large:
    limits:
      cpu: 2
      memory: 4Gi
    requests:
      cpu: 1
      memory: 2Gi
  unlimited: {}

metrics:
  enabled: false
  ## Bitnami Postgres Prometheus exporter image
  ## ref: https://hub.docker.com/r/bitnami/postgres-exporter/tags/
  ##
  image: bitnami/postgres-exporter:0.11.1
  pullPolicy: Always
  ports:
  - name: tcp-metrics
    port: 9187
  ## Postgres exporter additional command line flags
  ## Can be used to specify command line flags
  ## E.g.:
  ## extraFlags:
  ##   - --collect.binlog_size
  ##
  extraFlags: []
  ## Postgres Prometheus exporter containers' resource requests and limits
  ## ref: http://kubernetes.io/docs/user-guide/compute-resources/
  ##
  resources:
    # We usually recommend not to specify default resources and to leave this as a conscious
    # choice for the user. This also increases chances charts run on environments with little
    # resources, such as Minikube. If you do want to specify resources, uncomment the following
    # lines, adjust them as necessary, and remove the curly braces after 'resources:'.
    limits:
      cpu: 0.5
      memory: 256Mi
    requests:
      cpu: 0.5
      memory: 256Mi
  ## Postgres metrics container's liveness and readiness probes
  ## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes
  ##
  postgresUser: "postgres"
  livenessProbe:
    enabled: true
    initialDelaySeconds: 30
    periodSeconds: 10
    timeoutSeconds: 180
    successThreshold: 1
    failureThreshold: 3
  readinessProbe:
    enabled: true
    initialDelaySeconds: 30
    periodSeconds: 10
    timeoutSeconds: 180
    successThreshold: 1
    failureThreshold: 3
  ## Postgres Prometheus exporter service parameters
  ##
  service:
    type2: ClusterIP
    port2: 9187
    type3: ClusterIP
    port3: 9187
    annotations:
      prometheus.io/scrape: "true"
      prometheus.io/port: "9187"
  serviceMonitor:
    enabled: false
    basicAuth:
      enabled: false
    ## Namespace in which Prometheus is running
    ##
    ## namespace: monitoring
    ##
    ## Interval at which metrics should be scraped.
    ## ref: https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#endpoint
    ##
    ## interval: 10s
    ##
    ## Timeout after which the scrape is ended
    ## ref: https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#endpoint
    ##
    ## scrapeTimeout: 10s
    ## Add your label under which prometheus is discovering resources
    ## labels:
      ## release: kube-prometheus-stack
    ##
    ## ServiceMonitor selector labels
    ## ref: https://github.com/bitnami/charts/tree/master/bitnami/prometheus-operator#prometheus-configuration
    ##
    ## selector:
      ## monitoring: enabled
    ##
    ## RelabelConfigs to apply to samples before scraping
    ## ref: https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#relabelconfig
    ## Value is evalued as a template
    ##
    relabelings: []
    ##
    ## MetricRelabelConfigs to apply to samples before ingestion
    ## ref: https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#relabelconfig
    ## Value is evalued as a template
    ##
    metricRelabelings: []