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

Side by Side Diff: appengine/cmd/dm/model/execution.go

Issue 1537883002: Initial distributor implementation (Closed) Base URL: https://chromium.googlesource.com/external/github.com/luci/luci-go@master
Patch Set: work in progress Created 4 years, 11 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
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 package model 5 package model
6 6
7 import ( 7 import (
8 "crypto/subtle" 8 "crypto/subtle"
9 "fmt" 9 "fmt"
10 10
11 "github.com/luci/gae/service/datastore" 11 "github.com/luci/gae/service/datastore"
12 "github.com/luci/luci-go/appengine/cmd/dm/enums/attempt" 12 "github.com/luci/luci-go/appengine/cmd/dm/enums/attempt"
13 "github.com/luci/luci-go/appengine/cmd/dm/enums/execution"
13 "github.com/luci/luci-go/appengine/cmd/dm/types" 14 "github.com/luci/luci-go/appengine/cmd/dm/types"
14 "github.com/luci/luci-go/common/logging" 15 "github.com/luci/luci-go/common/logging"
15 "golang.org/x/net/context" 16 "golang.org/x/net/context"
16 ) 17 )
17 18
18 // Execution represents either an ongoing execution on the Quest's specified 19 // Execution represents either an ongoing execution on the Quest's specified
19 // distributor, or is a placeholder for an already-completed Execution. 20 // distributor, or is a placeholder for an already-completed Execution.
20 type Execution struct { 21 type Execution struct {
21 ID types.UInt32 `gae:"$id"` 22 ID types.UInt32 `gae:"$id"`
22 Attempt *datastore.Key `gae:"$parent"` 23 Attempt *datastore.Key `gae:"$parent"`
23 24
24 // ExecutionKey is a randomized nonce that's used to identify API calls from 25 // ExecutionKey is a randomized nonce that's used to identify API calls from
25 // the current execution to dungeon master. Once DM decides that the exe cution 26 // the current execution to dungeon master. Once DM decides that the exe cution
26 // should no longer be able to make API calls (e.g. it uploaded a result or 27 // should no longer be able to make API calls (e.g. it uploaded a result or
27 // added new dependencies), DM will revoke this key, making all further API 28 // added new dependencies), DM will revoke this key, making all further API
28 // access invalid. 29 // access invalid.
29 ExecutionKey []byte `gae:",noindex"` 30 ExecutionKey []byte `gae:",noindex"`
31
32 Status execution.State
33 StatusReason string `gae:",noindex"`
30 } 34 }
31 35
32 // Done returns true iff the Execution is done (i.e. it has a blank 36 // Done returns true iff the Execution is done (i.e. it has a blank
33 // ExecutionKey). 37 // ExecutionKey).
34 func (e *Execution) Done() bool { 38 func (e *Execution) Done() bool {
35 return len(e.ExecutionKey) == 0 39 return len(e.ExecutionKey) == 0
36 } 40 }
37 41
38 // Revoke will null-out the ExecutionKey and Put this Execution to the 42 // Revoke will null-out the ExecutionKey and Put this Execution to the
39 // datastore. 43 // datastore.
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
86 // revokes the execution key. 90 // revokes the execution key.
87 // 91 //
88 // As a bonus, it will return the loaded Attempt and Execution. 92 // As a bonus, it will return the loaded Attempt and Execution.
89 func InvalidateExecution(c context.Context, aid *types.AttemptID, evkey []byte) (*Attempt, *Execution, error) { 93 func InvalidateExecution(c context.Context, aid *types.AttemptID, evkey []byte) (*Attempt, *Execution, error) {
90 a, e, err := verifyExecutionInternal(c, aid, evkey) 94 a, e, err := verifyExecutionInternal(c, aid, evkey)
91 if err != nil { 95 if err != nil {
92 return nil, nil, err 96 return nil, nil, err
93 } 97 }
94 return a, e, e.Revoke(c) 98 return a, e, e.Revoke(c)
95 } 99 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698