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  }