diff options
author | Joffrey F <joffrey@docker.com> | 2016-12-19 20:20:03 -0800 |
---|---|---|
committer | Joffrey F <joffrey@docker.com> | 2017-01-04 11:28:30 -0800 |
commit | 04394b1d0a82f4507edc8863c4ab9cf64944f6d9 (patch) | |
tree | c872f8aaadc1067b839d190e1c0f2e629b42d548 /compose/parallel.py | |
parent | f6edd610f36ec9f6ffdd16df970f3d6cefb1169d (diff) |
Expand depends_on to allow different conditions (service_start, service_healthy)
Rework "up" and "start" to wait on conditional state of dependent services
Add integration tests
Signed-off-by: Joffrey F <joffrey@docker.com>
Diffstat (limited to 'compose/parallel.py')
-rw-r--r-- | compose/parallel.py | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/compose/parallel.py b/compose/parallel.py index 26718872..b2654dcf 100644 --- a/compose/parallel.py +++ b/compose/parallel.py @@ -165,13 +165,14 @@ def feed_queue(objects, func, get_deps, results, state): for obj in pending: deps = get_deps(obj) - if any(dep in state.failed for dep in deps): + if any(dep[0] in state.failed for dep in deps): log.debug('{} has upstream errors - not processing'.format(obj)) results.put((obj, None, UpstreamError())) state.failed.add(obj) elif all( - dep not in objects or dep in state.finished - for dep in deps + dep not in objects or ( + dep in state.finished and (not ready_check or ready_check(dep)) + ) for dep, ready_check in deps ): log.debug('Starting producer thread for {}'.format(obj)) t = Thread(target=producer, args=(obj, func, results)) |