]> git.ipfire.org Git - thirdparty/knot-resolver.git/commitdiff
manager: datamodel: forward schema update
authorAleš Mrázek <ales.mrazek@nic.cz>
Thu, 16 Feb 2023 12:50:30 +0000 (13:50 +0100)
committerAleš Mrázek <ales.mrazek@nic.cz>
Fri, 9 Jun 2023 11:54:07 +0000 (11:54 +0000)
manager/knot_resolver_manager/datamodel/config_schema.py
manager/knot_resolver_manager/datamodel/forward_schema.py [new file with mode: 0644]
manager/knot_resolver_manager/datamodel/forward_zone_schema.py [deleted file]
manager/knot_resolver_manager/datamodel/policy_schema.py
manager/knot_resolver_manager/datamodel/templates/config.lua.j2
manager/knot_resolver_manager/datamodel/templates/forward.lua.j2 [new file with mode: 0644]
manager/knot_resolver_manager/datamodel/types/__init__.py
manager/tests/unit/datamodel/templates/test_common_macros.py

index 5a290cdb28219720ab1a99d5910e6c8facb6a4b4..1fc612e88a1b434e537088b7a9c98765029d36c7 100644 (file)
@@ -11,7 +11,7 @@ from knot_resolver_manager.constants import MAX_WORKERS
 from knot_resolver_manager.datamodel.cache_schema import CacheSchema
 from knot_resolver_manager.datamodel.dns64_schema import Dns64Schema
 from knot_resolver_manager.datamodel.dnssec_schema import DnssecSchema
-from knot_resolver_manager.datamodel.forward_zone_schema import ForwardZoneSchema
+from knot_resolver_manager.datamodel.forward_schema import ForwardSchema
 from knot_resolver_manager.datamodel.logging_schema import LoggingSchema
 from knot_resolver_manager.datamodel.lua_schema import LuaSchema
 from knot_resolver_manager.datamodel.management_schema import ManagementSchema
@@ -102,7 +102,7 @@ class KresConfig(ConfigSchema):
         policy: List of policy rules and its configuration.
         rpz: List of Response Policy Zones and its configuration.
         stub_zones: List of Stub Zones and its configuration.
-        forward_zones: List of Forward Zones and its configuration.
+        forward: List of Forward Zones and its configuration.
         cache: DNS resolver cache configuration.
         dnssec: Disable DNSSEC, enable with defaults or set new configuration.
         dns64: Disable DNS64 (RFC 6147), enable with defaults or set new configuration.
@@ -127,7 +127,7 @@ class KresConfig(ConfigSchema):
         policy: Optional[List[PolicySchema]] = None
         rpz: Optional[List[RPZSchema]] = None
         stub_zones: Optional[List[StubZoneSchema]] = None
-        forward_zones: Optional[List[ForwardZoneSchema]] = None
+        forward: Optional[List[ForwardSchema]] = None
         cache: CacheSchema = CacheSchema()
         dnssec: Union[bool, DnssecSchema] = True
         dns64: Union[bool, Dns64Schema] = False
@@ -152,7 +152,7 @@ class KresConfig(ConfigSchema):
     policy: Optional[List[PolicySchema]]
     rpz: Optional[List[RPZSchema]]
     stub_zones: Optional[List[StubZoneSchema]]
-    forward_zones: Optional[List[ForwardZoneSchema]]
+    forward: Optional[List[ForwardSchema]]
     cache: CacheSchema
     dnssec: Union[Literal[False], DnssecSchema]
     dns64: Union[Literal[False], Dns64Schema]
