From: Aleš Mrázek Date: Tue, 15 Apr 2025 09:32:29 +0000 (+0200) Subject: datamodel: renamed defer section to prioritization X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4ac6308d512c4326e659dbe63aa1e64fff6ff80f;p=thirdparty%2Fknot-resolver.git datamodel: renamed defer section to prioritization - renamed /defer/log-period -> /defer/logging-period --- diff --git a/NEWS b/NEWS index c341c8de1..a9e0464a0 100644 --- 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 diff --git a/doc/_static/config.schema.json b/doc/_static/config.schema.json index f85b13710..26bed23ba 100644 --- a/doc/_static/config.schema.json +++ b/doc/_static/config.schema.json @@ -1625,16 +1625,16 @@ }, "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.", @@ -1643,7 +1643,7 @@ }, "default": { "enabled": false, - "log_period": "0s" + "logging_period": "0s" } }, "lua": { diff --git a/python/knot_resolver/datamodel/config_schema.py b/python/knot_resolver/datamodel/config_schema.py index 656197af4..13aaae17b 100644 --- a/python/knot_resolver/datamodel/config_schema.py +++ b/python/knot_resolver/datamodel/config_schema.py @@ -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 index 81546a075..000000000 --- a/python/knot_resolver/datamodel/defer_schema.py +++ /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 index 000000000..74025b8d9 --- /dev/null +++ b/python/knot_resolver/datamodel/prioritization_schema.py @@ -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 index 5dacff75f..000000000 --- a/python/knot_resolver/datamodel/templates/defer.lua.j2 +++ /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 %} diff --git a/python/knot_resolver/datamodel/templates/policy-config.lua.j2 b/python/knot_resolver/datamodel/templates/policy-config.lua.j2 index fbd824b38..011e627fd 100644 --- a/python/knot_resolver/datamodel/templates/policy-config.lua.j2 +++ b/python/knot_resolver/datamodel/templates/policy-config.lua.j2 @@ -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 index 000000000..7c241e14f --- /dev/null +++ b/python/knot_resolver/datamodel/templates/prioritization.lua.j2 @@ -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 %} diff --git a/python/knot_resolver/datamodel/templates/worker-config.lua.j2 b/python/knot_resolver/datamodel/templates/worker-config.lua.j2 index 14b862913..a31248023 100644 --- a/python/knot_resolver/datamodel/templates/worker-config.lua.j2 +++ b/python/knot_resolver/datamodel/templates/worker-config.lua.j2 @@ -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 %} diff --git a/python/knot_resolver/manager/manager.py b/python/knot_resolver/manager/manager.py index ac6539c42..d1d103ea9 100644 --- a/python/knot_resolver/manager/manager.py +++ b/python/knot_resolver/manager/manager.py @@ -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")