/* Copyright (c) [2023] [pcm] [pcm-coordinator] is licensed under Mulan PSL v2. You can use this software according to the terms and conditions of the Mulan PSL v2. You may obtain a copy of Mulan PSL v2 at: http://license.coscl.org.cn/MulanPSL2 THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPaRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. See the Mulan PSL v2 for more details. */ package cloud import ( "context" "errors" "github.com/zeromicro/go-zero/core/logx" "gitlink.org.cn/JointCloud/pcm-coordinator/internal/participant/cloud" "gitlink.org.cn/JointCloud/pcm-coordinator/internal/svc" "gitlink.org.cn/JointCloud/pcm-coordinator/internal/types" container "gitlink.org.cn/JointCloud/pcm-coordinator/internal/types/cloud" "gitlink.org.cn/JointCloud/pcm-coordinator/pkg/models" "k8s.io/apimachinery/pkg/util/json" "net/http" "strconv" ) type ContainerDeleteLogic struct { logx.Logger ctx context.Context svcCtx *svc.ServiceContext } func NewContainerDeleteLogic(ctx context.Context, svcCtx *svc.ServiceContext) *ContainerDeleteLogic { return &ContainerDeleteLogic{ Logger: logx.WithContext(ctx), ctx: ctx, svcCtx: svcCtx, } } func (l *ContainerDeleteLogic) ContainerDelete(req *container.DeleteParam) (resp interface{}, err error) { task := &types.TaskModel{} l.svcCtx.DbEngin.Table("task").Where("id", req.Id).Scan(&task) if task.Name == "" { return nil, errors.New("任务不存在") } taskCloud := models.TaskCloud{} l.svcCtx.DbEngin.Table("task_cloud").Where("task_id", req.Id).Scan(&taskCloud) if taskCloud.Name == "" { return nil, errors.New("通算任务不存在") } if taskCloud.BusinessCode != "" && taskCloud.BusinessCode != "null" { var eciRequestParam cloud.EciRequestParam err := json.Unmarshal([]byte(taskCloud.BusinessCode), &eciRequestParam) if err != nil { logx.Errorf("Failed to unmarshal BusinessCode: %v", err) return nil, err } req.Name = eciRequestParam.ContainerGroupId } else { req.Name = taskCloud.Name } req.ClusterId = strconv.FormatInt(taskCloud.ClusterId, 10) create, err := l.svcCtx.Cloud.ContainerDelete(strconv.FormatInt(taskCloud.ClusterId, 10), req) if err != nil { return nil, err } if create.Code != http.StatusOK { return nil, errors.New(create.Message) } taskCloud.Status = "Deleted" l.svcCtx.DbEngin.Updates(taskCloud) task.Status = "Deleted" l.svcCtx.DbEngin.Table("task").Where("id", req.Id).Update("status", "Deleted") return }