  ---

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

  # Automated deployment configuration for Tucson pod

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

  # This tells the control node how to reach the Kubernetes nodes.
  nodes:
    -
      ip: '10.34.90.43'
      user: 'community'
      pass: 'admin'
    -
      ip: '10.34.90.41'
      user: 'community'
      pass: 'admin'
    -
      ip: '10.34.90.42'
      user: 'community'
      pass: 'admin'

  fabric_switches:
    -
      mac: '8c:ea:1b:a7:29:72'
      ip: 10.34.90.55
      user: root
      pass: onl
      bngPort: 157
      device_id: 'of:0000000000000001'

  olts:
  # Gpon OLT
    -
      ip:  10.34.90.50
      sship:  10.34.90.50
      user: root
      pass: onl
      fortygig: False
      aggPort: 2
      serial: EC1912001814
      oltDebVersion: openolt_asgvolt64-3.4.9-e2a9597f3d690fe3a0ea0df244571dfc9e8c2833-100G-NNI.deb
      board_technology: GPON

  # XGS-PON OLT
    -
      ip: 10.34.90.51
      sship: 10.34.90.51
      user: root
      pass: onl
      fortygig: False
      aggPort: 1
      serial: EC1729003539
      oltDebVersion: openolt_asfvolt16-3.4.9-e2a9597f3d690fe3a0ea0df244571dfc9e8c2833-100G-NNI.deb
      board_technology: XGS-PON

  hosts:
    src:
      #GPON ONU
      -
        ip: 10.34.90.43
        user: community
        pass: admin
        dp_iface_name: eth1.7
        container_type: LXC
        container_name: SCOM00001c82
        onu: SCOM00001c82
        olt: EC1912001814
        c_tag: 7
        s_tag: 31
        power_switch_port: 1
        uni_id: 1

      #XGSPON ONU
      -
        ip: 127.0.0.1
        user: community
        pass: admin
        dp_iface_name: eth1.7
        container_type: LXC
        container_name: ALPHe3d1cf5c
        onu: ALPHe3d1cf5c
        olt: EC1729003539
        c_tag: 7
        s_tag: 12
        power_switch_port: 6
        uni_id: 1
      -
        ip: 127.0.0.1
        user: community
        pass: admin
        dp_iface_name: eth1.7
        container_type: LXC
        container_name: ALPHe3a69d03
        onu: ALPHe3a69d03
        olt: EC1729003539
        c_tag: 7
        s_tag: 11
        power_switch_port: 8
        uni_id: 1

    dst:
      -
        dp_iface_ip_qinq: 10.31.7.254
        ip: null
        user: null
        pass: null
        dp_iface_name: null
        dp_iface_ip: null
        dp_iface_gateway: null
        container_type: null
        container_name: null
      -
        dp_iface_ip_qinq: 10.12.7.254
        ip: null
        user: null
        pass: null
        dp_iface_name: null
        dp_iface_ip: null
        dp_iface_gateway: null
        container_type: null
        container_name: null
      -
        dp_iface_ip_qinq: 10.11.7.254
        ip: null
        user: null
        pass: null
        dp_iface_name: null
        dp_iface_ip: null
        dp_iface_gateway: null
        container_type: null
        container_name: null

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