nxos_igmp_snooping: more group-timeout fixes (#53553)

* Fixed another problem where `group-timeout` was processed before `ip igmp snooping` was enabled

* `sanity` playbook:
 * N6K: `show ip igmp snooping | json` succeeds on the device but doesn't return any data in body; added a skip to the sanity playbook to keep it out of CI
 * Added a setup task to do initial cleanup on the device
This commit is contained in:
Chris Van Heuveln 2019-03-20 03:38:36 -04:00 committed by Trishna Guha
parent 07212c395b
commit 07774b4ccf
2 changed files with 19 additions and 12 deletions

View file

@ -181,11 +181,12 @@ def config_igmp_snooping(delta, existing, default=False):
commands = []
command = None
gt_command = None
for key, value in delta.items():
if value:
if default and key == 'group_timeout':
if existing.get(key):
command = 'no ' + CMDS.get(key).format(existing.get(key))
gt_command = 'no ' + CMDS.get(key).format(existing.get(key))
elif value == 'default' and key == 'group_timeout':
if existing.get(key):
command = 'no ' + CMDS.get(key).format(existing.get(key))
@ -198,6 +199,9 @@ def config_igmp_snooping(delta, existing, default=False):
commands.append(command)
command = None
if gt_command:
# ensure that group-timeout command is configured last
commands.append(gt_command)
return commands

View file

@ -3,18 +3,23 @@
- debug: msg="Using provider={{ connection.transport }}"
when: ansible_connection == "local"
- meta: end_host
# show ip igmp snooping | json does not work on some platforms
when: platform is search('N6K')
- set_fact: gt_run="false"
- set_fact: gt_run="true"
when: not (platform is match("N5K")) and not (platform is match("N35"))
- block:
- set_fact: gt_run="true"
- set_fact: group_timeout="never"
- set_fact: def_group_timeout="default"
when: platform is not search('N35|N5K|N6K')
- set_fact: group_timeout="never"
when: not (platform is match("N5K")) and not (platform is match("N35"))
- set_fact: def_group_timeout="default"
when: not (platform is match("N5K")) and not (platform is match("N35"))
- name: Setup
nxos_igmp_snooping: &default
provider: "{{ connection }}"
state: default
- block:
- name: Configure igmp snooping with non-default values
nxos_igmp_snooping: &non-default
snooping: false
@ -90,9 +95,7 @@
when: gt_run or (imagetag and (imagetag is version_compare('D1', 'ne')))
- name: Configure igmp snooping with default values
nxos_igmp_snooping: &default
provider: "{{ connection }}"
state: default
nxos_igmp_snooping: *default
register: result
- assert: *true