---

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

# override ONOS config
onos-classic:
  config:
    netcfg: >
      {
        "apps" : {
          "org.opencord.igmpproxy" : {
            "igmpproxy":{
              "FastLeave":"true",
              "LastQueryInterval":1,
              "MaxResp":1,
              "enableIgmpProvisioning":"false",
              "globalConnectPointMode":"true",
              "globalConnectPoint" : "of:0000000000000001/3",
              "sourceDeviceAndPort":"of:0000000000000001/3",
              "outgoingIgmpVlanId":550,
              "outgoingIgmpInnerVlanId":55,
              "outgoingIgmpWithV3":"true",
              "IgmpCos":5,
              "IgmpUniCos":5,
              "PeriodicQuery":"true",
              "KeepAliveInterval":60,
              "KeepAliveCount":5,
              "requestDsIgmpPackets":false
            }
          },
          "org.opencord.dhcpl2relay" : {
            "dhcpl2relay" : {
              "useOltUplinkForServerPktInOut" : true
            }
          },
          "org.opencord.kafka": {
            "kafka" : {
              "bootstrapServers" : "{{ .Release.Name }}-kafka.{{ .Release.Namespace }}.svc:9092"
            }
          },
          "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": "true",
          "enableEapol": "false",
          "enableDhcpV6": "false",
          "enableDhcpV4": "true"
        }

# override BBSim config
servicesConfig:
  workflow: tt
  services:
    - name: hsia
      uni_tag_match: 35
      c_tag: 900
      c_tag_allocation: unique
      s_tag: 900
      s_tag_allocation: shared
      tp_id: 64
    - name: voip
      uni_tag_match: 65
      c_tag: 444
      c_tag_allocation: shared
      s_tag: 333
      s_tag_allocation: shared
      needs_dhcp: true
      tp_id: 65
      enable_mac_learning: true
      us_pon_c_tag_priority: 7
      us_pon_s_tag_priority: 7
      ds_pon_c_tag_priority: 7
      ds_pon_s_tag_priority: 7
    - name: vod
      uni_tag_match: 55
      c_tag: 55
      c_tag_allocation: shared
      s_tag: 555
      s_tag_allocation: shared
      needs_dhcp: true
      needs_igmp: true
      tp_id: 66
      enable_mac_learning: true
      us_pon_c_tag_priority: 5
      us_pon_s_tag_priority: 5
      ds_pon_c_tag_priority: 5
      ds_pon_s_tag_priority: 5
    # NOTE: the multicast service must be called MC unless you set
    # multicastServiceName to something else in org.opencord.olt.impl.Olt
    - name: MC
      c_tag: 55
      c_tag_allocation: shared
      s_tag: 550
      s_tag_allocation: shared
      tp_id: 66
      ds_pon_c_tag_priority: 5
      ds_pon_s_tag_priority: 5
