@@ -84,7 +84,8 @@ def get_unlock_key(self):
84
84
@utils .minimum_version ('1.24' )
85
85
def init_swarm (self , advertise_addr = None , listen_addr = '0.0.0.0:2377' ,
86
86
force_new_cluster = False , swarm_spec = None ,
87
- default_addr_pool = None , subnet_size = None ):
87
+ default_addr_pool = None , subnet_size = None ,
88
+ data_path_addr = None ):
88
89
"""
89
90
Initialize a new Swarm using the current connected engine as the first
90
91
node.
@@ -115,6 +116,8 @@ def init_swarm(self, advertise_addr=None, listen_addr='0.0.0.0:2377',
115
116
Default: None
116
117
subnet_size (int): SubnetSize specifies the subnet size of the
117
118
networks created from the default subnet pool. Default: None
119
+ data_path_addr (string): Address or interface to use for data path
120
+ traffic. For example, 192.168.1.1, or an interface, like eth0.
118
121
119
122
Returns:
120
123
``True`` if successful.
@@ -154,6 +157,15 @@ def init_swarm(self, advertise_addr=None, listen_addr='0.0.0.0:2377',
154
157
'ForceNewCluster' : force_new_cluster ,
155
158
'Spec' : swarm_spec ,
156
159
}
160
+
161
+ if data_path_addr is not None :
162
+ if utils .version_lt (self ._version , '1.30' ):
163
+ raise errors .InvalidVersion (
164
+ 'Data address path is only available for '
165
+ 'API version >= 1.30'
166
+ )
167
+ data ['DataPathAddr' ] = data_path_addr
168
+
157
169
response = self ._post_json (url , data = data )
158
170
self ._raise_for_status (response )
159
171
return True
@@ -194,7 +206,7 @@ def inspect_node(self, node_id):
194
206
195
207
@utils .minimum_version ('1.24' )
196
208
def join_swarm (self , remote_addrs , join_token , listen_addr = '0.0.0.0:2377' ,
197
- advertise_addr = None ):
209
+ advertise_addr = None , data_path_addr = None ):
198
210
"""
199
211
Make this Engine join a swarm that has already been created.
200
212
@@ -213,6 +225,8 @@ def join_swarm(self, remote_addrs, join_token, listen_addr='0.0.0.0:2377',
213
225
the port number from the listen address is used. If
214
226
AdvertiseAddr is not specified, it will be automatically
215
227
detected when possible. Default: ``None``
228
+ data_path_addr (string): Address or interface to use for data path
229
+ traffic. For example, 192.168.1.1, or an interface, like eth0.
216
230
217
231
Returns:
218
232
``True`` if the request went through.
@@ -222,11 +236,20 @@ def join_swarm(self, remote_addrs, join_token, listen_addr='0.0.0.0:2377',
222
236
If the server returns an error.
223
237
"""
224
238
data = {
225
- " RemoteAddrs" : remote_addrs ,
226
- " ListenAddr" : listen_addr ,
227
- " JoinToken" : join_token ,
228
- " AdvertiseAddr" : advertise_addr ,
239
+ ' RemoteAddrs' : remote_addrs ,
240
+ ' ListenAddr' : listen_addr ,
241
+ ' JoinToken' : join_token ,
242
+ ' AdvertiseAddr' : advertise_addr ,
229
243
}
244
+
245
+ if data_path_addr is not None :
246
+ if utils .version_lt (self ._version , '1.30' ):
247
+ raise errors .InvalidVersion (
248
+ 'Data address path is only available for '
249
+ 'API version >= 1.30'
250
+ )
251
+ data ['DataPathAddr' ] = data_path_addr
252
+
230
253
url = self ._url ('/swarm/join' )
231
254
response = self ._post_json (url , data = data )
232
255
self ._raise_for_status (response )
0 commit comments