---
- debug: msg="START cli/ping.yaml on connection={{ ansible_connection }}"

- ios_command:
    commands: show version
    provider: "{{ cli }}"
  register: show_version_result

- set_fact: management_interface=GigabitEthernet0/0
  when: "'Cisco IOS' in show_version_result.stdout[0]"

- set_fact: management_interface=GigabitEthernet1
  when: "'Cisco IOS-XE' in show_version_result.stdout[0]"

- name: Get show ip management nterface output
  ios_command:
    commands:
      - "show ip interface {{ management_interface }} | include Internet address"
    provider: "{{ cli }}"
  register: show_ip_interface_result

- name: Extract the IP address from registered output
  set_fact: management_ip="{{ show_ip_interface_result.stdout[0].split()[-1].split('/')[0] }}"

- name: expected successful ping
  ios_ping: &valid_ip
    dest: '{{ management_ip }}'
    provider: "{{ cli }}"
  register: esp
 
- name: unexpected unsuccessful ping
  ios_ping: &invalid_ip
    dest: '10.255.255.250'
    timeout: 45
    provider: "{{ cli }}"
  register: uup
  ignore_errors: yes

- name: unexpected successful ping
  ios_ping:
    <<: *valid_ip
    state: 'absent'
  register: usp
  ignore_errors: yes

- name: expected unsuccessful ping
  ios_ping:
    <<: *invalid_ip
    state: 'absent'
  register: eup

- name: assert
  assert:
    that:
    - esp.failed == eup.failed == false
    - usp.failed == uup.failed == true