@@ -28,7 +28,8 @@ import (
2828 "sigs.k8s.io/vsphere-csi-driver/v3/pkg/csi/service/common"
2929 "sigs.k8s.io/vsphere-csi-driver/v3/pkg/csi/service/common/commonco"
3030 "sigs.k8s.io/vsphere-csi-driver/v3/pkg/csi/service/logger"
31- "sigs.k8s.io/vsphere-csi-driver/v3/pkg/syncer/cnsoperator/util"
31+ k8s "sigs.k8s.io/vsphere-csi-driver/v3/pkg/kubernetes"
32+ cnsoperatorutil "sigs.k8s.io/vsphere-csi-driver/v3/pkg/syncer/cnsoperator/util"
3233
3334 "github.com/davecgh/go-spew/spew"
3435 v1 "k8s.io/api/core/v1"
@@ -55,7 +56,6 @@ import (
5556 volumes "sigs.k8s.io/vsphere-csi-driver/v3/pkg/common/cns-lib/volume"
5657 cnsvsphere "sigs.k8s.io/vsphere-csi-driver/v3/pkg/common/cns-lib/vsphere"
5758 csitypes "sigs.k8s.io/vsphere-csi-driver/v3/pkg/csi/types"
58- k8s "sigs.k8s.io/vsphere-csi-driver/v3/pkg/kubernetes"
5959 cnsoperatortypes "sigs.k8s.io/vsphere-csi-driver/v3/pkg/syncer/cnsoperator/types"
6060)
6161
@@ -113,7 +113,7 @@ func newReconciler(mgr manager.Manager, configInfo *commonconfig.ConfigurationIn
113113// add adds a new Controller to mgr with r as the reconcile.Reconciler.
114114func add (mgr manager.Manager , r reconcile.Reconciler ) error {
115115 ctx , log := logger .GetNewContextWithLogger ()
116- maxWorkerThreads := util .GetMaxWorkerThreads (ctx ,
116+ maxWorkerThreads := cnsoperatorutil .GetMaxWorkerThreads (ctx ,
117117 workerThreadsEnvVar , defaultMaxWorkerThreads )
118118 // Create a new controller.
119119 c , err := controller .New ("cnsvolumemetadata-controller" , mgr ,
@@ -233,8 +233,9 @@ func (r *ReconcileCnsVolumeMetadata) Reconcile(ctx context.Context,
233233 instance .Spec .EntityName , instance .Spec .EntityType , instance .Spec .GuestClusterID )
234234 recordEvent (ctx , r , instance , v1 .EventTypeWarning , msg )
235235 // Update instance.status fields with the errors per volume.
236- if err = r .client .Update (ctx , instance ); err != nil {
237- msg := fmt .Sprintf ("ReconcileCnsVolumeMetadata: Failed to update status for %q. " +
236+ original := instance .DeepCopy ()
237+ if err = k8s .PatchObject (ctx , r .client , original , instance ); err != nil {
238+ msg := fmt .Sprintf ("ReconcileCnsVolumeMetadata: Failed to patch status for %q. " +
238239 "Err: %v." , instance .Name , err )
239240 recordEvent (ctx , r , instance , v1 .EventTypeWarning , msg )
240241 }
@@ -246,8 +247,9 @@ func (r *ReconcileCnsVolumeMetadata) Reconcile(ctx context.Context,
246247 for index , finalizer := range instance .Finalizers {
247248 if finalizer == cnsoperatortypes .CNSFinalizer {
248249 log .Debugf ("ReconcileCnsVolumeMetadata: Removing finalizer %q for instance %q" , finalizer , instance .Name )
250+ original := instance .DeepCopy ()
249251 instance .Finalizers = append (instance .Finalizers [:index ], instance .Finalizers [index + 1 :]... )
250- if err = r . client . Update (ctx , instance ); err != nil {
252+ if err = k8s . PatchObject (ctx , r . client , original , instance ); err != nil {
251253 msg := fmt .Sprintf ("ReconcileCnsVolumeMetadata: Failed to remove finalizer %q for %q. " +
252254 "Err: %v. Requeueing request." , finalizer , instance .Name , err )
253255 recordEvent (ctx , r , instance , v1 .EventTypeWarning , msg )
@@ -276,8 +278,9 @@ func (r *ReconcileCnsVolumeMetadata) Reconcile(ctx context.Context,
276278
277279 // Set finalizer if it was not set already on this instance.
278280 if ! isFinalizerSet {
281+ original := instance .DeepCopy ()
279282 instance .Finalizers = append (instance .Finalizers , cnsoperatortypes .CNSFinalizer )
280- if err = r . client . Update (ctx , instance ); err != nil {
283+ if err = k8s . PatchObject (ctx , r . client , original , instance ); err != nil {
281284 msg := fmt .Sprintf ("ReconcileCnsVolumeMetadata: Failed to add finalizer %q for %q. " +
282285 "Err: %v. Requeueing request." , cnsoperatortypes .CNSFinalizer , instance .Name , err )
283286 recordEvent (ctx , r , instance , v1 .EventTypeWarning , msg )
@@ -293,7 +296,8 @@ func (r *ReconcileCnsVolumeMetadata) Reconcile(ctx context.Context,
293296 recordEvent (ctx , r , instance , v1 .EventTypeWarning , msg )
294297 // Update instance.status fields on supervisor API server and requeue
295298 // the request.
296- _ = r .client .Update (ctx , instance )
299+ original := instance .DeepCopy ()
300+ _ = k8s .PatchObject (ctx , r .client , original , instance )
297301 return reconcile.Result {RequeueAfter : timeout }, nil
298302 }
299303 // Successfully updated CNS.
@@ -302,8 +306,9 @@ func (r *ReconcileCnsVolumeMetadata) Reconcile(ctx context.Context,
302306 instance .Spec .EntityName , instance .Spec .EntityType , instance .Spec .GuestClusterID )
303307 recordEvent (ctx , r , instance , v1 .EventTypeNormal , msg )
304308 // Update instance.status fields on supervisor API server.
305- if err = r .client .Update (ctx , instance ); err != nil {
306- msg := fmt .Sprintf ("ReconcileCnsVolumeMetadata: Failed to update status for %q. " +
309+ original := instance .DeepCopy ()
310+ if err = k8s .PatchObject (ctx , r .client , original , instance ); err != nil {
311+ msg := fmt .Sprintf ("ReconcileCnsVolumeMetadata: Failed to patch status for %q. " +
307312 "Err: %v. Requeueing request." , instance .Name , err )
308313 recordEvent (ctx , r , instance , v1 .EventTypeWarning , msg )
309314 return reconcile.Result {RequeueAfter : timeout }, err
0 commit comments