- debug: msg="START connection={{ ansible_connection }} nxos_interface intent test"
- debug: msg="Using provider={{ connection.transport }}"
  when: ansible_connection == "local"

- set_fact: testint1="{{ nxos_int1 }}"
- set_fact: testint2="{{ nxos_int2 }}"

- name: "Setup: Put interfaces into a default state"
  nxos_config:
    lines:
      - "default interface {{ testint1 }}"
      - "default interface {{ testint2 }}"
    provider: "{{ connection }}"
  ignore_errors: yes

- name: Check intent arguments
  nxos_interface:
    name: "{{ testint2 }}"
    admin_state: up
    tx_rate: ge(0)
    rx_rate: ge(0)
    provider: "{{ connection }}"
  register: result

- assert:
    that:
      - "result.failed == false"

- name: "Clear interface {{ testint2 }} counters before next task"
  nxos_command:
    commands: "clear counters interface {{ testint2 }}"
  ignore_errors: yes

- name: Check intent arguments (failed condition)
  nxos_interface:
    name: "{{ testint2 }}"
    admin_state: down
    tx_rate: gt(10000)
    rx_rate: lt(0)
    provider: "{{ connection }}"
  ignore_errors: yes
  register: result

- assert:
    that:
      - "result.failed == true"
      - "'tx_rate gt(10000)' in result.failed_conditions"
      - "'rx_rate lt(0)' in result.failed_conditions"

- name: aggregate definition of interface
  nxos_interface:
    aggregate:
      - { name: "{{ testint1 }}", description: "Test aggregation on first interface" }
      - { name: "{{ testint2 }}", mode: layer3 }
    provider: "{{ connection }}"
  register: result

- assert:
    that:
      - "result.changed == true"

- name: "TearDown: Put interfaces into a default state"
  nxos_config:
    lines:
      - "default interface {{ testint1 }}"
      - "default interface {{ testint2 }}"
    provider: "{{ connection }}"
  ignore_errors: yes

- debug: msg="END connection={{ ansible_connection }} nxos_interface intent test"
