From f56c4adff0d07c8a3a5aa803677a2f8e042b1141 Mon Sep 17 00:00:00 2001 From: Gaurav Ghildiyal Date: Fri, 15 Aug 2025 13:11:22 -0700 Subject: [PATCH] chore: More verbose errors for nsAttachNetdev() and nsDetachNetdev() --- pkg/driver/hostdevice.go | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/pkg/driver/hostdevice.go b/pkg/driver/hostdevice.go index 48bc3dab..15cfb3fc 100644 --- a/pkg/driver/hostdevice.go +++ b/pkg/driver/hostdevice.go @@ -36,17 +36,17 @@ func nsAttachNetdev(hostIfName string, containerNsPAth string, interfaceConfig a hostDev, err := netlink.LinkByName(hostIfName) // recover same behavior on vishvananda/netlink@1.2.1 and do not fail when the kernel returns NLM_F_DUMP_INTR. if err != nil && !errors.Is(err, netlink.ErrDumpInterrupted) { - return nil, err + return nil, fmt.Errorf("failed to get link for interface %s: %w", hostIfName, err) } // Devices can be renamed only when down if err = netlink.LinkSetDown(hostDev); err != nil { - return nil, fmt.Errorf("failed to set %q down: %v", hostDev.Attrs().Name, err) + return nil, fmt.Errorf("failed to set %q down: %w", hostIfName, err) } containerNs, err := netns.GetFromPath(containerNsPAth) if err != nil { - return nil, err + return nil, fmt.Errorf("failed to get container network namespace %s: %w", containerNsPAth, err) } defer containerNs.Close() @@ -121,14 +121,14 @@ func nsAttachNetdev(hostIfName string, containerNsPAth string, interfaceConfig a _, err = req.Execute(unix.NETLINK_ROUTE, 0) if err != nil && !errors.Is(err, netlink.ErrDumpInterrupted) { - return nil, err + return nil, fmt.Errorf("failed to move interface %s to container namespace %s: %w", hostIfName, containerNsPAth, err) } // to avoid golang problem with goroutines we create the socket in the // namespace and use it directly nhNs, err := netlink.NewHandleAt(containerNs) if err != nil { - return nil, err + return nil, fmt.Errorf("failed to get netlink handle in container namespace %s: %w", containerNsPAth, err) } defer nhNs.Close() @@ -186,7 +186,7 @@ func nsDetachNetdev(containerNsPAth string, devName string, outName string) erro // when it is restored to the original namespace err = nhNs.LinkSetDown(nsLink) if err != nil { - return err + return fmt.Errorf("failed to set %q down: %w", devName, err) } attrs := nsLink.Attrs() @@ -197,7 +197,7 @@ func nsDetachNetdev(containerNsPAth string, devName string, outName string) erro rootNs, err := netns.Get() if err != nil { - return err + return fmt.Errorf("failed to get root network namespace: %w", err) } defer rootNs.Close() @@ -229,18 +229,18 @@ func nsDetachNetdev(containerNsPAth string, devName string, outName string) erro _, err = req.Execute(unix.NETLINK_ROUTE, 0) if err != nil { - return err + return fmt.Errorf("failed to move interface %s to root namespace: %w", devName, err) } // Set up the interface in case host network workloads depend on it hostDev, err := netlink.LinkByName(ifName) // recover same behavior on vishvananda/netlink@1.2.1 and do not fail when the kernel returns NLM_F_DUMP_INTR. if err != nil && !errors.Is(err, netlink.ErrDumpInterrupted) { - return err + return fmt.Errorf("failed to get link for interface %s: %w", ifName, err) } if err = netlink.LinkSetUp(hostDev); err != nil { - return fmt.Errorf("failed to set %q down: %v", hostDev.Attrs().Name, err) + return fmt.Errorf("failed to set %q up: %w", ifName, err) } return nil }