func (v *VersionReconciler) Reconcile(ctx context.Context, req *ctrl.Request) (ctrl.Result, error) {
	if err := v.PFacts.Collect(ctx, v.Vdb); err != nil {
		return ctrl.Result{}, err
	}
	pod, ok := v.PFacts.findRunningPod()
	if !ok {
		v.Log.Info("Could not find any running pod, requeuing reconciliation.")
		return ctrl.Result{Requeue: true}, nil
	}
	if err := v.reconcileVersion(ctx, pod); err != nil {
		return ctrl.Result{}, err
	}
	vinf, ok := version.MakeInfo(v.Vdb)
	if !ok {
		return ctrl.Result{}, nil
	}
	if vinf.IsUnsupported() {
		v.VRec.EVRec.Eventf(v.Vdb, corev1.EventTypeWarning, events.UnsupportedVerticaVersion,
			"The Vertica version %s is unsupported with this operator.  The minimum version supported is %s.",
			vinf.VdbVer, version.MinimumVersion)
		return ctrl.Result{Requeue: true}, nil
	}
	return ctrl.Result{}, nil
}
Reconcile will update the annotation in the Vdb with Vertica version info
package controllers
import (
	"context"
	"regexp"
	"github.com/go-logr/logr"
	vapi "github.com/vertica/vertica-kubernetes/api/v1beta1"
	"github.com/vertica/vertica-kubernetes/pkg/cmds"
	"github.com/vertica/vertica-kubernetes/pkg/events"
	"github.com/vertica/vertica-kubernetes/pkg/names"
	"github.com/vertica/vertica-kubernetes/pkg/version"
	corev1 "k8s.io/api/core/v1"
	ctrl "sigs.k8s.io/controller-runtime"
)
type VersionReconciler struct {
	VRec    *VerticaDBReconciler
	Log     logr.Logger
	Vdb     *vapi.VerticaDB  
	PRunner cmds.PodRunner
	PFacts  *PodFacts
}
func MakeVersionReconciler(vdbrecon *VerticaDBReconciler, log logr.Logger,
	vdb *vapi.VerticaDB, prunner cmds.PodRunner, pfacts *PodFacts) ReconcileActor {
	return &VersionReconciler{VRec: vdbrecon, Log: log, Vdb: vdb, PRunner: prunner, PFacts: pfacts}
}