From b7a5c744003da64655fbd4d5fac785f18a6c37a0 Mon Sep 17 00:00:00 2001 From: Kirill Zaitsev Date: Thu, 2 Jun 2016 14:03:09 +0300 Subject: [PATCH] Use DummyYaqlYamlLoader to load classes during upload This commit changes the loader, that loads MuranoPL classes during package upload to DummyYaqlYamlLoader. This would allow importing and parsing packages that contain '!yaql' tag without any errors, when importing to glare. Change-Id: I9071bb479019cac20bf61f110154082063c9d777 Closes-Bug: #1586028 --- muranoclient/common/utils.py | 11 ++++++++++- .../notes/yamlloader-glare-d7d0506f6711b650.yaml | 5 +++++ 2 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 releasenotes/notes/yamlloader-glare-d7d0506f6711b650.yaml diff --git a/muranoclient/common/utils.py b/muranoclient/common/utils.py index 607fb82a..58590199 100644 --- a/muranoclient/common/utils.py +++ b/muranoclient/common/utils.py @@ -366,7 +366,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 @@ -685,6 +686,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.