mirror of
https://github.com/ansible-collections/community.general.git
synced 2026-02-04 07:51:50 +00:00
[PR #11413/4b0aeede backport][stable-12] feat(nmcli): Add support for IPv6 routing rules (#11432)
feat(nmcli): Add support for IPv6 routing rules (#11413)
* feat(nmcli): Add support for IPv6 routing rules
Closes #7094
* Add changelog fragment
* Fixing doc
* Add issue link to changelog fragment
* Fix version
---------
(cherry picked from commit 4b0aeede69)
Signed-off-by: Rémy Jacquin <remy@remyj.fr>
Co-authored-by: Rémy Jacquin <1536771+remyj38@users.noreply.github.com>
Co-authored-by: Felix Fontein <felix@fontein.de>
Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
This commit is contained in:
parent
5b571fd53f
commit
ca805badc0
3 changed files with 48 additions and 2 deletions
2
changelogs/fragments/11413-nmcli-routing-rules6.yml
Normal file
2
changelogs/fragments/11413-nmcli-routing-rules6.yml
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
minor_changes:
|
||||
- nmcli - add support for IPv6 routing rules (https://github.com/ansible-collections/community.general/issues/7094, https://github.com/ansible-collections/community.general/pull/11413).
|
||||
|
|
@ -226,6 +226,12 @@ options:
|
|||
type: list
|
||||
elements: str
|
||||
version_added: 3.3.0
|
||||
routing_rules6:
|
||||
description:
|
||||
- Is the same as in an C(ip rule add) command, except always requires specifying a priority.
|
||||
type: list
|
||||
elements: str
|
||||
version_added: 12.3.0
|
||||
never_default4:
|
||||
description:
|
||||
- Set as default route.
|
||||
|
|
@ -1765,6 +1771,7 @@ class Nmcli:
|
|||
self.routes6 = module.params["routes6"]
|
||||
self.routes6_extended = module.params["routes6_extended"]
|
||||
self.route_metric6 = module.params["route_metric6"]
|
||||
self.routing_rules6 = module.params["routing_rules6"]
|
||||
self.dns6 = module.params["dns6"]
|
||||
self.dns6_search = module.params["dns6_search"]
|
||||
self.dns6_options = module.params["dns6_options"]
|
||||
|
|
@ -1902,6 +1909,7 @@ class Nmcli:
|
|||
"ipv6.ignore-auto-routes": self.gw6_ignore_auto,
|
||||
"ipv6.routes": self.enforce_routes_format(self.routes6, self.routes6_extended),
|
||||
"ipv6.route-metric": self.route_metric6,
|
||||
"ipv6.routing-rules": self.routing_rules6,
|
||||
"ipv6.method": self.ipv6_method,
|
||||
"ipv6.ip6-privacy": self.ip_privacy6,
|
||||
"ipv6.addr-gen-mode": self.addr_gen_mode6,
|
||||
|
|
@ -2788,6 +2796,7 @@ def create_module() -> AnsibleModule:
|
|||
),
|
||||
),
|
||||
route_metric6=dict(type="int"),
|
||||
routing_rules6=dict(type="list", elements="str"),
|
||||
method6=dict(type="str", choices=["ignore", "auto", "dhcp", "link-local", "manual", "shared", "disabled"]),
|
||||
ip_privacy6=dict(type="str", choices=["disabled", "prefer-public-addr", "prefer-temp-addr", "unknown"]),
|
||||
addr_gen_mode6=dict(type="str", choices=["default", "default-or-eui64", "eui64", "stable-privacy"]),
|
||||
|
|
|
|||
|
|
@ -167,7 +167,7 @@ TESTCASE_GENERIC_DIFF_CHECK = [
|
|||
},
|
||||
]
|
||||
|
||||
TESTCASE_GENERIC_MODIFY_ROUTING_RULES = [
|
||||
TESTCASE_GENERIC_MODIFY_ROUTING_RULES4 = [
|
||||
{
|
||||
"type": "generic",
|
||||
"conn_name": "non_existent_nw_device",
|
||||
|
|
@ -180,6 +180,19 @@ TESTCASE_GENERIC_MODIFY_ROUTING_RULES = [
|
|||
},
|
||||
]
|
||||
|
||||
TESTCASE_GENERIC_MODIFY_ROUTING_RULES6 = [
|
||||
{
|
||||
"type": "generic",
|
||||
"conn_name": "non_existent_nw_device",
|
||||
"ifname": "generic_non_existant",
|
||||
"ip6": "fd00::10/24",
|
||||
"gw6": "fd00::1",
|
||||
"routing_rules6": ["priority 5 from fd00::/24 table 5000", "priority 10 from fd01::/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
|
||||
|
|
@ -2211,7 +2224,7 @@ def test_generic_connection_unchanged(mocked_generic_connection_unchanged, capfd
|
|||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"patch_ansible_module", TESTCASE_GENERIC_MODIFY_ROUTING_RULES, indirect=["patch_ansible_module"]
|
||||
"patch_ansible_module", TESTCASE_GENERIC_MODIFY_ROUTING_RULES4, indirect=["patch_ansible_module"]
|
||||
)
|
||||
def test_generic_connection_modify_routing_rules4(mocked_generic_connection_create, capfd):
|
||||
"""
|
||||
|
|
@ -2232,6 +2245,28 @@ def test_generic_connection_modify_routing_rules4(mocked_generic_connection_crea
|
|||
assert results["changed"]
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"patch_ansible_module", TESTCASE_GENERIC_MODIFY_ROUTING_RULES6, indirect=["patch_ansible_module"]
|
||||
)
|
||||
def test_generic_connection_modify_routing_rules6(mocked_generic_connection_create, capfd):
|
||||
"""
|
||||
Test : Generic connection modified with routing-rules6
|
||||
"""
|
||||
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 "ipv6.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"])
|
||||
def test_generic_connection_create_dns_search(mocked_generic_connection_create, capfd):
|
||||
"""
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue