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

# test-mcord-base/defaults/main.yml

head_cord_profile_dir: "/opt/cord_profile"

xos_ui_port: 9000

xos_admin_user: "xosadmin@opencord.org"
maas_xos_admin_pass: "{{ lookup('file', '/opt/credentials/xosadmin@opencord.org') }}"

test_networks:
  - management
  - sgi_network
  - s11_network
  - spgw_network
#  - sbi_network
#  - nbi_network

test_services:
  - venb
  - vspgwc
#  - sdncontroller
  - vspgwu

test_ports:
  - { vm: venb, network: management }
  - { vm: venb, network: s11_network }
  - { vm: venb, network: sgi_network }
  - { vm: venb, network: s1u_network }
  - { vm: vspgwc, network: management }
  - { vm: vspgwc, network: s11_network }
  - { vm: vspgwc, network: spgw_network }
#  - { vm: vspgwc, network: nbi_network }
#  - { vm: sdncontroller, network: management }
#  - { vm: sdncontroller, network: nbi_network }
#  - { vm: sdncontroller, network: sbi_network }
  - { vm: vspgwu, network: management }
  - { vm: vspgwu, network: s1u_network }
  - { vm: vspgwu, network: sgi_network }
  - { vm: vspgwu, network: spgw_network }
#  - { vm: vspgwu, network: sbi_network }
