From aa4c5bbfe45eddc375f7f90e9418b2c656f1ac8e Mon Sep 17 00:00:00 2001 From: Ganesh Vernekar <15064823+codesome@users.noreply.github.com> Date: Thu, 3 Jun 2021 18:37:34 +0530 Subject: [PATCH] Alerting: Don't save Alertmanager config on migration when 0 channels (#35119) * Alerting: Don't save Alertmanager config on migration when 0 channels Signed-off-by: Ganesh Vernekar * Fix review Signed-off-by: Ganesh Vernekar --- .../sqlstore/migrations/ualert/ualert.go | 24 +++++++++++++++---- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/pkg/services/sqlstore/migrations/ualert/ualert.go b/pkg/services/sqlstore/migrations/ualert/ualert.go index 4b658285f84..78800bbcac4 100644 --- a/pkg/services/sqlstore/migrations/ualert/ualert.go +++ b/pkg/services/sqlstore/migrations/ualert/ualert.go @@ -243,10 +243,28 @@ func (m *migration) Exec(sess *xorm.Session, mg *migrator.Migrator) error { return err } + if err := m.writeAlertmanagerConfig(&amConfig, allChannels); err != nil { + return err + } + + if err := m.writeSilencesFile(); err != nil { + m.mg.Logger.Error("alert migration error: failed to write silence file", "err", err) + } + + return nil +} + +func (m *migration) writeAlertmanagerConfig(amConfig *PostableUserConfig, allChannels map[interface{}]*notificationChannel) error { + if len(allChannels) == 0 { + // No channels, hence don't require Alertmanager config. + m.mg.Logger.Info("alert migration: no notification channel found, skipping Alertmanager config") + return nil + } + if err := amConfig.EncryptSecureSettings(); err != nil { return err } - rawAmConfig, err := json.Marshal(&amConfig) + rawAmConfig, err := json.Marshal(amConfig) if err != nil { return err } @@ -262,10 +280,6 @@ func (m *migration) Exec(sess *xorm.Session, mg *migrator.Migrator) error { return err } - if err := m.writeSilencesFile(); err != nil { - m.mg.Logger.Error("alert migration error: failed to write silence file", "err", err) - } - return nil }