package monitoring import ( "context" "gitlink.org.cn/JointCloud/pcm-coordinator/internal/svc" "gitlink.org.cn/JointCloud/pcm-coordinator/internal/types" "github.com/zeromicro/go-zero/core/logx" ) type DeleteAlertRuleLogic struct { logx.Logger ctx context.Context svcCtx *svc.ServiceContext } func NewDeleteAlertRuleLogic(ctx context.Context, svcCtx *svc.ServiceContext) *DeleteAlertRuleLogic { return &DeleteAlertRuleLogic{ Logger: logx.WithContext(ctx), ctx: ctx, svcCtx: svcCtx, } } func (l *DeleteAlertRuleLogic) DeleteAlertRule(req *types.DeleteAlertRuleReq) error { // Delete data from the database l.svcCtx.DbEngin.Delete(&types.AlertRule{}, "id = ?", req.Id) // query cluster http url. var server string l.svcCtx.DbEngin.Raw("select ta.server from t_adapter ta,t_cluster tc where ta.id = tc.adapter_id and tc.name = ?", &req.ClusterName).Scan(&server) // create prometheus rule response, err := l.svcCtx.HttpClient.R(). SetBody(&CrdStruct{ ClusterName: req.ClusterName, Name: req.Name, Grv: Grv{ Group: "monitoring.coreos.com", Version: "v1", Resource: "prometheusrules", }, }). ForceContentType("application/json"). Delete(server + "/api/v1/crd") if err != nil { return err } if err != nil || response.IsError() { return err } return nil } type Grv struct { Group string `json:"group"` Version string `json:"version"` Resource string `json:"resource"` } type CrdStruct struct { ClusterName string `json:"clusterName"` Grv Grv `json:"grv"` Name string `json:"name"` }