diff --git a/manager/knot_resolver_manager/datamodel/forward_schema.py b/manager/knot_resolver_manager/datamodel/forward_schema.py
new file mode 100644 (file)
index 0000000..6226156
--- /dev/null
@@ -0,0 +1,39 @@
+from typing import List, Optional, Union
+
+from typing_extensions import Literal
+
+from knot_resolver_manager.datamodel.types import DomainName, IPAddressOptionalPort
+from knot_resolver_manager.datamodel.types.files import FilePath
+from knot_resolver_manager.utils.modeling import ConfigSchema
+
+
+class ForwardServerSchema(ConfigSchema):
+    """
+    Forward server configuration options.
+
+    ---
+    address: IP address(es) of a forward server.
+    transport: Transport protocol for a forward server.
+    pin_sha256: Hash of accepted CA certificate.
+    hostname: Hostname of the Forward server.
+    ca_file: Path to CA certificate file.
+    """
+
+    address: Union[IPAddressOptionalPort, List[IPAddressOptionalPort]]
+    transport: Optional[Literal["tls"]] = None
+    pin_sha256: Optional[Union[str, List[str]]] = None
+    hostname: Optional[DomainName] = None
+    ca_file: Optional[FilePath] = None
+
+
+class ForwardSchema(ConfigSchema):
+    """
+    Configuration of Forward Zone.
+
+    ---
+    subtree: Subtree to forward.
+    servers: Forward server configuration.
+    """
+
+    subtree: DomainName
+    servers: Union[List[IPAddressOptionalPort], List[ForwardServerSchema]]
diff --git a/manager/knot_resolver_manager/datamodel/forward_zone_schema.py b/manager/knot_resolver_manager/datamodel/forward_zone_schema.py
deleted file mode 100644 (file)
index b5e4e23..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-from typing import List, Optional, Union
-
-from knot_resolver_manager.datamodel.policy_schema import ForwardServerSchema
-from knot_resolver_manager.datamodel.types import DomainName, IPAddressOptionalPort, PolicyFlagEnum
-from knot_resolver_manager.utils.modeling import ConfigSchema
-
-
-class ForwardZoneSchema(ConfigSchema):
-    """
-    Configuration of Forward Zone.
-
-    ---
-    subtree: Domain name of the zone.
-    servers: IP address of Forward server.
-    views: Use this Forward Zone only for clients defined by views.
-    options: Configuration flags for Forward Zone.
-    """
-
-    subtree: DomainName
-    servers: Union[List[IPAddressOptionalPort], List[ForwardServerSchema]]
-    views: Optional[List[str]] = None
-    options: Optional[List[PolicyFlagEnum]] = None
index 905d964a67bb11c5625b8bcf580d88149777b022..bbc61cd1b8e33610ff46d89ea10dbabd59107138 100644 (file)
@@ -1,12 +1,9 @@
 from typing import List, Optional, Union
 
-from typing_extensions import Literal
-
+from knot_resolver_manager.datamodel.forward_schema import ForwardServerSchema
 from knot_resolver_manager.datamodel.network_schema import AddressRenumberingSchema
 from knot_resolver_manager.datamodel.types import (
     DNSRecordTypeEnum,
-    DomainName,
-    File,
     IPAddressOptionalPort,
     PolicyActionEnum,
     PolicyFlagEnum,
@@ -47,25 +44,6 @@ class AnswerSchema(ConfigSchema):
     nodata: bool = False
 
 
-class ForwardServerSchema(ConfigSchema):
-    """
-    Configuration of forward server.
-
-    ---
-    address: IP address of a forward server.
-    transport: Transport protocol for a forward server.
-    pin_sha256: Hash of accepted CA certificate.
-    hostname: Hostname of the Forward server.
-    ca_file: Path to CA certificate file.
-    """
-
-    address: List[IPAddressOptionalPort]
-    transport: Optional[Literal["tls"]] = None
-    pin_sha256: Optional[Union[str, List[str]]] = None
-    hostname: Optional[DomainName] = None
-    ca_file: Optional[File] = None
-
-
 def _validate_policy_action(policy_action: Union["ActionSchema", "PolicySchema"]) -> None:
     servers = ["mirror", "forward", "stub"]
 
index 93a58acea0be682cdf1a4eb5090581b8a58c0a6f..52bef389369f44f6f5fa1725f41d956e118266f7 100644 (file)
@@ -39,8 +39,8 @@ nsid.name('{{ cfg.nsid }}_' .. worker.id)
 -- STUB-ZONES section -------------------------------
 {% include "stub_zones.lua.j2" %}
 
--- FORWARD-ZONES section ----------------------------
-{% include "forward_zones.lua.j2" %}
+-- FORWARD section ----------------------------
+{% include "forward.lua.j2" %}
 
 -- CACHE section ------------------------------------
 {% include "cache.lua.j2" %}
diff --git a/manager/knot_resolver_manager/datamodel/templates/forward.lua.j2 b/manager/knot_resolver_manager/datamodel/templates/forward.lua.j2
new file mode 100644 (file)
index 0000000..e69de29
index 3458ee7666314ef0126c338bfbbcfebaef03dd75..bd5bea090610d84ed5d75e4a887b36efa3bfcf5b 100644 (file)
@@ -17,6 +17,7 @@ from .types import (
     IPv4Address,
     IPv6Address,
     IPv6Network96,
+    ListOrSingle,
     PortNumber,
     SizeUnit,
     TimeUnit,
@@ -42,6 +43,7 @@ __all__ = [
     "IPv4Address",
     "IPv6Address",
     "IPv6Network96",
+    "ListOrSingle",
     "PortNumber",
     "SizeUnit",
     "TimeUnit",
index 0f28572db6831cebffe96b4d830bd4411d3227fa..0dee28810d8087b3b6c5abf69076ac9201a32cdd 100644 (file)
@@ -1,5 +1,5 @@
 from knot_resolver_manager.datamodel.config_schema import template_from_str
-from knot_resolver_manager.datamodel.forward_zone_schema import ForwardServerSchema
+from knot_resolver_manager.datamodel.forward_schema import ForwardServerSchema
 
 
 def test_string_table():