---
# 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/tasks/main.yml
# Run tests to check that the base elements of M-CORD are present

- name: Wait for networks to be synchronized
  shell: export OS_CLOUD=openstack_helm; openstack network list|grep '{{ item }}' > /dev/null
  args:
    executable: /bin/bash
  register: result
  until: result is success
  retries: 10
  delay: 60
  with_items: "{{ test_networks }}"
  tags:
    - skip_ansible_lint # running a sub job
  changed_when: False

- name: Wait for VMs to come up
  shell: export OS_CLOUD=openstack_helm; openstack server list --all-projects|grep '{{ item }}.*\(ACTIVE\|ERROR\)' > /dev/null
  args:
    executable: /bin/bash
  register: result
  until: result is success
  retries: 10
  delay: 60
  with_items: "{{ test_services }}"
  tags:
    - skip_ansible_lint # running a sub job
  changed_when: False

- name: Delete any VMs that are in ERROR state (XOS will re-create them)
  shell: export OS_CLOUD=openstack_helm; for vm in $(openstack server list --all-projects|grep 'ERROR'|awk '{ print $2 }'); do openstack server delete $vm; done
  args:
    executable: /bin/bash
  tags:
    - skip_ansible_lint # running a sub job

- name: Wait for VMs to come up
  shell: export OS_CLOUD=openstack_helm; openstack server list --all-projects|grep '{{ item }}.*ACTIVE' > /dev/null
  args:
    executable: /bin/bash
  register: result
  until: result is success
  retries: 10
  delay: 60
  with_items: "{{ test_services }}"
  tags:
    - skip_ansible_lint # running a sub job
  changed_when: False

- name: Verify that VMs are properly networked
  shell: export OS_CLOUD=openstack_helm; openstack server list --all-projects|grep '{{ item.vm }}.*ACTIVE.*{{ item.network }}' > /dev/null
  args:
    executable: /bin/bash
  with_items: "{{ test_ports }}"
  tags:
    - skip_ansible_lint # running a sub job
  changed_when: False