Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(40)

Side by Side Diff: scheduler/appengine/ui/invocation.go

Issue 2949093003: scheduler: more of s/JobID/JobName/ where JobID != Job.JobID. (Closed)
Patch Set: review Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « scheduler/appengine/ui/common.go ('k') | scheduler/appengine/ui/job.go » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 The LUCI Authors. All rights reserved. 1 // Copyright 2015 The LUCI Authors. All rights reserved.
2 // Use of this source code is governed under the Apache License, Version 2.0 2 // Use of this source code is governed under the Apache License, Version 2.0
3 // that can be found in the LICENSE file. 3 // that can be found in the LICENSE file.
4 4
5 package ui 5 package ui
6 6
7 import ( 7 import (
8 "fmt" 8 "fmt"
9 "net/http" 9 "net/http"
10 "strconv" 10 "strconv"
11 "sync" 11 "sync"
12 12
13 "github.com/luci/luci-go/server/auth" 13 "github.com/luci/luci-go/server/auth"
14 "github.com/luci/luci-go/server/router" 14 "github.com/luci/luci-go/server/router"
15 "github.com/luci/luci-go/server/templates" 15 "github.com/luci/luci-go/server/templates"
16 16
17 "github.com/luci/luci-go/scheduler/appengine/engine" 17 "github.com/luci/luci-go/scheduler/appengine/engine"
18 "github.com/luci/luci-go/scheduler/appengine/presentation"
18 ) 19 )
19 20
20 func invocationPage(c *router.Context) { 21 func invocationPage(c *router.Context) {
21 projectID := c.Params.ByName("ProjectID") 22 projectID := c.Params.ByName("ProjectID")
22 » jobID := c.Params.ByName("JobID") 23 » jobName := c.Params.ByName("JobName")
23 invID, err := strconv.ParseInt(c.Params.ByName("InvID"), 10, 64) 24 invID, err := strconv.ParseInt(c.Params.ByName("InvID"), 10, 64)
24 if err != nil { 25 if err != nil {
25 http.Error(c.Writer, "No such invocation", http.StatusNotFound) 26 http.Error(c.Writer, "No such invocation", http.StatusNotFound)
26 return 27 return
27 } 28 }
28 29
29 var inv *engine.Invocation 30 var inv *engine.Invocation
30 var job *engine.Job 31 var job *engine.Job
31 var err1, err2 error 32 var err1, err2 error
32 33
33 eng := config(c.Context).Engine 34 eng := config(c.Context).Engine
34 35
35 wg := sync.WaitGroup{} 36 wg := sync.WaitGroup{}
36 wg.Add(1) 37 wg.Add(1)
37 go func() { 38 go func() {
38 defer wg.Done() 39 defer wg.Done()
39 » » inv, err1 = eng.GetInvocation(c.Context, projectID+"/"+jobID, in vID) 40 » » inv, err1 = eng.GetInvocation(c.Context, projectID+"/"+jobName, invID)
40 }() 41 }()
41 wg.Add(1) 42 wg.Add(1)
42 go func() { 43 go func() {
43 defer wg.Done() 44 defer wg.Done()
44 » » job, err2 = eng.GetJob(c.Context, projectID+"/"+jobID) 45 » » job, err2 = eng.GetJob(c.Context, projectID+"/"+jobName)
45 }() 46 }()
46 wg.Wait() 47 wg.Wait()
47 48
48 // panic on internal datastore errors to trigger HTTP 500. 49 // panic on internal datastore errors to trigger HTTP 500.
49 switch { 50 switch {
50 case err1 != nil: 51 case err1 != nil:
51 panic(err1) 52 panic(err1)
52 case err2 != nil: 53 case err2 != nil:
53 panic(err2) 54 panic(err2)
54 case inv == nil: 55 case inv == nil:
(...skipping 16 matching lines...) Expand all
71 72
72 func abortInvocationAction(c *router.Context) { 73 func abortInvocationAction(c *router.Context) {
73 handleInvAction(c, func(jobID string, invID int64) error { 74 handleInvAction(c, func(jobID string, invID int64) error {
74 who := auth.CurrentIdentity(c.Context) 75 who := auth.CurrentIdentity(c.Context)
75 return config(c.Context).Engine.AbortInvocation(c.Context, jobID , invID, who) 76 return config(c.Context).Engine.AbortInvocation(c.Context, jobID , invID, who)
76 }) 77 })
77 } 78 }
78 79
79 func handleInvAction(c *router.Context, cb func(string, int64) error) { 80 func handleInvAction(c *router.Context, cb func(string, int64) error) {
80 projectID := c.Params.ByName("ProjectID") 81 projectID := c.Params.ByName("ProjectID")
81 » jobID := c.Params.ByName("JobID") 82 » jobName := c.Params.ByName("JobName")
82 invID := c.Params.ByName("InvID") 83 invID := c.Params.ByName("InvID")
83 » if !isJobOwner(c.Context, projectID, jobID) { 84 » if !presentation.IsJobOwner(c.Context, projectID, jobName) {
84 http.Error(c.Writer, "Forbidden", 403) 85 http.Error(c.Writer, "Forbidden", 403)
85 return 86 return
86 } 87 }
87 invIDAsInt, err := strconv.ParseInt(invID, 10, 64) 88 invIDAsInt, err := strconv.ParseInt(invID, 10, 64)
88 if err != nil { 89 if err != nil {
89 http.Error(c.Writer, "Bad invocation ID", 400) 90 http.Error(c.Writer, "Bad invocation ID", 400)
90 return 91 return
91 } 92 }
92 » if err := cb(projectID+"/"+jobID, invIDAsInt); err != nil { 93 » if err := cb(projectID+"/"+jobName, invIDAsInt); err != nil {
93 panic(err) 94 panic(err)
94 } 95 }
95 » http.Redirect(c.Writer, c.Request, fmt.Sprintf("/jobs/%s/%s/%s", project ID, jobID, invID), http.StatusFound) 96 » http.Redirect(c.Writer, c.Request, fmt.Sprintf("/jobs/%s/%s/%s", project ID, jobName, invID), http.StatusFound)
96 } 97 }
OLDNEW
« no previous file with comments | « scheduler/appengine/ui/common.go ('k') | scheduler/appengine/ui/job.go » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698