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


---
# mock-rcord xos container sanity tests

#- include: "{{ playbook_dir }}/add-onboard-containers-playbook.yml"

- name: Add xos onboarded containers to inventory to test
  hosts: head
  roles:
    - xos-onboard-test-hosts

- 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"

- name: Check UI Container
  hosts: xos-ui
  connection: docker
  roles:
    - xos-container-test-ui

- name: Check GUI Container
  hosts: xos-spa-gui
  connection: docker
  roles:
    - xos-container-test-spa-gui

- name: Check REST GW Container
  hosts: xos-rest-gateway
  connection: docker
  roles:
    - xos-container-test-restgw

- name: Check Chameleon Container
  hosts: xos_chameleon
  connection: docker
  roles:
    - xos-container-test-chameleon

- name: Check XOS Core Synchronizer Container
  hosts: xos_core
  connection: docker
  roles:
    - xos-container-test-core

- name: Check XOS ONOS Synchronizer Container
  hosts: xos_onos_synchronizer
  connection: docker
  roles:
    - xos-container-test-onos

- name: Check XOS Fabric Synchronizer Container
  hosts: xos_fabric_synchronizer
  connection: docker
  roles:
    - xos-container-test-fabric

- name: Check XOS VROUTER Synchronizer Container
  hosts: xos_vrouter_synchronizer
  connection: docker
  roles:
    - xos-container-test-vrouter

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

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