in controllers/qualitygate/sonarqualitygate_controller.go [51:124]
func (r *SonarQualityGateReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Result, error) {
log := ctrl.LoggerFrom(ctx)
log.Info("Reconciling SonarQualityGate")
gate := &sonarApi.SonarQualityGate{}
err := r.client.Get(ctx, req.NamespacedName, gate)
if err != nil {
if errors.IsNotFound(err) {
return ctrl.Result{}, nil
}
return ctrl.Result{}, err
}
sonarApiClient, err := r.apiClientProvider.GetSonarApiClientFromSonarRef(ctx, req.Namespace, gate)
if err != nil {
log.Error(err, "An error has occurred while getting sonar api client")
return ctrl.Result{
RequeueAfter: errorRequeueTime,
}, nil
}
if gate.GetDeletionTimestamp() != nil {
if controllerutil.ContainsFinalizer(gate, sonarOperatorFinalizer) {
if err = chain.NewRemoveQualityGate(sonarApiClient).ServeRequest(ctx, gate); err != nil {
log.Error(err, "An error has occurred while deleting QualityGate")
return ctrl.Result{
RequeueAfter: errorRequeueTime,
}, nil
}
controllerutil.RemoveFinalizer(gate, sonarOperatorFinalizer)
if err = r.client.Update(ctx, gate); err != nil {
return ctrl.Result{}, err
}
}
return ctrl.Result{}, nil
}
if controllerutil.AddFinalizer(gate, sonarOperatorFinalizer) {
err = r.client.Update(ctx, gate)
if err != nil {
return ctrl.Result{}, err
}
}
oldStatus := gate.Status
if err = chain.MakeChain(sonarApiClient).ServeRequest(ctx, gate); err != nil {
log.Error(err, "An error has occurred while handling SonarQualityGate")
gate.Status.Value = "error"
gate.Status.Error = err.Error()
if err = r.updateSonarQualityGateStatus(ctx, gate, oldStatus); err != nil {
return ctrl.Result{}, err
}
return ctrl.Result{
RequeueAfter: errorRequeueTime,
}, nil
}
gate.Status.Value = common.StatusCreated
gate.Status.Error = ""
if err = r.updateSonarQualityGateStatus(ctx, gate, oldStatus); err != nil {
return ctrl.Result{}, err
}
return ctrl.Result{}, nil
}