in controllers/blobstore/nexusblobstore_controller.go [34:112]
func (r *NexusBlobStoreReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Result, error) {
log := ctrl.LoggerFrom(ctx)
log.Info("Reconciling NexusBlobStore")
store := &nexusApi.NexusBlobStore{}
if err := r.client.Get(ctx, req.NamespacedName, store); err != nil {
if k8sErrors.IsNotFound(err) {
return ctrl.Result{}, nil
}
return ctrl.Result{}, fmt.Errorf("failed to get NexusBlobStore: %w", err)
}
nexusApiClient, err := r.apiClientProvider.GetNexusApiClientFromNexusRef(ctx, store.Namespace, store)
if err != nil {
log.Error(err, "An error has occurred while getting nexus api client")
return ctrl.Result{
RequeueAfter: controllers.ErrorRequeueTime,
}, nil
}
if store.GetDeletionTimestamp() != nil {
if controllerutil.ContainsFinalizer(store, controllers.NexusOperatorFinalizer) {
if err = chain.NewRemoveBlobstore(nexusApiClient.BlobStore.File).ServeRequest(ctx, store); err != nil {
log.Error(err, "An error has occurred while deleting NexusBlobStore")
return ctrl.Result{
RequeueAfter: controllers.ErrorRequeueTime,
}, nil
}
controllerutil.RemoveFinalizer(store, controllers.NexusOperatorFinalizer)
if err = r.client.Update(ctx, store); err != nil {
return ctrl.Result{}, fmt.Errorf("failed to update NexusBlobStore: %w", err)
}
}
return ctrl.Result{}, nil
}
if controllerutil.AddFinalizer(store, controllers.NexusOperatorFinalizer) {
err = r.client.Update(ctx, store)
if err != nil {
return ctrl.Result{}, fmt.Errorf("failed to update NexusBlobStore: %w", err)
}
}
oldStatus := store.Status
if err = chain.NewCreateBlobStore(
nexusApiClient.BlobStore.S3,
nexusApiClient.BlobStore.File,
r.client,
).ServeRequest(ctx, store); err != nil {
log.Error(err, "An error has occurred while handling NexusBlobStore")
store.Status.Value = common.StatusError
store.Status.Error = err.Error()
if err = r.updateNexusBlobStoreStatus(ctx, store, oldStatus); err != nil {
return ctrl.Result{}, err
}
return ctrl.Result{
RequeueAfter: controllers.ErrorRequeueTime,
}, nil
}
store.Status.Value = common.StatusCreated
store.Status.Error = ""
if err = r.updateNexusBlobStoreStatus(ctx, store, oldStatus); err != nil {
return ctrl.Result{}, err
}
return ctrl.Result{}, nil
}