Browse code

Move DisconnectFromNetwork back to daemon/

Signed-off-by: Tibor Vass <tibor@docker.com>

Tibor Vass authored on 2015/12/04 04:10:27
Showing 5 changed files
... ...
@@ -20,7 +20,6 @@ import (
20 20
 	"github.com/docker/docker/pkg/nat"
21 21
 	"github.com/docker/docker/pkg/symlink"
22 22
 	"github.com/docker/docker/pkg/system"
23
-	"github.com/docker/docker/runconfig"
24 23
 	"github.com/docker/docker/utils"
25 24
 	"github.com/docker/docker/volume"
26 25
 	"github.com/docker/libnetwork"
... ...
@@ -374,64 +373,6 @@ func (container *Container) SetupWorkingDirectory() error {
374 374
 	return nil
375 375
 }
376 376
 
377
-// DisconnectFromNetwork disconnects a container from a network
378
-func (container *Container) DisconnectFromNetwork(n libnetwork.Network) error {
379
-	if !container.Running {
380
-		return derr.ErrorCodeNotRunning.WithArgs(container.ID)
381
-	}
382
-
383
-	if container.HostConfig.NetworkMode.IsHost() && runconfig.NetworkMode(n.Type()).IsHost() {
384
-		return runconfig.ErrConflictHostNetwork
385
-	}
386
-
387
-	if err := container.disconnectFromNetwork(n); err != nil {
388
-		return err
389
-	}
390
-
391
-	if err := container.ToDiskLocking(); err != nil {
392
-		return fmt.Errorf("Error saving container to disk: %v", err)
393
-	}
394
-	return nil
395
-}
396
-
397
-func (container *Container) disconnectFromNetwork(n libnetwork.Network) error {
398
-	var (
399
-		ep   libnetwork.Endpoint
400
-		sbox libnetwork.Sandbox
401
-	)
402
-
403
-	s := func(current libnetwork.Endpoint) bool {
404
-		epInfo := current.Info()
405
-		if epInfo == nil {
406
-			return false
407
-		}
408
-		if sb := epInfo.Sandbox(); sb != nil {
409
-			if sb.ContainerID() == container.ID {
410
-				ep = current
411
-				sbox = sb
412
-				return true
413
-			}
414
-		}
415
-		return false
416
-	}
417
-	n.WalkEndpoints(s)
418
-
419
-	if ep == nil {
420
-		return fmt.Errorf("container %s is not connected to the network", container.ID)
421
-	}
422
-
423
-	if err := ep.Leave(sbox); err != nil {
424
-		return fmt.Errorf("container %s failed to leave network %s: %v", container.ID, n.Name(), err)
425
-	}
426
-
427
-	if err := ep.Delete(); err != nil {
428
-		return fmt.Errorf("endpoint delete failed for container %s on network %s: %v", container.ID, n.Name(), err)
429
-	}
430
-
431
-	delete(container.NetworkSettings.Networks, n.Name())
432
-	return nil
433
-}
434
-
435 377
 // appendNetworkMounts appends any network mounts to the array of mount points passed in
436 378
 func appendNetworkMounts(container *Container, volumeMounts []volume.MountPoint) ([]volume.MountPoint, error) {
437 379
 	for _, mnt := range container.NetworkMounts() {
... ...
@@ -5,7 +5,6 @@ package container
5 5
 import (
6 6
 	"github.com/docker/docker/daemon/execdriver"
7 7
 	"github.com/docker/docker/volume"
8
-	"github.com/docker/libnetwork"
9 8
 )
10 9
 
11 10
 // DefaultPathEnv is deliberately empty on Windows as the default path will be set by
... ...
@@ -26,11 +25,6 @@ func (container *Container) CreateDaemonEnvironment(linkedEnv []string) []string
26 26
 	return container.Config.Env
27 27
 }
28 28
 
29
-// DisconnectFromNetwork disconnects a container from the network.
30
-func (container *Container) DisconnectFromNetwork(n libnetwork.Network) error {
31
-	return nil
32
-}
33
-
34 29
 // SetupWorkingDirectory initializes the container working directory.
35 30
 // This is a NOOP In windows.
36 31
 func (container *Container) SetupWorkingDirectory() error {
... ...
@@ -657,6 +657,62 @@ func (daemon *Daemon) connectToNetwork(container *container.Container, idOrName
657 657
 	return nil
658 658
 }
659 659
 
660
+// DisconnectFromNetwork disconnects container from network n.
661
+func (daemon *Daemon) DisconnectFromNetwork(container *container.Container, n libnetwork.Network) error {
662
+	if !container.Running {
663
+		return derr.ErrorCodeNotRunning.WithArgs(container.ID)
664
+	}
665
+
666
+	if container.HostConfig.NetworkMode.IsHost() && runconfig.NetworkMode(n.Type()).IsHost() {
667
+		return runconfig.ErrConflictHostNetwork
668
+	}
669
+
670
+	return disconnectFromNetwork(container, n)
671
+}
672
+
673
+func disconnectFromNetwork(container *container.Container, n libnetwork.Network) error {
674
+
675
+	if err := container.ToDiskLocking(); err != nil {
676
+		return fmt.Errorf("Error saving container to disk: %v", err)
677
+	}
678
+
679
+	var (
680
+		ep   libnetwork.Endpoint
681
+		sbox libnetwork.Sandbox
682
+	)
683
+
684
+	s := func(current libnetwork.Endpoint) bool {
685
+		epInfo := current.Info()
686
+		if epInfo == nil {
687
+			return false
688
+		}
689
+		if sb := epInfo.Sandbox(); sb != nil {
690
+			if sb.ContainerID() == container.ID {
691
+				ep = current
692
+				sbox = sb
693
+				return true
694
+			}
695
+		}
696
+		return false
697
+	}
698
+	n.WalkEndpoints(s)
699
+
700
+	if ep == nil {
701
+		return fmt.Errorf("container %s is not connected to the network", container.ID)
702
+	}
703
+
704
+	if err := ep.Leave(sbox); err != nil {
705
+		return fmt.Errorf("container %s failed to leave network %s: %v", container.ID, n.Name(), err)
706
+	}
707
+
708
+	if err := ep.Delete(); err != nil {
709
+		return fmt.Errorf("endpoint delete failed for container %s on network %s: %v", container.ID, n.Name(), err)
710
+	}
711
+
712
+	delete(container.NetworkSettings.Networks, n.Name())
713
+	return nil
714
+}
715
+
660 716
 func (daemon *Daemon) initializeNetworking(container *container.Container) error {
661 717
 	var err error
662 718
 
... ...
@@ -9,6 +9,7 @@ import (
9 9
 	"github.com/docker/docker/daemon/execdriver"
10 10
 	derr "github.com/docker/docker/errors"
11 11
 	"github.com/docker/docker/layer"
12
+	"github.com/docker/libnetwork"
12 13
 )
13 14
 
14 15
 func (daemon *Daemon) setupLinkedContainers(container *container.Container) ([]string, error) {
... ...
@@ -24,6 +25,11 @@ func (daemon *Daemon) ConnectToNetwork(container *container.Container, idOrName
24 24
 	return nil
25 25
 }
26 26
 
27
+// DisconnectFromNetwork disconnects a container from the network.
28
+func (daemon *Daemon) DisconnectFromNetwork(container *container.Container, n libnetwork.Network) error {
29
+	return nil
30
+}
31
+
27 32
 func (daemon *Daemon) populateCommand(c *container.Container, env []string) error {
28 33
 	en := &execdriver.Network{
29 34
 		Interface: nil,
... ...
@@ -144,7 +144,7 @@ func (daemon *Daemon) DisconnectContainerFromNetwork(containerName string, netwo
144 144
 	if err != nil {
145 145
 		return err
146 146
 	}
147
-	return container.DisconnectFromNetwork(network)
147
+	return daemon.DisconnectFromNetwork(container, network)
148 148
 }
149 149
 
150 150
 // GetNetworkDriverList returns the list of plugins drivers