func (s *Schedule) Init(c *conf.Conf) error { //initialize all variables and collections so they are ready to use. //this will be called once at app start, and also every time the rule //page runs, so be careful not to spawn long running processes that can't //be avoided. var err error s.Conf = c s.Group = make(map[time.Time]models.AlertKeys) s.pendingUnknowns = make(map[*conf.Notification][]*models.IncidentState) s.lastLogTimes = make(map[models.AlertKey]time.Time) s.LastCheck = time.Now() s.ctx = &checkContext{time.Now(), cache.New(0)} if s.DataAccess == nil { if c.RedisHost != "" { s.DataAccess = database.NewDataAccess(c.RedisHost, true, c.RedisDb, c.RedisPassword) } else { bind := "127.0.0.1:9565" _, err := database.StartLedis(c.LedisDir, bind) if err != nil { return err } s.DataAccess = database.NewDataAccess(bind, false, 0, "") } } if s.Search == nil { s.Search = search.NewSearch(s.DataAccess) } if c.StateFile != "" { s.db, err = bolt.Open(c.StateFile, 0600, nil) if err != nil { return err } } return nil }
func (s *Schedule) Init(c *conf.Conf) error { var err error s.Conf = c s.AlertStatuses = make(map[string]*AlertStatus) s.Silence = make(map[string]*Silence) s.Group = make(map[time.Time]expr.AlertKeys) s.Incidents = make(map[uint64]*Incident) s.pendingUnknowns = make(map[*conf.Notification][]*State) s.status = make(States) s.Search = search.NewSearch() s.LastCheck = time.Now() s.ctx = &checkContext{time.Now(), cache.New(0)} if s.DataAccess == nil { if c.RedisHost != "" { s.DataAccess = database.NewDataAccess(c.RedisHost, true) } else { bind := "127.0.0.1:9565" _, err := database.StartLedis(c.LedisDir, bind) if err != nil { return err } s.DataAccess = database.NewDataAccess(bind, false) } } if c.StateFile != "" { s.db, err = bolt.Open(c.StateFile, 0600, nil) if err != nil { return err } } return nil }
func (s *Schedule) Init(c *conf.Conf) error { var err error s.Conf = c s.Silence = make(map[string]*Silence) s.Group = make(map[time.Time]expr.AlertKeys) s.Metadata = make(map[metadata.Metakey]*Metavalue) s.Incidents = make(map[uint64]*Incident) s.status = make(States) s.Search = search.NewSearch() if c.StateFile != "" { s.db, err = bolt.Open(c.StateFile, 0600, nil) if err != nil { return err } } return nil }
func (s *Schedule) Init(c *conf.Conf) error { var err error s.Conf = c s.Silence = make(map[string]*Silence) s.Group = make(map[time.Time]expr.AlertKeys) s.Metadata = make(map[metadata.Metakey]*Metavalue) s.Incidents = make(map[uint64]*Incident) s.pendingUnknowns = make(map[*conf.Notification][]*State) s.status = make(States) s.Search = search.NewSearch() s.LastCheck = time.Now() s.ctx = &checkContext{time.Now(), cache.New(0)} if c.StateFile != "" { s.db, err = bolt.Open(c.StateFile, 0600, nil) if err != nil { return err } } return nil }
func (s *Schedule) Init(systemConf conf.SystemConfProvider, ruleConf conf.RuleConfProvider, skipLast, quiet bool) error { //initialize all variables and collections so they are ready to use. //this will be called once at app start, and also every time the rule //page runs, so be careful not to spawn long running processes that can't //be avoided. //var err error s.skipLast = skipLast s.quiet = quiet s.SystemConf = systemConf s.RuleConf = ruleConf s.Group = make(map[time.Time]models.AlertKeys) s.pendingUnknowns = make(map[*conf.Notification][]*models.IncidentState) s.lastLogTimes = make(map[models.AlertKey]time.Time) s.LastCheck = utcNow() s.ctx = &checkContext{utcNow(), cache.New(0)} // Initialize the context and waitgroup used to gracefully shutdown bosun as well as reload s.runnerContext, s.cancelChecks = context.WithCancel(context.Background()) s.checksRunning = sync.WaitGroup{} if s.DataAccess == nil { if systemConf.GetRedisHost() != "" { s.DataAccess = database.NewDataAccess(systemConf.GetRedisHost(), true, systemConf.GetRedisDb(), systemConf.GetRedisPassword()) } else { _, err := database.StartLedis(systemConf.GetLedisDir(), systemConf.GetLedisBindAddr()) if err != nil { return err } s.DataAccess = database.NewDataAccess(systemConf.GetLedisBindAddr(), false, 0, "") } } if s.Search == nil { s.Search = search.NewSearch(s.DataAccess, skipLast) } return nil }