func()

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
}