Browse code

Extract common code from disconnectFromNetwork and releaseNetwork

Both method are trying to detach the container from a cluster
network. The code is exactly the same, this removes the duplication.

Signed-off-by: Vincent Demeester <vincent@sbr.pm>

Vincent Demeester authored on 2017/02/28 19:11:59
Showing 1 changed files
... ...
@@ -829,16 +829,24 @@ func (daemon *Daemon) disconnectFromNetwork(container *container.Container, n li
829 829
 
830 830
 	delete(container.NetworkSettings.Networks, n.Name())
831 831
 
832
-	if daemon.clusterProvider != nil && n.Info().Dynamic() && !container.Managed {
833
-		if err := daemon.clusterProvider.DetachNetwork(n.Name(), container.ID); err != nil {
834
-			logrus.Warnf("error detaching from network %s: %v", n.Name(), err)
835
-			if err := daemon.clusterProvider.DetachNetwork(n.ID(), container.ID); err != nil {
836
-				logrus.Warnf("error detaching from network %s: %v", n.ID(), err)
832
+	daemon.tryDetachContainerFromClusterNetwork(n, container)
833
+
834
+	return nil
835
+}
836
+
837
+func (daemon *Daemon) tryDetachContainerFromClusterNetwork(network libnetwork.Network, container *container.Container) {
838
+	if daemon.clusterProvider != nil && network.Info().Dynamic() && !container.Managed {
839
+		if err := daemon.clusterProvider.DetachNetwork(network.Name(), container.ID); err != nil {
840
+			logrus.Warnf("error detaching from network %s: %v", network.Name(), err)
841
+			if err := daemon.clusterProvider.DetachNetwork(network.ID(), container.ID); err != nil {
842
+				logrus.Warnf("error detaching from network %s: %v", network.ID(), err)
837 843
 			}
838 844
 		}
839 845
 	}
840
-
841
-	return nil
846
+	attributes := map[string]string{
847
+		"container": container.ID,
848
+	}
849
+	daemon.LogNetworkEventWithAttributes(network, "disconnect", attributes)
842 850
 }
843 851
 
844 852
 func (daemon *Daemon) initializeNetworking(container *container.Container) error {
... ...
@@ -931,19 +939,7 @@ func (daemon *Daemon) releaseNetwork(container *container.Container) {
931 931
 	}
932 932
 
933 933
 	for _, nw := range networks {
934
-		if daemon.clusterProvider != nil && nw.Info().Dynamic() && !container.Managed {
935
-			if err := daemon.clusterProvider.DetachNetwork(nw.Name(), container.ID); err != nil {
936
-				logrus.Warnf("error detaching from network %s: %v", nw.Name(), err)
937
-				if err := daemon.clusterProvider.DetachNetwork(nw.ID(), container.ID); err != nil {
938
-					logrus.Warnf("error detaching from network %s: %v", nw.ID(), err)
939
-				}
940
-			}
941
-		}
942
-
943
-		attributes := map[string]string{
944
-			"container": container.ID,
945
-		}
946
-		daemon.LogNetworkEventWithAttributes(nw, "disconnect", attributes)
934
+		daemon.tryDetachContainerFromClusterNetwork(nw, container)
947 935
 	}
948 936
 	networkActions.WithValues("release").UpdateSince(start)
949 937
 }