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

---

- name: Include vars
  hosts: all
  tasks:
    - name: Include variables
      include_vars: "{{ item }}"
      with_items:
        - "{{ playbook_dir }}/profile_manifests/{{ cord_profile }}.yml"
        - "{{ playbook_dir }}/profile_manifests/local_vars.yml"
  tags:
    - rcord
    - ecord
    - ecord-global
    - mcord

- name: Add xos onboarded containers to inventory to test
  hosts: head
  roles:
    - xos-onboard-hosts
  tags:
    - rcord
    - ecord
    - ecord-global
    - mcord

- name: Check UI Container
  hosts: xos_ui
  connection: docker
  roles:
    - xos-container-test-ui
  tags:
    - rcord
    - ecord
    - ecord-global
    - mcord

- name: Check Chameleon Container
  hosts: xos_chameleon
  connection: docker
  roles:
    - xos-container-test-chameleon
  tags:
    - rcord
    - ecord
    - ecord-global
    - mcord

- name: Check XOS Core Container
  hosts: xos_core
  connection: docker
  roles:
    - xos-container-test-core
  tags:
    - rcord
    - ecord
    - ecord-global
    - mcord

- name: Check XOS WS Container
  hosts: xos_ws
  connection: docker
  roles:
    - xos-container-test-ws
  tags:
    - rcord
    - ecord
    - ecord-global

- name: Check XOS DB Container
  hosts: xos_db
  connection: docker
  roles:
    - xos-container-test-postgres
  tags:
    - rcord
    - ecord
    - ecord-global
    - mcord

- name: Check XOS Openstack Synchronizer Container
  hosts: openstack-synchronizer
  connection: docker
  roles:
    - xos-container-test-openstack
  tags:
    - rcord
    - ecord
    - ecord-global
    - mcord

- name: Check XOS ONOS Synchronizer Container
  hosts: onos-synchronizer
  connection: docker
  roles:
    - xos-container-test-onos
  tags:
    - rcord
    - ecord
    - ecord-global
    - mcord

- name: Check XOS Fabric Synchronizer Container
  hosts: fabric-synchronizer
  connection: docker
  roles:
    - xos-container-test-fabric
  tags:
    - rcord
    - ecord
    - ecord-global
    - mcord

- name: Check XOS VROUTER Synchronizer Container
  hosts: vrouter-synchronizer
  connection: docker
  roles:
    - xos-container-test-vrouter
  tags:
    - rcord
    - ecord

- name: Check XOS VOLT Synchronizer Container
  hosts: volt-synchronizer
  connection: docker
  roles:
    - xos-container-test-volt
  tags:
    - rcord

- name: Check XOS VSG Synchronizer Container
  hosts: vsg-synchronizer
  connection: docker
  roles:
    - xos-container-test-vsg
  tags:
    - rcord

- name: Check XOS VTR Synchronizer Container
  hosts: vtr-synchronizer
  connection: docker
  roles:
    - xos-container-test-vtr
  tags:
    - rcord

- name: Check XOS AddressManager Synchronizer Container
  hosts: addressmanager-synchronizer
  connection: docker
  roles:
    - xos-container-test-addressmanager
  tags:
    - rcord

- name: Check XOS VTN Synchronizer Container
  hosts: vtn-synchronizer
  connection: docker
  roles:
    - xos-container-test-vtn
  tags:
    - rcord
    - ecord

- name: Check XOS VEG Synchronizer Container
  hosts: veg-synchronizer
  connection: docker
  roles:
    - xos-container-test-veg
  tags:
    - ecord

- name: Check XOS VNOD Synchronizer Container
  hosts: vnod-synchronizer
  connection: docker
  roles:
    - xos-container-test-vnod
  tags:
    - ecord

- name: Check XOS VEE Synchronizer Container
  hosts: vee-synchronizer
  connection: docker
  roles:
    - xos-container-test-vee
  tags:
    - ecord

- name: Check XOS VNAAS Synchronizer Container
  hosts: vnaas-synchronizer
  connection: docker
  roles:
    - xos-container-test-vnaas
  tags:
    - ecord-global
