Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
2 changes: 1 addition & 1 deletion docker/api/swarm.py
Original file line number Diff line number Diff line change
Expand Up @@ -137,7 +137,7 @@ def inspect_node(self, node_id):
return self._result(self._get(url), True)

@utils.minimum_version('1.24')
def join_swarm(self, remote_addrs, join_token, listen_addr=None,
def join_swarm(self, remote_addrs, join_token, listen_addr='0.0.0.0:2377',
advertise_addr=None):
"""
Make this Engine join a swarm that has already been created.
Expand Down
6 changes: 6 additions & 0 deletions tests/unit/fake_api.py
Original file line number Diff line number Diff line change
Expand Up @@ -435,6 +435,10 @@ def post_fake_update_node():
return 200, None


def post_fake_join_swarm():
return 200, None


def get_fake_network_list():
return 200, [{
"Name": "bridge",
Expand Down Expand Up @@ -599,6 +603,8 @@ def post_fake_network_disconnect():
CURRENT_VERSION, prefix, FAKE_NODE_ID
), 'POST'):
post_fake_update_node,
('{1}/{0}/swarm/join'.format(CURRENT_VERSION, prefix), 'POST'):
post_fake_join_swarm,
('{1}/{0}/networks'.format(CURRENT_VERSION, prefix), 'GET'):
get_fake_network_list,
('{1}/{0}/networks/create'.format(CURRENT_VERSION, prefix), 'POST'):
Expand Down
43 changes: 43 additions & 0 deletions tests/unit/swarm_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,3 +30,46 @@ def test_node_update(self):
self.assertEqual(
args[1]['headers']['Content-Type'], 'application/json'
)

@requires_api_version('1.24')
def test_join_swarm(self):
remote_addr = ['1.2.3.4:2377']
listen_addr = '2.3.4.5:2377'
join_token = 'A_BEAUTIFUL_JOIN_TOKEN'

data = {
'RemoteAddrs': remote_addr,
'ListenAddr': listen_addr,
'JoinToken': join_token
}

self.client.join_swarm(
remote_addrs=remote_addr,
listen_addr=listen_addr,
join_token=join_token
)

args = fake_request.call_args

assert (args[0][1] == url_prefix + 'swarm/join')
assert (json.loads(args[1]['data']) == data)
assert (args[1]['headers']['Content-Type'] == 'application/json')

@requires_api_version('1.24')
def test_join_swarm_no_listen_address_takes_default(self):
remote_addr = ['1.2.3.4:2377']
join_token = 'A_BEAUTIFUL_JOIN_TOKEN'

data = {
'RemoteAddrs': remote_addr,
'ListenAddr': '0.0.0.0:2377',
'JoinToken': join_token
}

self.client.join_swarm(remote_addrs=remote_addr, join_token=join_token)

args = fake_request.call_args

assert (args[0][1] == url_prefix + 'swarm/join')
assert (json.loads(args[1]['data']) == data)
assert (args[1]['headers']['Content-Type'] == 'application/json')