# Copyright © 2020 highstreet technologies GmbH
#
# 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:
  aafEnabled: true
  nodePortPrefix: 322
  k8scluster: svc.cluster.local
#################################################################
# Application configuration defaults.
#################################################################
# application image
image: "onap/sdnc-web-image:2.4.2"
pullPolicy: Always

config:
  sdncChartName: sdnc
  webProtocol: HTTPS
  webPlainProtocol: HTTP
  webPort: 8443
  webPlainPort: 8080
  sdnrProtocol: https
  sdnrPlainProtocol: http
  sdnrHost: "sdnc"
  sdnrPlainHost: "sdnc"
  sdnrPort: "8443"
  sdnrPlainPort : "8080"
  sslCertDir: "/opt/app/osaaf/local/certs"
  sslCertiticate: "cert.pem"
  sslCertKey: "key.pem"
  oauth:
    enabled: false
    odluxRbac:
      enabled: false
  transportpce:
    enabled: false
    transportpceUrl: http://transportpce.transportpce:8181
  topologyserver:
    enabled: false
    topologyserverUrl: http://toplogy-api-service.topology:3001
    tileserverUrl: https://tile.openstreetmap.org


#################################################################
# aaf configuration defaults.
#################################################################
certInitializer:
  nameOverride: sdnc-web-cert-initializer
  fqdn: "sdnc"
  app_ns: "org.osaaf.aaf"
  fqi: "sdnc@sdnc.onap.org"
  fqi_namespace: "org.onap.sdnc"
  public_fqdn: "sdnc.onap.org"
  aafDeployFqi: "deployer@people.osaaf.org"
  aafDeployPass: demo123456!
  cadi_latitude: "38.0"
  cadi_longitude: "-72.0"
  credsPath: /opt/app/osaaf/local
  aaf_add_config: |
    cd /opt/app/osaaf/local
    mkdir -p certs
    keytool -exportcert -rfc -file certs/cacert.pem -keystore {{ .Values.fqi_namespace }}.trust.jks -alias ca_local_0 -storepass $cadi_truststore_password
    openssl pkcs12 -in {{ .Values.fqi_namespace }}.p12 -out certs/cert.pem -passin pass:$cadi_keystore_password_p12 -passout pass:$cadi_keystore_password_p12
    cp {{ .Values.fqi_namespace }}.key certs/key.pem
    chmod -R 755 certs

# default number of instances
replicaCount: 1

nodeSelector: {}

affinity: {}

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

readiness:
  initialDelaySeconds: 60
  periodSeconds: 10

service:
  name: sdnc-web
  suffix: service
  type: NodePort
  sessionAffinity: ClientIP
  # for liveness and readiness probe only
  # internalPort:
  internalPort: 8443
  internalPlainPort: 8080
  ports:
  - name: http-sdnc-web
    port: "8443"
    plain_port: "8080"
    port_protocol: http
    nodePort: "05"

#ingress:
#  enabled: false

#Resource limit flavor -By default using small
flavor: small
#segregation for different environment (small and large)
resources:
  small:
    limits:
      cpu: 1
      memory: 1Gi
    requests:
      cpu: 0.5
      memory: 500Mi
  large:
    limits:
      cpu: 2
      memory: 2Gi
    requests:
      cpu: 1
      memory: 1Gi
  unlimited: {}

#Pods Service Account
serviceAccount:
  nameOverride: sdnc-web
  roles:
    - read
