Properly relay errors in execute_convergence_plan

Signed-off-by: Joffrey F <joffrey@docker.com>
This commit is contained in:
Joffrey F 2017-04-18 12:53:43 -07:00 committed by Joffrey F
parent ffb8f9f1b4
commit 1646e75591

View File

@ -378,12 +378,16 @@ class Service(object):
self.start_container(container) self.start_container(container)
return container return container
return parallel_execute( containers, errors = parallel_execute(
range(i, i + scale), range(i, i + scale),
lambda n: create_and_start(self, n), lambda n: create_and_start(self, n),
lambda n: self.get_container_name(n), lambda n: self.get_container_name(n),
"Creating" "Creating"
)[0] )
if errors:
raise OperationFailedError(errors.values()[0])
return containers
def _execute_convergence_recreate(self, containers, scale, timeout, detached, start): def _execute_convergence_recreate(self, containers, scale, timeout, detached, start):
if len(containers) > scale: if len(containers) > scale:
@ -395,12 +399,14 @@ class Service(object):
container, timeout=timeout, attach_logs=not detached, container, timeout=timeout, attach_logs=not detached,
start_new_container=start start_new_container=start
) )
containers = parallel_execute( containers, errors = parallel_execute(
containers, containers,
recreate, recreate,
lambda c: c.name, lambda c: c.name,
"Recreating" "Recreating"
)[0] )
if errors:
raise OperationFailedError(errors.values()[0])
if len(containers) < scale: if len(containers) < scale:
containers.extend(self._execute_convergence_create( containers.extend(self._execute_convergence_create(
scale - len(containers), detached, start scale - len(containers), detached, start
@ -412,13 +418,16 @@ class Service(object):
self._downscale(containers[scale:], timeout) self._downscale(containers[scale:], timeout)
containers = containers[:scale] containers = containers[:scale]
if start: if start:
parallel_execute( _, errors = parallel_execute(
containers, containers,
lambda c: self.start_container_if_stopped(c, attach_logs=not detached), lambda c: self.start_container_if_stopped(c, attach_logs=not detached),
lambda c: c.name, lambda c: c.name,
"Starting" "Starting"
) )
if errors:
raise OperationFailedError(errors.values()[0])
if len(containers) < scale: if len(containers) < scale:
containers.extend(self._execute_convergence_create( containers.extend(self._execute_convergence_create(
scale - len(containers), detached, start scale - len(containers), detached, start