Skip to content
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
Show all changes
91 commits
Select commit Hold shift + click to select a range
78b15e0
Merge pull request #2224 from docker/release
chris-crone Jan 10, 2019
28c9100
Bump to next dev version
chris-crone Jan 10, 2019
b6f6e72
Add registry auth header to inspect_distribution requests
shin- Jan 12, 2019
24f7c6d
Added missing options from RUN_HOST_CONFIG_KWARGS list in docker.mode…
wvaske Jan 17, 2019
d429a82
Make PlacementPreference build correct context
hannseman Jan 18, 2019
26f9e4b
Merge pull request #2233 from wvaske/2232-Adding_supported_options_to…
Jan 22, 2019
d7772b7
Merge pull request #2234 from hannseman/placement-preference-tuples
Jan 22, 2019
6935ce8
Fix descriptions of the default API version in docs
thombashi Jan 26, 2019
61bab63
Merge pull request #2245 from thombashi/fix_api_ver_desc
shin- Jan 26, 2019
189552e
Fix `network_mode` API documentation wording
p1100i Feb 21, 2019
24ace2d
Merge pull request #2259 from p1100i/patch-1
jcsirot Feb 28, 2019
37e096f
set buildargs default value if None
Leks-ha Mar 1, 2019
8d1e967
Return API response on service update
hannseman Mar 13, 2019
e48a1a9
Sets a different default number of pools to SSH
Mar 12, 2019
4d7d408
Homogenize adapters close() behaviour.
Mar 13, 2019
55ffb76
Terminate support for Python 3.3 (EOL in 2018)
shin- Dec 13, 2018
e0024b5
Merge pull request #2203 from docker/terminate_3.3_support
shin- Mar 16, 2019
1047376
Merge pull request #2272 from hannseman/update-service-response
shin- Mar 17, 2019
5d76e8e
Support sctp as protocol
hannseman Mar 18, 2019
35714c4
Test all split_port with all valid protocols
hannseman Mar 18, 2019
7143cf0
Test port lookup with protocols
hannseman Mar 18, 2019
0f7af86
Fix BaseHTTPAdapter for the SSL case
Mar 18, 2019
729c2e7
Update doc for container.exec_run & exec_api about demux
philipxyc Mar 19, 2019
7df248a
Update changelog and next milestone
Mar 20, 2019
142db4b
Merge pull request #2284 from ulyssessouza/master
chris-crone Mar 20, 2019
5d69a0a
Added arguments to creeate a swarm with a custom address pool and sub…
Dec 12, 2018
781dc30
Check API version before setting swarm addr pool.
Dec 14, 2018
d6cc972
Split monolithic integration tests into individual tests.
Jan 4, 2019
68a271c
Fix documentation and order of arguments
hannseman Mar 22, 2019
523371e
Move volume_driver to RUN_HOST_CONFIG_KWARGS
hannseman Mar 23, 2019
565489e
Merge pull request #2265 from lekster/master
shin- Mar 23, 2019
d47e5aa
Merge pull request #2281 from hannseman/sctp-protocol
Mar 25, 2019
8f42dd1
Avoid race condition on short execution
Mar 19, 2019
5abf671
Merge pull request #2282 from ulyssessouza/avoid-race-condition-on-au…
ijc Mar 25, 2019
d38c724
Merge pull request #2287 from hannseman/swarm-default-addr-pool-redux
ijc Mar 25, 2019
c1fea8e
Merge pull request #2288 from hannseman/container-run-create-volume_d…
ijc Mar 25, 2019
02e660d
Merge pull request #2227 from docker/2225-inspect_distrib_auth
ijc Mar 26, 2019
15862ea
Xfail test_attach_stream_and_cancel on TLS
Mar 26, 2019
b2175c9
Fix base_url to keep TCP protocol
Mar 26, 2019
4890864
add ports to containers
larkost Jan 30, 2018
d1f7979
Refactor and add tests
Mar 26, 2019
3244094
Merge pull request #2292 from ulyssessouza/fix-config-proxy-mapping
Mar 27, 2019
b0abdac
scripts/version.py: Use regex grouping to extract the version
Mar 28, 2019
f97c577
Merge pull request #2298 from ijc/fix-docker-version-detection-script
Mar 28, 2019
0d5aacc
Add support for setting init on services
hannseman Mar 28, 2019
8010d8b
Document correct listen_addr on join swarm
hannseman Mar 31, 2019
1b572a4
Merge pull request #1882 from larkost/1743-container-ports
Apr 3, 2019
ef04355
Add 'sleep 2' to avoid race condition on attach
Apr 4, 2019
94d1edc
Merge pull request #2307 from ulyssessouza/xfail-flaky-test
Apr 4, 2019
5e8b1c0
Merge pull request #2304 from hannseman/swarm-join-listen_addr
chris-crone Apr 4, 2019
50d4757
Remove init_path from create
thaJeztah Apr 10, 2019
1aaa76d
Merge pull request #2297 from hannseman/service-init
shin- Apr 14, 2019
221d64f
Replace triple backtick in exec_run documentation which caused a rend…
adamtheturtle Apr 27, 2019
613d6aa
Merge pull request #2322 from adamtheturtle/fix-rendered-exit-code-ex…
shin- Apr 27, 2019
20a5c06
Fix versions.py to include release stage
shin- May 1, 2019
41e1c05
Merge pull request #2325 from docker/fix_versions_script
shin- May 1, 2019
0287cd9
Merge pull request #2309 from thaJeztah/remove_init_path_create
shin- May 1, 2019
a823acc
Make dockerpycreds part of the SDK under docker.credentials
shin- Jan 10, 2019
4c45067
New Jenkinsfile build instructions
shin- Jan 10, 2019
b06e437
Avoid demux test flakiness
shin- May 1, 2019
073a21c
Separate into individual tests
shin- May 1, 2019
63cda2e
Merge pull request #2326 from docker/fix_exec_demux_tests
shin- May 1, 2019
2e67cd1
Improve socket_detached test helper to support future versions of the…
shin- Apr 23, 2019
a2a2d10
Reorder imports
shin- Apr 23, 2019
62c8bcb
Increase timeout on test with long sleeps
shin- May 1, 2019
992e0dc
Merge pull request #2317 from docker/fix_socket_detach_helper
shin- May 1, 2019
34ffc56
Streaming TTY messages sometimes get truncated. Handle gracefully in …
shin- May 1, 2019
1a4881a
Improve low_timeout test resilience
shin- May 1, 2019
acd7a8f
Return node id on swarm init
hannseman Mar 28, 2019
c7b9cae
Add swarm support for data_addr_path
hannseman Mar 31, 2019
110c676
Add test for join on already joined swarm
hannseman Mar 31, 2019
be9cf3e
Merge pull request #2327 from docker/demux_test_fixes
shin- May 1, 2019
cc13b82
Merge pull request #2222 from docker/vendor_dockerpycreds
shin- May 1, 2019
9682422
Merge pull request #2303 from hannseman/swarm-DataPathAddr
shin- May 1, 2019
4d62dd0
Merge pull request #2296 from hannseman/swarm-init-response
shin- May 1, 2019
eba8345
Update some test dependencies / default values with newer versions
shin- May 1, 2019
532c62e
Add support for rotate_manager_unlock_key
hannseman Mar 28, 2019
75e0ad0
Merge pull request #2328 from docker/modernize_test_deps
shin- May 1, 2019
1aae20d
Remove obsolete win32-requirements file
shin- May 2, 2019
bdc954b
Stop supporting EOL Python 3.4
shin- May 2, 2019
836194c
Merge pull request #2295 from hannseman/swarm-rotate-token
shin- May 2, 2019
87ee18a
Change use_config_proxy default value to True to match CLI behavior
shin- May 2, 2019
7f56f70
Don't add superfluous arguments
shin- May 2, 2019
e2c1c9c
Merge pull request #2332 from docker/use_proxy_config_default
shin- May 2, 2019
23c5c00
Merge pull request #2329 from docker/end_3.4_support
shin- May 5, 2019
12d73c6
Xfail test_attach_stream_and_cancel on TLS
Mar 26, 2019
d863f72
Bump 3.7.2
Mar 28, 2019
f678157
Bump version 4.0.0
shin- May 2, 2019
589e76e
Update changelog for 4.0.0
shin- May 2, 2019
36a09df
Merge branch 'release' into 4.0.0-release
shin- May 14, 2019
5de5af1
Bump urllib3 -> 1.24.3
May 14, 2019
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 29 additions & 6 deletions docker/api/swarm.py
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,8 @@ def get_unlock_key(self):
@utils.minimum_version('1.24')
def init_swarm(self, advertise_addr=None, listen_addr='0.0.0.0:2377',
force_new_cluster=False, swarm_spec=None,
default_addr_pool=None, subnet_size=None):
default_addr_pool=None, subnet_size=None,
data_path_addr=None):
"""
Initialize a new Swarm using the current connected engine as the first
node.
Expand Down Expand Up @@ -115,6 +116,8 @@ def init_swarm(self, advertise_addr=None, listen_addr='0.0.0.0:2377',
Default: None
subnet_size (int): SubnetSize specifies the subnet size of the
networks created from the default subnet pool. Default: None
data_path_addr (string): Address or interface to use for data path
traffic. For example, 192.168.1.1, or an interface, like eth0.

Returns:
``True`` if successful.
Expand Down Expand Up @@ -154,6 +157,15 @@ def init_swarm(self, advertise_addr=None, listen_addr='0.0.0.0:2377',
'ForceNewCluster': force_new_cluster,
'Spec': swarm_spec,
}

if data_path_addr is not None:
if utils.version_lt(self._version, '1.30'):
raise errors.InvalidVersion(
'Data address path is only available for '
'API version >= 1.30'
)
data['DataPathAddr'] = data_path_addr

response = self._post_json(url, data=data)
self._raise_for_status(response)
return True
Expand Down Expand Up @@ -194,7 +206,7 @@ def inspect_node(self, node_id):

@utils.minimum_version('1.24')
def join_swarm(self, remote_addrs, join_token, listen_addr='0.0.0.0:2377',
advertise_addr=None):
advertise_addr=None, data_path_addr=None):
"""
Make this Engine join a swarm that has already been created.

