---
# 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 | 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 | success
  retries: 20
  delay: 60
  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 | 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

