# Copyright 2020-present Open Networking Foundation
#
# 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 voltha-infra.
# This is a YAML-formatted file.

global:
  image_registry: ''
  image_org: "voltha/"
  image_tag: ~
  image_pullPolicy: "Always"

# components config
onos-classic:
  enabled: true
  replicas: 1
  image:
    pullPolicy: Always
    repository: voltha/voltha-onos
    tag: 5.1.1
  apps:
    - org.onosproject.lldpprovider
    - org.onosproject.openflow-base
    - org.onosproject.gui2
    - org.onosproject.drivers
    - org.onosproject.mcast
    - org.onosproject.segmentrouting
    - org.opencord.kafka
    - org.opencord.sadis
    - org.opencord.dhcpl2relay
    - org.opencord.igmpproxy
    - org.opencord.mcast
    - org.opencord.olt
    - org.opencord.aaa
  java_opts: >
    -XX:+UseG1GC
    -XX:MaxGCPauseMillis=200
    -XX:-UseContainerSupport
    -Dkaraf.log.console=INFO
    -Dds.lock.timeout.milliseconds=10000
    -Dlog4j2.formatMsgNoLookups=true
  atomix:
    replicas: 0
    persistence:
      enabled: false
    java_opts: >
      -Xmx2G
      -XX:-UseContainerSupport
  config:
    enabled: true
    reconcile_mode: false
    netcfg: >
      {
        "apps" : {
          "org.opencord.dhcpl2relay" : {
            "dhcpl2relay" : {
              "useOltUplinkForServerPktInOut" : true
            }
          },
          "org.opencord.kafka": {
            "kafka" : {
              "bootstrapServers" : "{{ .Release.Name }}-kafka.{{ .Release.Namespace }}.svc:9092"
            }
          },
          "org.opencord.aaa" : {
            "AAA": {
              "radiusConnectionType" : "socket",
              "radiusHost": "{{ .Release.Name }}-freeradius.{{ .Release.Namespace }}.svc",
              "radiusServerPort": "1812",
              "radiusSecret": "SECRET"
            }
          },
          "org.opencord.sadis": {
            "sadis": {
              "integration": {
                "url": "http://bbsim-sadis-server.{{ .Release.Namespace }}.svc:58080/subscribers/%s",
                "cache": {
                  "enabled": true,
                  "maxsize": 50,
                  "ttl": "PT1m"
                }
              }
            },
            "bandwidthprofile": {
              "integration": {
                "url": "http://bbsim-sadis-server.{{ .Release.Namespace }}.svc:58080/profiles/%s",
                "cache": {
                  "enabled": true,
                  "maxsize": 50,
                  "ttl": "PT1m"
                }
              }
            }
          }
        }
      }
    componentConfig:
      "org.opencord.olt.impl.OltFlowService": >
        {
          "enableDhcpOnNni": "true",
          "defaultTechProfileId": "64",
          "enableIgmpOnNni": "false",
          "enableEapol": "true",
          "enableDhcpV6": "false",
          "enableDhcpV4": "true"
        }
      "org.onosproject.provider.lldp.impl.LldpLinkProvider": >
        {
          "enabled": "false"
        }
      "org.onosproject.net.flow.impl.FlowRuleManager": >
        {
          "purgeOnDisconnection": "false"
        }
      "org.onosproject.net.meter.impl.MeterManager": >
        {
          "purgeOnDisconnection": "false"
        }
      "org.onosproject.net.group.impl.GroupManager": >
        {
          "purgeOnDisconnection": "false"
        }
      "org.onosproject.net.device.impl.DeviceManager": >
        {
          "roleTimeoutSeconds": "120"
        }

bbsim-sadis-server:
  enabled: true
  replicas: 1

radius:
  enabled: true

etcd:
  enabled: true

  # ETCD defrag creates a CronJob that runs "etcdctl defrag --cluster"
  # on a defined schedule
  defrag:
    enabled: false
    schedule: "*/5 * * * *"
    image:
      registry: '{{ .Values.global.image_registry }}'
      repository: 'opennetworking/utils'
      tag: 0.2.0
      pullPolicy: 'IfNotPresent'

  ingress:
    enabled: false
    annotations:
      kubernetes.io/ingress.class: "nginx"
      nginx.ingress.kubernetes.io/ssl-redirect: "true"
      nginx.ingress.kubernetes.io/backend-protocol: "GRPC"
      nginx.ingress.kubernetes.io/grpc-backend: "true"
    enableVirtualHosts: false
    hosts:
      - host:
        paths:
          - "/etcdserverpb.KV/"
  auth:
    rbac:
      create: false
  persistence:
    enabled: false
  statefulset:
    replicaCount: 1
  autoCompactionMode: "revision"
  autoCompactionRetention: 1
  extraEnvVars:
    - name: ETCD_ELECTION_TIMEOUT
      value: "5000"
    - name: ETCD_HEARTBEAT_INTERVAL
      value: "1000"

kafka:
  enabled: true
  replicaCount: 1
  persistence:
    enabled: false
  zookeeper:
    replicaCount: 1
    persistence:
      enabled: false
  service:
    port: 9092

voltha-tracing:
  enabled: false
  tracing:
    maxTraces: 500000

efk:
  enabled: false

# START EFK Setup to push voltha logs
# elasticstack config
# ref: https://github.com/elastic/helm-charts/tree/7.7.0/elasticsearch
elasticsearch:
  replicas: 1
  minimumMasterNodes: 1
  # set cpu and memory configuration
  resources:
    requests:
      cpu: "400m"
      memory: "1Gi"
    limits:
      cpu: "1000m"
      memory: "2Gi"
  # setup persistence volume.By default persistence volumeclaim is disabled
  volumeClaimTemplate:
    accessModes: ["ReadWriteOnce"]
    resources:
      requests:
        storage: 5Gi
  persistence:
    enabled: false
  # setup cluster health status as yellow
  clusterHealthCheckParams: "wait_for_status=yellow&timeout=1s"

# kibana config
# ref: https://github.com/elastic/helm-charts/tree/7.7.0/kibana
kibana:
  elasticsearchHosts: "http://elasticsearch-master:9200"

# fluentd-elasticsearch config
# ref: https://github.com/kiwigrid/helm-charts/tree/master/charts/fluentd-elasticsearch
fluentd-elasticsearch:
  elasticsearch:
    # set elasticsearch host
    hosts: ["elasticsearch-master:9200"]
    sslVerify: false

redis:
  enabled: false
  auth:
    enabled: false
  volumePermissions:
    enabled: true
  networkPolicy:
    enabled: false
  replica:
    replicaCount: 1
  sentinel:
    enabled: true
    masterSet: sebaRedis
  commonConfiguration: |-
    # The filename where to dump the DB
    dbfilename dump.rdb
