From f2387f3632437af8fcdc0fc41f4b92e34eaae138 Mon Sep 17 00:00:00 2001 From: Albin Kerouanton Date: Fri, 26 Apr 2024 17:17:38 +0200 Subject: [PATCH] libnet/ipams/defaultipam: move driver name to its pkg Signed-off-by: Albin Kerouanton --- libnetwork/cnmallocator/networkallocator.go | 3 ++- libnetwork/cnmallocator/provider.go | 3 ++- libnetwork/endpoint_unix_test.go | 4 ++-- libnetwork/ipamapi/contract.go | 2 -- libnetwork/ipams/defaultipam/allocator.go | 5 ++++- libnetwork/libnetwork_internal_test.go | 8 ++++---- libnetwork/libnetwork_linux_test.go | 7 ++++--- libnetwork/network.go | 5 +++-- libnetwork/network_unix.go | 4 ++-- libnetwork/network_windows.go | 4 ++-- libnetwork/sandbox_unix_test.go | 6 +++--- 11 files changed, 28 insertions(+), 23 deletions(-) diff --git a/libnetwork/cnmallocator/networkallocator.go b/libnetwork/cnmallocator/networkallocator.go index 27e4f38a83..30da92d90c 100644 --- a/libnetwork/cnmallocator/networkallocator.go +++ b/libnetwork/cnmallocator/networkallocator.go @@ -11,6 +11,7 @@ import ( "github.com/docker/docker/libnetwork/drivers/remote" "github.com/docker/docker/libnetwork/drvregistry" "github.com/docker/docker/libnetwork/ipamapi" + "github.com/docker/docker/libnetwork/ipams/defaultipam" remoteipam "github.com/docker/docker/libnetwork/ipams/remote" "github.com/docker/docker/libnetwork/netlabel" "github.com/docker/docker/libnetwork/scope" @@ -803,7 +804,7 @@ func (na *cnmNetworkAllocator) loadDriver(name string) error { // Resolve the IPAM driver func (na *cnmNetworkAllocator) resolveIPAM(n *api.Network) (ipamapi.Ipam, string, map[string]string, error) { - dName := ipamapi.DefaultIPAM + dName := defaultipam.DriverName if n.Spec.IPAM != nil && n.Spec.IPAM.Driver != nil && n.Spec.IPAM.Driver.Name != "" { dName = n.Spec.IPAM.Driver.Name } diff --git a/libnetwork/cnmallocator/provider.go b/libnetwork/cnmallocator/provider.go index 331505d629..78120a8af2 100644 --- a/libnetwork/cnmallocator/provider.go +++ b/libnetwork/cnmallocator/provider.go @@ -6,6 +6,7 @@ import ( "github.com/docker/docker/libnetwork/driverapi" "github.com/docker/docker/libnetwork/drivers/overlay/overlayutils" "github.com/docker/docker/libnetwork/ipamapi" + "github.com/docker/docker/libnetwork/ipams/defaultipam" "github.com/docker/docker/pkg/plugingetter" "github.com/moby/swarmkit/v2/api" "github.com/moby/swarmkit/v2/manager/allocator/networkallocator" @@ -35,7 +36,7 @@ func (p *Provider) ValidateIPAMDriver(driver *api.Driver) error { if driver.Name == "" { return status.Errorf(codes.InvalidArgument, "driver name: if driver is specified name is required") } - if strings.ToLower(driver.Name) == ipamapi.DefaultIPAM { + if strings.ToLower(driver.Name) == defaultipam.DriverName { return nil } return p.validatePluginDriver(driver, ipamapi.PluginEndpointType) diff --git a/libnetwork/endpoint_unix_test.go b/libnetwork/endpoint_unix_test.go index 30a1f689b6..f42185175e 100644 --- a/libnetwork/endpoint_unix_test.go +++ b/libnetwork/endpoint_unix_test.go @@ -7,7 +7,7 @@ import ( "testing" "github.com/docker/docker/internal/testutils/netnsutils" - "github.com/docker/docker/libnetwork/ipamapi" + "github.com/docker/docker/libnetwork/ipams/defaultipam" "github.com/docker/docker/libnetwork/osl" ) @@ -24,7 +24,7 @@ ff02::2 ip6-allrouters fe90::2 somehost.example.com somehost ` - opts := []NetworkOption{NetworkOptionEnableIPv6(true), NetworkOptionIpam(ipamapi.DefaultIPAM, "", + opts := []NetworkOption{NetworkOptionEnableIPv6(true), NetworkOptionIpam(defaultipam.DriverName, "", []*IpamConf{{PreferredPool: "192.168.222.0/24", Gateway: "192.168.222.1"}}, []*IpamConf{{PreferredPool: "fe90::/64", Gateway: "fe90::1"}}, nil)} diff --git a/libnetwork/ipamapi/contract.go b/libnetwork/ipamapi/contract.go index 099c652ce1..561e7f4d1d 100644 --- a/libnetwork/ipamapi/contract.go +++ b/libnetwork/ipamapi/contract.go @@ -10,8 +10,6 @@ import ( // IPAM plugin types const ( - // DefaultIPAM is the name of the built-in default ipam driver - DefaultIPAM = "default" // NullIPAM is the name of the built-in null ipam driver NullIPAM = "null" // PluginEndpointType represents the Endpoint Type used by Plugin system diff --git a/libnetwork/ipams/defaultipam/allocator.go b/libnetwork/ipams/defaultipam/allocator.go index 9285be91c6..65e6ebfb9b 100644 --- a/libnetwork/ipams/defaultipam/allocator.go +++ b/libnetwork/ipams/defaultipam/allocator.go @@ -16,6 +16,9 @@ import ( ) const ( + // DriverName is the name of the built-in default IPAM driver. + DriverName = "default" + localAddressSpace = "LocalDefault" globalAddressSpace = "GlobalDefault" ) @@ -49,7 +52,7 @@ func Register(ic ipamapi.Registerer, lAddrPools, gAddrPools []*ipamutils.Network cps := &ipamapi.Capability{RequiresRequestReplay: true} - return ic.RegisterIpamDriverWithCapabilities(ipamapi.DefaultIPAM, a, cps) + return ic.RegisterIpamDriverWithCapabilities(DriverName, a, cps) } // Allocator provides per address space ipv4/ipv6 book keeping diff --git a/libnetwork/libnetwork_internal_test.go b/libnetwork/libnetwork_internal_test.go index 96084c6ef0..a53c898bca 100644 --- a/libnetwork/libnetwork_internal_test.go +++ b/libnetwork/libnetwork_internal_test.go @@ -12,7 +12,7 @@ import ( "github.com/docker/docker/internal/testutils/netnsutils" "github.com/docker/docker/libnetwork/driverapi" - "github.com/docker/docker/libnetwork/ipamapi" + "github.com/docker/docker/libnetwork/ipams/defaultipam" "github.com/docker/docker/libnetwork/netlabel" "github.com/docker/docker/libnetwork/netutils" "github.com/docker/docker/libnetwork/scope" @@ -320,7 +320,7 @@ func TestAuxAddresses(t *testing.T) { } defer c.Stop() - n := &Network{ipamType: ipamapi.DefaultIPAM, networkType: "bridge", ctrlr: c} + n := &Network{ipamType: defaultipam.DriverName, networkType: "bridge", ctrlr: c} input := []struct { masterPool string @@ -581,7 +581,7 @@ func TestIpamReleaseOnNetDriverFailures(t *testing.T) { // Test whether ipam state release is invoked on network create failure from net driver // by checking whether subsequent network creation requesting same gateway IP succeeds - ipamOpt := NetworkOptionIpam(ipamapi.DefaultIPAM, "", []*IpamConf{{PreferredPool: "10.34.0.0/16", Gateway: "10.34.255.254"}}, nil, nil) + ipamOpt := NetworkOptionIpam(defaultipam.DriverName, "", []*IpamConf{{PreferredPool: "10.34.0.0/16", Gateway: "10.34.255.254"}}, nil, nil) if _, err := c.NewNetwork(badDriverName, "badnet1", "", ipamOpt); err == nil { t.Fatalf("bad network driver should have failed network creation") } @@ -611,7 +611,7 @@ func TestIpamReleaseOnNetDriverFailures(t *testing.T) { } // Now create good bridge network with different gateway - ipamOpt2 := NetworkOptionIpam(ipamapi.DefaultIPAM, "", []*IpamConf{{PreferredPool: "10.35.0.0/16", Gateway: "10.35.255.253"}}, nil, nil) + ipamOpt2 := NetworkOptionIpam(defaultipam.DriverName, "", []*IpamConf{{PreferredPool: "10.35.0.0/16", Gateway: "10.35.255.253"}}, nil, nil) gnw, err = c.NewNetwork("bridge", "goodnet2", "", ipamOpt2) if err != nil { t.Fatal(err) diff --git a/libnetwork/libnetwork_linux_test.go b/libnetwork/libnetwork_linux_test.go index 7128e0fccc..395240c548 100644 --- a/libnetwork/libnetwork_linux_test.go +++ b/libnetwork/libnetwork_linux_test.go @@ -23,6 +23,7 @@ import ( "github.com/docker/docker/libnetwork/datastore" "github.com/docker/docker/libnetwork/driverapi" "github.com/docker/docker/libnetwork/ipamapi" + "github.com/docker/docker/libnetwork/ipams/defaultipam" "github.com/docker/docker/libnetwork/netlabel" "github.com/docker/docker/libnetwork/options" "github.com/docker/docker/libnetwork/osl" @@ -68,7 +69,7 @@ func newController(t *testing.T) *libnetwork.Controller { func createTestNetwork(c *libnetwork.Controller, networkType, networkName string, netOption options.Generic, ipamV4Configs, ipamV6Configs []*libnetwork.IpamConf) (*libnetwork.Network, error) { return c.NewNetwork(networkType, networkName, "", libnetwork.NetworkOptionGeneric(netOption), - libnetwork.NetworkOptionIpam(ipamapi.DefaultIPAM, "", ipamV4Configs, ipamV6Configs, nil)) + libnetwork.NetworkOptionIpam(defaultipam.DriverName, "", ipamV4Configs, ipamV6Configs, nil)) } func getEmptyGenericOption() map[string]interface{} { @@ -1421,7 +1422,7 @@ func TestBridgeIpv6FromMac(t *testing.T) { network, err := controller.NewNetwork(bridgeNetType, "testipv6mac", "", libnetwork.NetworkOptionGeneric(netOption), libnetwork.NetworkOptionEnableIPv6(true), - libnetwork.NetworkOptionIpam(ipamapi.DefaultIPAM, "", ipamV4ConfList, ipamV6ConfList, nil), + libnetwork.NetworkOptionIpam(defaultipam.DriverName, "", ipamV4ConfList, ipamV6ConfList, nil), libnetwork.NetworkOptionDeferIPv6Alloc(true)) if err != nil { t.Fatal(err) @@ -1495,7 +1496,7 @@ func TestEndpointJoin(t *testing.T) { n1, err := controller.NewNetwork(bridgeNetType, "testnetwork1", "", libnetwork.NetworkOptionGeneric(netOption), libnetwork.NetworkOptionEnableIPv6(true), - libnetwork.NetworkOptionIpam(ipamapi.DefaultIPAM, "", nil, ipamV6ConfList, nil), + libnetwork.NetworkOptionIpam(defaultipam.DriverName, "", nil, ipamV6ConfList, nil), libnetwork.NetworkOptionDeferIPv6Alloc(true)) if err != nil { t.Fatal(err) diff --git a/libnetwork/network.go b/libnetwork/network.go index 313fd8c393..7340ad101b 100644 --- a/libnetwork/network.go +++ b/libnetwork/network.go @@ -20,6 +20,7 @@ import ( "github.com/docker/docker/libnetwork/internal/netiputil" "github.com/docker/docker/libnetwork/internal/setmatrix" "github.com/docker/docker/libnetwork/ipamapi" + "github.com/docker/docker/libnetwork/ipams/defaultipam" "github.com/docker/docker/libnetwork/netlabel" "github.com/docker/docker/libnetwork/netutils" "github.com/docker/docker/libnetwork/networkdb" @@ -643,7 +644,7 @@ func (n *Network) UnmarshalJSON(b []byte) (err error) { if v, ok := netMap["ipamType"]; ok { n.ipamType = v.(string) } else { - n.ipamType = ipamapi.DefaultIPAM + n.ipamType = defaultipam.DriverName } if v, ok := netMap["addrSpace"]; ok { n.addrSpace = v.(string) @@ -785,7 +786,7 @@ func NetworkOptionIpam(ipamDriver string, addrSpace string, ipV4 []*IpamConf, ip return func(n *Network) { if ipamDriver != "" { n.ipamType = ipamDriver - if ipamDriver == ipamapi.DefaultIPAM { + if ipamDriver == defaultipam.DriverName { n.ipamType = defaultIpamForNetworkType(n.Type()) } } diff --git a/libnetwork/network_unix.go b/libnetwork/network_unix.go index 28569199fb..5f274a8068 100644 --- a/libnetwork/network_unix.go +++ b/libnetwork/network_unix.go @@ -5,7 +5,7 @@ package libnetwork import ( "context" - "github.com/docker/docker/libnetwork/ipamapi" + "github.com/docker/docker/libnetwork/ipams/defaultipam" ) type platformNetwork struct{} //nolint:nolintlint,unused // only populated on windows @@ -30,5 +30,5 @@ func deleteEpFromResolver(epName string, epIface *EndpointInterface, resolvers [ } func defaultIpamForNetworkType(networkType string) string { - return ipamapi.DefaultIPAM + return defaultipam.DriverName } diff --git a/libnetwork/network_windows.go b/libnetwork/network_windows.go index f5be38d574..6ddfe8373b 100644 --- a/libnetwork/network_windows.go +++ b/libnetwork/network_windows.go @@ -15,7 +15,7 @@ import ( "github.com/Microsoft/hcsshim" "github.com/containerd/log" "github.com/docker/docker/libnetwork/drivers/windows" - "github.com/docker/docker/libnetwork/ipamapi" + "github.com/docker/docker/libnetwork/ipams/defaultipam" "github.com/docker/docker/libnetwork/ipams/windowsipam" "github.com/pkg/errors" ) @@ -247,5 +247,5 @@ func defaultIpamForNetworkType(networkType string) string { if windows.IsBuiltinLocalDriver(networkType) { return windowsipam.DefaultIPAM } - return ipamapi.DefaultIPAM + return defaultipam.DriverName } diff --git a/libnetwork/sandbox_unix_test.go b/libnetwork/sandbox_unix_test.go index f0eb45db47..1dd5ba2475 100644 --- a/libnetwork/sandbox_unix_test.go +++ b/libnetwork/sandbox_unix_test.go @@ -9,7 +9,7 @@ import ( "github.com/docker/docker/errdefs" "github.com/docker/docker/internal/testutils/netnsutils" "github.com/docker/docker/libnetwork/config" - "github.com/docker/docker/libnetwork/ipamapi" + "github.com/docker/docker/libnetwork/ipams/defaultipam" "github.com/docker/docker/libnetwork/netlabel" "github.com/docker/docker/libnetwork/options" "github.com/docker/docker/libnetwork/osl" @@ -114,7 +114,7 @@ func TestSandboxAddMultiPrio(t *testing.T) { defer netnsutils.SetupTestOSContext(t)() opts := [][]NetworkOption{ - {NetworkOptionEnableIPv6(true), NetworkOptionIpam(ipamapi.DefaultIPAM, "", nil, []*IpamConf{{PreferredPool: "fe90::/64"}}, nil)}, + {NetworkOptionEnableIPv6(true), NetworkOptionIpam(defaultipam.DriverName, "", nil, []*IpamConf{{PreferredPool: "fe90::/64"}}, nil)}, {NetworkOptionInternalNetwork()}, {}, } @@ -200,7 +200,7 @@ func TestSandboxAddSamePrio(t *testing.T) { opts := [][]NetworkOption{ {}, {}, - {NetworkOptionEnableIPv6(true), NetworkOptionIpam(ipamapi.DefaultIPAM, "", nil, []*IpamConf{{PreferredPool: "fe90::/64"}}, nil)}, + {NetworkOptionEnableIPv6(true), NetworkOptionIpam(defaultipam.DriverName, "", nil, []*IpamConf{{PreferredPool: "fe90::/64"}}, nil)}, {NetworkOptionInternalNetwork()}, }