nxos_igmp_interface: argument_spec for oif_ps breaks when 'default' (#53136)
The `oif_ps` attr expects a list of dicts but it also supports keyword 'default'. When the playbook specifies `oif_ps: default` the `nxos_igmp_interface` module fails: ``` "msg": "Elements value for option oif_ps is of type <type 'str'> and we were unable to convert to dict: dictionary requested, could not parse JSON or key=value" ``` This test used to work afaik so I believe `AnsibleModule` may have changed at some point to enforce strict type checking, causing this failure. I did not see another way to handle both list & str types for the same attr so I just set it to `raw`. `nxos_igmp_interface/tests/common/sanity` now has 100% pass rate.
This commit is contained in:
parent
e775434a52
commit
b678139e68
1 changed files with 3 additions and 3 deletions
|
@ -367,7 +367,7 @@ def config_igmp_interface(delta, existing, existing_oif_prefix_source):
|
||||||
def_vals = get_igmp_interface_defaults()
|
def_vals = get_igmp_interface_defaults()
|
||||||
|
|
||||||
for key, value in delta.items():
|
for key, value in delta.items():
|
||||||
if key == 'oif_ps':
|
if key == 'oif_ps' and value != 'default':
|
||||||
for each in value:
|
for each in value:
|
||||||
if each in existing_oif_prefix_source:
|
if each in existing_oif_prefix_source:
|
||||||
existing_oif_prefix_source.remove(each)
|
existing_oif_prefix_source.remove(each)
|
||||||
|
@ -497,7 +497,7 @@ def main():
|
||||||
oif_routemap=dict(required=False, type='str'),
|
oif_routemap=dict(required=False, type='str'),
|
||||||
oif_prefix=dict(required=False, type='str', removed_in_version='2.10'),
|
oif_prefix=dict(required=False, type='str', removed_in_version='2.10'),
|
||||||
oif_source=dict(required=False, type='str', removed_in_version='2.10'),
|
oif_source=dict(required=False, type='str', removed_in_version='2.10'),
|
||||||
oif_ps=dict(required=False, type='list', elements='dict'),
|
oif_ps=dict(required=False, type='raw'),
|
||||||
restart=dict(type='bool', default=False),
|
restart=dict(type='bool', default=False),
|
||||||
state=dict(choices=['present', 'absent', 'default'],
|
state=dict(choices=['present', 'absent', 'default'],
|
||||||
default='present')
|
default='present')
|
||||||
|
@ -592,7 +592,7 @@ def main():
|
||||||
delta = dict(set(proposed.items()).difference(existing.items()))
|
delta = dict(set(proposed.items()).difference(existing.items()))
|
||||||
|
|
||||||
if oif_ps:
|
if oif_ps:
|
||||||
if oif_ps == ['default']:
|
if oif_ps == 'default':
|
||||||
delta['oif_ps'] = []
|
delta['oif_ps'] = []
|
||||||
else:
|
else:
|
||||||
delta['oif_ps'] = oif_ps
|
delta['oif_ps'] = oif_ps
|
||||||
|
|
Loading…
Reference in a new issue