################################################################################
#   Copyright (c) 2020 Nordix Foundation.                                      #
#   Copyright © 2020 Samsung Electronics, Modifications                        #
#                                                                              #
#   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.                                             #
################################################################################
# Default values for Policy Management Service.
# This is a YAML-formatted file.
# Declare variables to be passed into your templates.

global:
  nodePortPrefix: 302
  persistence: {}

secrets:
  - uid: controller-secret
    type: basicAuth
    externalSecret: '{{ tpl (default "" .Values.a1controller.credsExternalSecret) . }}'
    login: '{{ .Values.a1controller.user }}'
    password: '{{ .Values.a1controller.password }}'
    passwordPolicy: required

image: onap/ccsdk-oran-a1policymanagementservice:1.3.2
userID: 1000 #Should match with image-defined user ID
groupID: 999 #Should match with image-defined group ID
pullPolicy: IfNotPresent
replicaCount: 1

service:
  type: NodePort
  name: a1policymanagement
  ports:
    - name: api
      port: 8081
      port_protocol: http
      nodePort: '94'

ingress:
  enabled: false
  service:
    - baseaddr: 'a1policymanagement-api'
      name: 'a1policymanagement'
      port: 8081

# SDNC Credentials are used here
a1controller:
  user: admin
  password: Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U

sdncLink: http://sdnc.onap:8282
# The information about A1-Mediator/RICs can be added here.
# The A1 policy management service supports both STD & OSC versions.
# Alternatively, the A1 simulator from ORAN-SC can also be used. It provides STD  & OSC versions for A1 termination.
# Refer source code & run in docker container : https://gerrit.o-ran-sc.org/r/admin/repos/sim/a1-interface
# Refer it/dep repo for k8s deployment: https://gerrit.o-ran-sc.org/r/admin/repos/it/dep
# Example configuration:
#rics:
#  - name: ric1
#    link: http://ric1url.url.com:1111/
#    managedElementIds:
#      - kista1
#      - kista2
#  - name: ric2
#    link: http://ric2url.url.com:2222/
#    managedElementIds:
#      - kista3
#      - kista4
rics:

liveness:
  port: api
  initialDelaySeconds: 60
  periodSeconds: 10
readiness:
  port: api
  initialDelaySeconds: 60
  periodSeconds: 10

#Resource Limit flavor -By Default using small
flavor: small

resources:
  small:
    limits:
      cpu: 2
      memory: 600Mi
    requests:
      cpu: 1
      memory: 300Mi
  large:
    limits:
      cpu: 4
      memory: 8Gi
    requests:
      cpu: 2
      memory: 4Gi
  unlimited: {}

## Persist data to a persistent 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)
  ##
  # storageClass: "-"
  accessMode: ReadWriteOnce
  size: 2Gi
  mountPath: /dockerdata-nfs
  mountSubPath: nonrtric/policymanagementservice

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