mirror of
https://github.com/fankes/beszel.git
synced 2025-10-19 09:49:28 +08:00
Clear system's active alerts when system is paused
This commit is contained in:
@@ -122,7 +122,8 @@ func (sm *SystemManager) onRecordAfterUpdateSuccess(e *core.RecordEvent) error {
|
|||||||
newStatus := e.Record.GetString("status")
|
newStatus := e.Record.GetString("status")
|
||||||
switch newStatus {
|
switch newStatus {
|
||||||
case paused:
|
case paused:
|
||||||
sm.RemoveSystem(e.Record.Id)
|
_ = sm.RemoveSystem(e.Record.Id)
|
||||||
|
_ = deactivateAlerts(e.App, e.Record.Id)
|
||||||
return e.Next()
|
return e.Next()
|
||||||
case pending:
|
case pending:
|
||||||
if err := sm.AddRecord(e.Record); err != nil {
|
if err := sm.AddRecord(e.Record); err != nil {
|
||||||
@@ -437,3 +438,20 @@ func (sys *System) resetSSHClient() {
|
|||||||
}
|
}
|
||||||
sys.client = nil
|
sys.client = nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// deactivateAlerts finds all triggered alerts for a system and sets them to false
|
||||||
|
func deactivateAlerts(app core.App, systemID string) error {
|
||||||
|
// we can't use an UPDATE query because it doesn't work with realtime updates
|
||||||
|
// _, err := e.App.DB().NewQuery(fmt.Sprintf("UPDATE alerts SET triggered = false WHERE system = '%s'", e.Record.Id)).Execute()
|
||||||
|
alerts, err := app.FindRecordsByFilter("alerts", fmt.Sprintf("system = '%s' && triggered = 1", systemID), "", -1, 0)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
for _, alert := range alerts {
|
||||||
|
alert.Set("triggered", false)
|
||||||
|
if err := app.SaveNoValidate(alert); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
Reference in New Issue
Block a user