in pkg/controller/jenkinsserviceaccount/jenkinsserviceaccount_controller.go [75:136]
func (r *ReconcileJenkinsServiceAccount) Reconcile(ctx context.Context, request reconcile.Request) (reconcile.Result, error) {
log := r.log.WithValues(logNamespaceKey, request.Namespace, logNameKey, request.Name)
log.Info("Reconciling JenkinsServiceAccounts")
instance := &jenkinsApi.JenkinsServiceAccount{}
if err := r.client.Get(ctx, request.NamespacedName, instance); err != nil {
if errors.IsNotFound(err) {
// Request object not found, could have been deleted after reconcile request.
// Owned objects are automatically garbage collected. For additional cleanup logic use finalizers.
// Return and don't requeue
log.Info("instance not found")
return reconcile.Result{}, nil
}
return reconcile.Result{}, fmt.Errorf("failed to get JenkinsServiceAccount: %w", err)
}
jenkinsInstance, err := r.getOrCreateInstanceOwner(ctx, instance)
if err != nil {
return reconcile.Result{RequeueAfter: helper.DefaultRequeueTime * time.Second},
fmt.Errorf("failed to get owner for %v: %w", instance.Name, err)
}
if jenkinsInstance == nil {
log.Info("Couldn't find Jenkins Service Account owner instance")
return reconcile.Result{RequeueAfter: helper.DefaultRequeueTime * time.Second}, nil
}
jc, err := jenkinsClient.InitJenkinsClient(jenkinsInstance, r.platform)
if err != nil {
log.Info("Failed to init Jenkins REST client")
return reconcile.Result{RequeueAfter: helper.DefaultRequeueTime * time.Second},
fmt.Errorf("failed to init Jenkins REST client: %w", err)
}
if jc == nil {
log.V(1).Info("Jenkins returns nil client")
return reconcile.Result{RequeueAfter: helper.DefaultRequeueTime * time.Second}, nil
}
if err := jc.CreateUser(instance); err != nil {
log.Info("Failed to create user in Jenkins")
return reconcile.Result{RequeueAfter: helper.DefaultRequeueTime * time.Second},
fmt.Errorf("failed to create user: %w", err)
}
if err := r.updateCreatedStatus(ctx, instance, true); err != nil {
return reconcile.Result{RequeueAfter: helper.DefaultRequeueTime * time.Second}, err
}
if err := r.updateAvailableStatus(ctx, instance, true); err != nil {
return reconcile.Result{RequeueAfter: helper.DefaultRequeueTime * time.Second}, err
}
return reconcile.Result{RequeueAfter: requeueAfter}, nil
}