diff options
author | Joffrey F <f.joffrey@gmail.com> | 2016-09-14 11:08:49 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-09-14 11:08:49 -0700 |
commit | ad350b95b12d32f636dcf1fb744fde709ac66199 (patch) | |
tree | 0abe0d61d0eee40c33633216a0aef5fb3a49ff01 | |
parent | e676840945217d47b510bbc1c3232c1228fb809a (diff) | |
parent | ca51ad29a504f664d673e92f9ab8e7d94b50d111 (diff) | |
download | docker-py-ad350b95b12d32f636dcf1fb744fde709ac66199.tar.gz |
Merge pull request #1214 from bfirsh/ignore-not-in-swarm-error-when-leaving
Ignore not in swarm error when force leaving
-rw-r--r-- | docker/api/swarm.py | 6 | ||||
-rw-r--r-- | tests/integration/service_test.py | 10 | ||||
-rw-r--r-- | tests/integration/swarm_test.py | 11 |
3 files changed, 10 insertions, 17 deletions
diff --git a/docker/api/swarm.py b/docker/api/swarm.py index d099364..7481c67 100644 --- a/docker/api/swarm.py +++ b/docker/api/swarm.py @@ -1,5 +1,6 @@ -from .. import utils import logging +from six.moves import http_client +from .. import utils log = logging.getLogger(__name__) @@ -53,6 +54,9 @@ class SwarmApiMixin(object): def leave_swarm(self, force=False): url = self._url('/swarm/leave') response = self._post(url, params={'force': force}) + # Ignore "this node is not part of a swarm" error + if force and response.status_code == http_client.NOT_ACCEPTABLE: + return True self._raise_for_status(response) return True diff --git a/tests/integration/service_test.py b/tests/integration/service_test.py index 2b99316..3543894 100644 --- a/tests/integration/service_test.py +++ b/tests/integration/service_test.py @@ -12,10 +12,7 @@ BUSYBOX = helpers.BUSYBOX class ServiceTest(helpers.BaseTestCase): def setUp(self): super(ServiceTest, self).setUp() - try: - self.client.leave_swarm(force=True) - except docker.errors.APIError: - pass + self.client.leave_swarm(force=True) self.client.init_swarm('eth0') def tearDown(self): @@ -25,10 +22,7 @@ class ServiceTest(helpers.BaseTestCase): self.client.remove_service(service['ID']) except docker.errors.APIError: pass - try: - self.client.leave_swarm(force=True) - except docker.errors.APIError: - pass + self.client.leave_swarm(force=True) def get_service_name(self): return 'dockerpytest_{0:x}'.format(random.getrandbits(64)) diff --git a/tests/integration/swarm_test.py b/tests/integration/swarm_test.py index 128628e..8c62f2e 100644 --- a/tests/integration/swarm_test.py +++ b/tests/integration/swarm_test.py @@ -11,17 +11,11 @@ BUSYBOX = helpers.BUSYBOX class SwarmTest(helpers.BaseTestCase): def setUp(self): super(SwarmTest, self).setUp() - try: - self.client.leave_swarm(force=True) - except docker.errors.APIError: - pass + self.client.leave_swarm(force=True) def tearDown(self): super(SwarmTest, self).tearDown() - try: - self.client.leave_swarm(force=True) - except docker.errors.APIError: - pass + self.client.leave_swarm(force=True) @requires_api_version('1.24') def test_init_swarm_simple(self): @@ -65,6 +59,7 @@ class SwarmTest(helpers.BaseTestCase): with pytest.raises(docker.errors.APIError) as exc_info: self.client.inspect_swarm() exc_info.value.response.status_code == 406 + assert self.client.leave_swarm(force=True) @requires_api_version('1.24') def test_update_swarm(self): |