From 6d9f63abb50c44b08a7633af91fbd20d6adb56f6 Mon Sep 17 00:00:00 2001 From: Enno Tensing Date: Mon, 4 Aug 2025 20:45:52 +0200 Subject: [PATCH] generate: container: Remove Nones and log_error() on missing optional keys Signed-off-by: Enno Tensing --- generate/container.py | 44 +++++++++++++++++++++++++------------------ 1 file changed, 26 insertions(+), 18 deletions(-) diff --git a/generate/container.py b/generate/container.py index e300200..4bb4ad3 100644 --- a/generate/container.py +++ b/generate/container.py @@ -247,13 +247,13 @@ class Volume: path: str @classmethod - def from_json(cls, val: ConfigValue, logger: Log) -> list | None: + def from_json(cls, val: ConfigValue, logger: Log) -> list: """Create from JSON.""" if val is None: - return None + return [] if not isinstance(val, dict): logger.log_warning("Volume key is present, but malformed.") - return None + return [] return [cls(key, value) for key, value in val.items()] def is_host_volume(self) -> bool: @@ -302,13 +302,13 @@ class Secret: options: str @classmethod - def from_json(cls, val: ConfigValue, logger: Log) -> list | None: + def from_json(cls, val: ConfigValue, logger: Log) -> list: """Create from JSON.""" if val is None: - return None + return [] if not isinstance(val, dict): logger.log_warning("Secret key is present, but malformed!") - return None + return [] secrets = [] for key in val: if not isinstance(val[key], dict): @@ -451,8 +451,11 @@ class Network: @classmethod def from_json(cls, val: ConfigValue, logger: Log) -> Self: """Create from JSON.""" - if val is None or not isinstance(val, dict): - logger.log_error("Network configuration is missing or malformed!") + if val is None: + return cls("", []) + + if not isinstance(val, dict): + logger.log_warning("Network configuration is malformed!") return cls("", []) mode = maybe(val, "mode") options = maybe(val, "options") @@ -505,13 +508,15 @@ class Capability: mode: str @classmethod - def from_json(cls, val: ConfigValue, logger: Log) -> list | None: + def from_json(cls, val: ConfigValue, logger: Log) -> list: """Create from JSON.""" - if val is None or not isinstance(val, dict): + if val is None: + return [] + if not isinstance(val, dict): logger.log_warning( - "Capabilities key is either missing or malformed!" + "Capabilities key is malformed!" ) - return None + return [] add = [cls(value, "add") for value in val["add"]] drop = [cls(value, "drop") for value in val["drop"]] return add + drop @@ -531,8 +536,11 @@ class Dns: @classmethod def from_json(cls, val: ConfigValue, logger: Log) -> Self: """Create from JSON.""" - if val is None or not isinstance(val, dict): - logger.log_error("DNS Key is either missing or malformed!") + if val is None: + return cls([], "") + + if not isinstance(val, dict): + logger.log_warning("DNS Key is malformed!") return cls([], "") search = maybe_or(val, "search", "") servers = maybe(val, "servers") @@ -570,10 +578,10 @@ class Container: network: Network dns: Dns ports: Ports - env: Environment | None - secrets: list | None - volumes: list | None - capabilities: list | None + env: Environment + secrets: list + volumes: list + capabilities: list accounting: Accounting def __init__(self, json: dict, logger: Log | None = None) -> None: