[dashboard v0.3.9] 手动即时触发计划任务

This commit is contained in:
naiba
2021-01-24 09:41:35 +08:00
parent 175eb996d3
commit a957b21265
10 changed files with 195 additions and 116 deletions

View File

@@ -1,6 +1,7 @@
package dao
import (
"fmt"
"sort"
"sync"
@@ -9,32 +10,27 @@ import (
"gorm.io/gorm"
"github.com/naiba/nezha/model"
pb "github.com/naiba/nezha/proto"
)
var Version = "v0.3.9"
const (
SnapshotDelay = 3
ReportDelay = 2
)
var Conf *model.Config
var (
Conf *model.Config
Cache *cache.Cache
DB *gorm.DB
var Cache *cache.Cache
ServerList map[uint64]*model.Server
ServerLock sync.RWMutex
var DB *gorm.DB
// 服务器监控、状态相关
var ServerList map[uint64]*model.Server
var ServerLock sync.RWMutex
var SortedServerList []*model.Server
var SortedServerLock sync.RWMutex
// 计划任务相关
var CronLock sync.RWMutex
var Crons map[uint64]*model.Cron
var Cron *cron.Cron
var Version = "v0.3.8"
SortedServerList []*model.Server
SortedServerLock sync.RWMutex
)
func ReSortServer() {
ServerLock.RLock()
@@ -54,3 +50,25 @@ func ReSortServer() {
return SortedServerList[i].DisplayIndex > SortedServerList[j].DisplayIndex
})
}
// =============== Cron Mixin ===============
var CronLock sync.RWMutex
var Crons map[uint64]*model.Cron
var Cron *cron.Cron
func CronTrigger(c *model.Cron) {
ServerLock.RLock()
defer ServerLock.RUnlock()
for j := 0; j < len(c.Servers); j++ {
if ServerList[c.Servers[j]].TaskStream != nil {
ServerList[c.Servers[j]].TaskStream.Send(&pb.Task{
Id: c.ID,
Data: c.Command,
Type: model.TaskTypeCommand,
})
} else {
SendNotification(fmt.Sprintf("计划任务:%s服务器%d 离线,无法执行。", c.Name, c.Servers[j]), false)
}
}
}