| |
| # 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. |
| |
| |
| --- |
| - hosts: {{ instance_name }} |
| #gather_facts: False |
| connection: ssh |
| user: ubuntu |
| become: yes |
| vars: |
| container_name: {{ container_name }} |
| scope: {{ scope }} |
| test: {{ test }} |
| argument: {{ argument }} |
| result_fn: {{ result_fn }} |
| resultcode_fn: {{ resultcode_fn }} |
| |
| |
| tasks: |
| - name: Remove any old result file |
| shell: rm -f /tmp/{{ result_fn }} |
| |
| - name: Copy run_tcpdump.sh to VM |
| copy: src=/opt/xos/synchronizers/vtr/files/run_tcpdump.sh dest=/root/run_tcpdump.sh mode=0755 |
| when: (test=="tcpdump") |
| |
| |
| # ----------------- |
| # scope == VM |
| # ----------------- |
| |
| - name: Send the pings from VM |
| shell: ping -c 10 {{ argument }} 2>&1 > /tmp/{{ result_fn }} |
| ignore_errors: yes |
| register: vm_ping_result |
| when: (scope=="vm") and (test=="ping") |
| |
| - name: Store VM ping resultcode to file |
| shell: echo "{{ '{{' }} vm_ping_result.rc {{ '}}' }}" > /tmp/{{ resultcode_fn }} |
| when: (scope=="vm") and (test=="ping") |
| |
| - name: Install traceroute |
| apt: name=traceroute state=present |
| when: (scope=="vm") and (test=="traceroute") |
| |
| - name: Send traceroute from VM |
| shell: traceroute {{ argument }} 2>&1 > /tmp/{{ result_fn }} |
| ignore_errors: yes |
| register: vm_traceroute_result |
| when: (scope=="vm") and (test=="traceroute") |
| |
| - name: Store VM traceroute resultcode to file |
| shell: echo "{{ '{{' }} vm_traceroute_result.rc {{ '}}' }}" > /tmp/{{ resultcode_fn }} |
| when: (scope=="vm") and (test=="traceroute") |
| |
| - name: Run tcpdump for 10 seconds on VM |
| shell: /root/run_tcpdump.sh {{ argument }} 2>&1 > /tmp/{{ result_fn }} |
| ignore_errors: yes |
| register: vm_tcpdump_result |
| when: (scope=="vm") and (test=="tcpdump") |
| |
| - name: Store VM tcpdump resultcode to file |
| shell: echo "{{ '{{' }} vm_tcpdump_result.rc {{ '}}' }}" > /tmp/{{ resultcode_fn }} |
| when: (scope=="vm") and (test=="tcpdump") |
| |
| # ------------------ |
| # scope == container |
| # ------------------ |
| |
| - name: Send the pings from Container |
| shell: docker exec {{ container_name }} ping -c 10 {{ argument }} 2>&1 > /tmp/{{ result_fn }} |
| ignore_errors: yes |
| register: ctr_ping_result |
| when: (scope=="container") and (test=="ping") |
| |
| - name: Store ctr ping resultcode to file |
| shell: echo "{{ '{{' }} ctr_ping_result.rc {{ '}}' }}" > /tmp/{{ resultcode_fn }} |
| when: (scope=="container") and (test=="ping") |
| |
| - name: Checking memory utilization |
| shell: docker exec {{ container_name }} free {{ '-m' if argument== 'mb' else '-h' }} 2>&1 > /tmp/{{ result_fn }} |
| ignore_errors: yes |
| register: ctr_memory_result |
| when: (scope=="container") and (test=="memory") |
| |
| - name: Store container health resultcode to file |
| shell: echo "{{ '{{' }} ctr_memory_result.rc {{ '}}' }}" > /tmp/{{ resultcode_fn }} |
| when: (scope=="container") and (test=="memory") |
| |
| - name: Install iperf into Host vm |
| shell: apt-get -y install iperf |
| when: (scope=="container") and (test=="bandwidth") |
| |
| - name: Install iperf into Container |
| shell: docker exec {{ container_name }} apt-get -y install iperf |
| when: (scope=="container") and (test=="bandwidth") |
| |
| - name: Starting the iperf server in Host vm for uplink_upload |
| shell: iperf -s -u |
| async: 10 |
| poll: 0 |
| when: (scope=="container") and (test=="bandwidth") and (argument=="uplink_upload") |
| |
| - name: Starting the iperf client in vsg container for uplink_upload |
| shell: docker exec {{ container_name }} iperf -c {{ wan_vm_ip }} -u -b 1000M 2>&1 > /tmp/{{ result_fn }} |
| ignore_errors: yes |
| register: ctr_bw_upload_result |
| when: (scope=="container") and (test=="bandwidth") and (argument=="uplink_upload") |
| |
| - name: Starting the iperf server in vsg container for uplink_download |
| shell: docker exec {{ container_name }} iperf -s -u |
| async: 10 |
| poll: 0 |
| when: (scope=="container") and (test=="bandwidth") and (argument=="uplink_download") |
| |
| - name: Starting the iperf client in the host vm for uplink_download |
| shell: iperf -c {{ wan_container_ip }} -u -b 1000M 2>&1 > /tmp/{{ result_fn }} |
| ignore_errors: yes |
| register: ctr_bw_download_result |
| when: (scope=="container") and (test=="bandwidth") and (argument=="uplink_download") |
| |
| - name: Uninstall iperf from Container |
| shell: docker exec {{ container_name }} apt-get -y remove iperf |
| when: (scope=="container") and (test=="bandwidth") |
| |
| - name: Store upload bandwidth resultcode to file |
| shell: echo "{{ '{{' }} ctr_bw_upload_result.rc {{ '}}' }}" > /tmp/{{ resultcode_fn }} |
| when: (scope=="container") and (test=="bandwidth") and (argument=="uplink_upload") |
| |
| - name: Store download bandwidth resultcode to file |
| shell: echo "{{ '{{' }} ctr_bw_download_result.rc {{ '}}' }}" > /tmp/{{ resultcode_fn }} |
| when: (scope=="container") and (test=="bandwidth") and (argument=="uplink_download") |
| |
| - name: Install traceroute into Container |
| shell: docker exec {{ container_name }} apt-get -y install traceroute |
| when: (scope=="container") and (test=="traceroute") |
| |
| - name: Send traceroute from Container |
| shell: docker exec {{ container_name }} traceroute {{ argument }} 2>&1 > /tmp/{{ result_fn }} |
| ignore_errors: yes |
| register: ctr_traceroute_result |
| when: (scope=="container") and (test=="traceroute") |
| |
| - name: Store ctr traceroute resultcode to file |
| shell: echo "{{ '{{' }} ctr_traceroute_result.rc {{ '}}' }}" > /tmp/{{ resultcode_fn }} |
| when: (scope=="container") and (test=="traceroute") |
| |
| - name: Copy run_tcpdump.sh to container |
| command: docker cp /root/run_tcpdump.sh {{ container_name }}:/root/run_tcpdump.sh |
| when: (scope=="container") and (test=="tcpdump") |
| |
| - name: Run tcpdump for 10 seconds from Container |
| shell: docker exec {{ container_name }} /root/run_tcpdump.sh {{ argument }} 2>&1 > /tmp/{{ result_fn }} |
| ignore_errors: yes |
| register: ctr_tcpdump_result |
| when: (scope=="container") and (test=="tcpdump") |
| |
| - name: Store ctr tcpdump resultcode to file |
| shell: echo "{{ '{{' }} ctr_tcpdump_result.rc {{ '}}' }}" > /tmp/{{ resultcode_fn }} |
| when: (scope=="container") and (test=="tcpdump") |
| |
| # ------------------ |
| # scope == * |
| # ------------------ |
| - name: Fetch the result |
| fetch: src=/tmp/{{ result_fn }} dest=/opt/xos/synchronizers/vtr/result/{{ result_fn }} flat=yes |
| |
| - name: Fetch the resultcode |
| fetch: src=/tmp/{{ resultcode_fn }} dest=/opt/xos/synchronizers/vtr/result/{{ resultcode_fn }} flat=yes |
| |
| |
| |
| |