diff --git a/dashboard/app/bug.html b/dashboard/app/bug.html index a58e41486ff..8ca0b5dd771 100644 --- a/dashboard/app/bug.html +++ b/dashboard/app/bug.html @@ -14,6 +14,8 @@ Last: {{formatTime .Bug.LastTime}}
Reporting: {{if .Bug.Link}}{{.Bug.Status}}{{else}}{{.Bug.Status}}{{end}}
Commits: {{.Bug.Commits}}
+ Patched on: {{.Bug.PatchedOn}}
+ Missing on: {{.Bug.MissingOn}}
diff --git a/dashboard/app/main.go b/dashboard/app/main.go index 2261b317753..0fc24f501d9 100644 --- a/dashboard/app/main.go +++ b/dashboard/app/main.go @@ -55,6 +55,8 @@ type uiBug struct { Status string Link string Commits string + PatchedOn []string + MissingOn []string } type uiCrash struct { @@ -109,7 +111,11 @@ func handleBug(c context.Context, w http.ResponseWriter, r *http.Request) error if err != nil { return err } - uiBug := createUIBug(c, bug, state) + managers, err := managerList(c, bug.Namespace) + if err != nil { + return err + } + uiBug := createUIBug(c, bug, state, managers) crashes, err := loadCrashesForBug(c, bug) if err != nil { return err @@ -149,9 +155,17 @@ func fetchBugs(c context.Context) ([]*uiBugGroup, error) { if err != nil { return nil, err } + managers := make(map[string][]string) + for ns := range config.Namespaces { + mgrs, err := managerList(c, ns) + if err != nil { + return nil, err + } + managers[ns] = mgrs + } groups := make(map[string][]*uiBug) for _, bug := range bugs { - uiBug := createUIBug(c, bug, state) + uiBug := createUIBug(c, bug, state, managers[bug.Namespace]) groups[bug.Namespace] = append(groups[bug.Namespace], uiBug) } var res []*uiBugGroup @@ -166,7 +180,7 @@ func fetchBugs(c context.Context) ([]*uiBugGroup, error) { return res, nil } -func createUIBug(c context.Context, bug *Bug, state *ReportingState) *uiBug { +func createUIBug(c context.Context, bug *Bug, state *ReportingState, managers []string) *uiBug { _, _, _, reportingIdx, status, link, err := needReport(c, "", state, bug) if err != nil { status = err.Error() @@ -185,7 +199,23 @@ func createUIBug(c context.Context, bug *Bug, state *ReportingState) *uiBug { ReportingIndex: reportingIdx, Status: status, Link: link, - Commits: fmt.Sprintf("%q", bug.Commits), + PatchedOn: bug.PatchedOn, + } + if len(bug.Commits) != 0 { + uiBug.Commits = fmt.Sprintf("%q", bug.Commits) + for _, mgr := range managers { + found := false + for _, mgr1 := range bug.PatchedOn { + if mgr == mgr1 { + found = true + break + } + } + if !found { + uiBug.MissingOn = append(uiBug.MissingOn, mgr) + } + } + sort.Strings(uiBug.MissingOn) } return uiBug } diff --git a/dashboard/app/main.html b/dashboard/app/main.html index 4ea56c763ca..60c5493f354 100644 --- a/dashboard/app/main.html +++ b/dashboard/app/main.html @@ -7,6 +7,7 @@ + {{range $b := $.Bugs}} @@ -15,6 +16,7 @@ + {{end}}
Crashes:
Repro Last StatusPatched
{{formatReproLevel $b.ReproLevel}} {{formatTime $b.LastTime}} {{if $b.Link}}{{$b.Status}}{{else}}{{$b.Status}}{{end}}{{if $b.Commits}}{{len $b.PatchedOn}}/{{len $b.MissingOn}}{{end}}
diff --git a/dashboard/app/static/style.css b/dashboard/app/static/style.css index a23ff5fd7bd..98bf1913b54 100644 --- a/dashboard/app/static/style.css +++ b/dashboard/app/static/style.css @@ -98,6 +98,10 @@ table td, table th { max-width: 300pt; } +.list_table .patched { + text-align: center; +} + .list_table .kernel { width: 200pt; max-width: 200pt;