]> git.ipfire.org Git - thirdparty/knot-resolver.git/commitdiff
datamodel: forward: list for subtree allowed
authorAleš Mrázek <ales.mrazek@nic.cz>
Tue, 1 Aug 2023 08:47:21 +0000 (10:47 +0200)
committerAleš Mrázek <ales.mrazek@nic.cz>
Tue, 1 Aug 2023 14:18:27 +0000 (16:18 +0200)
manager/knot_resolver_manager/datamodel/forward_schema.py
manager/knot_resolver_manager/datamodel/templates/forward.lua.j2
manager/knot_resolver_manager/datamodel/templates/macros/forward_macros.lua.j2
manager/tests/unit/datamodel/templates/test_forward_macros.py

index 66f50c4a76e59501360811d7ffd0c20afb5a4219..25168ce5288875febd7888169f7faa8266a92749 100644 (file)
@@ -8,7 +8,7 @@ from knot_resolver_manager.utils.modeling import ConfigSchema
 
 class ForwardServerSchema(ConfigSchema):
     """
-    Forward server configuration options.
+    Forward server configuration.
 
     ---
     address: IP address(es) of a forward server.
@@ -31,7 +31,7 @@ class ForwardServerSchema(ConfigSchema):
 
 class ForwardOptionsSchema(ConfigSchema):
     """
-    Configuration options for forward subtree.
+    Subtree(s) forward options.
 
     ---
     authoritative: The forwarding target is an authoritative server.
@@ -47,11 +47,11 @@ class ForwardSchema(ConfigSchema):
     Configuration of forward subtree.
 
     ---
-    subtree: Subtree to forward.
-    servers: Forward server configuration.
-    options: Configuration options for forward subtree.
+    subtree: Subtree(s) to forward.
+    servers: Forward servers configuration.
+    options: Subtree(s) forward options.
     """
 
-    subtree: DomainName
+    subtree: ListOrItem[DomainName]
     servers: Union[List[IPAddressOptionalPort], List[ForwardServerSchema]]
     options: ForwardOptionsSchema = ForwardOptionsSchema()
index afb2c49240e8bb0ee061b2081bb96f9ac4968353..24311da183ade67b39ba0f451b7348777688d624 100644 (file)
@@ -2,6 +2,8 @@
 
 {% if cfg.forward %}
 {% for fwd in cfg.forward %}
-{{ policy_rule_forward_add(fwd) }}
+{% for subtree in fwd.subtree %}
+{{ policy_rule_forward_add(subtree,fwd.options,fwd.servers) }}
+{% endfor %}
 {% endfor %}
 {% endif %}
index f67773242b85bdd16af4e247f63c4d57d60743dc..b7723fb0719dc76fe02272046d193f8c4a01c767 100644 (file)
@@ -37,6 +37,6 @@ ca_file='{{ server.ca_file }}',
 }
 {%- endmacro %}
 
-{% macro policy_rule_forward_add(forward) -%}
-policy.rule_forward_add('{{ forward.subtree }}',{{ forward_options(forward.options) }},{{ forward_servers(forward.servers) }})
+{% macro policy_rule_forward_add(subtree,options,servers) -%}
+policy.rule_forward_add('{{ subtree }}',{{ forward_options(options) }},{{ forward_servers(servers) }})
 {%- endmacro %}
index 5f80df1593429479997c044edc7b62252289b84d..4e8a5bce96429ea9f2a840ee0155d9e33e351761 100644 (file)
@@ -5,7 +5,7 @@ from knot_resolver_manager.datamodel.types import IPAddressOptionalPort
 
 def test_policy_rule_forward_add():
     tmpl_str = """{% from 'macros/forward_macros.lua.j2' import policy_rule_forward_add %}
-{{ policy_rule_forward_add(rule) }}"""
+{{ policy_rule_forward_add(rule.subtree[0],rule.options,rule.servers) }}"""
 
     rule = ForwardSchema(
         {