Skip to content

Commit 49bf514

Browse files
authored
fix(vmipl): fix problem with deleting the finalizer (#1006)
Fix problem with deleting the finalizer from VirtualMachineIPLease. Signed-off-by: Dmitry Lopatin <dmitry.lopatin@flant.com>
1 parent 3975f37 commit 49bf514

3 files changed

Lines changed: 14 additions & 20 deletions

File tree

images/virtualization-artifact/pkg/controller/vmiplease/internal/lifecycle_handler.go

Lines changed: 11 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,7 @@ func (h *LifecycleHandler) Handle(ctx context.Context, state state.VMIPLeaseStat
4141
lease := state.VirtualMachineIPAddressLease()
4242
leaseStatus := &lease.Status
4343

44-
// Do nothing if object is being deleted as any update will lead to en error.
45-
if state.ShouldDeletion() {
44+
if state.ShouldDeletion() || lease.DeletionTimestamp != nil {
4645
return reconcile.Result{}, nil
4746
}
4847

@@ -57,24 +56,20 @@ func (h *LifecycleHandler) Handle(ctx context.Context, state state.VMIPLeaseStat
5756
}
5857

5958
if vmip != nil && vmip.Status.Address == ip.LeaseNameToIP(lease.Name) {
60-
if leaseStatus.Phase != virtv2.VirtualMachineIPAddressLeasePhaseBound {
61-
leaseStatus.Phase = virtv2.VirtualMachineIPAddressLeasePhaseBound
62-
cb.Status(metav1.ConditionTrue).
63-
Reason(vmiplcondition.Bound)
64-
conditions.SetCondition(cb, &leaseStatus.Conditions)
65-
}
59+
leaseStatus.Phase = virtv2.VirtualMachineIPAddressLeasePhaseBound
60+
cb.Status(metav1.ConditionTrue).
61+
Reason(vmiplcondition.Bound)
62+
conditions.SetCondition(cb, &leaseStatus.Conditions)
63+
6664
} else {
67-
if leaseStatus.Phase != virtv2.VirtualMachineIPAddressLeasePhaseReleased {
68-
leaseStatus.Phase = virtv2.VirtualMachineIPAddressLeasePhaseReleased
69-
cb.Status(metav1.ConditionFalse).
70-
Reason(vmiplcondition.Released).
71-
Message("VirtualMachineIPAddress lease is not used by any VirtualMachineIPAddress")
72-
conditions.SetCondition(cb, &leaseStatus.Conditions)
73-
}
65+
leaseStatus.Phase = virtv2.VirtualMachineIPAddressLeasePhaseReleased
66+
cb.Status(metav1.ConditionFalse).
67+
Reason(vmiplcondition.Released).
68+
Message("VirtualMachineIPAddressLease is not used by any VirtualMachineIPAddress")
69+
conditions.SetCondition(cb, &leaseStatus.Conditions)
7470
}
7571

7672
leaseStatus.ObservedGeneration = lease.GetGeneration()
77-
7873
return reconcile.Result{}, nil
7974
}
8075

images/virtualization-artifact/pkg/controller/vmiplease/internal/protection_handler.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ func (h *ProtectionHandler) Handle(ctx context.Context, state state.VMIPLeaseSta
4747

4848
if vmip != nil && vmip.Status.Address == ip.LeaseNameToIP(lease.Name) {
4949
controllerutil.AddFinalizer(lease, virtv2.FinalizerIPAddressLeaseCleanup)
50-
} else if lease.GetDeletionTimestamp() == nil {
50+
} else {
5151
log.Info("Deletion observed: remove cleanup finalizer from VirtualMachineIPAddressLease")
5252
controllerutil.RemoveFinalizer(lease, virtv2.FinalizerIPAddressLeaseCleanup)
5353
}

images/virtualization-artifact/pkg/controller/vmiplease/internal/retention_handler.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -47,15 +47,14 @@ func (h *RetentionHandler) Handle(ctx context.Context, state state.VMIPLeaseStat
4747
log := logger.FromContext(ctx).With(logger.SlogHandler(RetentionHandlerName))
4848

4949
lease := state.VirtualMachineIPAddressLease()
50-
5150
vmip, err := state.VirtualMachineIPAddress(ctx)
5251
if err != nil {
5352
return reconcile.Result{}, err
5453
}
5554

5655
if vmip == nil || vmip.Status.Address != ip.LeaseNameToIP(lease.Name) {
5756
if lease.Spec.VirtualMachineIPAddressRef.Name != "" {
58-
log.Info("VirtualMachineIP not found: remove this ref from the spec and retain VMIPLease")
57+
log.Debug("VirtualMachineIP not found: remove this ref from the spec and retain VMIPLease")
5958
lease.Spec.VirtualMachineIPAddressRef.Name = ""
6059
return reconcile.Result{RequeueAfter: h.retentionDuration}, nil
6160
}
@@ -67,7 +66,7 @@ func (h *RetentionHandler) Handle(ctx context.Context, state state.VMIPLeaseStat
6766

6867
duration := currentTime.Sub(boundCondition.LastTransitionTime.Time)
6968
if duration >= h.retentionDuration {
70-
log.Info(fmt.Sprintf("Retain VMIPLease after %s of being not claimed", h.retentionDuration.String()))
69+
log.Info(fmt.Sprintf("Delete VMIPLease after %s of being not claimed", h.retentionDuration.String()))
7170
state.SetDeletion(true)
7271
return reconcile.Result{}, nil
7372
}

0 commit comments

Comments
 (0)