github.com/Cloud-Foundations/Dominator@v0.3.4/lib/triggers/api.go (about)

     1  package triggers
     2  
     3  import (
     4  	"io"
     5  	"regexp"
     6  )
     7  
     8  type MergeableTriggers struct {
     9  	triggers map[string]*mergeableTrigger // Key: service name.
    10  }
    11  
    12  type mergeableTrigger struct {
    13  	matchLines map[string]struct{}
    14  	doReboot   bool
    15  	highImpact bool
    16  }
    17  
    18  type Trigger struct {
    19  	MatchLines   []string
    20  	matchRegexes []*regexp.Regexp
    21  	Service      string
    22  	DoReboot     bool `json:",omitempty"`
    23  	HighImpact   bool `json:",omitempty"`
    24  }
    25  
    26  func (trigger *Trigger) RegisterStrings(registerFunc func(string)) {
    27  	trigger.registerStrings(registerFunc)
    28  }
    29  
    30  func (trigger *Trigger) ReplaceStrings(replaceFunc func(string) string) {
    31  	trigger.replaceStrings(replaceFunc)
    32  }
    33  
    34  type Triggers struct {
    35  	Triggers          []*Trigger
    36  	compiled          bool
    37  	matchedTriggers   map[*Trigger]struct{}
    38  	unmatchedTriggers map[*Trigger]struct{}
    39  }
    40  
    41  func Decode(jsonData []byte) (*Triggers, error) {
    42  	return decode(jsonData)
    43  }
    44  
    45  func Load(filename string) (*Triggers, error) {
    46  	return load(filename)
    47  }
    48  
    49  func Read(reader io.Reader) (*Triggers, error) {
    50  	return read(reader)
    51  }
    52  
    53  func New() *Triggers {
    54  	return newTriggers()
    55  }
    56  
    57  func (triggers *Triggers) Len() int {
    58  	return len(triggers.Triggers)
    59  }
    60  
    61  func (triggers *Triggers) Less(left, right int) bool {
    62  	return triggers.Triggers[left].Service < triggers.Triggers[right].Service
    63  }
    64  
    65  func (triggers *Triggers) RegisterStrings(registerFunc func(string)) {
    66  	triggers.registerStrings(registerFunc)
    67  }
    68  
    69  func (triggers *Triggers) ReplaceStrings(replaceFunc func(string) string) {
    70  	triggers.replaceStrings(replaceFunc)
    71  }
    72  
    73  func (triggers *Triggers) Swap(left, right int) {
    74  	triggers.Triggers[left], triggers.Triggers[right] =
    75  		triggers.Triggers[right], triggers.Triggers[left]
    76  }
    77  
    78  func (mt *MergeableTriggers) ExportTriggers() *Triggers {
    79  	return mt.exportTriggers()
    80  }
    81  
    82  func (mt *MergeableTriggers) Merge(triggers *Triggers) {
    83  	mt.merge(triggers)
    84  }
    85  
    86  func (triggers *Triggers) Match(line string) {
    87  	triggers.match(line)
    88  }
    89  
    90  func (triggers *Triggers) GetMatchedTriggers() []*Trigger {
    91  	return triggers.getMatchedTriggers()
    92  }
    93  
    94  func (triggers *Triggers) GetMatchStatistics() (nMatched, nUnmatched uint) {
    95  	return triggers.getMatchStatistics()
    96  }