hooked up restart, cancel in user interface

This commit is contained in:
Brad Rydzewski 2015-04-28 16:27:30 -07:00
parent 864a47f502
commit 7649248385
2 changed files with 39 additions and 5 deletions

View file

@ -3,6 +3,7 @@ package server
import ( import (
"io" "io"
"strconv" "strconv"
"time"
"github.com/drone/drone/common" "github.com/drone/drone/common"
"github.com/drone/drone/parser/inject" "github.com/drone/drone/parser/inject"
@ -190,6 +191,7 @@ func RunBuild(c *gin.Context) {
// DELETE /api/builds/:owner/:name/builds/:number // DELETE /api/builds/:owner/:name/builds/:number
// //
func KillBuild(c *gin.Context) { func KillBuild(c *gin.Context) {
queue := ToQueue(c)
store := ToDatastore(c) store := ToDatastore(c)
repo := ToRepo(c) repo := ToRepo(c)
num, err := strconv.Atoi(c.Params.ByName("number")) num, err := strconv.Atoi(c.Params.ByName("number"))
@ -209,7 +211,33 @@ func KillBuild(c *gin.Context) {
return return
} }
// TODO tell queue to cancel build // remove from the queue if exists
for _, item := range queue.Items() {
if item.Repo.FullName == repo.FullName && item.Build.Number == build.Number {
queue.Remove(item)
break
}
}
c.Writer.WriteHeader(202) build.State = common.StateKilled
build.Finished = time.Now().Unix()
if build.Started == 0 {
build.Started = build.Finished
}
build.Duration = build.Finished - build.Started
for _, task := range build.Tasks {
if task.State != common.StatePending && task.State != common.StateRunning {
continue
}
task.State = common.StateKilled
task.Started = build.Started
task.Finished = build.Finished
}
err = store.SetBuild(repo.FullName, build)
if err != nil {
c.Fail(500, err)
return
}
c.JSON(200, build)
} }

View file

@ -48,7 +48,7 @@
// update repository // update repository
$scope.repo = event.repo; $scope.repo = event.repo;
$scope.$apply(); $scope.$apply();
var added = false; var added = false;
for (var i=0;i<$scope.builds.length;i++) { for (var i=0;i<$scope.builds.length;i++) {
var build = $scope.builds[i]; var build = $scope.builds[i];
@ -120,13 +120,19 @@
}); });
$scope.restart = function() { $scope.restart = function() {
builds.restart(fullName, number).catch(function(err){ builds.restart(fullName, number).then(function(payload){
$scope.build = payload.data;
$scope.task = payload.data.tasks[step-1];
}).catch(function(err){
$scope.error = err; $scope.error = err;
}); });
}; };
$scope.cancel = function() { $scope.cancel = function() {
builds.cancel(fullName, number).catch(function(err) { builds.cancel(fullName, number).then(function(payload){
$scope.build = payload.data;
$scope.task = payload.data.tasks[step-1];
}).catch(function(err) {
$scope.error = err; $scope.error = err;
}); });
}; };