---
# 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
  - 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: 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: sbi_network }
