package core import ( "context" "github.com/ghodss/yaml" "gitlink.org.cn/JointCloud/pcm-coordinator/internal/mqs" "gitlink.org.cn/JointCloud/pcm-coordinator/pkg/constants" "gitlink.org.cn/JointCloud/pcm-coordinator/pkg/models" "gitlink.org.cn/JointCloud/pcm-coordinator/pkg/response" "strings" "time" "gitlink.org.cn/JointCloud/pcm-coordinator/internal/svc" "gitlink.org.cn/JointCloud/pcm-coordinator/internal/types" "github.com/zeromicro/go-zero/core/logx" ) type CommitTaskLogic struct { logx.Logger ctx context.Context svcCtx *svc.ServiceContext } func NewCommitTaskLogic(ctx context.Context, svcCtx *svc.ServiceContext) *CommitTaskLogic { return &CommitTaskLogic{ Logger: logx.WithContext(ctx), ctx: ctx, svcCtx: svcCtx, } } func (l *CommitTaskLogic) CommitTask(req *types.CommitTaskReq) error { //req.YamlList转换为json var yamlStr []string for _, s := range req.YamlList { j2, err := yaml.YAMLToJSON([]byte(s)) if err != nil { logx.Errorf("Failed to convert yaml to JSON, err: %v", err) return err } yamlStr = append(yamlStr, string(j2)) } result := strings.Join(yamlStr, ",") taskModel := models.Task{ Status: constants.Saved, Name: req.Name, CommitTime: time.Now(), NsID: req.NsID, YamlString: "[" + result + "]", } // 保存任务数据到数据库 tx := l.svcCtx.DbEngin.Create(&taskModel) if tx.Error != nil { return tx.Error } task := response.TaskInfo{ TaskId: taskModel.Id, MatchLabels: req.MatchLabels, NsID: req.NsID, Metadata: req.YamlList, Replicas: req.Replicas, } mqs.InsQueue.Beta.Add(&task) return nil }