From 9eebd83fa60b9fd4f1454d52f7b7ab19cea5963b Mon Sep 17 00:00:00 2001 From: Jan Tluka Date: Tue, 15 Aug 2017 16:03:00 +0200 Subject: [PATCH 1/4] PerfRepoReport: fix parsing report without permissions When a report does not contain any permissions the object constructor fails with an exception. Signed-off-by: Jan Tluka --- perfrepo/PerfRepoReport.py | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/perfrepo/PerfRepoReport.py b/perfrepo/PerfRepoReport.py index 1d10a62..ca8a543 100644 --- a/perfrepo/PerfRepoReport.py +++ b/perfrepo/PerfRepoReport.py @@ -52,12 +52,14 @@ def __init__(self, xml=None): recursive_dict_update(self._properties, tmp_dict) self._permissions = [] - for entry in root.find("permissions"): - if entry.tag != "permission": - continue - self._permissions.append(PerfRepoReportPermission(entry)) - self._permissions[-1].set_report_id(self._id) - self._permissions[-1].validate() + perms = root.find("permissions") + if perms is not None: + for entry in perms: + if entry.tag != "permission": + continue + self._permissions.append(PerfRepoReportPermission(entry)) + self._permissions[-1].set_report_id(self._id) + self._permissions[-1].validate() else: raise PerfRepoException("Parameter xml must be"\ " a string, an Element or None") From 967d0cc86050a4aa9f89afa7289ae252c2ad13ca Mon Sep 17 00:00:00 2001 From: Jan Tluka Date: Tue, 15 Aug 2017 16:05:11 +0200 Subject: [PATCH 2/4] PerfRepoReport: include permissions in output of to_xml() method Signed-off-by: Jan Tluka --- perfrepo/PerfRepoReport.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/perfrepo/PerfRepoReport.py b/perfrepo/PerfRepoReport.py index ca8a543..d000d60 100644 --- a/perfrepo/PerfRepoReport.py +++ b/perfrepo/PerfRepoReport.py @@ -381,6 +381,12 @@ def to_xml(self): self._set_element_atrib(value_elem, 'name', prop[0]) self._set_element_atrib(value_elem, 'value', prop[1]) + if len(self._permissions): + perms_elem = ElementTree.SubElement(root, 'permissions') + for perm in self._permissions: + perm_elem = perm.to_xml() + perms_elem.append(perm_elem) + return root def __str__(self): From 8622aeddbf577f6f9f6c85e3f69b64245fe24075 Mon Sep 17 00:00:00 2001 From: Jan Tluka Date: Tue, 15 Aug 2017 16:06:00 +0200 Subject: [PATCH 3/4] PerfRepoReportPermission: remove search for non-existent id tag Signed-off-by: Jan Tluka --- perfrepo/PerfRepoReport.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/perfrepo/PerfRepoReport.py b/perfrepo/PerfRepoReport.py index d000d60..4559daf 100644 --- a/perfrepo/PerfRepoReport.py +++ b/perfrepo/PerfRepoReport.py @@ -428,8 +428,6 @@ def __init__(self, xml=None): if root.tag != "report-permission" and root.tag != "permission": raise PerfRepoException("Invalid xml.") - self._id = root.find("id").text - try: self._report_id = root.find("report-id").text except: From b0159471c8f50a496c0e936caac82b7bdd0a4491 Mon Sep 17 00:00:00 2001 From: Jan Tluka Date: Tue, 15 Aug 2017 16:07:01 +0200 Subject: [PATCH 4/4] PerfRepoReportPermission: use correct tag for permission in to_xml() output Signed-off-by: Jan Tluka --- perfrepo/PerfRepoReport.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/perfrepo/PerfRepoReport.py b/perfrepo/PerfRepoReport.py index 4559daf..1a114fb 100644 --- a/perfrepo/PerfRepoReport.py +++ b/perfrepo/PerfRepoReport.py @@ -508,7 +508,7 @@ def get_group_id(self): def to_xml(self): self.validate() - root = Element('report-permission') + root = Element('permission') id_elem = ElementTree.SubElement(root, 'report-id') id_elem.text = str(self._report_id)