From 0034c1214193e8ade0b4474968f44798d12feccf Mon Sep 17 00:00:00 2001 From: Brad Rydzewski Date: Wed, 6 May 2015 01:24:55 -0700 Subject: [PATCH] initial work on build cancellation --- drone.go | 2 +- server/builds.go | 35 ++++++++++++++++++----------------- 2 files changed, 19 insertions(+), 18 deletions(-) diff --git a/drone.go b/drone.go index 2b56aec7d..b296f1a8a 100644 --- a/drone.go +++ b/drone.go @@ -53,6 +53,7 @@ func main() { api.Use(server.SetSettings(settings)) api.Use(server.SetSession(session)) api.Use(server.SetUser(session)) + api.Use(server.SetRunner(&runner_)) user := api.Group("/user") { @@ -141,7 +142,6 @@ func main() { { stream.Use(server.SetRepo()) stream.Use(server.SetPerm()) - stream.Use(server.SetRunner(&runner_)) stream.GET("/:owner/:name", server.GetRepoEvents) stream.GET("/:owner/:name/:build/:number", server.GetStream) diff --git a/server/builds.go b/server/builds.go index b6d41998a..0e076319d 100644 --- a/server/builds.go +++ b/server/builds.go @@ -1,10 +1,7 @@ package server import ( - "fmt" "io" - "net/http" - "net/url" "strconv" "time" @@ -194,6 +191,7 @@ func RunBuild(c *gin.Context) { // DELETE /api/builds/:owner/:name/builds/:number // func KillBuild(c *gin.Context) { + runner := ToRunner(c) queue := ToQueue(c) store := ToDatastore(c) repo := ToRepo(c) @@ -242,21 +240,24 @@ func KillBuild(c *gin.Context) { return } - // get the agent from the repository so we can - // notify the agent to kill the build. - agent, err := store.BuildAgent(repo.FullName, build.Number) - if err != nil { - c.JSON(200, build) - return + for _, task := range build.Tasks { + runner.Cancel(repo.FullName, build.Number, task.Number) } - url_, _ := url.Parse("http://" + agent.Addr) - url_.Path = fmt.Sprintf("/cancel/%s/%v", repo.FullName, build.Number) - resp, err := http.Post(url_.String(), "application/json", nil) - if err != nil { - c.Fail(500, err) - return - } - defer resp.Body.Close() + // // get the agent from the repository so we can + // // notify the agent to kill the build. + // agent, err := store.BuildAgent(repo.FullName, build.Number) + // if err != nil { + // c.JSON(200, build) + // return + // } + // url_, _ := url.Parse("http://" + agent.Addr) + // url_.Path = fmt.Sprintf("/cancel/%s/%v", repo.FullName, build.Number) + // resp, err := http.Post(url_.String(), "application/json", nil) + // if err != nil { + // c.Fail(500, err) + // return + // } + // defer resp.Body.Close() c.JSON(200, build) }