---
- name: create static route
  net_static_route:
    prefix: 172.24.0.0/24
    next_hop: 192.168.42.64
    state: present
    provider: "{{ cli }}"
  register: result

- assert:
    that:
      - 'result.changed == true'
      - '"set protocols static route 172.24.0.0/24 next-hop 192.168.42.64" in result.commands'

- name: create static route again (idempotent)
  net_static_route:
    prefix: 172.24.0.0
    mask: 24
    next_hop: 192.168.42.64
    state: present
    provider: "{{ cli }}"
  register: result

- assert:
    that:
      - 'result.changed == false'

- name: modify admin distance of static route
  net_static_route:
    prefix: 172.24.0.0/24
    next_hop: 192.168.42.64
    admin_distance: 1
    state: present
    provider: "{{ cli }}"
  register: result

- assert:
    that:
      - 'result.changed == true'
      - '"set protocols static route 172.24.0.0/24 next-hop 192.168.42.64 distance 1" in result.commands'

- name: modify admin distance of static route again (idempotent)
  net_static_route:
    prefix: 172.24.0.0
    mask: 24
    next_hop: 192.168.42.64
    admin_distance: 1
    state: present
    provider: "{{ cli }}"
  register: result

- assert:
    that:
      - 'result.changed == false'

- name: delete static route
  net_static_route:
    prefix: 172.24.0.0/24
    next_hop: 192.168.42.64
    admin_distance: 1
    state: absent
    provider: "{{ cli }}"
  register: result

- assert:
    that:
      - 'result.changed == true'
      - '"delete protocols static route 172.24.0.0/24" in result.commands'

- name: delete static route again (idempotent)
  net_static_route:
    prefix: 172.24.0.0/24
    next_hop: 192.168.42.64
    admin_distance: 1
    state: absent
    provider: "{{ cli }}"
  register: result

- assert:
    that:
      - 'result.changed == false'

- name: Add static route collections
  net_static_route:
    aggregate:
      - { prefix: 172.24.1.0/24, next_hop: 192.168.42.64 }
      - { prefix: 172.24.2.0, mask: 24, next_hop: 192.168.42.64 }
    state: present
    provider: "{{ cli }}"
  register: result

- assert:
    that:
      - 'result.changed == true'
      - '"set protocols static route 172.24.1.0/24 next-hop 192.168.42.64" in result.commands'
      - '"set protocols static route 172.24.2.0/24 next-hop 192.168.42.64" in result.commands'

- name: Add and remove static route collections with overrides
  net_static_route:
    aggregate:
      - { prefix: 172.24.1.0/24, next_hop: 192.168.42.64 }
      - { prefix: 172.24.2.0/24, next_hop: 192.168.42.64, state: absent }
      - { prefix: 172.24.3.0/24, next_hop: 192.168.42.64 }
    state: present
    provider: "{{ cli }}"
  register: result

- assert:
    that:
      - 'result.changed == true'
      - '"delete protocols static route 172.24.2.0/24" in result.commands'
      - '"set protocols static route 172.24.3.0/24 next-hop 192.168.42.64" in result.commands'

- name: Remove static route collections
  net_static_route:
    aggregate:
      - { prefix: 172.24.1.0/24, next_hop: 192.168.42.64 }
      - { prefix: 172.24.3.0/24, next_hop: 192.168.42.64 }
    state: absent
    provider: "{{ cli }}"
  register: result

- assert:
    that:
      - 'result.changed == true'
      - '"delete protocols static route 172.24.1.0/24" in result.commands'
      - '"delete protocols static route 172.24.3.0/24" in result.commands'
