Merge ~apw/+git/kteam-tools:swm/dashboard--include-boot-testing-and-enhance into ~canonical-kernel/+git/kteam-tools:master

Proposed by Andy Whitcroft
Status: Merged
Merged at revision: dd5e385c804fab3bb758db897d555b9103616c92
Proposed branch: ~apw/+git/kteam-tools:swm/dashboard--include-boot-testing-and-enhance
Merge into: ~canonical-kernel/+git/kteam-tools:master
Diff against target: 202 lines (+90/-27)
1 file modified
stable/dashboards/web/templates/kernel-stable-dashboard.mako (+90/-27)
Reviewer Review Type Date Requested Status
Stefan Bader Approve
Review via email: mp+406326@code.launchpad.net

Commit message

kernel-stable-dashboard: add early-testing row and improve readability

Makes a number of changes to the dashboard:

1) adds a new early-testing status row in a similar form to that of the testing row, this contains the boot-testing and sru-review status as each blocks promote-to-proposed;

2) add tooltips for all status row element labels;

3) fixes url handling for status row elements in combination with tooltips;

4) changes the colour for top-level kernels (those without master-bug links) to blue so they are more easily distinguished; and

5) changes the background for alternate trackers to make it easier to follow a single trackers lines.

To post a comment you must log in.
Revision history for this message
Stefan Bader (smb) wrote :

