From e87338fbc48ca564929feb5dc3097fdaf8f69e34 Mon Sep 17 00:00:00 2001 From: sp98 Date: Wed, 12 Apr 2023 19:27:25 +0530 Subject: [PATCH] core: skip OBC and Notification controllers Skip running Object Bucket and Object bucket notification controllers based on env variable. Signed-off-by: sp98 --- pkg/operator/ceph/object/bucket/controller.go | 6 ++++++ pkg/operator/ceph/object/controller.go | 3 +++ pkg/operator/ceph/object/notification/controller.go | 7 +++++++ 3 files changed, 16 insertions(+) diff --git a/pkg/operator/ceph/object/bucket/controller.go b/pkg/operator/ceph/object/bucket/controller.go index 613841b02..2045d4dfc 100644 --- a/pkg/operator/ceph/object/bucket/controller.go +++ b/pkg/operator/ceph/object/bucket/controller.go @@ -18,6 +18,7 @@ package bucket import ( "context" + "os" cephv1 "github.com/rook/rook/pkg/apis/ceph.rook.io/v1" "sigs.k8s.io/controller-runtime/pkg/client" @@ -31,6 +32,7 @@ import ( "github.com/rook/rook/pkg/clusterd" cephclient "github.com/rook/rook/pkg/daemon/ceph/client" opcontroller "github.com/rook/rook/pkg/operator/ceph/controller" + "github.com/rook/rook/pkg/operator/ceph/object" v1 "k8s.io/api/core/v1" kerrors "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -53,6 +55,10 @@ type ReconcileBucket struct { // Add creates a new Ceph CSI Controller and adds it to the Manager. The Manager will set fields on the Controller // and Start it when the Manager is Started. func Add(mgr manager.Manager, context *clusterd.Context, opManagerContext context.Context, opConfig opcontroller.OperatorConfig) error { + if os.Getenv(object.DisableOBCEnvVar) == "true" { + logger.Info("skip running Object Bucket controller") + return nil + } return add(opManagerContext, mgr, newReconciler(mgr, context, opManagerContext, opConfig)) } diff --git a/pkg/operator/ceph/object/controller.go b/pkg/operator/ceph/object/controller.go index e0c49f155..1797a5c2f 100644 --- a/pkg/operator/ceph/object/controller.go +++ b/pkg/operator/ceph/object/controller.go @@ -53,6 +53,9 @@ import ( const ( controllerName = "ceph-object-controller" + // DisableOBCEnvVar environment variable, if set to "true", will skip watching Object Bucket and Notification resources. + // This variable can be added to container spec of the `rook-ceph-operator` deployment. + DisableOBCEnvVar = "ROOK_DISABLE_OBJECT_BUCKET_CLAIM" ) var waitForRequeueIfObjectStoreNotReady = reconcile.Result{Requeue: true, RequeueAfter: 10 * time.Second} diff --git a/pkg/operator/ceph/object/notification/controller.go b/pkg/operator/ceph/object/notification/controller.go index 5c4ef21d7..c226175b3 100644 --- a/pkg/operator/ceph/object/notification/controller.go +++ b/pkg/operator/ceph/object/notification/controller.go @@ -19,6 +19,7 @@ package notification import ( "context" + "os" "time" "github.com/coreos/pkg/capnslog" @@ -28,6 +29,7 @@ import ( "github.com/rook/rook/pkg/clusterd" cephclient "github.com/rook/rook/pkg/daemon/ceph/client" opcontroller "github.com/rook/rook/pkg/operator/ceph/controller" + "github.com/rook/rook/pkg/operator/ceph/object" "github.com/rook/rook/pkg/operator/ceph/object/bucket" "github.com/rook/rook/pkg/operator/ceph/object/topic" "github.com/rook/rook/pkg/operator/ceph/reporting" @@ -67,6 +69,11 @@ type ReconcileNotifications struct { // Add creates a new CephBucketNotification controller and a new ObjectBucketClaim Controller and adds it to the Manager. // The Manager will set fields on the Controller and start it when the Manager is started. func Add(mgr manager.Manager, context *clusterd.Context, opManagerContext context.Context, opConfig opcontroller.OperatorConfig) error { + if os.Getenv(object.DisableOBCEnvVar) == "true" { + logger.Info("skip running Object Bucket Notification controller") + return nil + } + if err := addNotificationReconciler(mgr, &ReconcileNotifications{ client: mgr.GetClient(), context: context,