# 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 BBWF POD

---

kube_config: '/var/k8.conf'

nodes:
  -
    ip: '10.35.90.46'
    user: 'cord'
    pass: 'cord'
  -
    ip: '10.35.90.47'
    user: 'cord'
    pass: 'cord'
  -
    ip: '10.35.90.48'
    user: 'cord'
    pass: 'cord'

fabric_switches:
  -
    mac: 'cc:37:ab:61:80:ca'
    ip: '10.35.90.44'
    user: 'root'
    pass: 'onl'
    bngPort: '31'
    device_id: 'of:0000000000000001'

olts:
  -
    name: 'edgecore'
    ip: '10.35.90.45'
    sship: '10.35.90.45'
    user: 'root'
    pass: 'onl'
    fortygig: 'true'
    aggPort: '1'
    serial: 'EC1721000216'
    oltDebVersion: openolt_asfvolt16-3.7.4-3b190f027136e845c5850a5b1a97897ce2b74ebf-40G-NNI.deb
    board_technology: XGS-PON
    power_switch_port: 2

onus:
#  -
#    serial: 'ISKT71e80080'
  -
    serial: 'ALPHe3d1cf9d'

hosts:
  src:
#    -
#      ip: '10.35.90.48'
#      user: 'cord'
#      pass: 'cord'
#      dp_iface_name: 'eth1'
#      container_type: LXC
#      container_name: ISKT71e80080
#      onu: 'ISKT71e80080'
#      olt: 'EC1721000216'
#      c_tag: '11'
#      s_tag: '99'
#      power_switch_port: 6
#      onu_type: 'iskratel'
#      uni_id: '1'
    -
      ip: '10.35.90.47'
      user: 'cord'
      pass: 'cord'
      dp_iface_name: 'eth1'
      container_type: LXC
      container_name: ALPHe3d1cf9d
      onu: 'ALPHe3d1cf9d'
      olt: 'EC1721000216'
      c_tag: '22'
      s_tag: '99'
      power_switch_port: 1
      onu_type: 'alpha'
      uni_id: '1'
  dst:
#    -
#      ip: null
#      user: null
#      pass: null
#      noroot_ip: '10.35.90.46'
#      noroot_user: cord
#      noroot_pass: cord
#      dp_iface_name: ens6f0
#      dp_iface_ip_qinq: '10.99.11.254'
#      dp_iface_ip: null
#      dp_iface_gateway: null
#      container_type: null
#      container_name: null
    -
      ip: null
      user: null
      pass: null
      noroot_ip: '10.35.90.46'
      noroot_user: cord
      noroot_pass: cord
      dp_iface_name: ens6f0
      dp_iface_ip_qinq: '10.99.22.254'
      dp_iface_ip: null
      dp_iface_gateway: null
      container_type: null
      container_name: null

web_power_switch:
  ip: '10.35.90.49'
  user: 'cord'
  password: 'cord'
  type: 'DLI'
