|
|
@ -457,7 +457,7 @@ try:
|
|
|
|
from compose.cli.command import project_from_options
|
|
|
|
from compose.cli.command import project_from_options
|
|
|
|
from compose.service import NoSuchImageError
|
|
|
|
from compose.service import NoSuchImageError
|
|
|
|
from compose.cli.main import convergence_strategy_from_opts, build_action_from_opts, image_type_from_opt
|
|
|
|
from compose.cli.main import convergence_strategy_from_opts, build_action_from_opts, image_type_from_opt
|
|
|
|
from compose.const import DEFAULT_TIMEOUT
|
|
|
|
from compose.const import DEFAULT_TIMEOUT, LABEL_SERVICE, LABEL_PROJECT, LABEL_ONE_OFF
|
|
|
|
HAS_COMPOSE = True
|
|
|
|
HAS_COMPOSE = True
|
|
|
|
HAS_COMPOSE_EXC = None
|
|
|
|
HAS_COMPOSE_EXC = None
|
|
|
|
MINIMUM_COMPOSE_VERSION = '1.7.0'
|
|
|
|
MINIMUM_COMPOSE_VERSION = '1.7.0'
|
|
|
@ -711,6 +711,25 @@ class ContainerManager(DockerBaseClass):
|
|
|
|
result['changed'] = build_output['changed']
|
|
|
|
result['changed'] = build_output['changed']
|
|
|
|
result['actions'] += build_output['actions']
|
|
|
|
result['actions'] += build_output['actions']
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if self.remove_orphans:
|
|
|
|
|
|
|
|
containers = self.client.containers(
|
|
|
|
|
|
|
|
filters={
|
|
|
|
|
|
|
|
'label': [
|
|
|
|
|
|
|
|
'{0}={1}'.format(LABEL_PROJECT, self.project.name),
|
|
|
|
|
|
|
|
'{0}={1}'.format(LABEL_ONE_OFF, "False")
|
|
|
|
|
|
|
|
],
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
orphans = []
|
|
|
|
|
|
|
|
for container in containers:
|
|
|
|
|
|
|
|
service_name = container.get('Labels', {}).get(LABEL_SERVICE)
|
|
|
|
|
|
|
|
if service_name not in self.project.service_names:
|
|
|
|
|
|
|
|
orphans.append(service_name)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if orphans:
|
|
|
|
|
|
|
|
result['changed'] = True
|
|
|
|
|
|
|
|
|
|
|
|
for service in self.project.services:
|
|
|
|
for service in self.project.services:
|
|
|
|
if not service_names or service.name in service_names:
|
|
|
|
if not service_names or service.name in service_names:
|
|
|
|
plan = service.convergence_plan(strategy=converge)
|
|
|
|
plan = service.convergence_plan(strategy=converge)
|
|
|
|