]> git.ipfire.org Git - thirdparty/knot-resolver.git/commitdiff
datamodel: monitoring: types specification
authorAleš <ales.mrazek@nic.cz>
Tue, 15 Feb 2022 23:29:39 +0000 (00:29 +0100)
committerAleš Mrázek <ales.mrazek@nic.cz>
Fri, 8 Apr 2022 14:17:54 +0000 (16:17 +0200)
manager/knot_resolver_manager/datamodel/monitoring_schema.py
manager/knot_resolver_manager/statistics.py

index 6b0f41b42f8767bab6af24945d2d128ea778c0c4..80859b4c3f511924f640c09af8df209546a3714a 100644 (file)
@@ -2,21 +2,17 @@ from typing import Union
 
 from typing_extensions import Literal
 
-from knot_resolver_manager.datamodel.types import TimeUnit
+from knot_resolver_manager.datamodel.types import DomainName, IPAddress, PortNumber, TimeUnit
 from knot_resolver_manager.utils.modelling import SchemaNode
 
 
 class GraphiteSchema(SchemaNode):
-    host: str
-    port: int = 2003
+    host: Union[IPAddress, DomainName]
+    port: PortNumber = PortNumber(2003)
     prefix: str = ""
-    interval_sec: TimeUnit = TimeUnit("5s")
+    interval: TimeUnit = TimeUnit("5s")
     tcp: bool = False
 
-    def _validate(self):
-        if not 0 < self.port < 65_536:
-            raise ValueError("port must be between 0 and 65536 (both exclusive)")
-
 
 class MonitoringSchema(SchemaNode):
     """
index 5e3b0168af2edf3bff106b0e930f31d8ccec4c70..8f571678caa4971d63088cff4918fbdc7822bf36 100644 (file)
@@ -366,7 +366,7 @@ async def report_stats() -> bytes:
 
 
 async def _deny_turning_off_graphite_bridge(old_config: KresConfig, new_config: KresConfig) -> Result[None, str]:
-    if old_config.monitoring.graphite is not None and new_config.monitoring.graphite is None:
+    if old_config.monitoring.graphite and not new_config.monitoring.graphite:
         return Result.err(
             "You can't turn off graphite monitoring dynamically. If you really want this feature, please let the developers know."
         )
@@ -393,12 +393,12 @@ async def _configure_graphite_bridge(config: KresConfig) -> None:
     if config.monitoring.graphite is not False and _graphite_bridge is None:
         logger.info(
             "Starting Graphite metrics exporter for [%s]:%d",
-            config.monitoring.graphite.host,
-            config.monitoring.graphite.port,
+            str(config.monitoring.graphite.host),
+            int(config.monitoring.graphite.port),
         )
-        _graphite_bridge = GraphiteBridge((config.monitoring.graphite.host, config.monitoring.graphite.port))
+        _graphite_bridge = GraphiteBridge((str(config.monitoring.graphite.host), int(config.monitoring.graphite.port)))
         _graphite_bridge.start(  # type: ignore
-            interval=config.monitoring.graphite.interval_sec.seconds(), prefix=config.monitoring.graphite.prefix
+            interval=config.monitoring.graphite.interval.seconds(), prefix=config.monitoring.graphite.prefix
         )