mirror of
https://github.com/1Panel-dev/1Panel.git
synced 2025-09-13 10:04:42 +08:00
fix: script-type scheduled task import/export issues (#9713)
This commit is contained in:
parent
40314e9079
commit
bc376ec495
1 changed files with 40 additions and 1 deletions
|
@ -1,6 +1,7 @@
|
||||||
package service
|
package service
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"context"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
|
@ -15,6 +16,7 @@ import (
|
||||||
"github.com/1Panel-dev/1Panel/agent/buserr"
|
"github.com/1Panel-dev/1Panel/agent/buserr"
|
||||||
"github.com/1Panel-dev/1Panel/agent/constant"
|
"github.com/1Panel-dev/1Panel/agent/constant"
|
||||||
"github.com/1Panel-dev/1Panel/agent/global"
|
"github.com/1Panel-dev/1Panel/agent/global"
|
||||||
|
"github.com/1Panel-dev/1Panel/agent/utils/docker"
|
||||||
"github.com/jinzhu/copier"
|
"github.com/jinzhu/copier"
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
"github.com/robfig/cron/v3"
|
"github.com/robfig/cron/v3"
|
||||||
|
@ -159,6 +161,14 @@ func (u *CronjobService) Export(req dto.OperateByIDs) (string, error) {
|
||||||
for _, db := range databases {
|
for _, db := range databases {
|
||||||
item.DBNames = append(item.DBNames, dto.TransHelper{Name: db.Database, DetailName: db.Name})
|
item.DBNames = append(item.DBNames, dto.TransHelper{Name: db.Database, DetailName: db.Name})
|
||||||
}
|
}
|
||||||
|
case "shell":
|
||||||
|
if cronjob.ScriptMode == "library" {
|
||||||
|
script, err := scriptRepo.Get(repo.WithByID(cronjob.ScriptID))
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
item.ScriptName = script.Name
|
||||||
|
}
|
||||||
}
|
}
|
||||||
item.SourceAccounts, item.DownloadAccount, _ = loadBackupNamesByID(cronjob.SourceAccountIDs, cronjob.DownloadAccountID)
|
item.SourceAccounts, item.DownloadAccount, _ = loadBackupNamesByID(cronjob.SourceAccountIDs, cronjob.DownloadAccountID)
|
||||||
alertInfo, _ := alertRepo.Get(alertRepo.WithByType(cronjob.Type), alertRepo.WithByProject(strconv.Itoa(int(cronjob.ID))), repo.WithByStatus(constant.AlertEnable))
|
alertInfo, _ := alertRepo.Get(alertRepo.WithByType(cronjob.Type), alertRepo.WithByProject(strconv.Itoa(int(cronjob.ID))), repo.WithByStatus(constant.AlertEnable))
|
||||||
|
@ -191,7 +201,6 @@ func (u *CronjobService) Import(req []dto.CronjobTrans) error {
|
||||||
Spec: item.Spec,
|
Spec: item.Spec,
|
||||||
Executor: item.Executor,
|
Executor: item.Executor,
|
||||||
ScriptMode: item.ScriptMode,
|
ScriptMode: item.ScriptMode,
|
||||||
Script: item.Script,
|
|
||||||
Command: item.Command,
|
Command: item.Command,
|
||||||
ContainerName: item.ContainerName,
|
ContainerName: item.ContainerName,
|
||||||
User: item.User,
|
User: item.User,
|
||||||
|
@ -265,6 +274,36 @@ func (u *CronjobService) Import(req []dto.CronjobTrans) error {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
cronjob.DBName = strings.Join(dbIDs, ",")
|
cronjob.DBName = strings.Join(dbIDs, ",")
|
||||||
|
case "shell":
|
||||||
|
if len(item.ContainerName) != 0 {
|
||||||
|
client, err := docker.NewDockerClient()
|
||||||
|
if err != nil {
|
||||||
|
hasNotFound = true
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
defer client.Close()
|
||||||
|
if _, err := client.ContainerStats(context.Background(), item.ContainerName, false); err != nil {
|
||||||
|
hasNotFound = true
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
}
|
||||||
|
switch item.ScriptMode {
|
||||||
|
case "library":
|
||||||
|
library, _ := scriptRepo.Get(repo.WithByName(item.ScriptName))
|
||||||
|
if library.ID == 0 {
|
||||||
|
hasNotFound = true
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
cronjob.ScriptID = library.ID
|
||||||
|
case "select":
|
||||||
|
if _, err := os.Stat(item.Script); err != nil {
|
||||||
|
hasNotFound = true
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
cronjob.Script = item.Script
|
||||||
|
case "input":
|
||||||
|
cronjob.Script = item.Script
|
||||||
|
}
|
||||||
}
|
}
|
||||||
var acIDs []string
|
var acIDs []string
|
||||||
for _, ac := range item.SourceAccounts {
|
for _, ac := range item.SourceAccounts {
|
||||||
|
|
Loading…
Add table
Reference in a new issue