diff --git a/muranoclient/common/utils.py b/muranoclient/common/utils.py index 87e82ff8..226b4c10 100644 --- a/muranoclient/common/utils.py +++ b/muranoclient/common/utils.py @@ -354,7 +354,8 @@ class Package(FileWrapperMixin): filename = "Classes/%s" % class_file if filename not in self.contents.namelist(): continue - klass = yaml.safe_load(self.contents.open(filename)) + klass = yaml.load(self.contents.open(filename), + DummyYaqlYamlLoader) self._classes[class_name] = klass return self._classes @@ -587,6 +588,14 @@ class Bundle(FileWrapperMixin): yield pkg_obj +class DummyYaqlYamlLoader(yaml.SafeLoader): + """Constructor that treats !yaql as string.""" + pass + +DummyYaqlYamlLoader.add_constructor( + u'!yaql', DummyYaqlYamlLoader.yaml_constructors[u'tag:yaml.org,2002:str']) + + class YaqlYamlLoader(yaml.SafeLoader): pass diff --git a/releasenotes/notes/yamlloader-glare-d7d0506f6711b650.yaml b/releasenotes/notes/yamlloader-glare-d7d0506f6711b650.yaml new file mode 100644 index 00000000..aa7f30e3 --- /dev/null +++ b/releasenotes/notes/yamlloader-glare-d7d0506f6711b650.yaml @@ -0,0 +1,5 @@ +--- +fixes: + - It is now possible to import packages with '!yaql' tag, when glare + is used as backend. Before this fix, importing such package caused + a parsing error.