# Copyright © 2020, Nordix Foundation, Orange
#
# 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:
  mariadbGalera: &mariadbGalera
    #This flag allows EJBCA to instantiate its own mariadb-galera cluster
    localCluster: false
    service: mariadb-galera
    internalPort: 3306
    nameOverride: mariadb-galera

secrets:
  - uid: ejbca-db-secret
    name: &ejbca-db-secret '{{ include "common.release" . }}-ejbca-db-secret'
    type: basicAuth
    externalSecret: '{{ tpl (default "" .Values.config.db.userCredentialsExternalSecret) . }}'
    login: '{{ .Values.config.db.userName }}'
    password: '{{ .Values.config.db.userPassword }}'
  - uid: ejbca-server-ra-iak
    name: '{{ include "common.release" . }}-ejbca-ra-iak'
    type: password
    password: '{{ .Values.config.ejbca.raIak }}'
  - uid: ejbca-server-client-iak
    name: '{{ include "common.release" . }}-ejbca-client-iak'
    type: password
    password: '{{ .Values.config.ejbca.clientIak }}'

# application configuration
config:
  db:
    userName: ejbca
    # userPassword: password
    # userCredentialsExternalSecret: some-secret
  ejbca: {}
    # raIak: mypassword
    # clientIak: mypassword

mysqlDatabase: &dbName ejbca

#################################################################
# Application configuration defaults.
#################################################################
# application configuration
replicaCount: 1

ejbca:
  image: primekey/ejbca-ce:7.4.3.2
pullPolicy: Always

mariadb-galera:
  db:
    externalSecret: *ejbca-db-secret
    name: *dbName
  nameOverride: &ejbca-galera ejbca-galera
  service:
    name: ejbca-galera
    portName: ejbca-galera
    internalPort: 3306
  replicaCount: 1
  persistence:
    enabled: true
    mountSubPath: ejbca/maria/data
  serviceAccount:
    nameOverride: *ejbca-galera

mariadb-init:
  config:
    userCredentialsExternalSecret: *ejbca-db-secret
    mysqlDatabase: *dbName
  nameOverride: ejbca-config

nodeSelector: {}

affinity: {}

# probe configuration parameters
liveness:
  path: /ejbca/publicweb/healthcheck/ejbcahealth
  port: 8443
  initialDelaySeconds: 180
  periodSeconds: 30

readiness:
  path: /ejbca/publicweb/healthcheck/ejbcahealth
  port: 8443
  initialDelaySeconds: 180
  periodSeconds: 30

service:
  type: ClusterIP
  both_tls_and_plain: true
  ports:
    - name: api
      port: 8443
      plain_port: 8080
      port_protocol: http

# Resource Limit flavor -By Default using small
flavor: unlimited
# Segregation for Different environment (Small and Large)
resources:
  small:
    limits:
      cpu: 1500m
      memory: 1536Mi
    requests:
      cpu: 10m
      memory: 750Mi
  large:
    limits:
      cpu: 2
      memory: 2Gi
    requests:
      cpu: 20m
      memory: 1Gi
  unlimited: {}

#Pods Service Account
serviceAccount:
  nameOverride: ejbca
  roles:
    - read
