docker_compose: fix idempotency for stopped services (#159)

* Always use |= instead of = when updating changed status.

* Fix idempotence bug.

* Add changelog fragment.
This commit is contained in:
Felix Fontein
2021-06-22 12:07:50 +02:00
committed by GitHub
parent 902bcc6193
commit af2b3b0493
3 changed files with 12 additions and 6 deletions
+8 -4
View File
@@ -730,12 +730,12 @@ class ContainerManager(DockerBaseClass):
if self.pull:
pull_output = self.cmd_pull()
result['changed'] = pull_output['changed']
result['changed'] |= pull_output['changed']
result['actions'] += pull_output['actions']
if self.build:
build_output = self.cmd_build()
result['changed'] = build_output['changed']
result['changed'] |= build_output['changed']
result['actions'] += build_output['actions']
if self.remove_orphans:
@@ -760,6 +760,10 @@ class ContainerManager(DockerBaseClass):
for service in self.project.services:
if not service_names or service.name in service_names:
plan = service.convergence_plan(strategy=converge)
if plan.action == 'start' and self.stopped:
# In case the only action is starting, and the user requested
# that the service should be stopped, ignore this service.
continue
if plan.action != 'noop':
result['changed'] = True
result_action = dict(service=service.name)
@@ -802,12 +806,12 @@ class ContainerManager(DockerBaseClass):
if self.restarted:
restart_output = self.cmd_restart(service_names)
result['changed'] = restart_output['changed']
result['changed'] |= restart_output['changed']
result['actions'] += restart_output['actions']
if self.scale:
scale_output = self.cmd_scale()
result['changed'] = scale_output['changed']
result['changed'] |= scale_output['changed']
result['actions'] += scale_output['actions']
for service in self.project.services: