From: Aleš Date: Wed, 1 Dec 2021 14:43:59 +0000 (+0100) Subject: utils: modelling: replace '_' with '-' in dict key X-Git-Tag: v6.0.0a1~69^2~21 X-Git-Url: http://git.ipfire.org/gitweb/?a=commitdiff_plain;h=9e7ede984a796176b500e4d4045a8ab6e821fd02;p=thirdparty%2Fknot-resolver.git utils: modelling: replace '_' with '-' in dict key - ParsedTree is replacing '-' with '_' which is undesirable - Dict keys are change to original during validation --- diff --git a/manager/knot_resolver_manager/datamodel/templates/stub_zones.lua.j2 b/manager/knot_resolver_manager/datamodel/templates/stub_zones.lua.j2 index 000d9e632..680957066 100644 --- a/manager/knot_resolver_manager/datamodel/templates/stub_zones.lua.j2 +++ b/manager/knot_resolver_manager/datamodel/templates/stub_zones.lua.j2 @@ -5,7 +5,7 @@ {% if stub.views %} {% for view_id in stub.views %} -- stub-zone: {{ name }} view: {{ view_id }} -{% set view = cfg.views[view_id.replace("-", "_")] %} +{% set view = cfg.views[view_id] %} {% set options = none %} {% if stub.options and view.options %} diff --git a/manager/knot_resolver_manager/utils/modelling.py b/manager/knot_resolver_manager/utils/modelling.py index ddc5adb1e..e86f1f6e6 100644 --- a/manager/knot_resolver_manager/utils/modelling.py +++ b/manager/knot_resolver_manager/utils/modelling.py @@ -278,12 +278,14 @@ def _validated_object_type( elif is_dict(cls): key_type, val_type = get_generic_type_arguments(cls) try: - return { - _validated_object_type(key_type, key, object_path=f"{object_path} @ key {key}"): _validated_object_type( - val_type, val, object_path=f"{object_path} @ value for key {key}" + d: Dict[Any, Any] = {} + for key, val in obj.items(): + k: str = str(key).replace("_", "-") + + d[_validated_object_type(key_type, k, object_path=f"{object_path} @ key {k}")] = _validated_object_type( + val_type, val, object_path=f"{object_path} @ value for key {k}" ) - for key, val in obj.items() - } + return d except AttributeError as e: raise SchemaException( f"Expected dict-like object, but failed to access its .items() method. Value was {obj}", object_path