Skip to content

Commit a54229f

Browse files
author
Paulina Osikoya
committed
requeue logic for pending NAD
The operator currently returns a misleading reconcile error when Pod interfaces are not yet ready with assigned IPs. This change introduces a requeue mechanism to allow time for NetworkAttachmentDefinitions (NAD) to be fully provisioned.
1 parent 395fa31 commit a54229f

1 file changed

Lines changed: 16 additions & 2 deletions

File tree

internal/controller/common.go

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -713,14 +713,28 @@ func (r *Reconciler) VerifyNetworkAttachments(
713713
condition.NetworkAttachmentsReadyMessage)
714714
} else {
715715
err := fmt.Errorf("%w: %s", ErrNetworkAttachmentsMismatch, networkAttachments)
716+
717+
// maxWaitTime to wait for NAD that should escalate to a hard error
718+
const maxWaitTime = 5 * time.Minute
719+
if time.Since(instance.GetCreationTimestamp().Time) > maxWaitTime {
720+
conditions.Set(condition.FalseCondition(
721+
condition.NetworkAttachmentsReadyCondition,
722+
condition.ErrorReason,
723+
condition.SeverityError,
724+
condition.NetworkAttachmentsReadyErrorMessage,
725+
fmt.Errorf("timed out waiting for network attachments: %w", err).Error()))
726+
727+
return ctrl.Result{}, err
728+
}
729+
716730
conditions.Set(condition.FalseCondition(
717731
condition.NetworkAttachmentsReadyCondition,
718-
condition.ErrorReason,
732+
"NetworkAttachmentsWaiting",
719733
condition.SeverityWarning,
720734
condition.NetworkAttachmentsReadyErrorMessage,
721735
err.Error()))
722736

723-
return ctrl.Result{}, err
737+
return ctrl.Result{RequeueAfter: time.Second * 10}, nil
724738
}
725739

726740
return ctrl.Result{}, nil

0 commit comments

Comments
 (0)