  ---

  # 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
 
  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
      -
        ip: 10.34.90.42
        user: community
        pass: admin
        dp_iface_name: eth1.7
        container_type: LXC
        container_name: voltha-client-gpon-2
        onu: SCOM00001c89
        olt: EC1912001814
        c_tag: 7
        s_tag: 32
        power_switch_port: 2
        uni_id: 1
      -
        ip: 10.34.90.42
        user: community
        pass: admin
        dp_iface_name: eth1.7
        container_type: LXC
        container_name: voltha-client-gpon-3
        onu: SCOM00001c96
        olt: EC1912001814
        c_tag: 7
        s_tag: 33
        power_switch_port: 4
        uni_id: 1
    dst:
      -
        dp_iface_ip_qinq: 10.31.7.254
        ip: null
        user: null
        pass: null
        noroot_ip: 10.34.90.43
        noroot_user: community
        noroot_pass: admin
        dp_iface_name: ens3f0
        dp_iface_ip: null
        dp_iface_gateway: null
        container_type: null
        container_name: null
      -
        dp_iface_ip_qinq: 10.32.7.254
        ip: null
        user: null
        pass: null
        noroot_ip: 10.34.90.43
        noroot_user: community
        noroot_pass: admin
        dp_iface_name: ens3f0
        dp_iface_ip: null
        dp_iface_gateway: null
        container_type: null
        container_name: null
      -
        dp_iface_ip_qinq: 10.33.7.254
        ip: null
        user: null
        pass: null
        noroot_ip: 10.34.90.43
        noroot_user: community
        noroot_pass: admin
        dp_iface_name: ens3f0
        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'
  
