1
0
Fork 0

generate: container: Don't warn or crash on missing optional keys

The entire accounting section is optional, so silently ignore when it is missing.

Signed-off-by: Enno Tensing <tenno@suij.in>
This commit is contained in:
Enno Tensing 2025-07-30 10:51:33 +02:00
parent 658fc6465c
commit 487be8c49a
Signed by: tenno
GPG key ID: 95265603BD36E66C

View file

@ -66,6 +66,9 @@ class Cgroup:
@classmethod @classmethod
def from_json(cls, val: ConfigValue, logger: Log) -> Self: def from_json(cls, val: ConfigValue, logger: Log) -> Self:
"""Create from JSON.""" """Create from JSON."""
if val is None:
return cls([], "", "", "")
if not isinstance(val, dict): if not isinstance(val, dict):
logger.log_warning("cgroup Config is invalid!") logger.log_warning("cgroup Config is invalid!")
return cls([], "", "", "") return cls([], "", "", "")
@ -130,6 +133,9 @@ class Cpu:
@classmethod @classmethod
def from_json(cls, val: ConfigValue, logger: Log) -> Self: def from_json(cls, val: ConfigValue, logger: Log) -> Self:
"""Create from JSON.""" """Create from JSON."""
if val is None:
return cls("", "", "", "", "", "")
if not isinstance(val, dict): if not isinstance(val, dict):
logger.log_warning("cpu Config is invalid!") logger.log_warning("cpu Config is invalid!")
return cls("", "", "", "", "", "") return cls("", "", "", "", "", "")
@ -184,6 +190,11 @@ class Accounting:
@classmethod @classmethod
def from_json(cls, data: ConfigValue, logger: Log) -> Self: def from_json(cls, data: ConfigValue, logger: Log) -> Self:
"""Create from JSON.""" """Create from JSON."""
if data is None:
return cls(
Cgroup.from_json(None, logger), Cpu.from_json(None, logger)
)
cgroup_data = maybe(data, "cgroup") cgroup_data = maybe(data, "cgroup")
cpu_data = maybe(data, "cpu") cpu_data = maybe(data, "cpu")
cgroup = Cgroup.from_json(cgroup_data, logger) cgroup = Cgroup.from_json(cgroup_data, logger)