From def070d6511f190bda00c4515ac839f3dfbc69af Mon Sep 17 00:00:00 2001 From: Archana Shinde Date: Fri, 28 Sep 2018 15:52:31 -0700 Subject: [PATCH] golint: Refactor to reduce cyclomatic complexity Introduce function getLinkForEndpoint to reduce cyclomatic complexity. Signed-off-by: Archana Shinde --- virtcontainers/network.go | 88 ++++++++++++--------------------------- 1 file changed, 27 insertions(+), 61 deletions(-) diff --git a/virtcontainers/network.go b/virtcontainers/network.go index 11f9422586..ab4389e488 100644 --- a/virtcontainers/network.go +++ b/virtcontainers/network.go @@ -934,6 +934,21 @@ func createLink(netHandle *netlink.Handle, name string, expectedLink netlink.Lin return newLink, fds, err } +func getLinkForEndpoint(endpoint Endpoint, netHandle *netlink.Handle) (netlink.Link, error) { + var link netlink.Link + + switch ep := endpoint.(type) { + case *VirtualEndpoint: + link = &netlink.Veth{} + case *BridgedMacvlanEndpoint: + link = &netlink.Macvlan{} + default: + return nil, fmt.Errorf("Unexpected endpointType %s", ep.Type()) + } + + return getLinkByName(netHandle, endpoint.NetworkPair().VirtIface.Name, link) +} + func getLinkByName(netHandle *netlink.Handle, name string, expectedLink netlink.Link) (netlink.Link, error) { link, err := netHandle.LinkByName(name) if err != nil { @@ -1081,23 +1096,11 @@ func tapNetworkPair(endpoint Endpoint, numCPUs uint32, disableVhostNet bool) err } defer netHandle.Delete() - var link netlink.Link netPair := endpoint.NetworkPair() - switch ep := endpoint.(type) { - case *VirtualEndpoint: - link, err = getLinkByName(netHandle, netPair.VirtIface.Name, &netlink.Veth{}) - if err != nil { - return fmt.Errorf("Could not get interface %s : %s", netPair.VirtIface.Name, err) - } - case *BridgedMacvlanEndpoint: - link, err = getLinkByName(netHandle, netPair.VirtIface.Name, &netlink.Macvlan{}) - if err != nil { - return fmt.Errorf("Could not get interface %s : %s", netPair.VirtIface.Name, err) - } - - default: - return fmt.Errorf("Unexpected endpointType %s", ep.Type()) + link, err := getLinkForEndpoint(endpoint, netHandle) + if err != nil { + return err } attrs := link.Attrs() @@ -1206,20 +1209,9 @@ func bridgeNetworkPair(endpoint Endpoint, numCPUs uint32, disableVhostNet bool) var attrs *netlink.LinkAttrs var link netlink.Link - switch ep := endpoint.(type) { - case *VirtualEndpoint: - link, err = getLinkByName(netHandle, netPair.VirtIface.Name, &netlink.Veth{}) - if err != nil { - return fmt.Errorf("Could not get interface %s : %s", netPair.VirtIface.Name, err) - } - case *BridgedMacvlanEndpoint: - link, err = getLinkByName(netHandle, netPair.VirtIface.Name, &netlink.Macvlan{}) - if err != nil { - return fmt.Errorf("Could not get interface %s : %s", netPair.VirtIface.Name, err) - } - - default: - return fmt.Errorf("Unexpected endpointType %s", ep.Type()) + link, err = getLinkForEndpoint(endpoint, netHandle) + if err != nil { + return err } attrs = link.Attrs() @@ -1293,22 +1285,9 @@ func untapNetworkPair(endpoint Endpoint) error { return fmt.Errorf("Could not remove TAP %s: %s", netPair.TAPIface.Name, err) } - var link netlink.Link - - switch ep := endpoint.(type) { - case *VirtualEndpoint: - link, err = getLinkByName(netHandle, netPair.VirtIface.Name, &netlink.Veth{}) - if err != nil { - return fmt.Errorf("Could not get interface %s : %s", netPair.VirtIface.Name, err) - } - case *BridgedMacvlanEndpoint: - link, err = getLinkByName(netHandle, netPair.VirtIface.Name, &netlink.Macvlan{}) - if err != nil { - return fmt.Errorf("Could not get interface %s : %s", netPair.VirtIface.Name, err) - } - - default: - return fmt.Errorf("Unexpected endpointType %s", ep.Type()) + link, err := getLinkForEndpoint(endpoint, netHandle) + if err != nil { + return err } if err := netHandle.LinkSetDown(link); err != nil { @@ -1359,22 +1338,9 @@ func unBridgeNetworkPair(endpoint Endpoint) error { return fmt.Errorf("Could not remove TAP %s: %s", netPair.TAPIface.Name, err) } - var link netlink.Link - - switch ep := endpoint.(type) { - case *VirtualEndpoint: - link, err = getLinkByName(netHandle, netPair.VirtIface.Name, &netlink.Veth{}) - if err != nil { - return fmt.Errorf("Could not get interface %s : %s", netPair.VirtIface.Name, err) - } - case *BridgedMacvlanEndpoint: - link, err = getLinkByName(netHandle, netPair.VirtIface.Name, &netlink.Macvlan{}) - if err != nil { - return fmt.Errorf("Could not get interface %s : %s", netPair.VirtIface.Name, err) - } - - default: - return fmt.Errorf("Unexpected endpointType %s", ep.Type()) + link, err := getLinkForEndpoint(endpoint, netHandle) + if err != nil { + return err } if err := netHandle.LinkSetDown(link); err != nil {