in schedule/schedule.go [81:111]
func doScheduleApp(schedule *Schedule, app *deploy.App, cfg chaosmonkey.AppConfig, chaosConfig *config.Monkey) {
if !cfg.Enabled {
log.Printf("app=%s disabled\n", app.Name())
return
}
r := rand.New(rand.NewSource(time.Now().UnixNano()))
startHour := chaosConfig.StartHour()
endHour := chaosConfig.EndHour()
location, err := chaosConfig.Location()
if err != nil {
panic(fmt.Sprintf("Could not get Location for time zone calculation: %s", err.Error()))
}
groups := app.EligibleInstanceGroups(cfg)
if len(groups) == 0 {
log.Printf("app=%s no eligible instance groups", app.Name())
}
for _, group := range groups {
kill := shouldKillInstance(cfg.MeanTimeBetweenKillsInWorkDays, r)
log.Printf("%s mtbk=%d kill=%t\n", grp.String(group), cfg.MeanTimeBetweenKillsInWorkDays, kill)
if kill {
time := chooseTerminationTime(time.Now(), startHour, endHour, location)
schedule.Add(time, group)
}
}
}