]> git.ipfire.org Git - thirdparty/knot-resolver.git/commitdiff
config: files moved to 'datamodel' subdirectory
authorAleš <ales.mrazek@nic.cz>
Tue, 13 Apr 2021 16:51:51 +0000 (18:51 +0200)
committerAleš Mrázek <ales.mrazek@nic.cz>
Fri, 8 Apr 2022 14:17:52 +0000 (16:17 +0200)
20 files changed:
manager/config/kres-manager.json
manager/config/kres-manager.yaml
manager/config/kresd-template.j2
manager/integration/tests/basic_crash/payload.json
manager/integration/tests/basic_startup/payload.json
manager/integration/tests/basic_startup/run
manager/integration/tests/worker_count/payload.json
manager/knot_resolver_manager/configuration.py
manager/knot_resolver_manager/datamodel.py [deleted file]
manager/knot_resolver_manager/datamodel/__init__.py [new file with mode: 0644]
manager/knot_resolver_manager/datamodel/cache_config.py [new file with mode: 0644]
manager/knot_resolver_manager/datamodel/config.py [new file with mode: 0644]
manager/knot_resolver_manager/datamodel/dns64_config.py [new file with mode: 0644]
manager/knot_resolver_manager/datamodel/errors.py [new file with mode: 0644]
manager/knot_resolver_manager/datamodel/logging_config.py [new file with mode: 0644]
manager/knot_resolver_manager/datamodel/lua_config.py [new file with mode: 0644]
manager/knot_resolver_manager/datamodel/network_config.py [new file with mode: 0644]
manager/knot_resolver_manager/datamodel/server_config.py [new file with mode: 0644]
manager/knot_resolver_manager/datamodel/types.py [new file with mode: 0644]
manager/knot_resolver_manager/datamodel_types.py [deleted file]

