diff --git a/compose/service.py b/compose/service.py index 8699372ed..1e85772b7 100644 --- a/compose/service.py +++ b/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 diff --git a/tests/acceptance/cli_test.py b/tests/acceptance/cli_test.py index 75b15ae65..c4806ad2c 100644 --- a/tests/acceptance/cli_test.py +++ b/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