...
1 package prometheusctl
2
3 import (
4 "fmt"
5 "os"
6
7 "edge-infra.dev/pkg/k8s/runtime/controller"
8 "edge-infra.dev/pkg/lib/logging"
9
10 "k8s.io/apimachinery/pkg/runtime"
11 utilruntime "k8s.io/apimachinery/pkg/util/runtime"
12 clientgoscheme "k8s.io/client-go/kubernetes/scheme"
13 ctrl "sigs.k8s.io/controller-runtime"
14
15 monitoringscheme "github.com/prometheus-operator/prometheus-operator/pkg/client/versioned/scheme"
16 )
17
18
19
20 func Run(o ...controller.Option) error {
21 ctrl.SetLogger(logging.NewLogger().Logger)
22 log := ctrl.Log.WithName("setup")
23
24 cfg, err := newConfig(os.Args)
25 if err != nil {
26 log.Error(err, "failed to parse configuration")
27 return err
28 }
29
30 mgr, err := create(cfg, o...)
31 if err != nil {
32 log.Error(err, "failed to create manager")
33 return err
34 }
35
36 log.Info("starting manager")
37 if err := mgr.Start(ctrl.SetupSignalHandler()); err != nil {
38 log.Error(err, "problem running manager")
39 return err
40 }
41
42 return nil
43 }
44
45 func create(cfg *config, o ...controller.Option) (ctrl.Manager, error) {
46 ctlCfg, opts := controller.ProcessOptions(o...)
47 opts.LeaderElectionID = "prometheusctl.edge.ncr.com"
48 opts.Scheme = createScheme()
49
50 mgr, err := ctrl.NewManager(ctlCfg, opts)
51 if err != nil {
52 return nil, fmt.Errorf("failed to create manager: %w", err)
53 }
54
55 if err = (&PrometheusStackdriverReconciler{
56 Client: mgr.GetClient(),
57 config: *cfg,
58 }).SetupWithManager(mgr); err != nil {
59 return nil, fmt.Errorf("failed to set up reconciler: %w", err)
60 }
61
62 return mgr, nil
63 }
64
65 func createScheme() *runtime.Scheme {
66 scheme := runtime.NewScheme()
67
68 utilruntime.Must(clientgoscheme.AddToScheme(scheme))
69 utilruntime.Must(monitoringscheme.AddToScheme(scheme))
70
71 return scheme
72 }
73
View as plain text