---
# Copyright 2017-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.

replicas:
  vcore: 1
  vcli: 1
  ofagent: 1
  netconf: 1
  envoy_for_etcd: 1
  alarm_generator: 1

node_ports:
  vcli_port: 30110

services:
  envoy:
    serviceType: NodePort
    serviceInfo:
      ports:
        - name: rest
          port: 8882
          targetPort: 8882
          nodePort: 30125
        - name: mystery
          port: 8001
          targetPort: 8001
        - name: mystery2
          port: 8443
          targetPort: 8443
          nodePort: 32443
        - name: grpc
          port: 50555
          targetPort: 50555

etcd:
  operator:
    enabled: true

etcd-operator:
  customResources:
    createEtcdClusterCRD: true

kafkaReleaseName: cord-kafka
etcdReleaseName: voltha-etcd

consul:
  enabled: false

images:
  vcore:
    repository: 'voltha/voltha-voltha'
    tag: '{{ .Chart.AppVersion }}'
    pullPolicy: 'Always'

  vcli:
    repository: 'voltha/voltha-cli'
    tag: '{{ .Chart.AppVersion }}'
    pullPolicy: 'Always'

  ofagent:
    repository: 'voltha/voltha-ofagent'
    tag: '{{ .Chart.AppVersion }}'
    pullPolicy: 'Always'

  netconf:
    repository: 'voltha/voltha-netconf'
    tag: '{{ .Chart.AppVersion }}'
    pullPolicy: 'Always'

  envoy_for_etcd:
    repository: 'voltha/voltha-envoy'
    tag: '{{ .Chart.AppVersion }}'
    pullPolicy: 'Always'

  alarm_generator:
    repository: 'voltha/voltha-alarm-generator'
    tag: '{{ .Chart.AppVersion }}'
    pullPolicy: 'Always'

  freeradius:
    repository: 'tpdock/freeradius'
    tag: '2.2.9'
    pullPolicy: 'Always'

  http_backend:
    repository: 'gcr.io/google_containers/defaultbackend'
    tag: '1.4'
    pullPolicy: 'Always'

  ingress_controller:
    repository: 'quay.io/kubernetes-ingress-controller/nginx-ingress-controller'
    tag: '0.10.2'
    pullPolicy: 'Always'


# Need the namespace global for kafka
global:
  namespace: voltha
  registry: ''

vcli_args:
- "/cli/cli/setup.sh"
- "-C consul:8500"
- "-g voltha:50555"
- "-s voltha:18880"
- "-G"

ofagent_args:
- "/ofagent/ofagent/main.py"
- "--consul=consul.$(NAMESPACE).svc.cluster.local:8500"
- "--controller=onos-openflow.default.svc.cluster.local:6653"
- "--grpc-endpoint=vcore.$(NAMESPACE).svc.cluster.local:50556"

netconf_args:
- "/netconf/netconf/main.py"
- "--consul=consul:8500"
- "--grpc-endpoint=voltha:50555"

# set alarm_generator_enable to true to enable alarm generator container.
# uncomment the intf_id and onu_id arguments if no olt is physically present, and a fake onu_id should be used.

alarm_generator_enable: false
alarm_generator_args:
- "--consul=consul:8500"
- "--grpc-endpoint=voltha:50555"
- "--global_request"
- "--rate=1"
- "--duration=2"
#- "--intf_id=0"
#- "--onu_id=00012bc90d6552dd"
