# 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: 'node-4.berlin-lab.lfbroadband.org'
    user: 'community'
    pass: 'admin'
  -
    ip: 'node-5.berlin-lab.lfbroadband.org'
    user: 'community'
    pass: 'admin'
  -
    ip: 'node-6.berlin-lab.lfbroadband.org'
    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:  zyxel-olt.berlin-lab.lfbroadband.org
    sship:  zyxel-olt.berlin-lab.lfbroadband.org
    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: node-6.berlin-lab.lfbroadband.org
      user: community
      pass: admin
      dp_iface_name: eth1.35
      container_type: LXC
      container_name: ZYXE8CABE30B
      onu: ZYXE8cabe30b
      olt: S210Z14009247
      c_tag: 801
      s_tag: 111
      power_switch_port: 5
      onu_type: zyxel
      service_type: hsia
      uni_id: 1
    -
      ip: node-6.berlin-lab.lfbroadband.org
      user: community
      pass: admin
      dp_iface_name: eth1.65
      container_type: LXC
      container_name: ZYXE8CABE30B
      onu: ZYXE8cabe30b
      olt: S210Z14009247
      c_tag: 444
      s_tag: 333
      power_switch_port: 5
      onu_type: zyxel
      service_type: voip
      uni_id: 1
    -
      ip: node-6.berlin-lab.lfbroadband.org
      user: community
      pass: admin
      dp_iface_name: eth1.55
      container_type: LXC
      container_name: ZYXE8CABE30B
      onu: ZYXE8cabe30b
      olt: S210Z14009247
      c_tag: 55
      s_tag: 555
      power_switch_port: 5
      onu_type: zyxel
      service_type: vod
      uni_id: 1
    -
      ip: node-6.berlin-lab.lfbroadband.org
      user: community
      pass: admin
      dp_iface_name: eth1.55
      container_type: LXC
      container_name: ZYXE8CABE30B
      onu: ZYXE8cabe30b
      olt: S210Z14009247
      c_tag: 55
      s_tag: 550
      power_switch_port: 5
      onu_type: zyxel'
      mcast_rg: '10.11.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: enp7s0
      dp_iface_ip_qinq: 10.11.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: enp7s0
      dp_iface_ip_qinq: 10.11.4.254
      dp_iface_ip: null
      dp_iface_gateway: null
      container_type: null
      container_name: null
    -
      ip: null
      user: null
      pass: null
      noroot_ip: bng.berlin-lab.lfbroadband.org
      noroot_user: community
      noroot_pass: admin
      dp_iface_name: enp7s0
      dp_iface_ip_qinq: 10.11.5.254
      dp_iface_ip: null
      dp_iface_gateway: null
      container_type: null
      container_name: null
    -
      ip: null
      user: null
      pass: null
      bng_ip: bng.berlin-lab.lfbroadband.org
      bng_user: community
      bng_pass: admin
      dp_iface_name: enp7s0
      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: 'pdu01.berlin-lab.lfbroadband.org'
  user: 'admin'
  password: 'secret'
  type: 'EPC'