Prechádzať zdrojové kódy

Allowing running containers to be rm'd by stop flag

Signed-off-by: David McKay <[email protected]>
David McKay 9 rokov pred
rodič
commit
1f9fb27456
2 zmenil súbory, kde vykonal 15 pridanie a 0 odobranie
  1. 10 0
      compose/cli/main.py
  2. 5 0
      tests/acceptance/cli_test.py

+ 10 - 0
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
         )

+ 5 - 0
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')