JCC-CSScheduler/executor/internal/task/storage_load_package.go

62 lines
1.6 KiB
Go
Raw Normal View History

2023-08-23 16:17:33 +08:00
package task
import (
"fmt"
2025-01-25 08:01:57 +08:00
"strconv"
"time"
2024-11-08 15:13:08 +08:00
2023-08-23 16:17:33 +08:00
"gitlink.org.cn/cloudream/common/pkgs/logger"
2024-11-08 15:13:08 +08:00
"gitlink.org.cn/cloudream/common/sdks/storage/cdsapi"
2023-09-21 10:44:26 +08:00
schglb "gitlink.org.cn/cloudream/scheduler/common/globals"
2023-09-04 16:48:46 +08:00
exectsk "gitlink.org.cn/cloudream/scheduler/common/pkgs/mq/executor/task"
2023-08-23 16:17:33 +08:00
)
type StorageLoadPackage struct {
*exectsk.StorageLoadPackage
2023-08-23 16:17:33 +08:00
}
func NewStorageLoadPackage(info *exectsk.StorageLoadPackage) *StorageLoadPackage {
2023-08-23 16:17:33 +08:00
return &StorageLoadPackage{
StorageLoadPackage: info,
2023-08-23 16:17:33 +08:00
}
}
func (t *StorageLoadPackage) Execute(task *Task, ctx TaskContext) {
2023-08-23 16:17:33 +08:00
log := logger.WithType[StorageLoadPackage]("Task")
2024-06-07 16:18:07 +08:00
log.Debugf("begin with %v", logger.FormatStruct(t.StorageLoadPackage))
2023-08-23 16:17:33 +08:00
defer log.Debugf("end")
2024-06-05 15:43:17 +08:00
packagePath, err := t.do(ctx)
2023-09-04 16:48:46 +08:00
if err != nil {
//TODO 若任务失败上报的状态failed字段根据情况修改
task.SendStatus(exectsk.NewStorageLoadPackageStatus(err.Error(), ""))
2023-09-04 16:48:46 +08:00
} else {
task.SendStatus(exectsk.NewStorageLoadPackageStatus("", packagePath))
2023-09-04 16:48:46 +08:00
}
2023-08-23 16:17:33 +08:00
}
func (t *StorageLoadPackage) do(ctx TaskContext) (string, error) {
2023-09-21 10:44:26 +08:00
stgCli, err := schglb.CloudreamStoragePool.Acquire()
2023-08-23 16:17:33 +08:00
if err != nil {
return "", fmt.Errorf("new cloudream storage client: %w", err)
2023-08-23 16:17:33 +08:00
}
2023-09-26 09:59:01 +08:00
defer schglb.CloudreamStoragePool.Release(stgCli)
2023-08-23 16:17:33 +08:00
2025-01-25 08:01:57 +08:00
path := strconv.FormatInt(int64(t.PackageID), 10) + "_" + strconv.FormatInt(time.Now().Unix(), 10)
_, err = stgCli.StorageLoadPackage(cdsapi.StorageLoadPackageReq{
UserID: t.UserID,
PackageID: t.PackageID,
StorageID: t.StorageID,
2025-01-25 08:01:57 +08:00
RootPath: path,
2023-08-23 16:17:33 +08:00
})
if err != nil {
return "", err
}
2025-01-25 08:01:57 +08:00
return path, nil
2023-08-23 16:17:33 +08:00
}
func init() {
Register(NewStorageLoadPackage)
}