--- - debug: msg="START ios_interface cli/intent.yaml on connection={{ ansible_connection }}" - name: Run show version ios_command: commands: show version authorize: yes register: show_version_result - name: Set test interface to GigabitEthernet0/2 if we are on Cisco IOS set_fact: test_interface=GigabitEthernet0/2 when: "'Cisco IOS' in show_version_result.stdout[0]" - name: Set test interface to GigabitEthernet2 if we are on Cisco IOS-XE set_fact: test_interface=GigabitEthernet2 when: "'Cisco IOS-XE' in show_version_result.stdout[0]" - name: Check intent arguments ios_interface: name: "{{ test_interface }}" state: up tx_rate: ge(0) rx_rate: ge(0) authorize: yes register: result - assert: that: - "result.failed == false" - name: Check intent arguments (failed condition) ios_interface: name: "{{ test_interface }}" state: down tx_rate: gt(0) rx_rate: lt(0) authorize: yes ignore_errors: yes register: result - assert: that: - "result.failed == true" - "'state eq(down)' in result.failed_conditions" - "'tx_rate gt(0)' in result.failed_conditions" - "'rx_rate lt(0)' in result.failed_conditions" - name: Config + intent ios_interface: name: "{{ test_interface }}" enabled: False state: down authorize: yes register: result - assert: that: - "result.failed == false" - name: Config + intent (fail) ios_interface: name: "{{ test_interface }}" enabled: False authorize: yes state: up ignore_errors: yes register: result - assert: that: - "result.failed == true" - "'state eq(up)' in result.failed_conditions" - name: Register show neighbors detail ios_command: commands: - show lldp neighbors authorize: yes register: show_lldp_neighbors_result - block: - name: Check neighbors intent arguments ios_interface: name: Gi0/0 neighbors: - port: eth0 host: netdev authorize: yes register: result - assert: that: - "result.failed == false" - name: Check neighbors intent arguments (failed condition) ios_interface: name: Gi0/0 neighbors: - port: dummy_port host: dummy_host authorize: yes ignore_errors: yes register: result - assert: that: - "result.failed == true" - "'host dummy_host' in result.failed_conditions" - "'port dummy_port' in result.failed_conditions" when: '"netdev" in show_lldp_neighbors_result.stdout' - name: Aggregate config + intent (pass) ios_interface: aggregate: - name: "{{ test_interface }}" enabled: True state: up authorize: yes ignore_errors: yes register: result - assert: that: - "result.failed == false" - block: - name: Aggregate neighbors intent (pass) ios_interface: aggregate: - name: Gi0/0 neighbors: - port: eth0 host: netdev authorize: yes ignore_errors: yes register: result - assert: that: - "result.failed == false" - name: Aggregate neighbors intent (fail) ios_interface: aggregate: - name: Gi0/0 neighbors: - port: eth0 host: netdev - port: dummy_port host: dummy_host authorize: yes ignore_errors: yes register: result - assert: that: - "result.failed == true" - "'host dummy_host' in result.failed_conditions" - "'port dummy_port' in result.failed_conditions" when: "'netdev' in show_lldp_neighbors_result.stdout"