---
# 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
  - s1mme_network
  - sbi_network
  - nbi_network

test_services:
  - internetemulator
  - vmme
  - vspgwc
  - sdncontroller
  - vspgwu

test_ports:
  - { vm: vmme, network: management }
  - { vm: vmme, network: s11_network }
  - { vm: vmme, network: s1mme_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 }
  - { vm: internetemulator, network: management }
  - { vm: internetemulator, network: sgi_network }
