fix: disable parallel operations for Pulumi as backend does not support that, yet

This commit is contained in:
Stefan Reimer 2022-03-15 11:17:13 +01:00
parent 7d6135e099
commit e74bca7199
1 changed files with 24 additions and 6 deletions

View File

@ -342,21 +342,39 @@ def _render(stacks):
logger.info("{} uses Pulumi, render skipped.".format(s.stackname))
def _anyPulumi(step):
for stack in step:
if stack.mode == "pulumi":
return True
return False
def _provision(cb, stacks):
"""Utility function to reuse code between tasks"""
for step in sort_stacks(cb, stacks):
if step:
with ThreadPoolExecutor(max_workers=len(step)) as group:
futures = []
# if there are any Pulumi stacks in the step execute serial
if _anyPulumi(step):
for stack in step:
status = stack.get_status()
if not status:
futures.append(group.submit(stack.create))
stack.create()
else:
futures.append(group.submit(stack.update))
stack.update()
for future in as_completed(futures):
future.result()
else:
with ThreadPoolExecutor(max_workers=len(step)) as group:
futures = []
for stack in step:
status = stack.get_status()
if not status:
futures.append(group.submit(stack.create))
else:
futures.append(group.submit(stack.update))
for future in as_completed(futures):
future.result()
cli.add_command(render)