vendor: github.com/moby/swarmkit/v2 v2.0.0-20230707182847-6f78b8199b05
36334ed187...6f78b8199b
Signed-off-by: Cory Snider <csnider@mirantis.com>
This commit is contained in:
parent
7d548c6c00
commit
7366e44019
11 changed files with 140 additions and 93 deletions
|
@ -65,7 +65,7 @@ require (
|
|||
github.com/moby/locker v1.0.1
|
||||
github.com/moby/patternmatcher v0.5.0
|
||||
github.com/moby/pubsub v1.0.0
|
||||
github.com/moby/swarmkit/v2 v2.0.0-20230627115642-ad0f3ae162fa
|
||||
github.com/moby/swarmkit/v2 v2.0.0-20230707182847-6f78b8199b05
|
||||
github.com/moby/sys/mount v0.3.3
|
||||
github.com/moby/sys/mountinfo v0.6.2
|
||||
github.com/moby/sys/sequential v0.5.0
|
||||
|
|
|
@ -1064,8 +1064,8 @@ github.com/moby/patternmatcher v0.5.0 h1:YCZgJOeULcxLw1Q+sVR636pmS7sPEn1Qo2iAN6M
|
|||
github.com/moby/patternmatcher v0.5.0/go.mod h1:hDPoyOpDY7OrrMDLaYoY3hf52gNCR/YOUYxkhApJIxc=
|
||||
github.com/moby/pubsub v1.0.0 h1:jkp/imWsmJz2f6LyFsk7EkVeN2HxR/HTTOY8kHrsxfA=
|
||||
github.com/moby/pubsub v1.0.0/go.mod h1:bXSO+3h5MNXXCaEG+6/NlAIk7MMZbySZlnB+cUQhKKc=
|
||||
github.com/moby/swarmkit/v2 v2.0.0-20230627115642-ad0f3ae162fa h1:9IilX0rZvnrQA+a0Cr9a9LKpudNrOWhT3Fy7T4yKcPc=
|
||||
github.com/moby/swarmkit/v2 v2.0.0-20230627115642-ad0f3ae162fa/go.mod h1:pC/nyFbvVvSV+Gm1rARMgMR3FrCumwEyoMjqVwEzJvA=
|
||||
github.com/moby/swarmkit/v2 v2.0.0-20230707182847-6f78b8199b05 h1:lvMq6zHXnGp6i+6iYDs1Uw9Q5bqiAYd6Sz08hZoxSmY=
|
||||
github.com/moby/swarmkit/v2 v2.0.0-20230707182847-6f78b8199b05/go.mod h1:XUMlwIIC+wrwBDMUjxEvk5Z8FPoIPM8LdBw7w/Zu1rg=
|
||||
github.com/moby/sys/mount v0.1.0/go.mod h1:FVQFLDRWwyBjDTBNQXDlWnSFREqOo3OKX9aqhmeoo74=
|
||||
github.com/moby/sys/mount v0.1.1/go.mod h1:FVQFLDRWwyBjDTBNQXDlWnSFREqOo3OKX9aqhmeoo74=
|
||||
github.com/moby/sys/mount v0.3.3 h1:fX1SVkXFJ47XWDoeFW4Sq7PdQJnV2QIDZAqjNqgEjUs=
|
||||
|
|
69
vendor/github.com/moby/swarmkit/v2/internal/idm/idm.go
generated
vendored
Normal file
69
vendor/github.com/moby/swarmkit/v2/internal/idm/idm.go
generated
vendored
Normal file
|
@ -0,0 +1,69 @@
|
|||
// Package idm manages reservation/release of numerical ids from a configured set of contiguous ids.
|
||||
package idm
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
|
||||
"github.com/docker/docker/libnetwork/bitmap"
|
||||
)
|
||||
|
||||
// IDM manages the reservation/release of numerical ids from a contiguous set.
|
||||
//
|
||||
// An IDM instance is not safe for concurrent use.
|
||||
type IDM struct {
|
||||
start uint64
|
||||
end uint64
|
||||
handle *bitmap.Bitmap
|
||||
}
|
||||
|
||||
// New returns an instance of id manager for a [start,end] set of numerical ids.
|
||||
func New(start, end uint64) (*IDM, error) {
|
||||
if end <= start {
|
||||
return nil, fmt.Errorf("invalid set range: [%d, %d]", start, end)
|
||||
}
|
||||
|
||||
return &IDM{start: start, end: end, handle: bitmap.New(1 + end - start)}, nil
|
||||
}
|
||||
|
||||
// GetID returns the first available id in the set.
|
||||
func (i *IDM) GetID(serial bool) (uint64, error) {
|
||||
if i.handle == nil {
|
||||
return 0, errors.New("ID set is not initialized")
|
||||
}
|
||||
ordinal, err := i.handle.SetAny(serial)
|
||||
return i.start + ordinal, err
|
||||
}
|
||||
|
||||
// GetSpecificID tries to reserve the specified id.
|
||||
func (i *IDM) GetSpecificID(id uint64) error {
|
||||
if i.handle == nil {
|
||||
return errors.New("ID set is not initialized")
|
||||
}
|
||||
|
||||
if id < i.start || id > i.end {
|
||||
return errors.New("requested id does not belong to the set")
|
||||
}
|
||||
|
||||
return i.handle.Set(id - i.start)
|
||||
}
|
||||
|
||||
// GetIDInRange returns the first available id in the set within a [start,end] range.
|
||||
func (i *IDM) GetIDInRange(start, end uint64, serial bool) (uint64, error) {
|
||||
if i.handle == nil {
|
||||
return 0, errors.New("ID set is not initialized")
|
||||
}
|
||||
|
||||
if start < i.start || end > i.end {
|
||||
return 0, errors.New("requested range does not belong to the set")
|
||||
}
|
||||
|
||||
ordinal, err := i.handle.SetAnyInRange(start-i.start, end-i.start, serial)
|
||||
|
||||
return i.start + ordinal, err
|
||||
}
|
||||
|
||||
// Release releases the specified id.
|
||||
func (i *IDM) Release(id uint64) {
|
||||
i.handle.Unset(id - i.start)
|
||||
}
|
7
vendor/github.com/moby/swarmkit/v2/manager/allocator/cnmallocator/drivers_darwin.go
generated
vendored
7
vendor/github.com/moby/swarmkit/v2/manager/allocator/cnmallocator/drivers_darwin.go
generated
vendored
|
@ -1,14 +1,13 @@
|
|||
package cnmallocator
|
||||
|
||||
import (
|
||||
"github.com/docker/docker/libnetwork/driverapi"
|
||||
"github.com/docker/docker/libnetwork/drivers/overlay/ovmanager"
|
||||
"github.com/docker/docker/libnetwork/drivers/remote"
|
||||
"github.com/moby/swarmkit/v2/manager/allocator/networkallocator"
|
||||
)
|
||||
|
||||
var initializers = []initializer{
|
||||
{remote.Init, "remote"},
|
||||
{ovmanager.Init, "overlay"},
|
||||
var initializers = map[string]func(driverapi.Registerer) error{
|
||||
"overlay": ovmanager.Register,
|
||||
}
|
||||
|
||||
// PredefinedNetworks returns the list of predefined network structures
|
||||
|
|
13
vendor/github.com/moby/swarmkit/v2/manager/allocator/cnmallocator/drivers_ipam.go
generated
vendored
13
vendor/github.com/moby/swarmkit/v2/manager/allocator/cnmallocator/drivers_ipam.go
generated
vendored
|
@ -4,16 +4,14 @@ import (
|
|||
"strconv"
|
||||
"strings"
|
||||
|
||||
"github.com/docker/docker/libnetwork/drvregistry"
|
||||
"github.com/docker/docker/libnetwork/ipamapi"
|
||||
builtinIpam "github.com/docker/docker/libnetwork/ipams/builtin"
|
||||
nullIpam "github.com/docker/docker/libnetwork/ipams/null"
|
||||
remoteIpam "github.com/docker/docker/libnetwork/ipams/remote"
|
||||
"github.com/docker/docker/libnetwork/ipamutils"
|
||||
"github.com/sirupsen/logrus"
|
||||
)
|
||||
|
||||
func initIPAMDrivers(r *drvregistry.DrvRegistry, netConfig *NetworkConfig) error {
|
||||
func initIPAMDrivers(r ipamapi.Registerer, netConfig *NetworkConfig) error {
|
||||
var addressPool []*ipamutils.NetworkToSplit
|
||||
var str strings.Builder
|
||||
str.WriteString("Subnetlist - ")
|
||||
|
@ -40,12 +38,11 @@ func initIPAMDrivers(r *drvregistry.DrvRegistry, netConfig *NetworkConfig) error
|
|||
logrus.Infof("Swarm initialized global default address pool to: " + str.String())
|
||||
}
|
||||
|
||||
for _, fn := range [](func(ipamapi.Callback, interface{}, interface{}) error){
|
||||
builtinIpam.Init,
|
||||
remoteIpam.Init,
|
||||
nullIpam.Init,
|
||||
for _, fn := range [](func(ipamapi.Registerer) error){
|
||||
builtinIpam.Register,
|
||||
nullIpam.Register,
|
||||
} {
|
||||
if err := fn(r, nil, nil); err != nil {
|
||||
if err := fn(r); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,22 +1,21 @@
|
|||
package cnmallocator
|
||||
|
||||
import (
|
||||
"github.com/docker/docker/libnetwork/driverapi"
|
||||
"github.com/docker/docker/libnetwork/drivers/bridge/brmanager"
|
||||
"github.com/docker/docker/libnetwork/drivers/host"
|
||||
"github.com/docker/docker/libnetwork/drivers/ipvlan/ivmanager"
|
||||
"github.com/docker/docker/libnetwork/drivers/macvlan/mvmanager"
|
||||
"github.com/docker/docker/libnetwork/drivers/overlay/ovmanager"
|
||||
"github.com/docker/docker/libnetwork/drivers/remote"
|
||||
"github.com/moby/swarmkit/v2/manager/allocator/networkallocator"
|
||||
)
|
||||
|
||||
var initializers = []initializer{
|
||||
{remote.Init, "remote"},
|
||||
{ovmanager.Init, "overlay"},
|
||||
{mvmanager.Init, "macvlan"},
|
||||
{brmanager.Init, "bridge"},
|
||||
{ivmanager.Init, "ipvlan"},
|
||||
{host.Init, "host"},
|
||||
var initializers = map[string]func(driverapi.Registerer) error{
|
||||
"overlay": ovmanager.Register,
|
||||
"macvlan": mvmanager.Register,
|
||||
"bridge": brmanager.Register,
|
||||
"ipvlan": ivmanager.Register,
|
||||
"host": host.Register,
|
||||
}
|
||||
|
||||
// PredefinedNetworks returns the list of predefined network structures
|
||||
|
|
|
@ -1,17 +1,16 @@
|
|||
package cnmallocator
|
||||
|
||||
import (
|
||||
"github.com/docker/docker/libnetwork/driverapi"
|
||||
"github.com/docker/docker/libnetwork/drivers/overlay/ovmanager"
|
||||
"github.com/docker/docker/libnetwork/drivers/remote"
|
||||
"github.com/moby/swarmkit/v2/manager/allocator/networkallocator"
|
||||
)
|
||||
|
||||
var initializers = []initializer{
|
||||
{remote.Init, "remote"},
|
||||
{ovmanager.Init, "overlay"},
|
||||
{StubManagerInit("internal"), "internal"},
|
||||
{StubManagerInit("l2bridge"), "l2bridge"},
|
||||
{StubManagerInit("nat"), "nat"},
|
||||
var initializers = map[string]func(driverapi.Registerer) error{
|
||||
"overlay": ovmanager.Register,
|
||||
"internal": stubManager("internal"),
|
||||
"l2bridge": stubManager("l2bridge"),
|
||||
"nat": stubManager("nat"),
|
||||
}
|
||||
|
||||
// PredefinedNetworks returns the list of predefined network structures
|
||||
|
@ -20,3 +19,9 @@ func PredefinedNetworks() []networkallocator.PredefinedNetworkData {
|
|||
{Name: "nat", Driver: "nat"},
|
||||
}
|
||||
}
|
||||
|
||||
func stubManager(ntype string) func(driverapi.Registerer) error {
|
||||
return func(r driverapi.Registerer) error {
|
||||
return RegisterManager(r, ntype)
|
||||
}
|
||||
}
|
||||
|
|
15
vendor/github.com/moby/swarmkit/v2/manager/allocator/cnmallocator/manager.go
generated
vendored
15
vendor/github.com/moby/swarmkit/v2/manager/allocator/cnmallocator/manager.go
generated
vendored
|
@ -11,19 +11,12 @@ type manager struct {
|
|||
networkType string
|
||||
}
|
||||
|
||||
func StubManagerInit(networkType string) func(dc driverapi.DriverCallback, config map[string]interface{}) error {
|
||||
return func(dc driverapi.DriverCallback, config map[string]interface{}) error {
|
||||
return RegisterManager(dc, networkType)
|
||||
}
|
||||
}
|
||||
|
||||
// Register registers a new instance of the manager driver for networkType with r.
|
||||
func RegisterManager(r driverapi.DriverCallback, networkType string) error {
|
||||
c := driverapi.Capability{
|
||||
// RegisterManager registers a new instance of the manager driver for networkType with r.
|
||||
func RegisterManager(r driverapi.Registerer, networkType string) error {
|
||||
return r.RegisterDriver(networkType, &manager{networkType: networkType}, driverapi.Capability{
|
||||
DataScope: datastore.LocalScope,
|
||||
ConnectivityScope: datastore.LocalScope,
|
||||
}
|
||||
return r.RegisterDriver(networkType, &manager{networkType: networkType}, c)
|
||||
})
|
||||
}
|
||||
|
||||
func (d *manager) NetworkAllocate(id string, option map[string]string, ipV4Data, ipV6Data []driverapi.IPAMData) (map[string]string, error) {
|
||||
|
|
71
vendor/github.com/moby/swarmkit/v2/manager/allocator/cnmallocator/networkallocator.go
generated
vendored
71
vendor/github.com/moby/swarmkit/v2/manager/allocator/cnmallocator/networkallocator.go
generated
vendored
|
@ -8,8 +8,10 @@ import (
|
|||
|
||||
"github.com/docker/docker/libnetwork/datastore"
|
||||
"github.com/docker/docker/libnetwork/driverapi"
|
||||
"github.com/docker/docker/libnetwork/drivers/remote"
|
||||
"github.com/docker/docker/libnetwork/drvregistry"
|
||||
"github.com/docker/docker/libnetwork/ipamapi"
|
||||
remoteipam "github.com/docker/docker/libnetwork/ipams/remote"
|
||||
"github.com/docker/docker/libnetwork/netlabel"
|
||||
"github.com/docker/docker/pkg/plugingetter"
|
||||
"github.com/moby/swarmkit/v2/api"
|
||||
|
@ -30,9 +32,14 @@ const (
|
|||
// like managing network and IPAM drivers and also creating and
|
||||
// deleting networks and the associated resources.
|
||||
type cnmNetworkAllocator struct {
|
||||
// The driver register which manages all internal and external
|
||||
// IPAM and network drivers.
|
||||
drvRegistry *drvregistry.DrvRegistry
|
||||
// The plugin getter instance used to get network and IPAM driver plugins.
|
||||
pg plugingetter.PluginGetter
|
||||
|
||||
// The driver registry for all internal and external IPAM drivers.
|
||||
ipamRegistry drvregistry.IPAMs
|
||||
|
||||
// The driver registry for all internal and external network drivers.
|
||||
networkRegistry drvregistry.Networks
|
||||
|
||||
// The port allocator instance for allocating node ports
|
||||
portAllocator *portAllocator
|
||||
|
@ -81,11 +88,6 @@ type networkDriver struct {
|
|||
capability *driverapi.Capability
|
||||
}
|
||||
|
||||
type initializer struct {
|
||||
fn drvregistry.InitFunc
|
||||
ntype string
|
||||
}
|
||||
|
||||
// NetworkConfig is used to store network related cluster config in the Manager.
|
||||
type NetworkConfig struct {
|
||||
// DefaultAddrPool specifies default subnet pool for global scope networks
|
||||
|
@ -106,21 +108,23 @@ func New(pg plugingetter.PluginGetter, netConfig *NetworkConfig) (networkallocat
|
|||
services: make(map[string]struct{}),
|
||||
tasks: make(map[string]struct{}),
|
||||
nodes: make(map[string]map[string]struct{}),
|
||||
pg: pg,
|
||||
}
|
||||
|
||||
// There are no driver configurations and notification
|
||||
// functions as of now.
|
||||
reg, err := drvregistry.New(nil, nil, nil, nil, pg)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
for ntype, i := range initializers {
|
||||
if err := i(&na.networkRegistry); err != nil {
|
||||
return nil, fmt.Errorf("failed to register %q network driver: %w", ntype, err)
|
||||
}
|
||||
}
|
||||
if err := remote.Register(&na.networkRegistry, pg); err != nil {
|
||||
return nil, fmt.Errorf("failed to initialize network driver plugins: %w", err)
|
||||
}
|
||||
|
||||
if err := initializeDrivers(reg); err != nil {
|
||||
if err := initIPAMDrivers(&na.ipamRegistry, netConfig); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if err = initIPAMDrivers(reg, netConfig); err != nil {
|
||||
return nil, err
|
||||
if err := remoteipam.Register(&na.ipamRegistry, pg); err != nil {
|
||||
return nil, fmt.Errorf("failed to initialize IPAM driver plugins: %w", err)
|
||||
}
|
||||
|
||||
pa, err := newPortAllocator()
|
||||
|
@ -129,7 +133,6 @@ func New(pg plugingetter.PluginGetter, netConfig *NetworkConfig) (networkallocat
|
|||
}
|
||||
|
||||
na.portAllocator = pa
|
||||
na.drvRegistry = reg
|
||||
return na, nil
|
||||
}
|
||||
|
||||
|
@ -816,28 +819,27 @@ func (na *cnmNetworkAllocator) resolveDriver(n *api.Network) (*networkDriver, er
|
|||
dName = n.Spec.DriverConfig.Name
|
||||
}
|
||||
|
||||
d, drvcap := na.drvRegistry.Driver(dName)
|
||||
d, drvcap := na.networkRegistry.Driver(dName)
|
||||
if d == nil {
|
||||
err := na.loadDriver(dName)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
d, drvcap = na.drvRegistry.Driver(dName)
|
||||
d, drvcap = na.networkRegistry.Driver(dName)
|
||||
if d == nil {
|
||||
return nil, fmt.Errorf("could not resolve network driver %s", dName)
|
||||
}
|
||||
}
|
||||
|
||||
return &networkDriver{driver: d, capability: drvcap, name: dName}, nil
|
||||
return &networkDriver{driver: d, capability: &drvcap, name: dName}, nil
|
||||
}
|
||||
|
||||
func (na *cnmNetworkAllocator) loadDriver(name string) error {
|
||||
pg := na.drvRegistry.GetPluginGetter()
|
||||
if pg == nil {
|
||||
if na.pg == nil {
|
||||
return errors.New("plugin store is uninitialized")
|
||||
}
|
||||
_, err := pg.Get(name, driverapi.NetworkPluginEndpointType, plugingetter.Lookup)
|
||||
_, err := na.pg.Get(name, driverapi.NetworkPluginEndpointType, plugingetter.Lookup)
|
||||
return err
|
||||
}
|
||||
|
||||
|
@ -853,7 +855,7 @@ func (na *cnmNetworkAllocator) resolveIPAM(n *api.Network) (ipamapi.Ipam, string
|
|||
dOptions = n.Spec.IPAM.Driver.Options
|
||||
}
|
||||
|
||||
ipam, _ := na.drvRegistry.IPAM(dName)
|
||||
ipam, _ := na.ipamRegistry.IPAM(dName)
|
||||
if ipam == nil {
|
||||
return nil, "", nil, fmt.Errorf("could not resolve IPAM driver %s", dName)
|
||||
}
|
||||
|
@ -893,7 +895,7 @@ func (na *cnmNetworkAllocator) allocatePools(n *api.Network) (map[string]string,
|
|||
|
||||
// We don't support user defined address spaces yet so just
|
||||
// retrieve default address space names for the driver.
|
||||
_, asName, err := na.drvRegistry.IPAMDefaultAddressSpaces(dName)
|
||||
_, asName, err := ipam.GetDefaultAddressSpaces()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
@ -978,15 +980,6 @@ func (na *cnmNetworkAllocator) allocatePools(n *api.Network) (map[string]string,
|
|||
return pools, nil
|
||||
}
|
||||
|
||||
func initializeDrivers(reg *drvregistry.DrvRegistry) error {
|
||||
for _, i := range initializers {
|
||||
if err := reg.AddDriver(i.ntype, i.fn, nil); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func serviceNetworks(s *api.Service) []*api.NetworkAttachmentConfig {
|
||||
// Always prefer NetworkAttachmentConfig in the TaskSpec
|
||||
if len(s.Spec.Task.Networks) == 0 && len(s.Spec.Networks) != 0 {
|
||||
|
@ -1011,12 +1004,8 @@ func (na *cnmNetworkAllocator) IsVIPOnIngressNetwork(vip *api.Endpoint_VirtualIP
|
|||
// IsBuiltInDriver returns whether the passed driver is an internal network driver
|
||||
func IsBuiltInDriver(name string) bool {
|
||||
n := strings.ToLower(name)
|
||||
for _, d := range initializers {
|
||||
if n == d.ntype {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
_, ok := initializers[n]
|
||||
return ok
|
||||
}
|
||||
|
||||
// setIPAMSerialAlloc sets the ipam allocation method to serial
|
||||
|
|
15
vendor/github.com/moby/swarmkit/v2/manager/allocator/cnmallocator/portallocator.go
generated
vendored
15
vendor/github.com/moby/swarmkit/v2/manager/allocator/cnmallocator/portallocator.go
generated
vendored
|
@ -1,10 +1,8 @@
|
|||
package cnmallocator
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/docker/docker/libnetwork/idm"
|
||||
"github.com/moby/swarmkit/v2/api"
|
||||
"github.com/moby/swarmkit/v2/internal/idm"
|
||||
)
|
||||
|
||||
const (
|
||||
|
@ -34,8 +32,8 @@ type portAllocator struct {
|
|||
|
||||
type portSpace struct {
|
||||
protocol api.PortConfig_Protocol
|
||||
masterPortSpace *idm.Idm
|
||||
dynamicPortSpace *idm.Idm
|
||||
masterPortSpace *idm.IDM
|
||||
dynamicPortSpace *idm.IDM
|
||||
}
|
||||
|
||||
type allocatedPorts map[api.PortConfig]map[uint32]*api.PortConfig
|
||||
|
@ -118,15 +116,12 @@ func newPortAllocator() (*portAllocator, error) {
|
|||
}
|
||||
|
||||
func newPortSpace(protocol api.PortConfig_Protocol) (*portSpace, error) {
|
||||
masterName := fmt.Sprintf("%s-master-ports", protocol)
|
||||
dynamicName := fmt.Sprintf("%s-dynamic-ports", protocol)
|
||||
|
||||
master, err := idm.New(nil, masterName, masterPortStart, masterPortEnd)
|
||||
master, err := idm.New(masterPortStart, masterPortEnd)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
dynamic, err := idm.New(nil, dynamicName, dynamicPortStart, dynamicPortEnd)
|
||||
dynamic, err := idm.New(dynamicPortStart, dynamicPortEnd)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
|
3
vendor/modules.txt
vendored
3
vendor/modules.txt
vendored
|
@ -777,7 +777,7 @@ github.com/moby/patternmatcher
|
|||
# github.com/moby/pubsub v1.0.0
|
||||
## explicit; go 1.19
|
||||
github.com/moby/pubsub
|
||||
# github.com/moby/swarmkit/v2 v2.0.0-20230627115642-ad0f3ae162fa
|
||||
# github.com/moby/swarmkit/v2 v2.0.0-20230707182847-6f78b8199b05
|
||||
## explicit; go 1.18
|
||||
github.com/moby/swarmkit/v2/agent
|
||||
github.com/moby/swarmkit/v2/agent/configs
|
||||
|
@ -798,6 +798,7 @@ github.com/moby/swarmkit/v2/ca/pkcs8
|
|||
github.com/moby/swarmkit/v2/connectionbroker
|
||||
github.com/moby/swarmkit/v2/identity
|
||||
github.com/moby/swarmkit/v2/internal/csi/capability
|
||||
github.com/moby/swarmkit/v2/internal/idm
|
||||
github.com/moby/swarmkit/v2/ioutils
|
||||
github.com/moby/swarmkit/v2/log
|
||||
github.com/moby/swarmkit/v2/manager
|
||||
|
|
Loading…
Add table
Reference in a new issue