Просмотр исходного кода

Implement --scale option on up command, allow scale config in v2.2 format

docker-compose scale modified to reuse code between up and scale

Signed-off-by: Joffrey F <[email protected]>
Joffrey F 8 лет назад
Родитель
Сommit
ffb8f9f1b4
2 измененных файлов с 21 добавлено и 15 удалено
  1. 5 15
      compose/service.py
  2. 16 0
      tests/acceptance/cli_test.py

+ 5 - 15
compose/service.py

@@ -378,16 +378,12 @@ class Service(object):
                     self.start_container(container)
                 return container
 
-            containers, errors = parallel_execute(
+            return parallel_execute(
                 range(i, i + scale),
                 lambda n: create_and_start(self, n),
                 lambda n: self.get_container_name(n),
                 "Creating"
-            )
-            for error in errors.values():
-                raise OperationFailedError(error)
-
-            return containers
+            )[0]
 
     def _execute_convergence_recreate(self, containers, scale, timeout, detached, start):
             if len(containers) > scale:
@@ -399,15 +395,12 @@ class Service(object):
                     container, timeout=timeout, attach_logs=not detached,
                     start_new_container=start
                 )
-            containers, errors = parallel_execute(
+            containers = parallel_execute(
                 containers,
                 recreate,
                 lambda c: c.name,
                 "Recreating"
-            )
-            for error in errors.values():
-                raise OperationFailedError(error)
-
+            )[0]
             if len(containers) < scale:
                 containers.extend(self._execute_convergence_create(
                     scale - len(containers), detached, start
@@ -419,16 +412,13 @@ class Service(object):
                 self._downscale(containers[scale:], timeout)
                 containers = containers[:scale]
             if start:
-                _, errors = parallel_execute(
+                parallel_execute(
                     containers,
                     lambda c: self.start_container_if_stopped(c, attach_logs=not detached),
                     lambda c: c.name,
                     "Starting"
                 )
 
-                for error in errors.values():
-                    raise OperationFailedError(error)
-
             if len(containers) < scale:
                 containers.extend(self._execute_convergence_create(
                     scale - len(containers), detached, start

+ 16 - 0
tests/acceptance/cli_test.py

@@ -1866,6 +1866,7 @@ class CLITestCase(DockerClientTestCase):
         self.assertEqual(len(project.get_service('simple').containers()), 0)
         self.assertEqual(len(project.get_service('another').containers()), 0)
 
+<<<<<<< 10267a83dc79ba0f8cebe17b561c05367b947247
     def test_scale_v2_2(self):
         self.base_dir = 'tests/fixtures/scale'
         result = self.dispatch(['scale', 'web=1'], returncode=1)
@@ -1887,6 +1888,11 @@ class CLITestCase(DockerClientTestCase):
         self.base_dir = 'tests/fixtures/scale'
         project = self.project
 
+=======
+    def test_up_scale(self):
+        self.base_dir = 'tests/fixtures/scale'
+        project = self.project
+>>>>>>> Implement --scale option on up command, allow scale config in v2.2 format
         self.dispatch(['up', '-d'])
         assert len(project.get_service('web').containers()) == 2
         assert len(project.get_service('db').containers()) == 1
@@ -1895,6 +1901,7 @@ class CLITestCase(DockerClientTestCase):
         assert len(project.get_service('web').containers()) == 1
         assert len(project.get_service('db').containers()) == 1
 
+<<<<<<< 10267a83dc79ba0f8cebe17b561c05367b947247
     def test_up_scale_reset(self):
         self.base_dir = 'tests/fixtures/scale'
         project = self.project
@@ -1910,6 +1917,15 @@ class CLITestCase(DockerClientTestCase):
     def test_up_scale_to_zero(self):
         self.base_dir = 'tests/fixtures/scale'
         project = self.project
+=======
+        self.dispatch(['up', '-d', '--scale', 'web=3'])
+        assert len(project.get_service('web').containers()) == 3
+        assert len(project.get_service('db').containers()) == 1
+
+        self.dispatch(['up', '-d', '--scale', 'web=1', '--scale', 'db=2'])
+        assert len(project.get_service('web').containers()) == 1
+        assert len(project.get_service('db').containers()) == 2
+>>>>>>> Implement --scale option on up command, allow scale config in v2.2 format
 
         self.dispatch(['up', '-d'])
         assert len(project.get_service('web').containers()) == 2