From: Aleš Date: Thu, 15 Apr 2021 14:47:58 +0000 (+0200) Subject: config: server: private attribute for the number of instances X-Git-Tag: v6.0.0a1~169 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=20ae53013c708a3fe69917190af9fb2a211ae31c;p=thirdparty%2Fknot-resolver.git config: server: private attribute for the number of instances The value of the attribute is determined indirectly from loaded configuration or based on the number of system's CPUs. --- diff --git a/manager/knot_resolver_manager/datamodel/server_config.py b/manager/knot_resolver_manager/datamodel/server_config.py index 71b1baa0b..e8dcc4915 100644 --- a/manager/knot_resolver_manager/datamodel/server_config.py +++ b/manager/knot_resolver_manager/datamodel/server_config.py @@ -12,21 +12,24 @@ from .errors import DataValidationError @dataclass class ServerConfig(DataclassParserValidatorMixin): hostname: Optional[str] = None - instances: Union[Literal["auto"], int] = 1 - instances_num: int = 1 + instances: Union[Literal["auto"], int, None] = None + _instances: int = 1 use_cache_gc: bool = True def __post_init__(self): if isinstance(self.instances, int): - self.instances_num = self.instances + self._instances = self.instances elif self.instances == "auto": cpu_count = os.cpu_count() if cpu_count is not None: - self.instances_num = cpu_count + self._instances = cpu_count else: # TODO: do better logging - print("cannot get number of CPUs") + print("cannot find number of system available CPUs") + + def get_instances(self) -> int: + return self._instances def _validate(self): - if not 0 < self.instances_num <= 256: + 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/kres_manager.py b/manager/knot_resolver_manager/kres_manager.py index ee98648e4..86c088e1c 100644 --- a/manager/knot_resolver_manager/kres_manager.py +++ b/manager/knot_resolver_manager/kres_manager.py @@ -72,5 +72,5 @@ class KresManager: async def apply_config(self, config: KresConfig): async with self._children_lock: await self._write_config(config) - await self._ensure_number_of_children(config.server.instances_num) + await self._ensure_number_of_children(config.server.get_instances()) await self._rolling_restart()