From 344003a2f9cf1068652e4e9a919f469503068010 Mon Sep 17 00:00:00 2001 From: Joffrey F Date: Wed, 28 Mar 2018 16:47:25 -0700 Subject: [PATCH] Ignore NotFound for external overlay networks Signed-off-by: Joffrey F --- compose/network.py | 5 +++++ tests/integration/network_test.py | 20 ++++++++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/compose/network.py b/compose/network.py index 027e7d5a5..1a080c40c 100644 --- a/compose/network.py +++ b/compose/network.py @@ -42,6 +42,11 @@ class Network(object): def ensure(self): if self.external: + if self.driver == 'overlay': + # Swarm nodes do not register overlay networks that were + # created on a different node unless they're in use. + # See docker/compose#4399 + return try: self.inspect() log.debug( diff --git a/tests/integration/network_test.py b/tests/integration/network_test.py index 2ff610fbf..a2493fda1 100644 --- a/tests/integration/network_test.py +++ b/tests/integration/network_test.py @@ -1,7 +1,10 @@ from __future__ import absolute_import from __future__ import unicode_literals +import pytest + from .testcases import DockerClientTestCase +from compose.config.errors import ConfigurationError from compose.const import LABEL_NETWORK from compose.const import LABEL_PROJECT from compose.network import Network @@ -15,3 +18,20 @@ class NetworkTest(DockerClientTestCase): labels = net_data['Labels'] assert labels[LABEL_NETWORK] == net.name assert labels[LABEL_PROJECT] == net.project + + def test_network_external_default_ensure(self): + net = Network( + self.client, 'composetest', 'foonet', + external=True + ) + + with pytest.raises(ConfigurationError): + net.ensure() + + def test_network_external_overlay_ensure(self): + net = Network( + self.client, 'composetest', 'foonet', + driver='overlay', external=True + ) + + assert net.ensure() is None