in controllers/sonar/chain/update_settings.go [28:62]
func (h *UpdateSettings) ServeRequest(ctx context.Context, sonar *sonarApi.Sonar) error {
log := ctrl.LoggerFrom(ctx)
log.Info("Start updating settings to sonar")
// if the user removes a setting from the CR, we need to reset it in Sonar
settingsToReset := getSettingsKeysMap(sonar.Status)
// we need to save processed settings to know which settings we need to reset
processedSettings := make([]string, 0, len(sonar.Spec.Settings))
for _, s := range sonar.Spec.Settings {
setting, err := h.makeSetting(ctx, s, sonar.Namespace)
if err != nil {
return err
}
if err = h.sonarApiClient.SetSetting(ctx, setting); err != nil {
return fmt.Errorf("failed to set setting %s: %w", s.Key, err)
}
processedSettings = append(processedSettings, s.Key)
delete(settingsToReset, s.Key)
}
if len(settingsToReset) != 0 {
if err := h.sonarApiClient.ResetSettings(ctx, settingsKeysMapToSlice(settingsToReset)); err != nil {
return fmt.Errorf("failed to reset settings: %w", err)
}
}
setProcessedSettings(&sonar.Status, processedSettings)
log.Info("Sonar settings have been updated")
return nil
}