ansible/test/integration/targets/nxos_static_route/tests/common/sanity.yaml
Chris Van Heuveln 7b44bc1ac9 nxos_static_route: reconcile_candidate fails to remove 'track' routes (#53806)
* * `reconcile_candidate()`
  * old code searched the ip route configs for a given prefix+nexthop and then tried to remove the route based on prefix+nexthop only; this would fail when a static route was configured with `track` values.
  * new code still looks for prefix+nexthop but uses the route config it finds on the device to remove it; e.g.
    * search for: `ip route 192.168.20.64/24 192.0.2.3`
    * find:       `ip route 192.168.20.64/24 192.0.2.3 track 1 10`
    * remove:  `no ip route 192.168.20.64/24 192.0.2.3 track 1 10`

* logic cleanups:
  * old code did a `show run` for every prefix. This can be a lot of data when there are large configs.
  * new code uses filters to only return the static route configs.
  * The filters now allow a common code path so no need for default vs vrf code paths

* `sanity` test: 100% Pass rate on N9K,N7K,N6K,N3K

- Bugfix Pull Request

`nxos_static_route`

* filter() does not return a list with python3

`filter()` was breaking pytest when it ran with python3, since it returns
an iterable instead of a list with python3.

Found that I didn't really need `filter()` anyway so just removed it

* restore var names /w/want/
2019-03-21 18:52:46 +05:30

208 lines
5.1 KiB
YAML

---
- debug: msg="START connection={{ ansible_connection }} nxos_static_route sanity test"
- debug: msg="Using provider={{ connection.transport }}"
when: ansible_connection == "local"
# Flag used to test the track feature. Some platforms
# don't support it so this flag will be toggled accordingly.
- set_fact: test_track_feature="true"
- name: configure track
nxos_config:
lines:
- track 1 ip sla 1
provider: "{{ connection }}"
register: cmd_result
ignore_errors: yes
- debug: msg="cmd result {{ cmd_result }}"
- set_fact: test_track_feature="false"
when: cmd_result.failed
- debug: msg="Test Track Feature {{ test_track_feature }}"
- name: Setup and teardown, remove test routes if present
nxos_static_route: &setup_teardown
aggregate:
- { prefix: "192.168.1.164/32", next_hop: "192.0.2.3" }
- { prefix: "192.168.20.64/24", next_hop: "192.0.2.3" }
- { prefix: "192.168.22.64/24", next_hop: "192.0.2.3" }
- { prefix: "192.168.24.64/24", next_hop: "192.0.2.3" }
vrf: "{{ item }}"
provider: "{{ connection }}"
state: absent
with_items: "{{ vrfs }}"
ignore_errors: yes
- name: Setup noise routes to ensure testing while non-test routes present
nxos_static_route:
prefix: "192.168.1.164/32"
next_hop: "192.0.2.3"
vrf: "{{ item }}"
provider: "{{ connection }}"
state: present
with_items: "{{ vrfs }}"
- block:
- name: create static route
nxos_static_route: &configure_static
prefix: "192.168.20.64/24"
next_hop: "192.0.2.3"
route_name: testing
pref: 100
tag: 5500
vrf: "{{ item }}"
provider: "{{ connection }}"
with_items: "{{ vrfs }}"
register: result
- assert: &true
that:
- "result.changed == true"
- name: "Conf static Idempotence"
nxos_static_route: *configure_static
with_items: "{{ vrfs }}"
register: result
- assert: &false
that:
- "result.changed == false"
- name: change static route
nxos_static_route: &change_static
prefix: "192.168.20.64/24"
next_hop: "192.0.2.3"
route_name: default
pref: 10
tag: default
vrf: "{{ item }}"
provider: "{{ connection }}"
with_items: "{{ vrfs }}"
register: result
- assert: *true
- name: "Change Idempotence"
nxos_static_route: *change_static
with_items: "{{ vrfs }}"
register: result
- assert: *false
- name: configure static route with track
nxos_static_route: &config_static_track
prefix: "192.168.20.64/24"
next_hop: "192.0.2.3"
route_name: default
pref: 10
tag: default
track: 1
vrf: "{{ item }}"
provider: "{{ connection }}"
with_items: "{{ vrfs }}"
register: result
when: test_track_feature
- assert: *true
when: test_track_feature
- name: "Config track Idempotence"
nxos_static_route: *config_static_track
with_items: "{{ vrfs }}"
register: result
when: test_track_feature
- assert: *false
when: test_track_feature
- name: configure static route with not configured track
nxos_static_route:
prefix: "192.168.20.64/24"
next_hop: "192.0.2.3"
route_name: default
pref: 10
tag: default
track: 2
vrf: "{{ item }}"
provider: "{{ connection }}"
with_items: "{{ vrfs }}"
register: result
ignore_errors: yes
when: test_track_feature
- assert:
that:
- "result.failed == True"
when: test_track_feature
- name: remove static route
nxos_static_route: &remove_static
prefix: "192.168.20.64/24"
next_hop: "192.0.2.3"
route_name: testing
pref: 100
vrf: "{{ item }}"
provider: "{{ connection }}"
state: absent
with_items: "{{ vrfs }}"
register: result
- assert: *true
- name: "Remove Idempotence"
nxos_static_route: *remove_static
with_items: "{{ vrfs }}"
register: result
- assert: *false
- name: configure static route(aggregate)
nxos_static_route: &conf_agg
aggregate:
- { prefix: "192.168.22.64/24", next_hop: "192.0.2.3" }
- { prefix: "192.168.24.64/24", next_hop: "192.0.2.3" }
provider: "{{ connection }}"
register: result
- assert: *true
- name: configure static route aggregate(Idempotence)
nxos_static_route: *conf_agg
register: result
- assert: *false
- name: remove static route aggregate
nxos_static_route: &remove_agg
aggregate:
- { prefix: "192.168.22.64/24", next_hop: "192.0.2.3" }
- { prefix: "192.168.24.64/24", next_hop: "192.0.2.3" }
provider: "{{ connection }}"
state: absent
register: result
- assert: *true
- name: remove static route aggregate(Idempotence)
nxos_static_route: *remove_agg
register: result
- assert: *false
always:
- name: remove track
nxos_config:
lines:
- no track 1
provider: "{{ connection }}"
ignore_errors: yes
when: test_track_feature
- name: teardown test routes
nxos_static_route: *setup_teardown
with_items: "{{ vrfs }}"
ignore_errors: yes
- debug: msg="END connection={{ ansible_connection }} nxos_static_route sanity test"