Merge ~pieq/bugit/+git/qabro:fix-1782528-additional-info into bugit:master

Proposed by Pierre Equoy
Status: Merged
Approved by: Pierre Equoy
Approved revision: 5b0ca72f0ec638927207aaec5a12d324af9e0d22
Merged at revision: f70e493e903ef906922dafcd3e304618c3486d26
Proposed branch: ~pieq/bugit/+git/qabro:fix-1782528-additional-info
Merge into: bugit:master
Diff against target: 138 lines (+34/-18)
4 files modified
qabro/__init__.py (+2/-0)
qabro/__version__.py (+1/-1)
qabro/bug_assistant.py (+20/-11)
qabro/ui.py (+11/-6)
Reviewer Review Type Date Requested Status
Nara Huang (community) Approve
Review via email: mp+367498@code.launchpad.net

Description of the change

- Adds kernel version to the "Additional information" section (lp:1822938)
- Shows pre-filled "Additional information" in the default description to give user a chance to review before submitting
- Add Manifest (if available) to the "Additional information" section for easier identification when submitting Desktop OEM bugs (lp:1782528)

The changes have been tested as a snap on:
- 18.04 desktop
- 18.04 desktop (OEM image)
- UC16

To post a comment you must log in.
Revision history for this message
Nara Huang (narahuang) wrote :

+1 Looks good to me!

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1diff --git a/qabro/__init__.py b/qabro/__init__.py
2index 0ebdaca..815374c 100644
3--- a/qabro/__init__.py
4+++ b/qabro/__init__.py
5@@ -8,6 +8,8 @@ from qabro.bug_assistant import BugAssistant, BugReport
6 from qabro.ui import ReportScreen
7
8
9+logger = logging.getLogger(__name__)
10+
11 def main():
12 if os.geteuid() == 0:
13 sys.exit("This tool cannot be run as super user.")
14diff --git a/qabro/__version__.py b/qabro/__version__.py
15index c6c3764..19e4adc 100644
16--- a/qabro/__version__.py
17+++ b/qabro/__version__.py
18@@ -1,5 +1,5 @@
19 __title__ = 'qabro'
20-__version__ = '0.9'
21+__version__ = '0.10dev'
22 __description__ = 'Tool to generate a Launchpad bug report and attach useful logs (using sosreport and the like).'
23 __author__ = 'Pierre Equoy'
24 __author_email__ = 'pierre.equoy@canonical.com'
25diff --git a/qabro/bug_assistant.py b/qabro/bug_assistant.py
26index 05a06b6..c14bd13 100644
27--- a/qabro/bug_assistant.py
28+++ b/qabro/bug_assistant.py
29@@ -1,6 +1,8 @@
30 import getpass
31+import json
32 import os
33 import re
34+import shutil
35 import subprocess
36 import sys
37 import tarfile
38@@ -118,11 +120,6 @@ class BugAssistant:
39 .format(assignee_name))
40 raise BugAssistantError(error_message)
41
42- print('Getting standard bug information...')
43- std_info = AttachmentAssistant.get_standard_info()
44- std_info_str = '\n'.join(['{}: {}'.format(elt, std_info[elt])
45- for elt in std_info])
46- description = self.lp_description + "\n\n-----\n\n" + std_info_str
47 if not self.bug:
48 print('Creating Launchpad bug report...')
49 self.bug = launchpad.bugs.createBug(title=self.lp_title,
50@@ -319,15 +316,23 @@ class AttachmentAssistant:
51 else:
52 print("$PATH missing. Cannot run acpidump!")
53
54- @classmethod
55- def get_standard_info(cls):
56+ @staticmethod
57+ def get_standard_info():
58 """Gather standard information that should be present in all bugs."""
59 standard_info = {}
60
61 buildstamp = '/etc/buildstamp'
62 if os.path.isfile(buildstamp):
63 standard_info['Image'] = subprocess.check_output(
64- ['tail', '-n', '1', buildstamp]).decode(sys.stdout.encoding)
65+ ['tail', '-n', '1', buildstamp]).decode(sys.stdout.encoding).strip()
66+
67+ if shutil.which("ubuntu-report"):
68+ print("Retrieving Manifest information...")
69+ report = subprocess.check_output(["ubuntu-report", "show"])
70+ reportjson = json.loads(report)
71+ manifest = reportjson.get("OEM").get("DCD")
72+ if manifest:
73+ standard_info["Manifest"] = manifest
74
75 p = os.getenv('PATH')
76
77@@ -344,17 +349,21 @@ class AttachmentAssistant:
78 standard_info[dmi_value] = subprocess.check_output(
79 command + [dmi_value]).decode(sys.stdout.encoding).strip()
80
81- standard_info['CPU'] = cls.get_cpu_info()
82+ standard_info['CPU'] = AttachmentAssistant.get_cpu_info()
83
84 lspci_output = (subprocess.check_output(['lspci'])
85 .decode(sys.stdout.encoding)
86 .splitlines())
87 standard_info['GPU'] = '\n'.join([line for line in lspci_output
88 if 'VGA' in line])
89+
90+ standard_info["kernel-version"] = (subprocess.check_output(["uname", "-r"])
91+ .decode(sys.stdout.encoding)
92+ .strip())
93 return standard_info
94
95- @classmethod
96- def get_cpu_info(cls):
97+ @staticmethod
98+ def get_cpu_info():
99 """Parse /proc/cpuinfo and return cpu model information."""
100 cpus = []
101 cpuinfo = {}
102diff --git a/qabro/ui.py b/qabro/ui.py
103index 3767d1b..26f6bba 100644
104--- a/qabro/ui.py
105+++ b/qabro/ui.py
106@@ -1,7 +1,7 @@
107 import sys
108 import urwid
109
110-from qabro.bug_assistant import BugReport
111+from qabro.bug_assistant import AttachmentAssistant, BugReport
112 from qabro.__version__ import __version__ as qversion, __title__ as qtitle
113
114
115@@ -46,13 +46,18 @@ class ReportScreen:
116 "Performance": "oem-performance",
117 "Other problem": "oem-other"}
118
119- default_description = ("Summary:\n\n"
120- "Steps to reproduce:\n\n"
121- "Expected result:\n\n"
122- "Actual result:\n\n"
123- "Failure rate:")
124+ default_description = ("[Summary]\n\n"
125+ "[Steps to reproduce]\n\n"
126+ "[Expected result]\n\n"
127+ "[Actual result]\n\n"
128+ "[Failure rate]\n\n")
129
130 def __init__(self):
131+ # Adding standard info (CPU, BIOS, GPU, etc.) to the description
132+ std_info = AttachmentAssistant.get_standard_info()
133+ std_info_str = '\n'.join(['{}: {}'.format(elt, std_info[elt]) for elt in std_info])
134+ self.default_description += "[Additional information]\n" + std_info_str
135+
136 self._title = urwid.LineBox(urwid.Edit(), 'Bug Title')
137 self._description = urwid.LineBox(urwid.Edit(edit_text=self.default_description,
138 multiline=True),

Subscribers

People subscribed via source and target branches

to all changes: