func()

in controllers/qualitygate/chain/create_qualitygate.go [24:52]


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

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

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

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

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

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

	return nil
}