Skip to content

Commit e70da08

Browse files
committed
move validatePolicyConflicts()
move validatePolicyConflicts() after updating drpolicy.PeerClasses Signed-off-by: rakeshgm <[email protected]> (cherry picked from commit d43522f0dcd64cfec44157a0cc89cb49ba69eaf3)
1 parent 8427ec7 commit e70da08

File tree

1 file changed

+16
-17
lines changed

1 file changed

+16
-17
lines changed

internal/controller/drpolicy_controller.go

Lines changed: 16 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ func (r *DRPolicyReconciler) Reconcile(ctx context.Context, req ctrl.Request) (c
119119

120120
log.Info("create/update")
121121

122-
reason, err := validateDRPolicy(ctx, drpolicy, drclusters, r.APIReader)
122+
reason, err := validateDRPolicy(drpolicy, drclusters)
123123
if err != nil {
124124
statusErr := u.validatedSetFalse(reason, err)
125125
if !errors.Is(statusErr, err) || reason != ReasonDRClusterNotFound {
@@ -136,14 +136,6 @@ func (r *DRPolicyReconciler) Reconcile(ctx context.Context, req ctrl.Request) (c
136136
return ctrl.Result{}, fmt.Errorf("finalizer add update: %w", u.validatedSetFalse("FinalizerAddFailed", err))
137137
}
138138

139-
if err := u.validatedSetTrue("Succeeded", "drpolicy validated"); err != nil {
140-
return ctrl.Result{}, fmt.Errorf("unable to set drpolicy validation: %w", err)
141-
}
142-
143-
if err := r.initiateDRPolicyMetrics(drpolicy, drclusters); err != nil {
144-
return ctrl.Result{}, fmt.Errorf("error in intiating policy metrics: %w", err)
145-
}
146-
147139
return r.reconcile(u, drclusters, secretsUtil, ramenConfig)
148140
}
149141

@@ -162,6 +154,20 @@ func (r *DRPolicyReconciler) reconcile(
162154
return ctrl.Result{}, fmt.Errorf("drpolicy peerClass update: %w", err)
163155
}
164156

157+
// we will be able to validate conflicts only after PeerClass is updated
158+
err := validatePolicyConflicts(u.ctx, r.APIReader, u.object, drclusters)
159+
if err != nil {
160+
return ctrl.Result{}, fmt.Errorf("%s: %w", ReasonValidationFailed, err) // we can change the message later.
161+
}
162+
163+
if err := u.validatedSetTrue("Succeeded", "drpolicy validated"); err != nil {
164+
return ctrl.Result{}, fmt.Errorf("unable to set drpolicy validation: %w", err)
165+
}
166+
167+
if err := r.initiateDRPolicyMetrics(u.object, drclusters); err != nil {
168+
return ctrl.Result{}, fmt.Errorf("error in intiating policy metrics: %w", err)
169+
}
170+
165171
return ctrl.Result{}, nil
166172
}
167173

@@ -178,10 +184,8 @@ func (r *DRPolicyReconciler) initiateDRPolicyMetrics(drpolicy *ramen.DRPolicy, d
178184
return nil
179185
}
180186

181-
func validateDRPolicy(ctx context.Context,
182-
drpolicy *ramen.DRPolicy,
187+
func validateDRPolicy(drpolicy *ramen.DRPolicy,
183188
drclusters *ramen.DRClusterList,
184-
apiReader client.Reader,
185189
) (string, error) {
186190
// DRPolicy does not support both Sync and Async configurations in one single DRPolicy
187191
if len(drpolicy.Status.Sync.PeerClasses) > 0 && len(drpolicy.Status.Async.PeerClasses) > 0 {
@@ -200,11 +204,6 @@ func validateDRPolicy(ctx context.Context,
200204
return reason, err
201205
}
202206

203-
err = validatePolicyConflicts(ctx, apiReader, drpolicy, drclusters)
204-
if err != nil {
205-
return ReasonValidationFailed, err
206-
}
207-
208207
return "", nil
209208
}
210209

0 commit comments

Comments
 (0)