@@ -221,6 +221,7 @@ def __set_service_name(docker_service_runtime_parameters: Dict,
221
221
222
222
223
223
def _get_docker_image_port_mapping (service_id : str ) -> Tuple [str , str ]:
224
+ log .debug ("getting port published by service: %s" , service_id )
224
225
# TODO: It could be possible that the endpoint is also accessible using high/level client in service.attrs
225
226
# pylint: disable=C0103
226
227
low_level_client = docker .APIClient ()
@@ -318,25 +319,27 @@ async def __wait_until_service_running_or_failed(service_id: str,
318
319
node_uuid : str ):
319
320
# pylint: disable=C0103
320
321
log .debug ("Waiting for service %s to start" , service_id )
321
- client = docker .APIClient ()
322
+ client = docker .from_env ()
322
323
323
324
# some times one has to wait until the task info is filled
324
325
while True :
325
- task_infos_json = client .tasks (filters = {'service' : service_id })
326
+ service = client .services .get (service_id )
327
+ task_infos_json = service .tasks ()
328
+ # log.debug("task infos: %s", task_infos_json)
326
329
if task_infos_json :
327
330
# check the status
328
331
status_json = task_infos_json [0 ]["Status" ]
329
332
task_state = status_json ["State" ]
330
333
331
- log .debug ("%s %s" , service_id , task_state )
334
+ # log.debug("%s %s", service_id, task_state)
332
335
if task_state == "running" :
333
336
break
334
337
elif task_state in ("failed" , "rejected" ):
335
338
log .error ("Error while waiting for service" )
336
339
raise exceptions .ServiceStartTimeoutError (
337
340
service_name , node_uuid )
338
- # would allow dealing with other events instead of wasting time here
339
- await asyncio .sleep (0.005 ) # 5ms
341
+ # allows dealing with other events instead of wasting time here
342
+ await asyncio .sleep (1 ) # 1s
340
343
log .debug ("Waited for service %s to start" , service_id )
341
344
342
345
@@ -438,7 +441,8 @@ async def _start_docker_service(client: docker.client,
438
441
log .debug ("Starting docker service %s using parameters %s" , docker_image_full_path , docker_service_runtime_parameters )
439
442
service = client .services .create (docker_image_full_path , ** docker_service_runtime_parameters )
440
443
log .debug ("Service started now waiting for it to run" )
441
- await __wait_until_service_running_or_failed (service .id , docker_image_full_path , node_uuid )
444
+ if main_service :
445
+ await __wait_until_service_running_or_failed (service .id , docker_image_full_path , node_uuid )
442
446
# the docker swarm opened some random port to access the service
443
447
published_port , target_port = _get_docker_image_port_mapping (service .id )
444
448
log .debug ("Service successfully started on %s:%s" , service_entrypoint , published_port )
0 commit comments