From 3f4ebb87dc6a4f15540f929f62c497ec1a2c24c0 Mon Sep 17 00:00:00 2001 From: Dmitry Vyukov Date: Sat, 8 Sep 2018 13:58:05 +0200 Subject: dashboard/app: show managers according to access level It is useful to show some info about managers, in particular failed builds. --- dashboard/app/main.go | 40 +++++++++++++++++++++++++++++----------- dashboard/app/main.html | 6 +++++- 2 files changed, 34 insertions(+), 12 deletions(-) (limited to 'dashboard') 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. {{range $mgr := $.Managers}} - {{$mgr.Namespace}}/{{$mgr.Name}} + + {{if $mgr.Link}}{{end}} + {{$mgr.Namespace}}/{{$mgr.Name}} + {{if $mgr.Link}}{{end}} + {{formatLateness $.Now $mgr.LastActive}} {{if $mgr.CurrentBuild}} {{formatLateness $.Now $mgr.CurrentBuild.Time}} -- cgit mrf-deployment