Skip to content

Commit 9ebddfb

Browse files
oilbeaterclaude
andcommitted
refactor(controller): move DHCP options cleanup to LS/LSP deletion lifecycle
Instead of iterating all DHCP options in gcLogicalSwitch, clean them up at the point of resource deletion: - Subnet-level: already handled by handleDeleteLogicalSwitch via DeleteDHCPOptions - Per-port: now cleaned up in markAndCleanLSP when GC deletes orphaned LSPs Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Signed-off-by: Mengxin Liu <liumengxinfly@gmail.com>
1 parent 8d6288c commit 9ebddfb

File tree

1 file changed

+4
-33
lines changed

1 file changed

+4
-33
lines changed

pkg/controller/gc.go

Lines changed: 4 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -167,39 +167,6 @@ func (c *Controller) gcLogicalSwitch() error {
167167
}
168168
}
169169

170-
klog.Infof("start to gc dhcp options")
171-
dhcpOptions, err := c.OVNNbClient.ListDHCPOptions(c.config.EnableExternalVpc, nil)
172-
if err != nil {
173-
klog.Errorf("failed to list dhcp options, %v", err)
174-
return err
175-
}
176-
uuidToDeleteList := []string{}
177-
for _, item := range dhcpOptions {
178-
if len(item.ExternalIDs) == 0 || !subnetNames.Has(item.ExternalIDs["ls"]) {
179-
uuidToDeleteList = append(uuidToDeleteList, item.UUID)
180-
continue
181-
}
182-
// For per-port DHCP options, also check that the referenced LSP still exists.
183-
portName := item.ExternalIDs[ovs.PortKey]
184-
if portName == "" {
185-
continue
186-
}
187-
lsp, err := c.OVNNbClient.GetLogicalSwitchPort(portName, true)
188-
if err != nil {
189-
klog.Errorf("failed to get logical switch port %s: %v", portName, err)
190-
continue
191-
}
192-
if lsp == nil {
193-
uuidToDeleteList = append(uuidToDeleteList, item.UUID)
194-
}
195-
}
196-
klog.Infof("gc dhcp options %v", uuidToDeleteList)
197-
if len(uuidToDeleteList) > 0 {
198-
if err = c.OVNNbClient.DeleteDHCPOptionsByUUIDs(uuidToDeleteList...); err != nil {
199-
klog.Errorf("failed to delete dhcp options by uuids, %v", err)
200-
return err
201-
}
202-
}
203170
return nil
204171
}
205172

@@ -540,6 +507,10 @@ func (c *Controller) markAndCleanLSP() error {
540507
klog.Errorf("failed to delete lsp %s: %v", lsp.Name, err)
541508
return err
542509
}
510+
if err := c.OVNNbClient.DeleteDHCPOptionsForPort(lsp.Name); err != nil {
511+
klog.Errorf("failed to delete per-port dhcp options for %s: %v", lsp.Name, err)
512+
return err
513+
}
543514
ipCR, err := c.config.KubeOvnClient.KubeovnV1().IPs().Get(context.Background(), lsp.Name, metav1.GetOptions{})
544515
if err != nil {
545516
if k8serrors.IsNotFound(err) {

0 commit comments

Comments
 (0)