From 2d55e69416bcc158f5ed2cae8abe853580a5c7cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Han?= Date: Wed, 4 Aug 2021 18:09:21 +0200 Subject: [PATCH] ceph: move scheme initialization to the same place MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Let's initialize the schemes in a single place instead of doing it when each controller initializes. Signed-off-by: Sébastien Han --- pkg/operator/ceph/client/controller.go | 8 +----- pkg/operator/ceph/cluster/controller.go | 8 +----- pkg/operator/ceph/cluster/rbd/controller.go | 7 +---- pkg/operator/ceph/cr_manager.go | 28 +++++++++++++++++++ .../ceph/disruption/clusterdisruption/add.go | 9 +----- .../ceph/disruption/machinedisruption/add.go | 11 +------- .../ceph/disruption/machinelabel/add.go | 11 +------- pkg/operator/ceph/file/controller.go | 7 +---- pkg/operator/ceph/file/mirror/controller.go | 7 +---- pkg/operator/ceph/nfs/controller.go | 8 +----- pkg/operator/ceph/object/controller.go | 8 +----- pkg/operator/ceph/object/realm/controller.go | 8 +----- pkg/operator/ceph/object/user/controller.go | 8 +----- pkg/operator/ceph/object/zone/controller.go | 7 +---- .../ceph/object/zonegroup/controller.go | 7 +---- pkg/operator/ceph/pool/controller.go | 7 +---- 16 files changed, 43 insertions(+), 106 deletions(-) diff --git a/pkg/operator/ceph/client/controller.go b/pkg/operator/ceph/client/controller.go index 948a008f7d55..725bed314ed1 100644 --- a/pkg/operator/ceph/client/controller.go +++ b/pkg/operator/ceph/client/controller.go @@ -78,15 +78,9 @@ func Add(mgr manager.Manager, context *clusterd.Context) error { // newReconciler returns a new reconcile.Reconciler func newReconciler(mgr manager.Manager, context *clusterd.Context) reconcile.Reconciler { - // Add the cephv1 scheme to the manager scheme so that the controller knows about it - mgrScheme := mgr.GetScheme() - if err := cephv1.AddToScheme(mgr.GetScheme()); err != nil { - panic(err) - } - return &ReconcileCephClient{ client: mgr.GetClient(), - scheme: mgrScheme, + scheme: mgr.GetScheme(), context: context, } } diff --git a/pkg/operator/ceph/cluster/controller.go b/pkg/operator/ceph/cluster/controller.go index bf41cc1f84da..8de257bcccf5 100644 --- a/pkg/operator/ceph/cluster/controller.go +++ b/pkg/operator/ceph/cluster/controller.go @@ -113,12 +113,6 @@ func Add(mgr manager.Manager, ctx *clusterd.Context, clusterController *ClusterC // newReconciler returns a new reconcile.Reconciler func newReconciler(mgr manager.Manager, ctx *clusterd.Context, clusterController *ClusterController) reconcile.Reconciler { - // Add the cephv1 scheme to the manager scheme so that the controller knows about it - mgrScheme := mgr.GetScheme() - if err := cephv1.AddToScheme(mgr.GetScheme()); err != nil { - panic(err) - } - // add "rook-" prefix to the controller name to make sure it is clear to all reading the events // that they are coming from Rook. The controller name already has context that it is for Ceph // and from the cluster controller. @@ -126,7 +120,7 @@ func newReconciler(mgr manager.Manager, ctx *clusterd.Context, clusterController return &ReconcileCephCluster{ client: mgr.GetClient(), - scheme: mgrScheme, + scheme: mgr.GetScheme(), context: ctx, clusterController: clusterController, } diff --git a/pkg/operator/ceph/cluster/rbd/controller.go b/pkg/operator/ceph/cluster/rbd/controller.go index a2ef91d51c6b..964e9e770818 100644 --- a/pkg/operator/ceph/cluster/rbd/controller.go +++ b/pkg/operator/ceph/cluster/rbd/controller.go @@ -92,14 +92,9 @@ func Add(mgr manager.Manager, context *clusterd.Context) error { // newReconciler returns a new reconcile.Reconciler func newReconciler(mgr manager.Manager, context *clusterd.Context) reconcile.Reconciler { - // Add the cephv1 scheme to the manager scheme so that the controller knows about it - mgrScheme := mgr.GetScheme() - if err := cephv1.AddToScheme(mgr.GetScheme()); err != nil { - panic(err) - } return &ReconcileCephRBDMirror{ client: mgr.GetClient(), - scheme: mgrScheme, + scheme: mgr.GetScheme(), context: context, peers: make(map[string]*peerSpec), } diff --git a/pkg/operator/ceph/cr_manager.go b/pkg/operator/ceph/cr_manager.go index d18325b3cc84..0c51311e214e 100644 --- a/pkg/operator/ceph/cr_manager.go +++ b/pkg/operator/ceph/cr_manager.go @@ -20,18 +20,46 @@ import ( "context" "github.com/pkg/errors" + cephv1 "github.com/rook/rook/pkg/apis/ceph.rook.io/v1" + "github.com/rook/rook/pkg/apis/rook.io/v1alpha2" "github.com/rook/rook/pkg/operator/ceph/cluster" "github.com/rook/rook/pkg/operator/ceph/disruption/controllerconfig" + "k8s.io/apimachinery/pkg/runtime" + mapiv1 "github.com/openshift/cluster-api/pkg/apis/machine/v1beta1" + healthchecking "github.com/openshift/machine-api-operator/pkg/apis/healthchecking/v1alpha1" + clientgoscheme "k8s.io/client-go/kubernetes/scheme" "sigs.k8s.io/controller-runtime/pkg/client/config" "sigs.k8s.io/controller-runtime/pkg/manager" ) +var ( + resourcesSchemeFuncs = []func(*runtime.Scheme) error{ + clientgoscheme.AddToScheme, + mapiv1.AddToScheme, + healthchecking.AddToScheme, + cephv1.AddToScheme, + v1alpha2.AddToScheme, + } +) + func (o *Operator) startManager(namespaceToWatch string, context context.Context, mgrErrorCh chan error) { + logger.Info("setting up schemes") + // Setup Scheme for all resources + scheme := runtime.NewScheme() + for _, f := range resourcesSchemeFuncs { + err := f(scheme) + if err != nil { + mgrErrorCh <- errors.Wrap(err, "failed to add to scheme") + return + } + } + // Set up a manager mgrOpts := manager.Options{ LeaderElection: false, Namespace: namespaceToWatch, + Scheme: scheme, } logger.Info("setting up the controller-runtime manager") diff --git a/pkg/operator/ceph/disruption/clusterdisruption/add.go b/pkg/operator/ceph/disruption/clusterdisruption/add.go index 1adf15580c27..653b42c35fa9 100644 --- a/pkg/operator/ceph/disruption/clusterdisruption/add.go +++ b/pkg/operator/ceph/disruption/clusterdisruption/add.go @@ -42,19 +42,12 @@ import ( // Read more about how Managers, Controllers, and their Watches, Handlers, Predicates, etc work here: // https://godoc.org/github.com/kubernetes-sigs/controller-runtime/pkg func Add(mgr manager.Manager, context *controllerconfig.Context) error { - - // Add the cephv1 scheme to the manager scheme - mgrScheme := mgr.GetScheme() - if err := cephv1.AddToScheme(mgr.GetScheme()); err != nil { - return errors.Wrap(err, "failed to add ceph scheme to manager scheme") - } - // This will be used to associate namespaces and cephclusters. sharedClusterMap := &ClusterMap{} reconcileClusterDisruption := &ReconcileClusterDisruption{ client: mgr.GetClient(), - scheme: mgrScheme, + scheme: mgr.GetScheme(), context: context, clusterMap: sharedClusterMap, } diff --git a/pkg/operator/ceph/disruption/machinedisruption/add.go b/pkg/operator/ceph/disruption/machinedisruption/add.go index 9f93b80d5d89..a935e5e97316 100644 --- a/pkg/operator/ceph/disruption/machinedisruption/add.go +++ b/pkg/operator/ceph/disruption/machinedisruption/add.go @@ -18,7 +18,6 @@ package machinedisruption import ( healthchecking "github.com/openshift/machine-api-operator/pkg/apis/healthchecking/v1alpha1" - "github.com/pkg/errors" cephv1 "github.com/rook/rook/pkg/apis/ceph.rook.io/v1" "github.com/rook/rook/pkg/operator/ceph/disruption/controllerconfig" "sigs.k8s.io/controller-runtime/pkg/controller" @@ -32,17 +31,9 @@ import ( // Read more about how Managers, Controllers, and their Watches, Handlers, Predicates, etc work here: // https://godoc.org/github.com/kubernetes-sigs/controller-runtime/pkg func Add(mgr manager.Manager, ctx *controllerconfig.Context) error { - mgrScheme := mgr.GetScheme() - if err := healthchecking.AddToScheme(mgrScheme); err != nil { - return errors.Wrap(err, "failed to add to healthchecking scheme") - } - if err := cephv1.AddToScheme(mgrScheme); err != nil { - return errors.Wrap(err, "failed to add to ceph scheme") - } - reconcileMachineDisruption := &MachineDisruptionReconciler{ client: mgr.GetClient(), - scheme: mgrScheme, + scheme: mgr.GetScheme(), context: ctx, } diff --git a/pkg/operator/ceph/disruption/machinelabel/add.go b/pkg/operator/ceph/disruption/machinelabel/add.go index 53389b8a190c..d38d009c837e 100644 --- a/pkg/operator/ceph/disruption/machinelabel/add.go +++ b/pkg/operator/ceph/disruption/machinelabel/add.go @@ -19,7 +19,6 @@ package machinelabel import ( mapiv1 "github.com/openshift/cluster-api/pkg/apis/machine/v1beta1" "github.com/pkg/errors" - cephv1 "github.com/rook/rook/pkg/apis/ceph.rook.io/v1" "github.com/rook/rook/pkg/operator/ceph/disruption/controllerconfig" corev1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/types" @@ -41,17 +40,9 @@ const ( // Read more about how Managers, Controllers, and their Watches, Handlers, Predicates, etc work here: // https://godoc.org/github.com/kubernetes-sigs/controller-runtime/pkg func Add(mgr manager.Manager, context *controllerconfig.Context) error { - mgrScheme := mgr.GetScheme() - if err := cephv1.AddToScheme(mgrScheme); err != nil { - return errors.Wrap(err, "failed to add scheme to ceph") - } - if err := mapiv1.AddToScheme(mgrScheme); err != nil { - return errors.Wrap(err, "failed to add scheme to map") - } - reconcileMachineLabel := &ReconcileMachineLabel{ client: mgr.GetClient(), - scheme: mgrScheme, + scheme: mgr.GetScheme(), options: context, } diff --git a/pkg/operator/ceph/file/controller.go b/pkg/operator/ceph/file/controller.go index 4d0b3fe9f095..572930985828 100644 --- a/pkg/operator/ceph/file/controller.go +++ b/pkg/operator/ceph/file/controller.go @@ -90,14 +90,9 @@ func Add(mgr manager.Manager, context *clusterd.Context) error { // newReconciler returns a new reconcile.Reconciler func newReconciler(mgr manager.Manager, context *clusterd.Context) reconcile.Reconciler { - // Add the cephv1 scheme to the manager scheme so that the controller knows about it - mgrScheme := mgr.GetScheme() - if err := cephv1.AddToScheme(mgr.GetScheme()); err != nil { - panic(err) - } return &ReconcileCephFilesystem{ client: mgr.GetClient(), - scheme: mgrScheme, + scheme: mgr.GetScheme(), context: context, fsChannels: make(map[string]*fsHealth), } diff --git a/pkg/operator/ceph/file/mirror/controller.go b/pkg/operator/ceph/file/mirror/controller.go index 0f474959cf12..78e4dd150473 100644 --- a/pkg/operator/ceph/file/mirror/controller.go +++ b/pkg/operator/ceph/file/mirror/controller.go @@ -84,14 +84,9 @@ func Add(mgr manager.Manager, context *clusterd.Context) error { // newReconciler returns a new reconcile.Reconciler func newReconciler(mgr manager.Manager, context *clusterd.Context) reconcile.Reconciler { - // Add the cephv1 scheme to the manager scheme so that the controller knows about it - mgrScheme := mgr.GetScheme() - if err := cephv1.AddToScheme(mgr.GetScheme()); err != nil { - panic(err) - } return &ReconcileFilesystemMirror{ client: mgr.GetClient(), - scheme: mgrScheme, + scheme: mgr.GetScheme(), context: context, } } diff --git a/pkg/operator/ceph/nfs/controller.go b/pkg/operator/ceph/nfs/controller.go index 32f5cd913834..efbc0677ebc8 100644 --- a/pkg/operator/ceph/nfs/controller.go +++ b/pkg/operator/ceph/nfs/controller.go @@ -84,15 +84,9 @@ func Add(mgr manager.Manager, context *clusterd.Context) error { // newReconciler returns a new reconcile.Reconciler func newReconciler(mgr manager.Manager, context *clusterd.Context) reconcile.Reconciler { - // Add the cephv1 scheme to the manager scheme so that the controller knows about it - mgrScheme := mgr.GetScheme() - if err := cephv1.AddToScheme(mgr.GetScheme()); err != nil { - panic(err) - } - return &ReconcileCephNFS{ client: mgr.GetClient(), - scheme: mgrScheme, + scheme: mgr.GetScheme(), context: context, } } diff --git a/pkg/operator/ceph/object/controller.go b/pkg/operator/ceph/object/controller.go index f4c8306aa3f4..68d8de84c747 100644 --- a/pkg/operator/ceph/object/controller.go +++ b/pkg/operator/ceph/object/controller.go @@ -99,16 +99,10 @@ func Add(mgr manager.Manager, context *clusterd.Context) error { // newReconciler returns a new reconcile.Reconciler func newReconciler(mgr manager.Manager, context *clusterd.Context) reconcile.Reconciler { - // Add the cephv1 scheme to the manager scheme so that the controller knows about it - mgrScheme := mgr.GetScheme() - if err := cephv1.AddToScheme(mgr.GetScheme()); err != nil { - panic(err) - } - context.Client = mgr.GetClient() return &ReconcileCephObjectStore{ client: mgr.GetClient(), - scheme: mgrScheme, + scheme: mgr.GetScheme(), context: context, bktclient: bktclient.NewForConfigOrDie(context.KubeConfig), objectStoreChannels: make(map[string]*objectStoreHealth), diff --git a/pkg/operator/ceph/object/realm/controller.go b/pkg/operator/ceph/object/realm/controller.go index 6cb5e6a22e09..85aa8f2c7dff 100644 --- a/pkg/operator/ceph/object/realm/controller.go +++ b/pkg/operator/ceph/object/realm/controller.go @@ -86,15 +86,9 @@ func Add(mgr manager.Manager, context *clusterd.Context) error { // newReconciler returns a new reconcile.Reconciler func newReconciler(mgr manager.Manager, context *clusterd.Context) reconcile.Reconciler { - // Add the cephv1 scheme to the manager scheme so that the controller knows about it - mgrScheme := mgr.GetScheme() - if err := cephv1.AddToScheme(mgr.GetScheme()); err != nil { - panic(err) - } - return &ReconcileObjectRealm{ client: mgr.GetClient(), - scheme: mgrScheme, + scheme: mgr.GetScheme(), context: context, } } diff --git a/pkg/operator/ceph/object/user/controller.go b/pkg/operator/ceph/object/user/controller.go index 66f6132420ba..b28e996e1761 100644 --- a/pkg/operator/ceph/object/user/controller.go +++ b/pkg/operator/ceph/object/user/controller.go @@ -85,15 +85,9 @@ func Add(mgr manager.Manager, context *clusterd.Context) error { // newReconciler returns a new reconcile.Reconciler func newReconciler(mgr manager.Manager, context *clusterd.Context) reconcile.Reconciler { - // Add the cephv1 scheme to the manager scheme so that the controller knows about it - mgrScheme := mgr.GetScheme() - if err := cephv1.AddToScheme(mgr.GetScheme()); err != nil { - panic(err) - } - return &ReconcileObjectStoreUser{ client: mgr.GetClient(), - scheme: mgrScheme, + scheme: mgr.GetScheme(), context: context, } } diff --git a/pkg/operator/ceph/object/zone/controller.go b/pkg/operator/ceph/object/zone/controller.go index 975a1926227e..70ed39460c32 100644 --- a/pkg/operator/ceph/object/zone/controller.go +++ b/pkg/operator/ceph/object/zone/controller.go @@ -82,14 +82,9 @@ func Add(mgr manager.Manager, context *clusterd.Context) error { // newReconciler returns a new reconcile.Reconciler func newReconciler(mgr manager.Manager, context *clusterd.Context) reconcile.Reconciler { - // Add the cephv1 scheme to the manager scheme so that the controller knows about it - mgrScheme := mgr.GetScheme() - if err := cephv1.AddToScheme(mgr.GetScheme()); err != nil { - panic(err) - } return &ReconcileObjectZone{ client: mgr.GetClient(), - scheme: mgrScheme, + scheme: mgr.GetScheme(), context: context, } } diff --git a/pkg/operator/ceph/object/zonegroup/controller.go b/pkg/operator/ceph/object/zonegroup/controller.go index 34c5a3f900fd..5c65f68e4166 100644 --- a/pkg/operator/ceph/object/zonegroup/controller.go +++ b/pkg/operator/ceph/object/zonegroup/controller.go @@ -80,14 +80,9 @@ func Add(mgr manager.Manager, context *clusterd.Context) error { // newReconciler returns a new reconcile.Reconciler func newReconciler(mgr manager.Manager, context *clusterd.Context) reconcile.Reconciler { - // Add the cephv1 scheme to the manager scheme so that the controller knows about it - mgrScheme := mgr.GetScheme() - if err := cephv1.AddToScheme(mgr.GetScheme()); err != nil { - panic(err) - } return &ReconcileObjectZoneGroup{ client: mgr.GetClient(), - scheme: mgrScheme, + scheme: mgr.GetScheme(), context: context, } } diff --git a/pkg/operator/ceph/pool/controller.go b/pkg/operator/ceph/pool/controller.go index 7a238b7f5c84..d88b58ea6d73 100644 --- a/pkg/operator/ceph/pool/controller.go +++ b/pkg/operator/ceph/pool/controller.go @@ -84,14 +84,9 @@ func Add(mgr manager.Manager, context *clusterd.Context) error { // newReconciler returns a new reconcile.Reconciler func newReconciler(mgr manager.Manager, context *clusterd.Context) reconcile.Reconciler { - // Add the cephv1 scheme to the manager scheme so that the controller knows about it - mgrScheme := mgr.GetScheme() - if err := cephv1.AddToScheme(mgr.GetScheme()); err != nil { - panic(err) - } return &ReconcileCephBlockPool{ client: mgr.GetClient(), - scheme: mgrScheme, + scheme: mgr.GetScheme(), context: context, blockPoolChannels: make(map[string]*blockPoolHealth), }