func()

in controllers/qualityprofile/chain/create_qualityprofile.go [24:52]


func (h CreateQualityProfile) ServeRequest(ctx context.Context, profile *sonarApi.SonarQualityProfile) error {
	log := ctrl.LoggerFrom(ctx).WithValues("name", profile.Spec.Name)
	log.Info("Start creating quality profile")

	sonarProfile, err := h.sonarApiClient.GetQualityProfile(ctx, profile.Spec.Name)
	if err != nil {
		if !sonar.IsErrNotFound(err) {
			return fmt.Errorf("failed to get quality profile: %w", err)
		}

		log.Info("Quality profile doesn't exist, creating new one")
		if sonarProfile, err = h.sonarApiClient.CreateQualityProfile(ctx, profile.Spec.Name, profile.Spec.Language); err != nil {
			return fmt.Errorf("failed to create quality profile: %w", err)
		}

		log.Info("Quality profile has been created")
	}

	if profile.Spec.Default && profile.Spec.Default != sonarProfile.IsDefault {
		log.Info("Updating default quality profile")
		if err = h.sonarApiClient.SetAsDefaultQualityProfile(ctx, profile.Spec.Name, profile.Spec.Language); err != nil {
			return fmt.Errorf("failed to set default quality profile: %w", err)
		}

		log.Info("Default quality profile has been updated")
	}

	return nil
}