Skip to content

Commit b5b14fa

Browse files
committed
Minor fixup to auto egress IP deletion fix
1 parent 5ca3fd2 commit b5b14fa

File tree

2 files changed

+50
-4
lines changed

2 files changed

+50
-4
lines changed

pkg/network/node/egressip.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -213,8 +213,8 @@ func (eip *egressIPWatcher) deleteEgressIP(egressIP string) {
213213
if err := eip.releaseEgressIP(egressIP, mark); err != nil {
214214
utilruntime.HandleError(fmt.Errorf("Error releasing Egress IP %q: %v", egressIP, err))
215215
}
216-
node.assignedIPs.Delete(egressIP)
217216
}
217+
node.assignedIPs.Delete(egressIP)
218218

219219
if ns.assignedIP == egressIP {
220220
ns.assignedIP = ""

pkg/network/node/egressip_test.go

Lines changed: 49 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -246,7 +246,7 @@ func TestEgressIP(t *testing.T) {
246246
t.Fatalf("Unexpected eip state: %#v", eip)
247247
}
248248

249-
// Drop namespace EgressIP
249+
// Drop namespace EgressIP (local)
250250
eip.deleteNamespaceEgress(44)
251251
err = assertNetlinkChange(eip, "release 172.17.0.102")
252252
if err != nil {
@@ -292,8 +292,54 @@ func TestEgressIP(t *testing.T) {
292292
}
293293
origFlows = flows
294294

295-
ns44 = eip.namespacesByVNID[44]
296-
if ns44 == nil || eip.namespacesByEgressIP["172.17.0.102"] != ns44 || eip.nodesByEgressIP["172.17.0.102"] != node4 {
295+
// Drop namespace EgressIP (remote)
296+
eip.deleteNamespaceEgress(42)
297+
err = assertNoNetlinkChanges(eip)
298+
if err != nil {
299+
t.Fatalf("%v", err)
300+
}
301+
flows, err = ovsif.DumpFlows("")
302+
if err != nil {
303+
t.Fatalf("Unexpected error dumping flows: %v", err)
304+
}
305+
err = assertFlowChanges(origFlows, flows,
306+
flowChange{
307+
kind: flowRemoved,
308+
match: []string{"table=100", "reg0=42", "172.17.0.3->tun_dst"},
309+
},
310+
)
311+
if err != nil {
312+
t.Fatalf("Unexpected flow changes: %v\nOrig: %#v\nNew: %#v", err, origFlows, flows)
313+
}
314+
origFlows = flows
315+
316+
if eip.namespacesByVNID[42] != nil || eip.namespacesByEgressIP["172.17.0.100"] != nil || eip.nodesByEgressIP["172.17.0.100"] != node3 {
317+
t.Fatalf("Unexpected eip state: %#v", eip)
318+
}
319+
320+
// Add namespace EgressIP back again after having removed it...
321+
eip.updateNamespaceEgress(42, "172.17.0.100")
322+
err = assertNoNetlinkChanges(eip)
323+
if err != nil {
324+
t.Fatalf("%v", err)
325+
}
326+
flows, err = ovsif.DumpFlows("")
327+
if err != nil {
328+
t.Fatalf("Unexpected error dumping flows: %v", err)
329+
}
330+
err = assertFlowChanges(origFlows, flows,
331+
flowChange{
332+
kind: flowAdded,
333+
match: []string{"table=100", "reg0=42", "172.17.0.3->tun_dst"},
334+
},
335+
)
336+
if err != nil {
337+
t.Fatalf("Unexpected flow changes: %v\nOrig: %#v\nNew: %#v", err, origFlows, flows)
338+
}
339+
origFlows = flows
340+
341+
ns42 = eip.namespacesByVNID[42]
342+
if ns42 == nil || eip.namespacesByEgressIP["172.17.0.100"] != ns42 || eip.nodesByEgressIP["172.17.0.100"] != node3 {
297343
t.Fatalf("Unexpected eip state: %#v", eip)
298344
}
299345

0 commit comments

Comments
 (0)