Skip to content

Commit

Permalink
Record event when EgressIP remains unassigned
Browse files Browse the repository at this point in the history
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 <pulkit.jain@broadcom.com>
  • Loading branch information
Pulkit Jain authored and jainpulkit22 committed Apr 23, 2024
1 parent 50f2626 commit dfa547f
Show file tree
Hide file tree
Showing 3 changed files with 105 additions and 46 deletions.
12 changes: 8 additions & 4 deletions pkg/agent/controller/egress/egress_controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand All @@ -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
Expand Down
Loading

0 comments on commit dfa547f

Please sign in to comment.