index cc61b6f57be463a85338bfc9115d10778118dd6f..8e18430aded2670a0d840e4edc6d491b8b5790ea 100644 (file)
@@ -3,27 +3,17 @@
     "instances": 4
   },
   "dns64": {
-    "prefix": "64:ff9b::/96"
+    "prefix": "64:ff9b::"
   },
   "logging": {
     "level": 4
   },
   "lua": {
     "script": [
-      "-- SPDX-License-Identifier: CC0-1.0",
-      "-- vim:syntax=lua:set ts=4 sw=4:",
-      "-- Refer to manual: https://knot-resolver.readthedocs.org/en/stable/",
-      "-- Network interface configuration","net.listen('127.0.0.1', 53, { kind = 'dns' })",
+      "net.listen('127.0.0.1', 53, { kind = 'dns' })",
       "net.listen('127.0.0.1', 853, { kind = 'tls' })",
-      "--net.listen('127.0.0.1', 443, { kind = 'doh2' })",
       "net.listen('::1', 53, { kind = 'dns', freebind = true })",
       "net.listen('::1', 853, { kind = 'tls', freebind = true })",
-      "--net.listen('::1', 443, { kind = 'doh2' })",
-      "-- Load useful modules","modules = {",
-      "'hints > iterate',  -- Load /etc/hosts and allow custom root hints",
-      "'stats',            -- Track internal statistics",
-      "'predict',          -- Prefetch expiring/frequent records",
-      "}",
       "-- Cache size",
       "cache.size = 100 * MB"
     ]
index fe716ed35c9b821247cd40ed63ad3208cdd4d2da..b5c16b2f1eb88516d603f6a55eecc8b7cb53bb40 100644 (file)
@@ -2,7 +2,7 @@ server:
   instances: 1
 
 dns64:
-  prefix: "64:ff9b::/96"
+  prefix: "64:ff9b::"
 
 logging:
   level: 4
@@ -10,24 +10,10 @@ logging:
 lua:
   script: |
     """
-    -- SPDX-License-Identifier: CC0-1.0
-    -- vim:syntax=lua:set ts=4 sw=4:
-    -- Refer to manual: https://knot-resolver.readthedocs.org/en/stable/
-
-    -- Network interface configuration
     net.listen('127.0.0.1', 53, { kind = 'dns' })
     net.listen('127.0.0.1', 853, { kind = 'tls' })
-    --net.listen('127.0.0.1', 443, { kind = 'doh2' })
     net.listen('::1', 53, { kind = 'dns', freebind = true })
     net.listen('::1', 853, { kind = 'tls', freebind = true })
-    --net.listen('::1', 443, { kind = 'doh2' })
-
-    -- Load useful modules
-    modules = {
-      'hints > iterate',  -- Load /etc/hosts and allow custom root hints
-      'stats',            -- Track internal statistics
-      'predict',          -- Prefetch expiring/frequent records
-    }
 
     -- Cache size
     cache.size = 100 * MB
index 57120b8b04818e9eb9d6ec37e56806d9ea494c84..ac34262c201bb3d5c2caaf51efb8574c23250864 100644 (file)
@@ -1,6 +1,9 @@
 modules = {
+    'hints > iterate',   -- Load /etc/hosts and allow custom root hints",
+    'stats',             -- Track internal statistics",
+    'predict',           -- Prefetch expiring/frequent records",
 {%- if cfg.dns64 %}
-    dns64 = '{{ cfg.dns64.prefix }}' }   -- dns64
+    dns64 = '{{ cfg.dns64.prefix }}', -- dns64
 {%- endif %}
 }
 
index 74425a9a68dccb16a100306bb0ea18dec2f38a39..a90926c6451015b31cc21d11f380ce20e4c1490a 100644 (file)
@@ -4,20 +4,10 @@
   },
   "lua": {
     "script_list": [
-      "-- SPDX-License-Identifier: CC0-1.0",
-      "-- vim:syntax=lua:set ts=4 sw=4:",
-      "-- Refer to manual: https://knot-resolver.readthedocs.org/en/stable/",
-      "-- Network interface configuration","net.listen('127.0.0.1', 53, { kind = 'dns' })",
+      "net.listen('127.0.0.1', 53, { kind = 'dns' })",
       "net.listen('127.0.0.1', 853, { kind = 'tls' })",
-      "--net.listen('127.0.0.1', 443, { kind = 'doh2' })",
       "net.listen('::1', 53, { kind = 'dns', freebind = true })",
       "net.listen('::1', 853, { kind = 'tls', freebind = true })",
-      "--net.listen('::1', 443, { kind = 'doh2' })",
-      "-- Load useful modules","modules = {",
-      "'hints > iterate',  -- Load /etc/hosts and allow custom root hints",
-      "'stats',            -- Track internal statistics",
-      "'predict',          -- Prefetch expiring/frequent records",
-      "}",
       "-- Cache size",
       "cache.size = 100 * MB"
     ]
index f90aab7331515864b44874e4843a67e3031279ba..74f185601022c6374b0693005ca30272aadeb8c7 100644 (file)
@@ -3,28 +3,17 @@
     "instances": 1
   },
   "dns64": {
-    "prefix": "64:ff9b::/96"
+    "prefix": "64:ff9b::"
   },
   "logging": {
     "level": 4
   },
   "lua": {
     "script_list": [
-      "-- SPDX-License-Identifier: CC0-1.0",
-      "-- vim:syntax=lua:set ts=4 sw=4:",
-      "-- Refer to manual: https://knot-resolver.readthedocs.org/en/stable/",
-      "-- Network interface configuration","net.listen('127.0.0.1', 53, { kind = 'dns' })",
+      "net.listen('127.0.0.1', 53, { kind = 'dns' })",
       "net.listen('127.0.0.1', 853, { kind = 'tls' })",
-      "--net.listen('127.0.0.1', 443, { kind = 'doh2' })",
       "net.listen('::1', 53, { kind = 'dns', freebind = true })",
       "net.listen('::1', 853, { kind = 'tls', freebind = true })",
-      "--net.listen('::1', 443, { kind = 'doh2' })",
-      "-- Load useful modules",
-      "modules = {",
-      "    'hints > iterate',  -- Load /etc/hosts and allow custom root hints",
-      "    'stats',            -- Track internal statistics",
-      "    'predict',          -- Prefetch expiring/frequent records",
-      "}",
       "-- Cache size",
       "cache.size = 100 * MB"
     ]
index 93b50d11a5c8a5bab2883cf9decf53b1000b097a..126f038ed9b4301697e6b0a60868ca996144689a 100755 (executable)
@@ -14,7 +14,3 @@ python3 send_request.py
 
 # assert that any kresd process is running
 systemctl status | grep kresd
-
-# see the rendered Lua configuration
-echo "Lua config in '/etc/knot-resolver/kresd.conf':"
-cat /etc/knot-resolver/kresd.conf
index 74425a9a68dccb16a100306bb0ea18dec2f38a39..a90926c6451015b31cc21d11f380ce20e4c1490a 100644 (file)
@@ -4,20 +4,10 @@
   },
   "lua": {
     "script_list": [
-      "-- SPDX-License-Identifier: CC0-1.0",
-      "-- vim:syntax=lua:set ts=4 sw=4:",
-      "-- Refer to manual: https://knot-resolver.readthedocs.org/en/stable/",
-      "-- Network interface configuration","net.listen('127.0.0.1', 53, { kind = 'dns' })",
+      "net.listen('127.0.0.1', 53, { kind = 'dns' })",
       "net.listen('127.0.0.1', 853, { kind = 'tls' })",
-      "--net.listen('127.0.0.1', 443, { kind = 'doh2' })",
       "net.listen('::1', 53, { kind = 'dns', freebind = true })",
       "net.listen('::1', 853, { kind = 'tls', freebind = true })",
-      "--net.listen('::1', 443, { kind = 'doh2' })",
-      "-- Load useful modules","modules = {",
-      "'hints > iterate',  -- Load /etc/hosts and allow custom root hints",
-      "'stats',            -- Track internal statistics",
-      "'predict',          -- Prefetch expiring/frequent records",
-      "}",
       "-- Cache size",
       "cache.size = 100 * MB"
     ]
index dbb505d0fbb98698d7205ff7bf0e5e814879843e..ad8b61b1522474a93149fbfe3dda8fa356406848 100644 (file)
@@ -6,8 +6,11 @@ from .datamodel import KresConfig
 
 _LUA_TEMPLATE_STR = """
 modules = {
+    'hints > iterate',   -- Load /etc/hosts and allow custom root hints",
+    'stats',             -- Track internal statistics",
+    'predict',           -- Prefetch expiring/frequent records",
 {%- if cfg.dns64 %}
-    dns64 = '{{ cfg.dns64.prefix }}' }   -- dns64
+    dns64 = '{{ cfg.dns64.prefix }}', -- dns64
 {%- endif %}
 }
 
