...

Source file src/edge-infra.dev/pkg/edge/controllers/envctl/controller.go

Documentation: edge-infra.dev/pkg/edge/controllers/envctl

     1  package envctl
     2  
     3  import (
     4  	"time"
     5  
     6  	persistenceApi "edge-infra.dev/pkg/edge/apis/persistence/v1alpha1"
     7  	"edge-infra.dev/pkg/k8s/runtime/controller"
     8  	"edge-infra.dev/pkg/k8s/runtime/controller/metrics"
     9  	"edge-infra.dev/pkg/k8s/runtime/events"
    10  	"edge-infra.dev/pkg/lib/fog"
    11  
    12  	"github.com/go-logr/logr"
    13  
    14  	"k8s.io/apimachinery/pkg/runtime"
    15  	utilruntime "k8s.io/apimachinery/pkg/util/runtime"
    16  	clientgoscheme "k8s.io/client-go/kubernetes/scheme"
    17  
    18  	ctrl "sigs.k8s.io/controller-runtime"
    19  )
    20  
    21  const controllerName = "persistence-controller"
    22  
    23  // Run creates the manager, sets up the controller, and then starts
    24  // everything.  It returns the created manager for testing purposes
    25  func Run(o ...controller.Option) error {
    26  	mgr, log, err := create(o...)
    27  	if err != nil {
    28  		return err
    29  	}
    30  
    31  	log.Info("starting manager")
    32  	if err := mgr.Start(ctrl.SetupSignalHandler()); err != nil {
    33  		log.Error(err, "problem running manager")
    34  		return err
    35  	}
    36  
    37  	return nil
    38  }
    39  
    40  // create wires up the reconciler(s) with a created manager and returns the
    41  // manager + setup logger
    42  func create(o ...controller.Option) (ctrl.Manager, logr.Logger, error) {
    43  	ctrl.SetLogger(fog.New().WithName("envctl"))
    44  	log := ctrl.Log
    45  
    46  	cfg, opts := controller.ProcessOptions(o...)
    47  	opts.LeaderElection = false
    48  	opts.Scheme = createScheme()
    49  
    50  	mgr, err := ctrl.NewManager(cfg, opts)
    51  	if err != nil {
    52  		log.Error(err, "failed to create manager")
    53  		return nil, logr.Logger{}, err
    54  	}
    55  
    56  	m := metrics.New(mgr, "envctl")
    57  
    58  	if err = (&PersistenceReconciler{
    59  		Client:        mgr.GetClient(),
    60  		EventRecorder: events.NewRecorder(mgr, ctrl.Log, controllerName),
    61  		Name:          controllerName,
    62  		Metrics:       m,
    63  		Conditions:    persistenceConditions,
    64  	}).SetupWithManager(mgr); err != nil {
    65  		log.Error(err, "failed to create controller and set up with manager", "persistence", "persistence-reconciler")
    66  		return nil, logr.Logger{}, err
    67  	}
    68  
    69  	if err := (&ConfigMapReplicationReconciler{
    70  		Client:      mgr.GetClient(),
    71  		Name:        "configmap_replication_reconciler",
    72  		RequeueTime: 1 * time.Minute,
    73  	}).SetupWithManager(mgr); err != nil {
    74  		log.Error(err, "fail to create ConfigMapReplicationReconciler")
    75  		return nil, logr.Logger{}, err
    76  	}
    77  
    78  	return mgr, log, nil
    79  }
    80  
    81  func createScheme() *runtime.Scheme {
    82  	scheme := runtime.NewScheme()
    83  
    84  	utilruntime.Must(clientgoscheme.AddToScheme(scheme))
    85  	utilruntime.Must(persistenceApi.AddToScheme(scheme))
    86  	return scheme
    87  }
    88  

View as plain text