From 1729f35c7eb9070d0245500ab76e00ae42d368d7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=BCrgen=20H=C3=B6tzel?= Date: Sun, 30 Apr 2023 18:07:39 +0200 Subject: [PATCH] Prevent ConstructorError when parsing YAML containing '=' scalars pyyaml assignes '=' to tag:yaml.org,2002:value even though there's no constructor for it. Removing the implicit resolver for '=' fixes the issue. --- kubernetes/utils/create_from_yaml.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/kubernetes/utils/create_from_yaml.py b/kubernetes/utils/create_from_yaml.py index 7ca4cd7bc..459c291ef 100644 --- a/kubernetes/utils/create_from_yaml.py +++ b/kubernetes/utils/create_from_yaml.py @@ -153,12 +153,17 @@ def create_from_yaml( raise FailToCreateError(failures) return k8s_objects + class Loader(yaml.loader.SafeLoader): + yaml_implicit_resolvers = yaml.loader.SafeLoader.yaml_implicit_resolvers.copy() + if "=" in yaml_implicit_resolvers: + yaml_implicit_resolvers.pop("=") + if yaml_objects: yml_document_all = yaml_objects return create_with(yml_document_all) elif yaml_file: with open(os.path.abspath(yaml_file)) as f: - yml_document_all = yaml.safe_load_all(f) + yml_document_all = yaml.load_all(f, Loader=Loader) return create_with(yml_document_all) else: raise ValueError(