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

pull_docker_registry:
k8s_docker_registry: 'k8s.gcr.io/'

imagePullPolicy: IfNotPresent

replicas:
  vcore: 1
  vcli: 1
  ofagent: 1
  netconf: 1
  envoy_for_etcd: 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
        - name: grpc
          port: 50555
          targetPort: 50555

etcd-operator:
  customResources:
    createEtcdClusterCRD: true

envoyForEtcdImage: 'voltha/voltha-envoy:latest'
freeradiusImage: 'tpdock/freeradius:latest'
grafanaImage: 'kamon/grafana_graphite:3.0'
netconfImage: 'voltha/voltha-netconf:latest'
ofagentImage: 'voltha/voltha-ofagent:latest'
dashdImage: 'voltha/voltha-dashd:latest'
shovelImage: 'voltha/voltha-shovel:latest'
vcliImage: 'voltha/voltha-cli:latest'
vcoreImage: 'voltha/voltha-voltha:latest'

kafka:
  enabled: true
  persistence:
    enabled: false
  zookeeper:
    persistence:
      enabled: false
etcd:
  operator:
    enabled: true
consul:
  enabled: false


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

stats:
  #dashd_args:
  #- "/dashd/dashd/main.py"
  #- "--kafka={{ .Release.Name }}-kafka.default.svc.cluster.local"
  #- "--grafana_url=http://admin:admin@grafana.$(NAMESPACE).svc.cluster.local:80/api"
  #- "--topic=voltha.kpis"
  #- "--consul=consul:8500"

  #shovel_args:
  #- "/shovel/shovel/main.py"
  #- "--kafka={{ .Release.Name }}-kafka.default.svc.cluster.local"
  #- "--host=grafana.voltha.svc.cluster.local"
  #- "--topic=voltha.kpis"
  #- "--consul=consul:8500"

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

#vcore_etcd_args:
#- "voltha/voltha/main.py"
#- "-v"
#- "--etcd=etcd-restore-operator.default.svc.cluster.local:2379"
#- "--kafka={{ .Release.Name }}-kafka.default.svc.cluster.local"
#- "--rest-port=8880"
#- "--grpc-port=50556"
#- "--interface=eth1"
#- "--backend=etcd"
#- "--pon-subnet=10.38.0.0/12"
#- "--ponsim-comm=grpc"

ofagent_args:
- "/ofagent/ofagent/main.py"
- "-v"
- "--consul=consul.$(NAMESPACE).svc.cluster.local:8500"
- "--controller=onos-voltha-openflow:6653"
- "--grpc-endpoint=vcore.$(NAMESPACE).svc.cluster.local:50556"
- "--enable-tls"
- "--key-file=/ofagent/pki/voltha.key"
- "--cert-file=/ofagent/pki/voltha.crt"

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