]> git.ipfire.org Git - thirdparty/knot-resolver.git/commitdiff
datamodel: renamed defer section to prioritization
authorAleš Mrázek <ales.mrazek@nic.cz>
Tue, 15 Apr 2025 09:32:29 +0000 (11:32 +0200)
committerAleš Mrázek <ales.mrazek@nic.cz>
Tue, 5 Aug 2025 09:17:48 +0000 (11:17 +0200)
- renamed /defer/log-period -> /defer/logging-period

NEWS
doc/_static/config.schema.json
python/knot_resolver/datamodel/config_schema.py
python/knot_resolver/datamodel/defer_schema.py [deleted file]
python/knot_resolver/datamodel/prioritization_schema.py [new file with mode: 0644]
python/knot_resolver/datamodel/templates/defer.lua.j2 [deleted file]
python/knot_resolver/datamodel/templates/policy-config.lua.j2
python/knot_resolver/datamodel/templates/prioritization.lua.j2 [new file with mode: 0644]
python/knot_resolver/datamodel/templates/worker-config.lua.j2
python/knot_resolver/manager/manager.py

diff --git a/NEWS b/NEWS
index c341c8de18d097a2434a0851e0a476588dd2822d..a9e0464a09bceced5ac089ff50a7da62e279f317 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -18,6 +18,8 @@ Incompatible changes
   - /network/tls/auto-discovery
   - /webmgmt
 - Renamed/moved options in the declarative configuration model (YAML).
