diff options
author | Joffrey F <joffrey@docker.com> | 2017-11-07 15:29:53 -0800 |
---|---|---|
committer | Joffrey F <joffrey@docker.com> | 2017-11-07 15:44:54 -0800 |
commit | 3bd053a4b703156e5e1f66e3e1b4c72beada2b33 (patch) | |
tree | 2ab18f79d16e962fbfd29e7b7edc05fe6fc5ff67 | |
parent | aa3c4f026d435af98391568c30998414fe2baedf (diff) | |
download | docker-py-unlock_swarm_support.tar.gz |
Add unlock methods to Swarm modelunlock_swarm_support
Signed-off-by: Joffrey F <joffrey@docker.com>
-rw-r--r-- | docker/models/swarm.py | 8 | ||||
-rw-r--r-- | docs/swarm.rst | 2 | ||||
-rw-r--r-- | tests/integration/api_swarm_test.py | 11 |
3 files changed, 16 insertions, 5 deletions
diff --git a/docker/models/swarm.py b/docker/models/swarm.py index 5a253c5..7396e73 100644 --- a/docker/models/swarm.py +++ b/docker/models/swarm.py @@ -29,6 +29,10 @@ class Swarm(Model): """ return self.attrs.get('Version').get('Index') + def get_unlock_key(self): + return self.client.api.get_unlock_key() + get_unlock_key.__doc__ = APIClient.get_unlock_key.__doc__ + def init(self, advertise_addr=None, listen_addr='0.0.0.0:2377', force_new_cluster=False, **kwargs): """ @@ -128,6 +132,10 @@ class Swarm(Model): """ self.attrs = self.client.api.inspect_swarm() + def unlock(self, key): + return self.client.api.unlock_swarm(key) + unlock.__doc__ = APIClient.unlock_swarm.__doc__ + def update(self, rotate_worker_token=False, rotate_manager_token=False, **kwargs): """ diff --git a/docs/swarm.rst b/docs/swarm.rst index 0c21bae..cab9def 100644 --- a/docs/swarm.rst +++ b/docs/swarm.rst @@ -12,9 +12,11 @@ These methods are available on ``client.swarm``: .. rst-class:: hide-signature .. py:class:: Swarm + .. automethod:: get_unlock_key() .. automethod:: init() .. automethod:: join() .. automethod:: leave() + .. automethod:: unlock() .. automethod:: update() .. automethod:: reload() diff --git a/tests/integration/api_swarm_test.py b/tests/integration/api_swarm_test.py index 1a945c5..56b0129 100644 --- a/tests/integration/api_swarm_test.py +++ b/tests/integration/api_swarm_test.py @@ -10,13 +10,13 @@ class SwarmTest(BaseAPIIntegrationTest): def setUp(self): super(SwarmTest, self).setUp() force_leave_swarm(self.client) + self._unlock_key = None def tearDown(self): super(SwarmTest, self).tearDown() try: - unlock_key = self.client.get_unlock_key() - if unlock_key.get('UnlockKey'): - self.unlock_swarm(unlock_key) + if self._unlock_key: + self.client.unlock_swarm(self._unlock_key) except docker.errors.APIError: pass @@ -71,14 +71,15 @@ class SwarmTest(BaseAPIIntegrationTest): def test_init_swarm_with_autolock_managers(self): spec = self.client.create_swarm_spec(autolock_managers=True) assert self.init_swarm(swarm_spec=spec) + # save unlock key for tearDown + self._unlock_key = self.client.get_unlock_key() swarm_info = self.client.inspect_swarm() assert ( swarm_info['Spec']['EncryptionConfig']['AutoLockManagers'] is True ) - unlock_key = self.get_unlock_key() - assert unlock_key.get('UnlockKey') + assert self._unlock_key.get('UnlockKey') @requires_api_version('1.25') @pytest.mark.xfail( |