| OLD | NEW | 
|---|
| 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 mutate | 5 package mutate | 
| 6 | 6 | 
| 7 import ( | 7 import ( | 
| 8         "github.com/luci/gae/service/datastore" | 8         "github.com/luci/gae/service/datastore" | 
| 9         "github.com/luci/luci-go/appengine/cmd/dm/model" | 9         "github.com/luci/luci-go/appengine/cmd/dm/model" | 
| 10         "github.com/luci/luci-go/appengine/tumble" | 10         "github.com/luci/luci-go/appengine/tumble" | 
| 11         "github.com/luci/luci-go/common/api/dm/service/v1" | 11         "github.com/luci/luci-go/common/api/dm/service/v1" | 
| 12         "github.com/luci/luci-go/common/logging" | 12         "github.com/luci/luci-go/common/logging" | 
| 13         "golang.org/x/net/context" | 13         "golang.org/x/net/context" | 
| 14 ) | 14 ) | 
| 15 | 15 | 
| 16 // EnsureAttempt ensures that the given Attempt exists. If it doesn't, it's | 16 // EnsureAttempt ensures that the given Attempt exists. If it doesn't, it's | 
| 17 // created in a NeedsExecution state. | 17 // created in a NeedsExecution state. | 
| 18 type EnsureAttempt struct { | 18 type EnsureAttempt struct { | 
| 19         ID *dm.Attempt_ID | 19         ID *dm.Attempt_ID | 
| 20 } | 20 } | 
| 21 | 21 | 
| 22 // Root implements tumble.Mutation. | 22 // Root implements tumble.Mutation. | 
| 23 func (e *EnsureAttempt) Root(c context.Context) *datastore.Key { | 23 func (e *EnsureAttempt) Root(c context.Context) *datastore.Key { | 
| 24 »       return datastore.Get(c).KeyForObj(&model.Attempt{ID: *e.ID}) | 24 »       return model.AttemptKeyFromID(c, e.ID) | 
| 25 } | 25 } | 
| 26 | 26 | 
| 27 // RollForward implements tumble.Mutation. | 27 // RollForward implements tumble.Mutation. | 
| 28 func (e *EnsureAttempt) RollForward(c context.Context) (muts []tumble.Mutation, 
    err error) { | 28 func (e *EnsureAttempt) RollForward(c context.Context) (muts []tumble.Mutation, 
    err error) { | 
| 29         ds := datastore.Get(c) | 29         ds := datastore.Get(c) | 
| 30 | 30 | 
| 31         a := model.MakeAttempt(c, e.ID) | 31         a := model.MakeAttempt(c, e.ID) | 
| 32 »       err = ds.Get(a) | 32 »       if err = ds.Get(a); err != datastore.ErrNoSuchEntity { | 
| 33 »       if err != datastore.ErrNoSuchEntity { |  | 
| 34                 return | 33                 return | 
| 35         } | 34         } | 
| 36 | 35 | 
| 37         if err = ds.Put(a); err != nil { | 36         if err = ds.Put(a); err != nil { | 
| 38                 logging.WithError(err).Errorf(logging.SetField(c, "id", e.ID), "
    in put") | 37                 logging.WithError(err).Errorf(logging.SetField(c, "id", e.ID), "
    in put") | 
| 39         } | 38         } | 
|  | 39         muts = append(muts, &ScheduleExecution{e.ID}) | 
| 40         return | 40         return | 
| 41 } | 41 } | 
| 42 | 42 | 
| 43 func init() { | 43 func init() { | 
| 44         tumble.Register((*EnsureAttempt)(nil)) | 44         tumble.Register((*EnsureAttempt)(nil)) | 
| 45 } | 45 } | 
| OLD | NEW | 
|---|