mirror of
https://github.com/ansible-collections/community.general.git
synced 2026-05-06 13:22:48 +00:00
nxos_interfaces_ospf: fix passive-interface states & check_mode (#54260)
* nxos_interfaces_ospf: fix passive-interface states & check_mode This fix addresses issues #41704 and #45343. The crux of the problem is that `passive-interface` should have been treated as a tri-state value instead of a boolean. The `no` form of the command disables the passive state on an interface (allows it to form adjacencies and send routing updates). It's essentially an override for `passive-interface default` which enables passive state on all OSPF interfaces.\* This `no` config will be present in `running-config`. \**See `router ospf` configuration.* Since both enable and disable states are explicit configs, the proper way to remove either of these is with the `default` syntax. Passive-interface config syntax: ``` ip ospf passive-interface # enable (nvgens) no ip ospf passive-interface # disable (nvgens) default ip ospf passive-interface # default (removes config, does not nvgen) ``` Code changes: * `passive_interface` param changed from boolean to string, restricted to `true`,`false`,`default`. * Several passive-interface specific checks were added because the existing module logic tends to test for true or false and doesn't handle the None case. * Fixed `check_mode`. Sanity verified on: N9K,N7K,N3K,N6K * Fix doc header * Unit tests for passive-interface * doc fix #2 * Fix indent for SA * Remove 'default' keyword, restore bool behavior * remove changes to sanity
This commit is contained in:
committed by
Trishna Guha
parent
98a3fa2dac
commit
20fb77c49b
@@ -0,0 +1,7 @@
|
||||
interface Ethernet1/33
|
||||
interface Ethernet1/34
|
||||
ip router ospf 1 area 0.0.0.1
|
||||
ip ospf passive-interface
|
||||
interface Ethernet1/35
|
||||
ip router ospf 1 area 0.0.0.1
|
||||
no ip ospf passive-interface
|
||||
|
||||
@@ -56,3 +56,33 @@ class TestNxosInterfaceOspfModule(TestNxosModule):
|
||||
self.execute_module(failed=True, changed=False)
|
||||
set_module_args(dict(interface='loopback0', ospf=1, area=0, network='broadcast'))
|
||||
self.execute_module(failed=True, changed=False)
|
||||
|
||||
def test_nxos_interface_ospf_passive(self):
|
||||
# default -> True
|
||||
set_module_args(dict(interface='ethernet1/33', ospf=1, area=1, passive_interface=True))
|
||||
self.execute_module(changed=True, commands=['interface Ethernet1/33',
|
||||
'ip router ospf 1 area 0.0.0.1',
|
||||
'ip ospf passive-interface'])
|
||||
# default -> False
|
||||
set_module_args(dict(interface='ethernet1/33', ospf=1, area=1, passive_interface=False))
|
||||
self.execute_module(changed=True, commands=['interface Ethernet1/33',
|
||||
'ip router ospf 1 area 0.0.0.1',
|
||||
'no ip ospf passive-interface'])
|
||||
# True -> False
|
||||
set_module_args(dict(interface='ethernet1/34', ospf=1, area=1, passive_interface=False))
|
||||
self.execute_module(changed=True, commands=['interface Ethernet1/34',
|
||||
'no ip ospf passive-interface'])
|
||||
# True -> default (absent)
|
||||
set_module_args(dict(interface='ethernet1/34', ospf=1, area=1, state='absent'))
|
||||
self.execute_module(changed=True, commands=['interface Ethernet1/34',
|
||||
'no ip router ospf 1 area 0.0.0.1',
|
||||
'default ip ospf passive-interface'])
|
||||
# False -> True
|
||||
set_module_args(dict(interface='ethernet1/35', ospf=1, area=1, passive_interface=True))
|
||||
self.execute_module(changed=True, commands=['interface Ethernet1/35',
|
||||
'ip ospf passive-interface'])
|
||||
# False -> default (absent)
|
||||
set_module_args(dict(interface='ethernet1/35', ospf=1, area=1, state='absent'))
|
||||
self.execute_module(changed=True, commands=['interface Ethernet1/35',
|
||||
'no ip router ospf 1 area 0.0.0.1',
|
||||
'default ip ospf passive-interface'])
|
||||
|
||||
Reference in New Issue
Block a user