From what I can tell all the described changes are visible and tested on the dashboard. And explanations seem sufficiently be done in the commit messages.

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1diff --git a/stable/dashboards/web/templates/kernel-stable-dashboard.mako b/stable/dashboards/web/templates/kernel-stable-dashboard.mako
2index 07bc0d9..80c4cbf 100644
3--- a/stable/dashboards/web/templates/kernel-stable-dashboard.mako
4+++ b/stable/dashboards/web/templates/kernel-stable-dashboard.mako
5@@ -1,13 +1,24 @@
6 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
7 <style>
8 a:link {
9- color: green;
10- background-color: transparent;
11+ color: green;
12+ background-color: transparent;
13 text-decoration: none;
14 }
15
16 a:visited {
17- color: green;
18+ color: green;
19+ background-color: transparent;
20+ text-decoration: none;
21+}
22+.master a:link {
23+ color: darkblue;
24+ background-color: transparent;
25+ text-decoration: none;
26+}
27+
28+.master a:visited {
29+ color: darkblue;
30 background-color: transparent;
31 text-decoration: none;
32 }
33@@ -38,6 +49,14 @@ __testing_status_text = {
34 'Incomplete' : 'Failed',
35 'Fix Released' : 'Passed',
36 }
37+__review_status_colors = __testing_status_colors
38+__review_status_text = {
39+ 'New' : 'Not Ready',
40+ 'In Progress' : 'In Progress',
41+ 'Confirmed' : 'Ready',
42+ 'Incomplete' : 'Rejected',
43+ 'Fix Released' : 'Approved',
44+}
45 %>
46 <%
47
48@@ -91,12 +110,15 @@ def tagged_block(key, value):
49 # tagged_block_valid
50 #
51 def tagged_block_valid(key, value, colour):
52+ key_title = key
53+ if 'tooltip-' + key in attrs:
54+ key_title = '<span title="{}">{}</span>'.format(attrs['tooltip-' + key], key)
55 if value in ('n/a', 'Invalid'):
56- return tagged_block(__coloured(key, 'silver'), __coloured('n/a', 'silver'))
57+ return tagged_block(__coloured(key_title, 'silver'), __coloured('n/a', 'silver'))
58 elif value == "Won't Fix":
59- return tagged_block(__coloured(key, 'silver'), __coloured('Skipped', 'silver'))
60+ return tagged_block(__coloured(key_title, 'silver'), __coloured('Skipped', 'silver'))
61 else:
62- block = tagged_block(key, __coloured(value, colour))
63+ block = tagged_block(key_title, __coloured(value, colour))
64 if key in attrs:
65 block = '<a href="{}">{}</a>'.format(attrs[key], block)
66 return block
67@@ -161,7 +183,30 @@ def __status_bites(bug, attrs):
68 test_set_invalid = ('n/a', 'New', 'Invalid')
69 test_set_complete = ('n/a', 'Invalid', 'Fix Released', "Won't Fix")
70
71- # debs: testing status mashup.
72+ # debs: testing status mashup (early phase Touch Testing)
73+ boot_testing_status = __task_status(bug, 'boot-testing')
74+ sru_review_status = __task_status(bug, 'sru-review')
75+ testing_valid = (
76+ boot_testing_status not in test_set_invalid or
77+ sru_review_status not in test_set_invalid)
78+ testing_complete = (
79+ boot_testing_status in test_set_complete and
80+ sru_review_status in test_set_complete)
81+ if testing_valid and not testing_complete:
82+ retval = ''
83+
84+ color = __testing_status_colors[boot_testing_status]
85+ boot_testing_status = __testing_status_text.get(boot_testing_status, boot_testing_status)
86+ retval += tagged_block_valid('bt:', boot_testing_status, color)
87+ retval += tagged_block('', '')
88+ retval += tagged_block('', '')
89+ color = __review_status_colors[sru_review_status]
90+ sru_review_status = __review_status_text.get(sru_review_status, sru_review_status)
91+ retval += tagged_block_valid('sr:', sru_review_status, color)
92+
93+ bites.append(bite_format(thing_prefix, retval, thing_in))
94+
95+ # debs: testing status mashup (main phase Testing)
96 automated_testing_status = __task_status(bug, 'automated-testing')
97 certification_testing_status = __task_status(bug, 'certification-testing')
98 regression_testing_status = __task_status(bug, 'regression-testing')
99@@ -246,13 +291,13 @@ def __status_bites(bug, attrs):
100 retval = ''
101
102 color = __testing_status_colors[security_signoff_status]
103- retval += tagged_block_valid('<span title="Security Signoff">ss:</span>', security_signoff_status, color)
104+ retval += tagged_block_valid('ss:', security_signoff_status, color)
105
106 color = __testing_status_colors[stakeholder_signoff_status]
107- retval += tagged_block_valid('<span title="Stakeholder Signoff">Ss:</span>', stakeholder_signoff_status, color)
108+ retval += tagged_block_valid('Ss:', stakeholder_signoff_status, color)
109
110 color = __testing_status_colors[kernel_signoff_status]
111- retval += tagged_block_valid('<span title="Kernel Signoff">ks:</span>', kernel_signoff_status, color)
112+ retval += tagged_block_valid('ks:', kernel_signoff_status, color)
113
114 bites.append(bite_format(thing_prefix, retval, thing_in))
115
116@@ -269,7 +314,8 @@ def __status_bites(bug, attrs):
117 if (task.startswith('prepare-package') and
118 not reason.startswith('Stalled -- ')):
119 continue
120- if task.endswith('-testing') or task.endswith('-signoff'):
121+ # Elide things which are on one of the three "status box" rows.
122+ if task.endswith('-testing') or task.endswith('-signoff') or task == 'sru-review':
123 continue
124 (state, flags, reason) = reason.split(' ', 2)
125 colour = status_colour.get(state, 'blue')
126@@ -345,15 +391,29 @@ for bid in sorted(data['swm']):
127 attrs['at:'] = 'http://people.canonical.com/~kernel/status/adt-matrix/{}-{}.html'.format(sn, package.replace('linux', 'linux-meta'))
128 attrs['vt:'] = 'http://kernel.ubuntu.com/reports/sru-report.html#{}--{}'.format(sn, package)
129 attrs['rt:'] = 'http://10.246.75.167/{}/rtr-lvl1.html'.format(cycle)
130+ attrs['bt:'] = 'http://10.246.75.167/{}/rtr-lvl1.html'.format(cycle)
131+
132+ attrs['tooltip-at:'] = 'Automated Testing'
133+ attrs['tooltip-ct:'] = 'Certification Testing'
134+ attrs['tooltip-rt:'] = 'Regression Testing'
135+ attrs['tooltip-vt:'] = 'Verification Testing'
136+ attrs['tooltip-bt:'] = 'Boot Testing'
137+ attrs['tooltip-ss:'] = 'Security Signoff'
138+ attrs['tooltip-Ss:'] = 'Stakeholder Signoff'
139+ attrs['tooltip-ks:'] = 'Kernel Signoff'
140+ attrs['tooltip-sr:'] = 'SRU Review'
141
142 status_list = __status_bites(b, attrs)
143 first = True
144+ #row_style = ' background: #f0f0f0;' if row_number % 2 == 0 else ''
145+ master_class = 'master' if 'master-bug' not in b else 'derivative'
146 for status in status_list:
147+ status_row = {'bug': None, 'version': None, 'phase': status, 'spin': spin, 'master-class': master_class}
148 if first:
149- cadence[cycle][sn][package].append({ 'bug': bid, 'version': version, 'phase': status, 'spin': spin })
150+ status_row['bug'] = bid
151+ status_row['version'] = version
152 first = False
153- else:
154- cadence[cycle][sn][package].append({ 'bug': None, 'version': None, 'phase': status, 'spin': spin })
155+ cadence[cycle][sn][package].append(status_row)
156
157 %>
158 <html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="en-US">
159@@ -405,6 +465,7 @@ for bid in sorted(data['swm']):
160 % for rls in sorted(releases, reverse=True):
161 <%
162 codename = releases[rls].capitalize()
163+ row_number = 0
164 %>
165 % if releases[rls] in cadence[cycle]:
166 <tr>
167@@ -412,20 +473,22 @@ for bid in sorted(data['swm']):
168 </tr>
169 % for pkg in sorted(cadence[cycle][releases[rls]]):
170 % for bug in cadence[cycle][releases[rls]][pkg]:
171- <tr style="line-height: 100%">
172+ <%
173+ cell_version = '&nbsp;'
174+ cell_package = '&nbsp;'
175+ cell_spin = '&nbsp;'
176+ if bug['bug'] is not None:
177+ url = "https://bugs.launchpad.net/ubuntu/+source/linux/+bug/%s" % bug['bug']
178+ cell_version = '<a href="{}">{}</a>'.format(url, bug['version'])
179+ cell_package = '<a href="{}">{}</a>'.format(url, pkg)
180+ cell_spin = '#{}'.format(bug['spin'])
181+ row_number += 1
182+ row_style = ' background: #f6f6f6;' if row_number % 2 == 0 else ''
183+ %>
184+ <tr style="line-height: 100%;${row_style}">
185 <td>&nbsp;</td>
186- <%
187- cell_version = '&nbsp;'
188- cell_package = '&nbsp;'
189- cell_spin = '&nbsp;'
190- if bug['bug'] is not None:
191- url = "https://bugs.launchpad.net/ubuntu/+source/linux/+bug/%s" % bug['bug']
192- cell_version = '<a href="{}">{}</a>'.format(url, bug['version'])
193- cell_package = '<a href="{}">{}</a>'.format(url, pkg)
194- cell_spin = '#{}'.format(bug['spin'])
195- %>
196- <td width="120" align="right" style="color: green">${cell_version}</td>
197- <td style="color: green">${cell_package}</a></td>
198+ <td width="120" align="right" class="${bug['master-class']}">${cell_version}</td>
199+ <td class="${bug['master-class']}">${cell_package}</a></td>
200 <td style="color: grey">${cell_spin}</td>
201 <td>${bug['phase']}</td>
202 </tr>

Subscribers

People subscribed via source and target branches