58 lines
1.3 KiB
Go
58 lines
1.3 KiB
Go
package tasks
|
|
|
|
import (
|
|
internaltasks "d7y.io/dragonfly/v2/internal/tasks"
|
|
"d7y.io/dragonfly/v2/manager/config"
|
|
"d7y.io/dragonfly/v2/manager/types"
|
|
)
|
|
|
|
type Task interface {
|
|
CreatePreheat([]string, types.CreatePreheatRequest) (*types.Preheat, error)
|
|
GetPreheat(string) (*types.Preheat, error)
|
|
}
|
|
|
|
type task struct {
|
|
*internaltasks.Tasks
|
|
Preheat Preheat
|
|
}
|
|
|
|
func New(cfg *config.Config) (Task, error) {
|
|
t, err := internaltasks.New(&internaltasks.Config{
|
|
Host: cfg.Database.Redis.Host,
|
|
Port: cfg.Database.Redis.Port,
|
|
Password: cfg.Database.Redis.Password,
|
|
BrokerDB: cfg.Database.Redis.BrokerDB,
|
|
BackendDB: cfg.Database.Redis.BackendDB,
|
|
}, internaltasks.GlobalQueue)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
p, err := newPreheat(t, cfg.Server.Name)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return &task{
|
|
Tasks: t,
|
|
Preheat: p,
|
|
}, nil
|
|
}
|
|
|
|
func (t *task) CreatePreheat(hostnames []string, json types.CreatePreheatRequest) (*types.Preheat, error) {
|
|
return t.Preheat.CreatePreheat(hostnames, json)
|
|
}
|
|
|
|
func (t *task) GetPreheat(id string) (*types.Preheat, error) {
|
|
groupTaskState, err := t.GetGroupTaskState(id)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return &types.Preheat{
|
|
ID: groupTaskState.GroupUUID,
|
|
Status: groupTaskState.State,
|
|
CreatedAt: groupTaskState.CreatedAt,
|
|
}, nil
|
|
}
|