Skip to content

Commit f2699d7

Browse files
author
Andrew Lee
committed
Deleting a FIP sets the referenced EIP to be ready
Fixes #5114 - Previously when deleting a FIP, the function `handleResetOvnEip` was called. - `handleResetOvnEip` called `patchOvnEipStatus` to set the "Ready" field to true, regardless of the current EIP. - This fixes it so when `handleResetOvnEip` is called, the "Ready" is field of the EIP is unchanged Signed-off-by: Andrew Lee <[email protected]>
1 parent 490ecc0 commit f2699d7

File tree

4 files changed

+11
-9
lines changed

4 files changed

+11
-9
lines changed

pkg/controller/ovn_dnat.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -224,7 +224,7 @@ func (c *Controller) handleAddOvnDnatRule(key string) error {
224224
klog.Errorf("failed to patch status for dnat %s, %v", key, err)
225225
return err
226226
}
227-
if err = c.patchOvnEipStatus(eipName, true); err != nil {
227+
if err = c.patchOvnEipStatus(eipName, true, true); err != nil {
228228
klog.Errorf("failed to patch status for eip %s, %v", key, err)
229229
return err
230230
}

pkg/controller/ovn_eip.go

+8-6
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ func (c *Controller) handleAddOvnEip(key string) error {
122122
}
123123
if cachedEip.Spec.Type != util.OvnEipTypeLSP {
124124
// node ext gw use lsp eip, has a nic on gw node, so left node to make it ready
125-
if err = c.patchOvnEipStatus(key, true); err != nil {
125+
if err = c.patchOvnEipStatus(key, true, true); err != nil {
126126
klog.Errorf("failed to patch ovn eip %s: %v", key, err)
127127
return err
128128
}
@@ -193,7 +193,7 @@ func (c *Controller) handleResetOvnEip(key string) error {
193193
return nil
194194
}
195195
klog.Infof("handle reset ovn eip %s", cachedEip.Name)
196-
if err := c.patchOvnEipStatus(key, true); err != nil {
196+
if err := c.patchOvnEipStatus(key, true, false); err != nil {
197197
klog.Errorf("failed to reset nat for eip %s, %v", key, err)
198198
return err
199199
}
@@ -364,17 +364,19 @@ func (c *Controller) createOrUpdateOvnEipCR(key, subnet, v4ip, v6ip, mac, usageT
364364
return nil
365365
}
366366

367-
func (c *Controller) patchOvnEipStatus(key string, ready bool) error {
367+
func (c *Controller) patchOvnEipStatus(key string, ready, changeReady bool) error {
368368
cachedOvnEip, err := c.ovnEipsLister.Get(key)
369369
if err != nil {
370370
klog.Errorf("failed to get cached ovn eip '%s', %v", key, err)
371371
return err
372372
}
373373
ovnEip := cachedOvnEip.DeepCopy()
374374
changed := false
375-
if ovnEip.Status.Ready != ready {
376-
ovnEip.Status.Ready = ready
377-
changed = true
375+
if changeReady {
376+
if ovnEip.Status.Ready != ready {
377+
ovnEip.Status.Ready = ready
378+
changed = true
379+
}
378380
}
379381
if ovnEip.Status.MacAddress == "" {
380382
// not support change ip

pkg/controller/ovn_fip.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -209,7 +209,7 @@ func (c *Controller) handleAddOvnFip(key string) error {
209209
klog.Errorf("failed to patch status for fip %s, %v", key, err)
210210
return err
211211
}
212-
if err = c.patchOvnEipStatus(eipName, true); err != nil {
212+
if err = c.patchOvnEipStatus(eipName, true, true); err != nil {
213213
klog.Errorf("failed to patch status for eip %s, %v", key, err)
214214
return err
215215
}

pkg/controller/ovn_snat.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -165,7 +165,7 @@ func (c *Controller) handleAddOvnSnatRule(key string) error {
165165
klog.Errorf("failed to update status for snat %s, %v", key, err)
166166
return err
167167
}
168-
if err = c.patchOvnEipStatus(eipName, true); err != nil {
168+
if err = c.patchOvnEipStatus(eipName, true, true); err != nil {
169169
klog.Errorf("failed to patch status for eip %s, %v", key, err)
170170
return err
171171
}

0 commit comments

Comments
 (0)