# Copyright 2017-2023 Open Networking Foundation (ONF) and the ONF Contributors
#
# 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.

# Automated deployment configuration for Flex POD 1 , olt/onu are connected to this

---
# Change default values in tests
ONOS_REST_PORT: 30120
ONOS_SSH_PORT: 30115
OLT_PORT: 9191
KUBERNETES_CONF: $HOME/.kube/kind-config-voltha-minimal

nodes:
  -
    ip: '10.34.90.44'
    user: 'community'
    pass: 'admin'
  -
    ip: '10.34.90.45'
    user: 'community'
    pass: 'admin'
  -
    ip: '10.34.90.46'
    user: 'community'
    pass: 'admin'

fabric_switches: []
# The switch is shared across 2 PODs, thus is externally controlled
#  -
#    mac: '8c:ea:1b:a7:29:72'
#    ip: 10.34.90.55
#    user: root
#    pass: onl
#    bngPort: 157
#    device_id: 'of:0000000000000001'

olts:
# XGSPON OLT
  -
    ip:  10.34.90.53
    sship:  10.34.90.53
    fortygig: False
    aggPort: 6
    user: root
    pass: onl
    serial: S210Z14009247
    oltDebVersion: openolt_sda3016ss-3.7.2-dev-xgspon-20220520.deb
    board_technology: XGS-PON

hosts:
  src:
    -
      ip: '10.34.90.46'
      user: 'community'
      pass: 'admin'
      dp_iface_name: 'eth1.35'
      container_type: LXC
      container_name: ZYXE8CAC752C
      onu: 'ZYWN8cac752c'
      olt: 'S210Z14009247'
      c_tag: '801'
      s_tag: '211'
      power_switch_port: 4
      onu_type: 'zyxel'
      service_type: 'hsia'
      uni_id: '1'
    -
      ip: '10.34.90.46'
      user: 'community'
      pass: 'admin'
      dp_iface_name: 'eth1.65'
      container_type: LXC
      container_name: ZYXE8CAC752C
      onu: 'ZYWN8cac752c'
      olt: 'S210Z14009247'
      c_tag: '444'
      s_tag: '433'
      power_switch_port: 4
      onu_type: 'zyxel'
      service_type: 'voip'
      uni_id: '1'
    -
      ip: '10.34.90.46'
      user: 'community'
      pass: 'admin'
      dp_iface_name: 'eth1.55'
      container_type: LXC
      container_name: ZYXE8CAC752C
      onu: 'ZYWN8cac752c'
      olt: 'S210Z14009247'
      c_tag: '55'
      s_tag: '655'
      power_switch_port: 4
      onu_type: 'zyxel'
      service_type: 'vod'
      uni_id: '1'
    -
      ip: '10.34.90.46'
      user: 'community'
      pass: 'admin'
      dp_iface_name: 'eth1.55'
      container_type: LXC
      container_name: ZYXE8CAC752C
      onu: 'ZYWN8cac752c'
      olt: 'S210Z14009247'
      c_tag: '55'
      s_tag: '650'
      power_switch_port: 4
      onu_type: 'zyxel'
      mcast_rg: '10.12.6.3/24'
      mcast_grp_subnet_mask: '224.0.0.0/4'
      service_type: 'mcast'
      uni_id: '1'
  dst:
    -
      ip: null
      user: null
      pass: null
      dp_iface_name: ens1f0
      dp_iface_ip_qinq: '10.12.1.254'
      dp_iface_ip: null
      dp_iface_gateway: null
      container_type: null
      container_name: null
    -
      ip: null
      user: null
      pass: null
      dp_iface_name: ens1f0
      dp_iface_ip_qinq: '10.12.4.254'
      dp_iface_ip: null
      dp_iface_gateway: null
      container_type: null
      container_name: null
    -
      ip: null
      user: null
      pass: null
      noroot_ip: '10.34.90.43'
      noroot_user: community
      noroot_pass: admin
      dp_iface_name: ens1f0
      dp_iface_ip_qinq: '10.12.5.254'
      dp_iface_ip: null
      dp_iface_gateway: null
      container_type: null
      container_name: null
    -
      ip: null
      user: null
      pass: null
      bng_ip: '10.34.90.43'
      bng_user: community
      bng_pass: admin
      dp_iface_name: ens1f0
      dp_iface_ip_qinq: '225.22.0.2'
      dp_iface_ip: null
      dp_iface_gateway: null
      container_type: null
      container_name: null

web_power_switch:
  ip: '10.34.90.61'
  user: 'admin'
  password: 'secret'
  type: 'EPC'