func newReconciler(mgr manager.Manager) reconcile.Reconciler {
	reconciler := &ReconcileAccountClaim{
		client:           controllerutils.NewClientWithMetricsOrDie(log, mgr, controllerName),
		scheme:           mgr.GetScheme(),
		awsClientBuilder: &awsclient.Builder{},
	}
	return controllerutils.NewReconcilerWithMetrics(reconciler, controllerName)
}
newReconciler returns a new reconcile.Reconciler
package accountclaim
import (
	"context"
	"fmt"
	"time"
	"github.com/go-logr/logr"
	awsv1alpha1 "github.com/openshift/aws-account-operator/pkg/apis/aws/v1alpha1"
	"github.com/openshift/aws-account-operator/pkg/awsclient"
	"github.com/openshift/aws-account-operator/pkg/controller/account"
	"github.com/openshift/aws-account-operator/pkg/controller/utils"
	controllerutils "github.com/openshift/aws-account-operator/pkg/controller/utils"
	"github.com/pkg/errors"
	corev1 "k8s.io/api/core/v1"
	k8serr "k8s.io/apimachinery/pkg/api/errors"
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
	"k8s.io/apimachinery/pkg/runtime"
	"k8s.io/apimachinery/pkg/types"
	"sigs.k8s.io/controller-runtime/pkg/client"
	"sigs.k8s.io/controller-runtime/pkg/controller"
	"sigs.k8s.io/controller-runtime/pkg/handler"
	logf "sigs.k8s.io/controller-runtime/pkg/log"
	"sigs.k8s.io/controller-runtime/pkg/manager"
	"sigs.k8s.io/controller-runtime/pkg/reconcile"
	"sigs.k8s.io/controller-runtime/pkg/source"
)
const (
	AccountClaimed = "AccountClaimed"
	AccountUnclaimed = "AccountUnclaimed"
	awsCredsAccessKeyID     = "aws_access_key_id"
	awsCredsSecretAccessKey = "aws_secret_access_key"
	accountClaimFinalizer   = "finalizer.aws.managed.openshift.io"
	byocSecretFinalizer     = accountClaimFinalizer + "/byoc"
	waitPeriod              = 30
	controllerName          = "accountclaim"
	fakeAnnotation          = "managed.openshift.com/fake"
)
var log = logf.Log.WithName("controller_accountclaim")
func Add(mgr manager.Manager) error {
	return add(mgr, newReconciler(mgr))
}