---
# 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-vsg/tasks/main.yml
#
# Run tests to check that the CORD-in-a-Box deployment has worked.

- name: Wait for vSG VM to come up
  shell: bash -c "source /opt/cord_profile/admin-openrc.sh; nova list --all-tenants|grep 'vsg.*ACTIVE' > /dev/null"
  register: result
  until: result is success
  retries: 10
  delay: 60
  tags:
    - skip_ansible_lint # running a sub job

- name: Get ID of VM
  shell: bash -c "source /opt/cord_profile/admin-openrc.sh; nova list --all-tenants|grep mysite_vsg|cut -d '|' -f 2"
  register: nova_id
  tags:
    - skip_ansible_lint # running a sub job

- name: Get mgmt IP of VM
  shell: bash -c "source /opt/cord_profile/admin-openrc.sh; nova interface-list {{ nova_id.stdout }}|grep -o -m 1 '172\.27\.[[:digit:]]*\.[[:digit:]]*'"
  register: mgmt_ip
  tags:
    - skip_ansible_lint # running a sub job

- name: Get name of compute node
  shell: bash -c "source /opt/cord_profile/admin-openrc.sh; nova show {{ nova_id.stdout }}|grep hypervisor_hostname|cut -d '|' -f 3"
  register: node_name
  tags:
    - skip_ansible_lint # running a sub job

- name: Wait for Docker container inside VM to come up
  shell: ssh -o ProxyCommand="ssh -W %h:%p -l ubuntu {{ node_name.stdout }}" ubuntu@{{ mgmt_ip.stdout }} "sudo docker ps|grep 'vsg\|vcpe'" > /dev/null
  register: result
  until: result is success
  retries: 40
  delay: 30
  tags:
    - skip_ansible_lint # running a sub job

- name: start container
  become: yes
  lxd_container:
    name: testclient
    state: started

- name: Make sure testclient has default route to vSG
  become: yes
  shell: lxc exec testclient -- route | grep default | grep "eth0.222.111"
  register: result
  until: result is success
  retries: 20
  delay: 30
  tags:
    - skip_ansible_lint # running a sub job

- name: Test external connectivity in test client
  become: yes
  command: "lxc exec testclient -- ping -c 3 {{ lookup('dig', vsg_test_ping_target) }}"
  register: pingtest
  tags:
    - skip_ansible_lint # running a sub job

- name: Output from ping test
  debug: var=pingtest.stdout_lines

