mirror of
https://github.com/ansible-collections/community.general.git
synced 2024-09-14 20:13:21 +02:00
nmcli: amended the routing-rules4 key values as list (#3401)
* Updated nmcli.py Amended the routing-rules4 values as list. By this we could add the entries for "routing_rules4" in the form of a list . * Update nmcli.py Fixed typo in line #1701 * 3395-nmcli-needs-type.yml routing_rules4 module argument is currently accepting only string elements. In order to accept multiple values, amended the type of routing_rules4 as list. * nmcli: amended the routing-rules4 key values as list routing_rules4 module argument is currently accepting only string elements. In the case of adding multiple entries to routing_rules4, we need to accept values as list. * Added 3401-nmcli-needs-type.yml routing_rules4 module argument is currently accepting only string elements. In the case of adding multiple entries to routing_rules4, we need to accept values as lists * Amended type to 'minor_changes' Amended type to 'minor_changes' from 'bug_fixes' * routing_rules4 to a list of element str nmcli.py - routing_rules4 to a list of element str * Update changelogs/fragments/3401-nmcli-needs-type.yml Co-authored-by: Felix Fontein <felix@fontein.de> * nmcli: allow routing-rules4 key values as list * nmcli: amended the routing-rules4 key values as list * nmcli: amended the routing-rules4 key values as list * nmcli: amended the routing-rules4 key values as list * test_nmcli: amended whitespaces * Update 3401-nmcli-needs-type.yml Co-authored-by: Felix Fontein <felix@fontein.de>
This commit is contained in:
parent
71a655193c
commit
53fc2c477b
3 changed files with 65 additions and 2 deletions
3
changelogs/fragments/3401-nmcli-needs-type.yml
Normal file
3
changelogs/fragments/3401-nmcli-needs-type.yml
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
---
|
||||||
|
minor_changes:
|
||||||
|
- "nmcli - the option ``routing_rules4`` can now be specified as a list of strings, instead of as a single string (https://github.com/ansible-collections/community.general/issues/3401)."
|
|
@ -100,7 +100,8 @@ options:
|
||||||
routing_rules4:
|
routing_rules4:
|
||||||
description:
|
description:
|
||||||
- Is the same as in an C(ip route add) command, except always requires specifying a priority.
|
- Is the same as in an C(ip route add) command, except always requires specifying a priority.
|
||||||
type: str
|
type: list
|
||||||
|
elements: str
|
||||||
version_added: 3.3.0
|
version_added: 3.3.0
|
||||||
never_default4:
|
never_default4:
|
||||||
description:
|
description:
|
||||||
|
@ -1470,6 +1471,7 @@ class Nmcli(object):
|
||||||
elif setting in ('ipv4.dns',
|
elif setting in ('ipv4.dns',
|
||||||
'ipv4.dns-search',
|
'ipv4.dns-search',
|
||||||
'ipv4.routes',
|
'ipv4.routes',
|
||||||
|
'ipv4.routing-rules',
|
||||||
'ipv4.route-metric'
|
'ipv4.route-metric'
|
||||||
'ipv6.dns',
|
'ipv6.dns',
|
||||||
'ipv6.dns-search',
|
'ipv6.dns-search',
|
||||||
|
@ -1758,7 +1760,7 @@ def main():
|
||||||
gw4_ignore_auto=dict(type='bool', default=False),
|
gw4_ignore_auto=dict(type='bool', default=False),
|
||||||
routes4=dict(type='list', elements='str'),
|
routes4=dict(type='list', elements='str'),
|
||||||
route_metric4=dict(type='int'),
|
route_metric4=dict(type='int'),
|
||||||
routing_rules4=dict(type='str'),
|
routing_rules4=dict(type='list', elements='str'),
|
||||||
never_default4=dict(type='bool', default=False),
|
never_default4=dict(type='bool', default=False),
|
||||||
dns4=dict(type='list', elements='str'),
|
dns4=dict(type='list', elements='str'),
|
||||||
dns4_search=dict(type='list', elements='str'),
|
dns4_search=dict(type='list', elements='str'),
|
||||||
|
|
|
@ -122,6 +122,37 @@ ipv6.ignore-auto-dns: no
|
||||||
ipv6.ignore-auto-routes: no
|
ipv6.ignore-auto-routes: no
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
TESTCASE_GENERIC_MODIFY_ROUTING_RULES = [
|
||||||
|
{
|
||||||
|
'type': 'generic',
|
||||||
|
'conn_name': 'non_existent_nw_device',
|
||||||
|
'ifname': 'generic_non_existant',
|
||||||
|
'ip4': '10.10.10.10/24',
|
||||||
|
'gw4': '10.10.10.1',
|
||||||
|
'routing_rules4': ['priority 5 from 10.0.0.0/24 table 5000', 'priority 10 from 10.0.1.0/24 table 5001'],
|
||||||
|
'state': 'present',
|
||||||
|
'_ansible_check_mode': False,
|
||||||
|
},
|
||||||
|
]
|
||||||
|
|
||||||
|
TESTCASE_GENERIC_MODIFY_ROUTING_RULES_SHOW_OUTPUT = """\
|
||||||
|
connection.id: non_existent_nw_device
|
||||||
|
connection.interface-name: generic_non_existant
|
||||||
|
connection.autoconnect: yes
|
||||||
|
ipv4.method: manual
|
||||||
|
ipv4.addresses: 10.10.10.10/24
|
||||||
|
ipv4.gateway: 10.10.10.1
|
||||||
|
ipv4.routing-rules: priority 5 from 10.0.0.0/24 table 5000, priority 10 from 10.0.1.0/24 table 5001
|
||||||
|
ipv4.ignore-auto-dns: no
|
||||||
|
ipv4.ignore-auto-routes: no
|
||||||
|
ipv4.never-default: no
|
||||||
|
ipv4.may-fail: yes
|
||||||
|
ipv6.method: auto
|
||||||
|
ipv6.ignore-auto-dns: no
|
||||||
|
ipv6.ignore-auto-routes: no
|
||||||
|
"""
|
||||||
|
|
||||||
|
|
||||||
TESTCASE_GENERIC_DNS4_SEARCH = [
|
TESTCASE_GENERIC_DNS4_SEARCH = [
|
||||||
{
|
{
|
||||||
'type': 'generic',
|
'type': 'generic',
|
||||||
|
@ -738,6 +769,13 @@ def mocked_generic_connection_unchanged(mocker):
|
||||||
execute_return=(0, TESTCASE_GENERIC_SHOW_OUTPUT, ""))
|
execute_return=(0, TESTCASE_GENERIC_SHOW_OUTPUT, ""))
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def mocked_generic_connection_unchanged(mocker):
|
||||||
|
mocker_set(mocker,
|
||||||
|
connection_exists=True,
|
||||||
|
execute_return=(0, TESTCASE_GENERIC_MODIFY_ROUTING_RULES_SHOW_OUTPUT, ""))
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
def mocked_generic_connection_dns_search_unchanged(mocker):
|
def mocked_generic_connection_dns_search_unchanged(mocker):
|
||||||
mocker_set(mocker,
|
mocker_set(mocker,
|
||||||
|
@ -1038,6 +1076,26 @@ def test_generic_connection_unchanged(mocked_generic_connection_unchanged, capfd
|
||||||
assert not results['changed']
|
assert not results['changed']
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.parametrize('patch_ansible_module', TESTCASE_GENERIC_MODIFY_ROUTING_RULES, indirect=['patch_ansible_module'])
|
||||||
|
def test_generic_connection_modify_routing_rules4(mocked_generic_connection_create, capfd):
|
||||||
|
"""
|
||||||
|
Test : Generic connection modified with routing-rules4
|
||||||
|
"""
|
||||||
|
with pytest.raises(SystemExit):
|
||||||
|
nmcli.main()
|
||||||
|
|
||||||
|
assert nmcli.Nmcli.execute_command.call_count == 1
|
||||||
|
arg_list = nmcli.Nmcli.execute_command.call_args_list
|
||||||
|
args, kwargs = arg_list[0]
|
||||||
|
|
||||||
|
assert 'ipv4.routing-rules' in args[0]
|
||||||
|
|
||||||
|
out, err = capfd.readouterr()
|
||||||
|
results = json.loads(out)
|
||||||
|
assert not results.get('failed')
|
||||||
|
assert results['changed']
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize('patch_ansible_module', TESTCASE_GENERIC_DNS4_SEARCH, indirect=['patch_ansible_module'])
|
@pytest.mark.parametrize('patch_ansible_module', TESTCASE_GENERIC_DNS4_SEARCH, indirect=['patch_ansible_module'])
|
||||||
def test_generic_connection_create_dns_search(mocked_generic_connection_create, capfd):
|
def test_generic_connection_create_dns_search(mocked_generic_connection_create, capfd):
|
||||||
"""
|
"""
|
||||||
|
|
Loading…
Reference in a new issue