+  - /defer/* -> /prioritization/*
+  - /defer/log-period -> /prioritization/logging-period
   - /dns64: true|false -> /dns64/enabled: true|false
   - /dns64/rev-ttl -> /dns64/reverse-ttl
   - /dnssec: true|false -> /dnssec/enabled: true|false
index f85b13710ee9e59897ae760aa2ea1bf545e608e0..26bed23ba6a1b3341cb6151bf3d842a465a4cf70 100644 (file)
             },
             "default": null
         },
-        "defer": {
+        "prioritization": {
             "description": "Configuration of request prioritization (defer).",
             "type": "object",
             "properties": {
                 "enabled": {
                     "type": "boolean",
-                    "description": "Use request prioritization.",
+                    "description": "Enable/disable request prioritization.",
                     "default": false
                 },
-                "log-period": {
+                "logging-period": {
                     "type": "string",
                     "pattern": "^(\\d+)(us|ms|s|m|h|d)$",
                     "description": "Minimal time between two log messages, or '0s' to disable.",
             },
             "default": {
                 "enabled": false,
-                "log_period": "0s"
+                "logging_period": "0s"
             }
         },
         "lua": {
index 656197af499de4f8448f605796bbc9ebde797f4c..13aaae17bfe0b6469e6ae760d1f1809cb7fcd754 100644 (file)
@@ -5,7 +5,6 @@ from typing import Any, Dict, List, Literal, Optional, Tuple, Union
 
 from knot_resolver.constants import API_SOCK_FILE, RUN_DIR, VERSION
 from knot_resolver.datamodel.cache_schema import CacheSchema
-from knot_resolver.datamodel.defer_schema import DeferSchema
 from knot_resolver.datamodel.dns64_schema import Dns64Schema
 from knot_resolver.datamodel.dnssec_schema import DnssecSchema
 from knot_resolver.datamodel.forward_schema import ForwardSchema
@@ -17,6 +16,7 @@ from knot_resolver.datamodel.management_schema import ManagementSchema
 from knot_resolver.datamodel.monitoring_schema import MonitoringSchema
 from knot_resolver.datamodel.network_schema import NetworkSchema
 from knot_resolver.datamodel.options_schema import OptionsSchema
+from knot_resolver.datamodel.prioritization_schema import PrioritizationSchema
 from knot_resolver.datamodel.rate_limiting_schema import RateLimitingSchema
 from knot_resolver.datamodel.templates import POLICY_CONFIG_TEMPLATE, WORKER_CONFIG_TEMPLATE
 from knot_resolver.datamodel.types import EscapedStr, IntPositive, WritableDir
@@ -106,7 +106,7 @@ class KresConfig(ConfigSchema):
         monitoring: Metrics exposisition configuration (Prometheus, Graphite)
         lua: Custom Lua configuration.
         rate_limiting: Configuration of rate limiting.
-        defer: Configuration of request prioritization (defer).
+        prioritization: Configuration of request prioritization (defer).
         """
 
         version: int = 1
@@ -126,7 +126,7 @@ class KresConfig(ConfigSchema):
         logging: LoggingSchema = LoggingSchema()
         monitoring: MonitoringSchema = MonitoringSchema()
         rate_limiting: Optional[RateLimitingSchema] = None
-        defer: DeferSchema = DeferSchema()
+        prioritization: PrioritizationSchema = PrioritizationSchema()
         lua: LuaSchema = LuaSchema()
 
     _LAYER = Raw
@@ -147,7 +147,7 @@ class KresConfig(ConfigSchema):
     logging: LoggingSchema
     monitoring: MonitoringSchema
     rate_limiting: Optional[RateLimitingSchema]
-    defer: DeferSchema
+    prioritization: PrioritizationSchema
     lua: LuaSchema
 
     def _hostname(self, obj: Raw) -> Any:
diff --git a/python/knot_resolver/datamodel/defer_schema.py b/python/knot_resolver/datamodel/defer_schema.py
deleted file mode 100644 (file)
index 81546a0..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-from knot_resolver.datamodel.types import TimeUnit
-from knot_resolver.utils.modeling import ConfigSchema
-
-
-class DeferSchema(ConfigSchema):
-    """
-    Configuration of request prioritization (defer).
-
-    ---
-    enabled: Use request prioritization.
-    log_period: Minimal time between two log messages, or '0s' to disable.
-    """
-
-    enabled: bool = False
-    log_period: TimeUnit = TimeUnit("0s")
diff --git a/python/knot_resolver/datamodel/prioritization_schema.py b/python/knot_resolver/datamodel/prioritization_schema.py
new file mode 100644 (file)
index 0000000..74025b8
--- /dev/null
@@ -0,0 +1,15 @@
+from knot_resolver.datamodel.types import TimeUnit
+from knot_resolver.utils.modeling import ConfigSchema
+
+
+class PrioritizationSchema(ConfigSchema):
+    """
+    Configuration of request prioritization (defer).
+
+    ---
+    enabled: Enable/disable request prioritization.
+    logging_period: Minimal time between two log messages, or '0s' to disable.
+    """
+
+    enabled: bool = False
+    logging_period: TimeUnit = TimeUnit("0s")
diff --git a/python/knot_resolver/datamodel/templates/defer.lua.j2 b/python/knot_resolver/datamodel/templates/defer.lua.j2
deleted file mode 100644 (file)
index 5dacff7..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-{% from 'macros/common_macros.lua.j2' import boolean %}
-
-{% if cfg.defer.enabled and disable_defer is not defined -%}
-assert(C.defer_init(
-       '{{ cfg.rundir }}/defer',
-       {{ cfg.defer.log_period.millis() }},
-       {{ cfg.workers }}) == 0)
-{% else %}
-assert(C.defer_init(nil, 0, 0) == 0)
-{%- endif %}
index fbd824b38ec7012de19cc67b02566f0f57c13f86..011e627fdb7ea810898e88a31cde27c7a05135f7 100644 (file)
@@ -35,10 +35,10 @@ cache.open({{ cfg.cache.size_max.bytes() }}, 'lmdb://{{ cfg.cache.storage }}')
 -- FORWARD section ----------------------------------
 {% include "forward.lua.j2" %}
 
--- DEFER section ------------------------------------
+-- PRIORITIZATION section ------------------------------------
 -- Force-disable defer to avoid the default defer config.
-{% set disable_defer = true %}
-{% include "defer.lua.j2" %}
+{% set disable_prioritization = true %}
+{% include "prioritization.lua.j2" %}
 
 {% endif %}
 
diff --git a/python/knot_resolver/datamodel/templates/prioritization.lua.j2 b/python/knot_resolver/datamodel/templates/prioritization.lua.j2
new file mode 100644 (file)
index 0000000..7c241e1
--- /dev/null
@@ -0,0 +1,13 @@
+{% if cfg.prioritization.enabled and disable_prioritization is not defined %}
+-- Enable and configure request prioritization (defer)
+assert(
+    C.defer_init(
+        '{{ cfg.rundir }}/defer',
+        {{ cfg.prioritization.logging_period.millis() }},
+        {{ cfg.workers }}
+    ) == 0
+)
+{% else %}
+-- Disable request prioritization (defer)
+assert(C.defer_init(nil, 0, 0) == 0)
+{% endif %}
index 14b862913e756bc9506d614cf7ebabdc32faff52..a312480235af77d67614b09b9c52113ebb1c08f6 100644 (file)
@@ -43,8 +43,8 @@ nsid.name('{{ cfg.nsid }}' .. worker.id)
 -- RATE-LIMITING section ------------------------------------
 {% include "rate_limiting.lua.j2" %}
 
--- DEFER section ------------------------------------
-{% include "defer.lua.j2" %}
+-- PRIORITIZATION section ------------------------------------
+{% include "prioritization.lua.j2" %}
 
 {% endif %}
 
index ac6539c4272554a30c73692673116cdb83b3c3ee..d1d103ea96e1f2bd75732433bb87c641bb4b11ce 100644 (file)
@@ -128,9 +128,9 @@ class KresManager:  # pylint: disable=too-many-instance-attributes
                 config.dns64,
                 config.logging,
                 config.monitoring,
-                config.lua,
                 config.rate_limiting,
-                config.defer,
+                config.prioritization,
+                config.lua,
             ]
 
         # register and immediately call a verifier that validates config with 'canary' kresd process
@@ -225,7 +225,7 @@ class KresManager:  # pylint: disable=too-many-instance-attributes
                     os.unlink(str(_old.rundir) + "/ratelimiting")
                 except FileNotFoundError:
                     pass
-            if _old.workers != new.workers or _old.defer != new.defer:
+            if _old.workers != new.workers or _old.prioritization != new.prioritization:
                 logger.debug("Unlinking shared defer memory")
                 try:
                     os.unlink(str(_old.rundir) + "/defer")