github.com/Cloud-Foundations/Dominator@v0.3.4/sub/lib/api.go (about) 1 package lib 2 3 import ( 4 "time" 5 6 "github.com/Cloud-Foundations/Dominator/lib/filter" 7 "github.com/Cloud-Foundations/Dominator/lib/log" 8 "github.com/Cloud-Foundations/Dominator/lib/triggers" 9 "github.com/Cloud-Foundations/Dominator/proto/sub" 10 ) 11 12 type DisruptionCancelor func() 13 type DisruptionRequestor func() sub.DisruptionState 14 15 type TriggersRunner func(triggers []*triggers.Trigger, action string, 16 logger log.Logger) bool 17 18 type UpdateOptions struct { 19 DisruptionCancel DisruptionCancelor 20 DisruptionRequest DisruptionRequestor 21 Logger log.Logger 22 ObjectsDir string 23 OldTriggers *triggers.Triggers 24 RootDirectoryName string 25 RunTriggers TriggersRunner 26 SkipFilter *filter.Filter 27 } 28 29 type uType struct { 30 UpdateOptions 31 disableTriggers bool 32 lastError error 33 hadTriggerFailures bool 34 fsChangeDuration time.Duration 35 } 36 37 func Update(request sub.UpdateRequest, rootDirectoryName string, 38 objectsDir string, oldTriggers *triggers.Triggers, 39 skipFilter *filter.Filter, triggersRunner TriggersRunner, 40 logger log.Logger) ( 41 bool, time.Duration, error) { 42 options := UpdateOptions{ 43 Logger: logger, 44 ObjectsDir: objectsDir, 45 OldTriggers: oldTriggers, 46 RootDirectoryName: rootDirectoryName, 47 RunTriggers: triggersRunner, 48 SkipFilter: skipFilter, 49 } 50 return UpdateWithOptions(request, options) 51 } 52 53 func UpdateWithOptions(request sub.UpdateRequest, options UpdateOptions) ( 54 bool, time.Duration, error) { 55 updateObj := &uType{UpdateOptions: options} 56 err := updateObj.update(request) 57 return updateObj.hadTriggerFailures, updateObj.fsChangeDuration, err 58 }