JCC-CSScheduler/executor/internal/services/pcm.go

79 lines
2.8 KiB
Go

package services
import (
"gitlink.org.cn/cloudream/common/api/pcm"
"gitlink.org.cn/cloudream/common/consts/errorcode"
"gitlink.org.cn/cloudream/common/pkgs/logger"
"gitlink.org.cn/cloudream/common/pkgs/mq"
"gitlink.org.cn/cloudream/scheduler/common/globals"
execmq "gitlink.org.cn/cloudream/scheduler/common/pkgs/mq/executor"
schtsk "gitlink.org.cn/cloudream/scheduler/executor/internal/task"
)
func (svc *Service) StartUploadImage(msg *execmq.StartUploadImage) (*execmq.StartUploadImageResp, *mq.CodeMessage) {
tsk := svc.taskManager.StartNew(schtsk.NewPCMUploadImage(msg.SlwNodeID, msg.ImagePath))
return mq.ReplyOK(execmq.NewStartUploadImageResp(tsk.ID()))
}
func (svc *Service) GetImageList(msg *execmq.GetImageList) (*execmq.GetImageListResp, *mq.CodeMessage) {
pcmCli, err := globals.PCMPool.Acquire()
if err != nil {
logger.Warnf("new pcm client, err: %s", err.Error())
return nil, mq.Failed(errorcode.OperationFailed, "new pcm client failed")
}
defer pcmCli.Close()
resp, err := pcmCli.GetImageList(pcm.GetImageListReq{
SlwNodeID: msg.SlwNodeID,
})
if err != nil {
logger.Warnf("get image list failed, err: %s", err.Error())
return nil, mq.Failed(errorcode.OperationFailed, "get image list failed")
}
return mq.ReplyOK(execmq.NewGetImageListResp(resp.ImageIDs))
}
func (svc *Service) DeleteImage(msg *execmq.DeleteImage) (*execmq.DeleteImageResp, *mq.CodeMessage) {
pcmCli, err := globals.PCMPool.Acquire()
if err != nil {
logger.Warnf("new pcm client, err: %s", err.Error())
return nil, mq.Failed(errorcode.OperationFailed, "new pcm client failed")
}
defer pcmCli.Close()
resp, err := pcmCli.DeleteImage(pcm.DeleteImageReq{
SlwNodeID: msg.SlwNodeID,
PCMJobID: msg.PCMJobID,
})
if err != nil {
logger.Warnf("delete image failed, err: %s", err.Error())
return nil, mq.Failed(errorcode.OperationFailed, "delete image failed")
}
return mq.ReplyOK(execmq.NewDeleteImageResp(resp.Result))
}
func (svc *Service) StartScheduleTask(msg *execmq.StartScheduleTask) (*execmq.StartScheduleTaskResp, *mq.CodeMessage) {
tsk := svc.taskManager.StartNew(schtsk.NewPCMScheduleTask(msg.SlwNodeID, msg.Envs, msg.ImageID, msg.CMDLine))
return mq.ReplyOK(execmq.NewStartScheduleTaskResp(tsk.ID()))
}
func (svc *Service) DeleteTask(msg *execmq.DeleteTask) (*execmq.DeleteTaskResp, *mq.CodeMessage) {
pcmCli, err := globals.PCMPool.Acquire()
if err != nil {
logger.Warnf("new pcm client, err: %s", err.Error())
return nil, mq.Failed(errorcode.OperationFailed, "new pcm client failed")
}
defer pcmCli.Close()
resp, err := pcmCli.DeleteTask(pcm.DeleteTaskReq{
SlwNodeID: msg.SlwNodeID,
PCMJobID: msg.PCMJobID,
})
if err != nil {
logger.Warnf("delete task failed, err: %s", err.Error())
return nil, mq.Failed(errorcode.OperationFailed, "delete task failed")
}
return mq.ReplyOK(execmq.NewDeleteTaskResp(resp.Result))
}