9 // Import all Kubernetes client auth plugins (e.g. Azure, GCP, OIDC, etc.)
10 _ "k8s.io/client-go/plugin/pkg/client/auth"
12 "github.com/spf13/pflag"
13 "ovn4nfv-k8s-plugin/pkg/apis"
14 "ovn4nfv-k8s-plugin/internal/pkg/ovn"
15 "ovn4nfv-k8s-plugin/pkg/controller"
16 "sigs.k8s.io/controller-runtime/pkg/client/config"
17 "sigs.k8s.io/controller-runtime/pkg/log/zap"
18 "sigs.k8s.io/controller-runtime/pkg/manager"
19 logf "sigs.k8s.io/controller-runtime/pkg/runtime/log"
20 "sigs.k8s.io/controller-runtime/pkg/runtime/signals"
23 var log = logf.Log.WithName("nfn-operator")
26 log.Info(fmt.Sprintf("Go Version: %s", runtime.Version()))
27 log.Info(fmt.Sprintf("Go OS/Arch: %s/%s", runtime.GOOS, runtime.GOARCH))
32 // Add flags registered by imported packages (e.g. glog and
33 // controller-runtime)
34 pflag.CommandLine.AddGoFlagSet(flag.CommandLine)
38 // Use a zap logr.Logger implementation. If none of the zap
39 // flags are configured (or if the zap flag set is not being
40 // used), this defaults to a production zap logger.
42 // The logger instantiated here can be changed to any logger
43 // implementing the logr.Logger interface. This logger will
44 // be propagated through the whole operator, generating
45 // uniform and structured logs.
46 logf.SetLogger(zap.Logger(true))
50 // Create an OVN Controller
51 _, err := ovn.NewOvnController(nil)
56 //Initialize all the controllers that are supported here
58 // Get a config to talk to the apiserver
59 cfg, err := config.GetConfig()
64 // Create a new Cmd to provide shared dependencies and start components
65 mgr, err := manager.New(cfg, manager.Options{})
71 log.Info("Registering Components.")
73 // Setup Scheme for all resources
74 if err := apis.AddToScheme(mgr.GetScheme()); err != nil {
79 // Setup all Controllers
80 if err := controller.AddToManager(mgr); err != nil {
84 log.Info("Starting the Cmd.")
87 if err := mgr.Start(signals.SetupSignalHandler()); err != nil {
88 log.Error(err, "Manager exited non-zero")