aboutsummaryrefslogtreecommitdiffstats
path: root/dashboard
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2018-09-08 13:58:05 +0200
committerDmitry Vyukov <dvyukov@google.com>2018-09-08 13:58:05 +0200
commit3f4ebb87dc6a4f15540f929f62c497ec1a2c24c0 (patch)
tree67bea13127d9298178471bfcc6055e03a34068f6 /dashboard
parent6b5120a46407f0462e664e15fed3eae5da951c75 (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.go40
-rw-r--r--dashboard/app/main.html6
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>