diff options
| author | Dmitry Vyukov <dvyukov@google.com> | 2018-09-08 13:58:05 +0200 |
|---|---|---|
| committer | Dmitry Vyukov <dvyukov@google.com> | 2018-09-08 13:58:05 +0200 |
| commit | 3f4ebb87dc6a4f15540f929f62c497ec1a2c24c0 (patch) | |
| tree | 67bea13127d9298178471bfcc6055e03a34068f6 /dashboard | |
| parent | 6b5120a46407f0462e664e15fed3eae5da951c75 (diff) | |
dashboard/app: show managers according to access level
It is useful to show some info about managers,
in particular failed builds.
Diffstat (limited to 'dashboard')
| -rw-r--r-- | dashboard/app/main.go | 40 | ||||
| -rw-r--r-- | dashboard/app/main.html | 6 |
2 files changed, 34 insertions, 12 deletions
diff --git a/dashboard/app/main.go b/dashboard/app/main.go index 10ed24e1c..787fc8ccd 100644 --- a/dashboard/app/main.go +++ b/dashboard/app/main.go @@ -159,19 +159,22 @@ func handleMain(c context.Context, w http.ResponseWriter, r *http.Request) error var errorLog []byte var managers []*uiManager var jobs []*uiJob - if accessLevel(c, r) == AccessAdmin && r.FormValue("fixed") == "" { + if r.FormValue("fixed") == "" { var err error - errorLog, err = fetchErrorLogs(c) + accessLevel := accessLevel(c, r) + managers, err = loadManagers(c, accessLevel) if err != nil { return err } - managers, err = loadManagers(c) - if err != nil { - return err - } - jobs, err = loadRecentJobs(c) - if err != nil { - return err + if accessLevel == AccessAdmin { + errorLog, err = fetchErrorLogs(c) + if err != nil { + return err + } + jobs, err = loadRecentJobs(c) + if err != nil { + return err + } } } bugNamespaces, err := fetchBugs(c, r) @@ -669,13 +672,24 @@ func makeUIBuild(build *Build) *uiBuild { } } -func loadManagers(c context.Context) ([]*uiManager, error) { +func loadManagers(c context.Context, accessLevel AccessLevel) ([]*uiManager, error) { now := timeNow(c) date := timeDate(now) managers, managerKeys, err := loadAllManagers(c) if err != nil { return nil, err } + for i := 0; i < len(managers); i++ { + if accessLevel >= config.Namespaces[managers[i].Namespace].AccessLevel { + continue + } + last := len(managers) - 1 + managers[i] = managers[last] + managers = managers[:last] + managerKeys[i] = managerKeys[last] + managerKeys = managerKeys[:last] + i-- + } var buildKeys []*datastore.Key var statsKeys []*datastore.Key for i, mgr := range managers { @@ -711,10 +725,14 @@ func loadManagers(c context.Context) ([]*uiManager, error) { var results []*uiManager for i, mgr := range managers { stats := fullStats[i] + link := mgr.Link + if accessLevel < AccessUser { + link = "" + } results = append(results, &uiManager{ Namespace: mgr.Namespace, Name: mgr.Name, - Link: mgr.Link, + Link: link, CurrentBuild: uiBuilds[mgr.Namespace+"|"+mgr.CurrentBuild], FailedBuildBugLink: bugLink(mgr.FailedBuildBug), LastActive: mgr.LastAlive, diff --git a/dashboard/app/main.html b/dashboard/app/main.html index 090c30f18..b42ee5e7d 100644 --- a/dashboard/app/main.html +++ b/dashboard/app/main.html @@ -41,7 +41,11 @@ Main page. </tr> {{range $mgr := $.Managers}} <tr> - <td><a href="{{$mgr.Link}}">{{$mgr.Namespace}}/{{$mgr.Name}}</a></td> + <td> + {{if $mgr.Link}}<a href="{{$mgr.Link}}">{{end}} + {{$mgr.Namespace}}/{{$mgr.Name}} + {{if $mgr.Link}}</a>{{end}} + </td> <td class="stat {{if $mgr.LastActiveBad}}bad{{end}}">{{formatLateness $.Now $mgr.LastActive}}</td> {{if $mgr.CurrentBuild}} <td class="stat" title="{{$mgr.CurrentBuild.KernelAlias}}/{{$mgr.CurrentBuild.KernelCommit}} (syzkaller {{$mgr.CurrentBuild.SyzkallerCommit}})">{{formatLateness $.Now $mgr.CurrentBuild.Time}}</td> |
