From cf475e78d67173de0cfaa0015a30780cb88d6d00 Mon Sep 17 00:00:00 2001 From: Pulkit Jain Date: Wed, 21 Feb 2024 11:19:33 +0530 Subject: [PATCH] Record event when EgressIP remains unassigned Modified the code to record an event for case, when an egressIP is unassigned from a node and is not assigned to any other node. Signed-off-by: Pulkit Jain --- pkg/agent/controller/egress/egress_controller.go | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/pkg/agent/controller/egress/egress_controller.go b/pkg/agent/controller/egress/egress_controller.go index 382cf28fc4b..a6213897d40 100644 --- a/pkg/agent/controller/egress/egress_controller.go +++ b/pkg/agent/controller/egress/egress_controller.go @@ -1002,7 +1002,7 @@ func (c *EgressController) syncEgress(egressName string) error { if !exist { return nil } - if err := c.uninstallEgress(egressName, eState); err != nil { + if err := c.uninstallEgress(egressName, eState, egress); err != nil { return err } return nil @@ -1030,7 +1030,7 @@ func (c *EgressController) syncEgress(egressName string) error { eState, exist := c.getEgressState(egressName) // If the EgressIP changes, uninstalls this Egress first. if exist && eState.egressIP != desiredEgressIP { - if err := c.uninstallEgress(egressName, eState); err != nil { + if err := c.uninstallEgress(egressName, eState, egress); err != nil { return err } exist = false @@ -1153,7 +1153,7 @@ func (c *EgressController) syncEgress(egressName string) error { return nil } -func (c *EgressController) uninstallEgress(egressName string, eState *egressState) error { +func (c *EgressController) uninstallEgress(egressName string, eState *egressState, egress *crdv1b1.Egress) error { // Uninstall all of its Pod flows. if err := c.uninstallPodFlows(egressName, eState, eState.ofPorts, eState.pods); err != nil { return err @@ -1169,9 +1169,13 @@ func (c *EgressController) uninstallEgress(egressName string, eState *egressStat } } // Unassign the Egress IP from the local Node if it was assigned by the agent. - if _, err := c.ipAssigner.UnassignIP(eState.egressIP); err != nil { + unassigned, err := c.ipAssigner.UnassignIP(eState.egressIP) + if err != nil { return err } + if unassigned && egress != nil { + c.record.Eventf(egress, corev1.EventTypeNormal, "IPUnassigned", "Unassigned Egress %s with IP %s from Node %s", egressName, eState.egressIP, c.nodeName) + } // Remove the Egress's state. c.deleteEgressState(egressName) return nil