aboutsummaryrefslogtreecommitdiffstats
path: root/dashboard/app/main.go
diff options
context:
space:
mode:
authorAleksandr Nogikh <nogikh@google.com>2024-09-11 17:32:49 +0200
committerAleksandr Nogikh <nogikh@google.com>2024-09-12 08:31:00 +0000
commit60e1a995bff3bf3eb68e6913b4581d9f8e2908a1 (patch)
tree03a785ef2d68714547fd0a4f67a861b8c3e45144 /dashboard/app/main.go
parent1eaa317d2e100baa18349ac4fe0ebba92b5517a8 (diff)
dashboard: export missing backports as json
Also include more information into the output: kernel config and reproducer links.
Diffstat (limited to 'dashboard/app/main.go')
-rw-r--r--dashboard/app/main.go54
1 files changed, 43 insertions, 11 deletions
diff --git a/dashboard/app/main.go b/dashboard/app/main.go
index 79b6aa66d..3dae674de 100644
--- a/dashboard/app/main.go
+++ b/dashboard/app/main.go
@@ -426,9 +426,14 @@ type uiBackportGroup struct {
List []*uiBackport
}
+type uiBackportBug struct {
+ Bug *uiBug
+ Crash *uiCrash
+}
+
type uiBackport struct {
Commit *uiCommit
- Bugs map[string][]*uiBug // namespace -> list of related bugs in it
+ Bugs map[string][]uiBackportBug // namespace -> list of related bugs in it
}
type uiBackportsPage struct {
@@ -685,7 +690,8 @@ func handleBackports(c context.Context, w http.ResponseWriter, r *http.Request)
if err != nil {
return err
}
- backports, err := loadAllBackports(c)
+ json := r.FormValue("json") == "1"
+ backports, err := loadAllBackports(c, json)
if err != nil {
return err
}
@@ -695,10 +701,11 @@ func handleBackports(c context.Context, w http.ResponseWriter, r *http.Request)
outgoing := stringInList(backport.FromNs, hdr.Namespace)
ui := &uiBackport{
Commit: backport.Commit,
- Bugs: map[string][]*uiBug{},
+ Bugs: map[string][]uiBackportBug{},
}
incoming := false
- for _, bug := range backport.Bugs {
+ for _, bugInfo := range backport.Bugs {
+ bug := bugInfo.bug
if accessLevel < bug.sanitizeAccess(c, accessLevel) {
continue
}
@@ -709,8 +716,10 @@ func handleBackports(c context.Context, w http.ResponseWriter, r *http.Request)
if bug.Namespace == hdr.Namespace {
incoming = true
}
- ui.Bugs[bug.Namespace] = append(ui.Bugs[bug.Namespace],
- createUIBug(c, bug, nil, nil))
+ ui.Bugs[bug.Namespace] = append(ui.Bugs[bug.Namespace], uiBackportBug{
+ Bug: bugInfo.Bug,
+ Crash: bugInfo.Crash,
+ })
}
if len(ui.Bugs) == 0 {
continue
@@ -753,13 +762,24 @@ func handleBackports(c context.Context, w http.ResponseWriter, r *http.Request)
return groups[i].From.String()+groups[i].To.String() <
groups[j].From.String()+groups[j].To.String()
})
- return serveTemplate(w, "backports.html", &uiBackportsPage{
+ page := &uiBackportsPage{
Header: hdr,
Groups: groups,
DisplayNamespace: func(ns string) string {
return getNsConfig(c, ns).DisplayTitle
},
- })
+ }
+ if json {
+ w.Header().Set("Content-Type", "application/json")
+ return writeJSONVersionOf(w, page)
+ }
+ return serveTemplate(w, "backports.html", page)
+}
+
+type rawBackportBug struct {
+ Bug *uiBug
+ Crash *uiCrash
+ bug *Bug
}
type rawBackport struct {
@@ -767,14 +787,19 @@ type rawBackport struct {
From *uiRepo
FromNs []string // namespaces that correspond to From
To *uiRepo
- Bugs []*Bug
+ Bugs []rawBackportBug
}
-func loadAllBackports(c context.Context) ([]*rawBackport, error) {
+func loadAllBackports(c context.Context, loadCrashes bool) ([]*rawBackport, error) {
list, err := relevantBackportJobs(c)
if err != nil {
return nil, err
}
+ if loadCrashes {
+ if err := fullBackportInfo(c, list); err != nil {
+ return nil, err
+ }
+ }
var ret []*rawBackport
perCommit := map[string]*rawBackport{}
for _, info := range list {
@@ -801,7 +826,14 @@ func loadAllBackports(c context.Context) ([]*rawBackport, error) {
ret = append(ret, backport)
perCommit[hash] = backport
}
- backport.Bugs = append(backport.Bugs, info.bug)
+ bug := rawBackportBug{
+ Bug: createUIBug(c, info.bug, nil, nil),
+ bug: info.bug,
+ }
+ if info.crashBuild != nil {
+ bug.Crash = makeUICrash(c, info.crash, info.crashBuild)
+ }
+ backport.Bugs = append(backport.Bugs, bug)
}
return ret, nil
}