From 38fc58439998c4a42d373f5dca2d48233e3fec30 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aur=C3=A9lien=20Merel?= Date: Thu, 6 Feb 2025 14:39:29 +0100 Subject: [PATCH 1/2] Network: support for [RoutingPolicyRule] and its most common parameters --- src/roles/network/meta/argument_specs.yml | 20 +++++++++++++++++++ src/roles/network/templates/network.j2 | 17 ++++++++++++++++ workflow-support/parameter_mapping.yml | 7 +++++++ .../templates/network-vars.yml.j2 | 2 ++ 4 files changed, 46 insertions(+) diff --git a/src/roles/network/meta/argument_specs.yml b/src/roles/network/meta/argument_specs.yml index 2f13632..ad73657 100644 --- a/src/roles/network/meta/argument_specs.yml +++ b/src/roles/network/meta/argument_specs.yml @@ -232,6 +232,26 @@ argument_specs: mtu_bytes: description: The MTU to be applied to this route. type: str + routing_policy_rules: + description: Rules for policy-based routing. + type: list + elements: dict + options: + from: + description: Source address prefix to match. + type: str + to: + description: Destination address prefix to match. + type: str + firewall_mark: + description: Netfilter firewall mark to match. + type: str + table: + description: Routing table to look up in case of match. + type: str + priority: + description: Priority of this rule. + type: int dhcpv4: description: Attributes of the DHCPv4 client on the network. type: dict diff --git a/src/roles/network/templates/network.j2 b/src/roles/network/templates/network.j2 index 5bc6ab4..9a1558d 100644 --- a/src/roles/network/templates/network.j2 +++ b/src/roles/network/templates/network.j2 @@ -132,6 +132,23 @@ {% endif %} {% endfor %} +{% endfor %} +{% endif %} +{% if "routing_policy_rules" in network -%} +{% for v in network.routing_policy_rules -%} +[RoutingPolicyRule] +{% for arg, value in v.items() %} +{% if value is string or value is integer %} +{{ network_routing_policy_rule_arguments[arg] }}={{ value }} +{% elif value is boolean %} +{{ network_routing_policy_rule_arguments[arg] }}={{ value|ternary('yes','no') }} +{% else %} +{% for v in value %} +{{ network_routing_policy_rule_arguments[arg] }}={{ v }} +{% endfor %} +{% endif %} +{% endfor %} + {% endfor %} {% endif %} {% if "cake" in network -%} diff --git a/workflow-support/parameter_mapping.yml b/workflow-support/parameter_mapping.yml index c868a8a..47745fd 100644 --- a/workflow-support/parameter_mapping.yml +++ b/workflow-support/parameter_mapping.yml @@ -88,6 +88,13 @@ network_route_arguments: source: Source type: Type +network_routing_policy_rule_arguments: + from: From + to: To + firewall_mark: FirewallMark + table: Table + priority: Priority + network_dhcpv4_arguments: client_identifier: ClientIdentifier hostname: Hostname diff --git a/workflow-support/templates/network-vars.yml.j2 b/workflow-support/templates/network-vars.yml.j2 index 5b3cd65..7759cd8 100644 --- a/workflow-support/templates/network-vars.yml.j2 +++ b/workflow-support/templates/network-vars.yml.j2 @@ -18,3 +18,5 @@ network_dhcpv6_arguments: {{ network_dhcpv6_arguments }} network_ipv6acceptra_arguments: {{ network_ipv6acceptra_arguments }} network_cake_arguments: {{ network_cake_arguments }} + +network_routing_policy_rule_arguments: {{ network_routing_policy_rule_arguments }} From 64529151bfb32af8cf8d0fce1295b5192b2deadf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aur=C3=A9lien=20Merel?= Date: Fri, 14 Feb 2025 16:16:38 +0100 Subject: [PATCH 2/2] Update ChangeLog with routing_policy_rules --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 29ab491..25c9561 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,8 @@ for emergencies or non-content releases). ## [Unreleased] +- Added `routing_policy_rules` block to the `network` role. + ## [25.2.0] - 2025-01-11 ### Added