From cd6c9c20ad61298771cf436bc670af9aff7e0413 Mon Sep 17 00:00:00 2001 From: akolomentsev Date: Fri, 8 Feb 2019 16:27:36 -0800 Subject: [PATCH] Allow attach swarm overlay networks by prefix id Signed-off-by: Andrey Kolomentsev --- daemon/container_operations.go | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/daemon/container_operations.go b/daemon/container_operations.go index 909c7ccb275c6..fe457ff3c561c 100644 --- a/daemon/container_operations.go +++ b/daemon/container_operations.go @@ -10,6 +10,8 @@ import ( "strings" "time" + apitypes "github.com/docker/docker/api/types" + containertypes "github.com/docker/docker/api/types/container" networktypes "github.com/docker/docker/api/types/network" "github.com/docker/docker/container" @@ -379,20 +381,31 @@ func (daemon *Daemon) findAndAttachNetwork(container *container.Container, idOrN } for { + var nr apitypes.NetworkResource + // In all other cases, attempt to attach to the network to // trigger attachment in the swarm cluster manager. if daemon.clusterProvider != nil { var err error - config, err = daemon.clusterProvider.AttachNetwork(id, container.ID, addresses) + nr, err = daemon.cluster.GetNetwork(id) + if err != nil { + return nil, nil, err + } + config, err = daemon.clusterProvider.AttachNetwork(nr.ID, container.ID, addresses) if err != nil { return nil, nil, err } } - n, err = daemon.FindNetwork(id) + if daemon.clusterProvider != nil { + n, err = daemon.GetNetworkByID(nr.ID) + } else { + n, err = daemon.FindNetwork(id) + } + if err != nil { if daemon.clusterProvider != nil { - if err := daemon.clusterProvider.DetachNetwork(id, container.ID); err != nil { + if err := daemon.clusterProvider.DetachNetwork(nr.ID, container.ID); err != nil { logrus.Warnf("Could not rollback attachment for container %s to network %s: %v", container.ID, idOrName, err) } }