Commit 7b70817d authored by 李科's avatar 李科

fix: 预警规则编辑逻辑

parent e4dc193a
...@@ -94,17 +94,7 @@ func (a *AlertRulesSvc) Add(req request.AddAlertRules) (err error) { ...@@ -94,17 +94,7 @@ func (a *AlertRulesSvc) Add(req request.AddAlertRules) (err error) {
} }
} }
var item response.AlertRulesItem err = a.CreatePrometheusRule(req.IsEnabled, data.Id, db)
item, err = a.GetDataById(request.DetailAlertRules{Id: data.Id}) // 查询完整数据
prSvc := PrometheusRuleSvc{User: a.User} // 插入数据到 prometheus.yml --> rule_files
createErr := prSvc.Create(item)
if createErr != nil {
_, err = db.Delete(&data)
if err != nil {
return err
}
return createErr
}
return nil return nil
} }
...@@ -185,28 +175,40 @@ func (a *AlertRulesSvc) Update(req request.UpdateAlertRules) (err error) { ...@@ -185,28 +175,40 @@ func (a *AlertRulesSvc) Update(req request.UpdateAlertRules) (err error) {
} }
} }
err = a.CreatePrometheusRule(req.IsEnabled, data.Id, db)
return nil
}
func (a *AlertRulesSvc) CreatePrometheusRule(isEnabled int, id string, db *xorm.Engine) (err error) {
if isEnabled == 1 {
var item response.AlertRulesItem var item response.AlertRulesItem
item, err = a.GetDataById(request.DetailAlertRules{Id: data.Id}) item, err = a.GetDataById(request.DetailAlertRules{Id: id}) // 查询完整数据
if err != nil {
return
}
prSvc := PrometheusRuleSvc{User: a.User} prSvc := PrometheusRuleSvc{User: a.User}
_, exist, _ := prSvc.Get(item)
{ if exist {
// 删除PrometheusRule
deleteErr := prSvc.Delete(item) deleteErr := prSvc.Delete(item)
if deleteErr != nil { if deleteErr != nil {
_, err = db.ID(id).Delete(&entity.AlertRules{})
if err != nil {
return
}
return deleteErr return deleteErr
} }
// 再次创建PrometheusRule }
createErr := prSvc.Create(item) createErr := prSvc.Create(item)
if createErr != nil { if createErr != nil {
_, err = db.Delete(&data) _, err = db.ID(id).Delete(&entity.AlertRules{})
if err != nil { if err != nil {
return err return
} }
return createErr return createErr
} }
} }
return
return nil
} }
func (a *AlertRulesSvc) UpdateIsEnabled(req request.UpdateIsEnabledAlertRules) (err error) { func (a *AlertRulesSvc) UpdateIsEnabled(req request.UpdateIsEnabledAlertRules) (err error) {
...@@ -228,7 +230,6 @@ func (a *AlertRulesSvc) UpdateIsEnabled(req request.UpdateIsEnabledAlertRules) ( ...@@ -228,7 +230,6 @@ func (a *AlertRulesSvc) UpdateIsEnabled(req request.UpdateIsEnabledAlertRules) (
if err != nil { if err != nil {
return return
} }
if req.IsEnabled == 2 { if req.IsEnabled == 2 {
if item.IsEnabled == 1 { if item.IsEnabled == 1 {
prSvc := PrometheusRuleSvc{User: a.User} prSvc := PrometheusRuleSvc{User: a.User}
......
...@@ -24,7 +24,7 @@ func init() { ...@@ -24,7 +24,7 @@ func init() {
svc = PrometheusRule{Header: header} svc = PrometheusRule{Header: header}
pr = monitoringv1.PrometheusRule{} pr = monitoringv1.PrometheusRule{}
alertRulesId := "83343ef6-4a99-47bd-abb4-bcff52feb2ec" // 预警规则id alertRulesId := "45a50875-20fd-4d93-a7d5-c6790186ad97" // 预警规则id
prometheusRuleName := GetPrometheusRuleName(alertRulesId) prometheusRuleName := GetPrometheusRuleName(alertRulesId)
pr.Name = prometheusRuleName pr.Name = prometheusRuleName
pr.Namespace = "beagle-monitoring" pr.Namespace = "beagle-monitoring"
......
...@@ -90,7 +90,7 @@ func (p *PrometheusRuleSvc) Create(data response.AlertRulesItem) (err error) { ...@@ -90,7 +90,7 @@ func (p *PrometheusRuleSvc) Create(data response.AlertRulesItem) (err error) {
return return
} }
func (p *PrometheusRuleSvc) Get(data response.AlertRulesItem) (obj *monitoringv1.PrometheusRule, err error) { func (p *PrometheusRuleSvc) Get(data response.AlertRulesItem) (obj *monitoringv1.PrometheusRule, exist bool, err error) {
prometheusRuleName := k8s.GetPrometheusRuleName(data.Id) prometheusRuleName := k8s.GetPrometheusRuleName(data.Id)
pr := monitoringv1.PrometheusRule{ pr := monitoringv1.PrometheusRule{
ObjectMeta: v1.ObjectMeta{ ObjectMeta: v1.ObjectMeta{
...@@ -103,6 +103,9 @@ func (p *PrometheusRuleSvc) Get(data response.AlertRulesItem) (obj *monitoringv1 ...@@ -103,6 +103,9 @@ func (p *PrometheusRuleSvc) Get(data response.AlertRulesItem) (obj *monitoringv1
prSvc := k8s.PrometheusRule{Header: header} prSvc := k8s.PrometheusRule{Header: header}
conf.Logger.Info("pr", zap.Any("pr", pr)) conf.Logger.Info("pr", zap.Any("pr", pr))
obj, err = prSvc.Get(pr.Namespace, pr.Name) obj, err = prSvc.Get(pr.Namespace, pr.Name)
if obj != nil && err == nil {
exist = true
}
return return
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment