From 1f9fb2745673abd4e9562b9691f618484fed1714 Mon Sep 17 00:00:00 2001 From: David McKay Date: Tue, 18 Oct 2016 11:31:02 +0100 Subject: [PATCH] Allowing running containers to be rm'd by stop flag Signed-off-by: David McKay --- compose/cli/main.py | 10 ++++++++++ tests/acceptance/cli_test.py | 5 +++++ 2 files changed, 15 insertions(+) diff --git a/compose/cli/main.py b/compose/cli/main.py index 51ba36a09..49877eb70 100644 --- a/compose/cli/main.py +++ b/compose/cli/main.py @@ -635,6 +635,7 @@ class TopLevelCommand(object): Options: -f, --force Don't ask to confirm removal + -s, --stop Stop the containers, if required, before removing -v Remove any anonymous volumes attached to containers -a, --all Deprecated - no effect. """ @@ -645,6 +646,15 @@ class TopLevelCommand(object): ) one_off = OneOffFilter.include + if options.get('--stop'): + running_containers = self.project.containers( + service_names=options['SERVICE'], stopped=False, one_off=one_off + ) + self.project.stop( + service_names=running_containers, + one_off=one_off + ) + all_containers = self.project.containers( service_names=options['SERVICE'], stopped=True, one_off=one_off ) diff --git a/tests/acceptance/cli_test.py b/tests/acceptance/cli_test.py index 8366ca75e..6426e8cbf 100644 --- a/tests/acceptance/cli_test.py +++ b/tests/acceptance/cli_test.py @@ -1498,6 +1498,11 @@ class CLITestCase(DockerClientTestCase): self.assertEqual(len(service.containers(stopped=True)), 1) self.dispatch(['rm', '-f'], None) self.assertEqual(len(service.containers(stopped=True)), 0) + service = self.project.get_service('simple') + service.create_container() + self.dispatch(['rm', '-fs'], None) + simple = self.project.get_service('simple') + self.assertEqual(len(simple.containers()), 0) def test_rm_all(self): service = self.project.get_service('simple')