---
# test-vsg/tasks/main.yml
#
# Run tests to check that the single-node deployment has worked

- name: Create a sample CORD subscriber
  command: ansible xos-1 -u ubuntu -m shell \
    -a "cd ~/service-profile/cord-pod; make cord-subscriber"

- name: Pause 60 seconds (work around bug in synchronizer)
  pause: seconds=60

- name: Re-run 'make vtn' (work around bug in synchronizer)
  command: ansible xos-1 -u ubuntu -m shell \
    -a "cd ~/service-profile/cord-pod; make vtn"

- name: Wait for vSG VM to come up
  shell: bash -c "source ~/admin-openrc.sh; nova list --all-tenants|grep 'vsg.*ACTIVE' > /dev/null"
  register: result
  until: result | success
  retries: 10
  delay: 60

- name: Get ID of VM
  shell: bash -c "source ~/admin-openrc.sh; nova list --all-tenants|grep mysite_vsg|cut -d '|' -f 2"
  register: nova_id

- name: Get mgmt IP of VM
  shell: bash -c "source ~/admin-openrc.sh; nova interface-list {{ nova_id.stdout }}|grep -o -m 1 172.27.[[:digit:]]*.[[:digit:]]*"
  register: mgmt_ip

- name: Wait for Docker container inside VM to come up
  shell: ssh -o ProxyCommand="ssh -W %h:%p ubuntu@nova-compute-1" ubuntu@{{ mgmt_ip.stdout }} "sudo docker ps|grep vcpe" > /dev/null
  register: result
  until: result | success
  retries: 20
  delay: 60

- name: Run dhclient inside testclient to get IP address from vSG
  command: ansible nova-compute-1 -u ubuntu -m shell \
    -s -a "lxc-attach -n testclient -- dhclient eth0.222.111"

- name: Test external connectivity in test client
  command: ansible nova-compute-1 -u ubuntu -m shell \
    -s -a "lxc-attach -n testclient -- ping -c 3 8.8.8.8"
  register: pingtest

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