Index: appengine/cmd/dm/mutate/activate_execution.go |
diff --git a/appengine/cmd/dm/mutate/activate_execution.go b/appengine/cmd/dm/mutate/activate_execution.go |
new file mode 100644 |
index 0000000000000000000000000000000000000000..3dcc93040af6b395cac9bc1ee03ac92c9491bec9 |
--- /dev/null |
+++ b/appengine/cmd/dm/mutate/activate_execution.go |
@@ -0,0 +1,39 @@ |
+// Copyright 2016 The LUCI Authors. All rights reserved. |
+// Use of this source code is governed under the Apache License, Version 2.0 |
+// that can be found in the LICENSE file. |
+ |
+package mutate |
+ |
+import ( |
+ "golang.org/x/net/context" |
+ |
+ "github.com/luci/gae/service/datastore" |
+ "github.com/luci/luci-go/appengine/cmd/dm/model" |
+ "github.com/luci/luci-go/appengine/tumble" |
+ "github.com/luci/luci-go/common/api/dm/service/v1" |
+) |
+ |
+// ActivateExecution executes an execution, moving it from the |
+// SCHEDULING->RUNNING state, and resetting the execution timeout (if any). |
+type ActivateExecution struct { |
+ Auth *dm.Execution_Auth |
+ NewTok []byte |
+} |
+ |
+// Root implements tumble.Mutation. |
+func (a *ActivateExecution) Root(c context.Context) *datastore.Key { |
+ return model.AttemptKeyFromID(c, a.Auth.Id.AttemptID()) |
+} |
+ |
+// RollForward implements tumble.Mutation |
+func (a *ActivateExecution) RollForward(c context.Context) (muts []tumble.Mutation, err error) { |
+ _, e, err := model.ActivateExecution(c, a.Auth, a.NewTok) |
+ if err == nil { |
+ err = ResetExecutionTimeout(c, e) |
+ } |
+ return |
+} |
+ |
+func init() { |
+ tumble.Register((*ActivateExecution)(nil)) |
+} |