func()

in pkg/controller/shared_library/controller.go [117:157]


func (r *Reconcile) tryToReconcile(ctx context.Context, instance *jenkinsApi.JenkinsSharedLibrary) error {
	if instance.Status.Value == helper.StatusSuccess && instance.ObjectMeta.DeletionTimestamp.IsZero() {
		return nil
	}

	rootJenkins, err := plutil.GetJenkinsInstanceOwner(r.client, instance.Name, instance.Namespace,
		instance.Spec.OwnerName, instance.GetOwnerReferences())
	if err != nil {
		return fmt.Errorf("failed to get owner for jenkins folder %s: %w", instance.Name, err)
	}

	if rootJenkins.Status.Status != jenkins.StatusReady {
		return errors.New("root jenkins is not ready")
	}

	sharedLibraries, err := r.prepareSharedLibraries(ctx, instance, rootJenkins.Spec.SharedLibraries)
	if err != nil {
		return fmt.Errorf("failed to prepare shared libraries: %w", err)
	}

	if err = r.createLibrariesScript(rootJenkins, sharedLibraries); err != nil {
		return fmt.Errorf("failed to create libraries script: %w", err)
	}

	needToUpdate, err := helper.TryToDelete(instance, finalizer, func() error {
		return nil
	})
	if err != nil {
		return fmt.Errorf("failed to delete resource: %w", err)
	}

	if !needToUpdate {
		return nil
	}

	if err := r.client.Update(ctx, instance); err != nil {
		return fmt.Errorf("failed to update instance: %w", err)
	}

	return nil
}