github.com/cloud-foundations/dominator@v0.0.0-20221004181915-6e4fee580046/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 TriggersRunner func(triggers []*triggers.Trigger, action string,
    13  	logger log.Logger) bool
    14  
    15  type uType struct {
    16  	rootDirectoryName  string
    17  	objectsDir         string
    18  	skipFilter         *filter.Filter
    19  	runTriggers        TriggersRunner
    20  	disableTriggers    bool
    21  	logger             log.Logger
    22  	lastError          error
    23  	hadTriggerFailures bool
    24  	fsChangeDuration   time.Duration
    25  }
    26  
    27  func Update(request sub.UpdateRequest, rootDirectoryName string,
    28  	objectsDir string, oldTriggers *triggers.Triggers,
    29  	skipFilter *filter.Filter, triggersRunner TriggersRunner,
    30  	logger log.Logger) (
    31  	bool, time.Duration, error) {
    32  	if skipFilter == nil {
    33  		skipFilter = new(filter.Filter)
    34  	}
    35  	updateObj := &uType{
    36  		rootDirectoryName: rootDirectoryName,
    37  		objectsDir:        objectsDir,
    38  		skipFilter:        skipFilter,
    39  		runTriggers:       triggersRunner,
    40  		logger:            logger,
    41  	}
    42  	err := updateObj.update(request, oldTriggers)
    43  	return updateObj.hadTriggerFailures, updateObj.fsChangeDuration, err
    44  }