Expand All @@ -213,6 +225,8 @@ def join_swarm(self, remote_addrs, join_token, listen_addr='0.0.0.0:2377',
the port number from the listen address is used. If
AdvertiseAddr is not specified, it will be automatically
detected when possible. Default: ``None``
data_path_addr (string): Address or interface to use for data path
traffic. For example, 192.168.1.1, or an interface, like eth0.

Returns:
``True`` if the request went through.
Expand All @@ -222,11 +236,20 @@ def join_swarm(self, remote_addrs, join_token, listen_addr='0.0.0.0:2377',
If the server returns an error.
"""
data = {
"RemoteAddrs": remote_addrs,
"ListenAddr": listen_addr,
"JoinToken": join_token,
"AdvertiseAddr": advertise_addr,
'RemoteAddrs': remote_addrs,
'ListenAddr': listen_addr,
'JoinToken': join_token,
'AdvertiseAddr': advertise_addr,
}

if data_path_addr is not None:
if utils.version_lt(self._version, '1.30'):
raise errors.InvalidVersion(
'Data address path is only available for '
'API version >= 1.30'
)
data['DataPathAddr'] = data_path_addr

url = self._url('/swarm/join')
response = self._post_json(url, data=data)
self._raise_for_status(response)
Expand Down
7 changes: 5 additions & 2 deletions docker/models/swarm.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ def get_unlock_key(self):

def init(self, advertise_addr=None, listen_addr='0.0.0.0:2377',
force_new_cluster=False, default_addr_pool=None,
subnet_size=None, **kwargs):
subnet_size=None, data_path_addr=None, **kwargs):
"""
Initialize a new swarm on this Engine.

Expand Down Expand Up @@ -63,6 +63,8 @@ def init(self, advertise_addr=None, listen_addr='0.0.0.0:2377',
Default: None
subnet_size (int): SubnetSize specifies the subnet size of the
networks created from the default subnet pool. Default: None
data_path_addr (string): Address or interface to use for data path
traffic. For example, 192.168.1.1, or an interface, like eth0.
task_history_retention_limit (int): Maximum number of tasks
history stored.
snapshot_interval (int): Number of logs entries between snapshot.
Expand Down Expand Up @@ -117,7 +119,8 @@ def init(self, advertise_addr=None, listen_addr='0.0.0.0:2377',
'listen_addr': listen_addr,
'force_new_cluster': force_new_cluster,
'default_addr_pool': default_addr_pool,
'subnet_size': subnet_size
'subnet_size': subnet_size,
'data_path_addr': data_path_addr,
}
init_kwargs['swarm_spec'] = self.client.api.create_swarm_spec(**kwargs)
self.client.api.init_swarm(**init_kwargs)
Expand Down
4 changes: 4 additions & 0 deletions tests/integration/api_swarm_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -233,3 +233,7 @@ def test_remove_main_node(self):
self.client.remove_node(node_id, True)

assert e.value.response.status_code >= 400

@requires_api_version('1.30')
def test_init_swarm_data_path_addr(self):
assert self.init_swarm(data_path_addr='eth0')
12 changes: 12 additions & 0 deletions tests/integration/models_swarm_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,3 +31,15 @@ def test_init_update_leave(self):
cm.value.response.status_code == 406 or
cm.value.response.status_code == 503
)

def test_join_on_already_joined_swarm(self):
client = docker.from_env(version=TEST_API_VERSION)
client.swarm.init()
join_token = client.swarm.attrs['JoinTokens']['Manager']
with pytest.raises(docker.errors.APIError) as cm:
client.swarm.join(
remote_addrs=['127.0.0.1'],
join_token=join_token,
)
assert cm.value.response.status_code == 503
assert 'This node is already part of a swarm.' in cm.value.explanation