diff --git a/manager/knot_resolver_manager/datamodel.py b/manager/knot_resolver_manager/datamodel.py
deleted file mode 100644 (file)
index 29bc71f..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-from typing import List, Optional
-
-from knot_resolver_manager.utils.dataclasses_parservalidator import DataclassParserValidatorMixin
-
-from .compat.dataclasses import dataclass
-from .datamodel_types import IPV6_PREFIX_96
-
-
-class DataValidationError(Exception):
-    pass
-
-
-@dataclass
-class ServerConfig(DataclassParserValidatorMixin):
-    instances: int = 1
-
-    def validate(self):
-        if not 0 < self.instances <= 256:
-            raise DataValidationError("number of kresd 'instances' must be in range 1..256")
-
-
-@dataclass
-class Dns64Config(DataclassParserValidatorMixin):
-    prefix: str = "64:ff9b::"
-
-    def validate(self):
-        if not bool(IPV6_PREFIX_96.match(self.prefix)):
-            raise DataValidationError("'dns64.prefix' must be valid IPv6 address and '/96' CIDR")
-
-
-@dataclass
-class LoggingConfig(DataclassParserValidatorMixin):
-    level: int = 3
-
-    def validate(self):
-        if not 0 <= self.level <= 7:
-            raise DataValidationError("logging 'level' must be in range 0..7")
-
-
-@dataclass
-class LuaConfig(DataclassParserValidatorMixin):
-    script_list: Optional[List[str]] = None
-    script: Optional[str] = None
-
-    def __post_init__(self):
-        # Concatenate array to single string
-        if self.script_list is not None:
-            self.script = "\n".join(self.script_list)
-
-    def validate(self):
-        assert self.script_list is not None or self.script is not None
-
-
-@dataclass
-class KresConfig(DataclassParserValidatorMixin):
-    server: ServerConfig = ServerConfig()
-    dns64: Optional[Dns64Config] = None
-    logging: LoggingConfig = LoggingConfig()
-    lua: LuaConfig = LuaConfig()
-
-    def validate(self):
-        self.server.validate()
-        if self.dns64 is not None:
-            self.dns64.validate()
-        self.lua.validate()
diff --git a/manager/knot_resolver_manager/datamodel/__init__.py b/manager/knot_resolver_manager/datamodel/__init__.py
new file mode 100644 (file)
index 0000000..5a42912
--- /dev/null
@@ -0,0 +1,7 @@
+from .config import KresConfig
+from .errors import DataValidationError
+
+__all__ = [
+    "KresConfig",
+    "DataValidationError",
+]
diff --git a/manager/knot_resolver_manager/datamodel/cache_config.py b/manager/knot_resolver_manager/datamodel/cache_config.py
new file mode 100644 (file)
index 0000000..b461263
--- /dev/null
@@ -0,0 +1,8 @@
+from knot_resolver_manager.compat.dataclasses import dataclass
+from knot_resolver_manager.utils.dataclasses_parservalidator import DataclassParserValidatorMixin
+
+
+@dataclass
+class CacheConfig(DataclassParserValidatorMixin):
+    def validate(self):
+        pass
diff --git a/manager/knot_resolver_manager/datamodel/config.py b/manager/knot_resolver_manager/datamodel/config.py
new file mode 100644 (file)
index 0000000..a30e7d1
--- /dev/null
@@ -0,0 +1,31 @@
+from typing import Optional
+
+from knot_resolver_manager.compat.dataclasses import dataclass
+from knot_resolver_manager.utils.dataclasses_parservalidator import DataclassParserValidatorMixin
+
+from .cache_config import CacheConfig
+from .dns64_config import Dns64Config
+from .logging_config import LoggingConfig
+from .lua_config import LuaConfig
+from .network_config import NetworkConfig
+from .server_config import ServerConfig
+
+
+@dataclass
+class KresConfig(DataclassParserValidatorMixin):
+    server: ServerConfig = ServerConfig()
+    network: Optional[NetworkConfig] = None
+    cache: CacheConfig = CacheConfig()
+    dns64: Optional[Dns64Config] = None
+    logging: LoggingConfig = LoggingConfig()
+    lua: LuaConfig = LuaConfig()
+
+    def validate(self):
+        self.server.validate()
+        if self.network is not None:
+            self.network.validate()
+        self.cache.validate()
+        if self.dns64 is not None:
+            self.dns64.validate()
+        self.logging.validate()
+        self.lua.validate()
diff --git a/manager/knot_resolver_manager/datamodel/dns64_config.py b/manager/knot_resolver_manager/datamodel/dns64_config.py
new file mode 100644 (file)
index 0000000..46c123f
--- /dev/null
@@ -0,0 +1,14 @@
+from knot_resolver_manager.compat.dataclasses import dataclass
+from knot_resolver_manager.utils.dataclasses_parservalidator import DataclassParserValidatorMixin
+
+from .errors import DataValidationError
+from .types import IPV6_PREFIX_96
+
+
+@dataclass
+class Dns64Config(DataclassParserValidatorMixin):
+    prefix: str = "64:ff9b::"
+
+    def validate(self):
+        if not bool(IPV6_PREFIX_96.match(self.prefix)):
+            raise DataValidationError("'dns64.prefix' must be valid IPv6 /96 prefix")
diff --git a/manager/knot_resolver_manager/datamodel/errors.py b/manager/knot_resolver_manager/datamodel/errors.py
new file mode 100644 (file)
index 0000000..3131355
--- /dev/null
@@ -0,0 +1,2 @@
+class DataValidationError(Exception):
+    pass
diff --git a/manager/knot_resolver_manager/datamodel/logging_config.py b/manager/knot_resolver_manager/datamodel/logging_config.py
new file mode 100644 (file)
index 0000000..dde1ed2
--- /dev/null
@@ -0,0 +1,13 @@
+from knot_resolver_manager.compat.dataclasses import dataclass
+from knot_resolver_manager.utils.dataclasses_parservalidator import DataclassParserValidatorMixin
+
+from .errors import DataValidationError
+
+
+@dataclass
+class LoggingConfig(DataclassParserValidatorMixin):
+    level: int = 3
+
+    def validate(self):
+        if not 0 <= self.level <= 7:
+            raise DataValidationError("logging 'level' must be in range 0..7")
diff --git a/manager/knot_resolver_manager/datamodel/lua_config.py b/manager/knot_resolver_manager/datamodel/lua_config.py
new file mode 100644 (file)
index 0000000..06dd268
--- /dev/null
@@ -0,0 +1,18 @@
+from typing import List, Optional
+
+from knot_resolver_manager.compat.dataclasses import dataclass
+from knot_resolver_manager.utils.dataclasses_parservalidator import DataclassParserValidatorMixin
+
+
+@dataclass
+class LuaConfig(DataclassParserValidatorMixin):
+    script_list: Optional[List[str]] = None
+    script: Optional[str] = None
+
+    def __post_init__(self):
+        # Concatenate array to single string
+        if self.script_list is not None:
+            self.script = "\n".join(self.script_list)
+
+    def validate(self):
+        assert self.script_list is not None or self.script is not None
diff --git a/manager/knot_resolver_manager/datamodel/network_config.py b/manager/knot_resolver_manager/datamodel/network_config.py
new file mode 100644 (file)
index 0000000..784ba5a
--- /dev/null
@@ -0,0 +1,8 @@
+from knot_resolver_manager.compat.dataclasses import dataclass
+from knot_resolver_manager.utils.dataclasses_parservalidator import DataclassParserValidatorMixin
+
+
+@dataclass
+class NetworkConfig(DataclassParserValidatorMixin):
+    def validate(self):
+        pass
diff --git a/manager/knot_resolver_manager/datamodel/server_config.py b/manager/knot_resolver_manager/datamodel/server_config.py
new file mode 100644 (file)
index 0000000..404909a
--- /dev/null
@@ -0,0 +1,13 @@
+from knot_resolver_manager.compat.dataclasses import dataclass
+from knot_resolver_manager.utils.dataclasses_parservalidator import DataclassParserValidatorMixin
+
+from .errors import DataValidationError
+
+
+@dataclass
+class ServerConfig(DataclassParserValidatorMixin):
+    instances: int = 1
+
+    def validate(self):
+        if not 0 < self.instances <= 256:
+            raise DataValidationError("number of kresd instances must be in range 1..256")
diff --git a/manager/knot_resolver_manager/datamodel/types.py b/manager/knot_resolver_manager/datamodel/types.py
new file mode 100644 (file)
index 0000000..e18335c
--- /dev/null
@@ -0,0 +1,3 @@
+import re
+
+IPV6_PREFIX_96 = re.compile(r"^([0-9A-Fa-f]{1,4}:){2}:$")
diff --git a/manager/knot_resolver_manager/datamodel_types.py b/manager/knot_resolver_manager/datamodel_types.py
deleted file mode 100644 (file)
index 6db42d7..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-import re
-
-IPV4ADDR = re.compile(r"^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$")
-
-IPV6_PREFIX_96 = re.compile(r"^([0-9A-Fa-f]{1,4}:){2}:($|/96)$")