|
4 | 4 |
|
5 | 5 | from .. import helpers
|
6 | 6 | from .base import TEST_API_VERSION
|
| 7 | +from docker.errors import InvalidArgument |
| 8 | +from docker.types.services import ServiceMode |
7 | 9 |
|
8 | 10 |
|
9 | 11 | class ServiceTest(unittest.TestCase):
|
@@ -227,6 +229,50 @@ def test_scale_service(self):
|
227 | 229 | spec = service.attrs['Spec']['TaskTemplate']['ContainerSpec']
|
228 | 230 | assert spec.get('Command') == ['sleep', '300']
|
229 | 231 |
|
| 232 | + def test_scale_method_service(self): |
| 233 | + client = docker.from_env(version=TEST_API_VERSION) |
| 234 | + service = client.services.create( |
| 235 | + # create arguments |
| 236 | + name=helpers.random_name(), |
| 237 | + # ContainerSpec arguments |
| 238 | + image="alpine", |
| 239 | + command="sleep 300", |
| 240 | + ) |
| 241 | + tasks = [] |
| 242 | + while len(tasks) == 0: |
| 243 | + tasks = service.tasks() |
| 244 | + assert len(tasks) == 1 |
| 245 | + service.scale(2) |
| 246 | + while len(tasks) == 1: |
| 247 | + tasks = service.tasks() |
| 248 | + assert len(tasks) >= 2 |
| 249 | + # check that the container spec is not overridden with None |
| 250 | + service.reload() |
| 251 | + spec = service.attrs['Spec']['TaskTemplate']['ContainerSpec'] |
| 252 | + assert spec.get('Command') == ['sleep', '300'] |
| 253 | + |
| 254 | + def test_scale_method_global_service(self): |
| 255 | + client = docker.from_env(version=TEST_API_VERSION) |
| 256 | + mode = ServiceMode('global') |
| 257 | + service = client.services.create( |
| 258 | + name=helpers.random_name(), |
| 259 | + image="alpine", |
| 260 | + command="sleep 300", |
| 261 | + mode=mode |
| 262 | + ) |
| 263 | + tasks = [] |
| 264 | + while len(tasks) == 0: |
| 265 | + tasks = service.tasks() |
| 266 | + assert len(tasks) == 1 |
| 267 | + with self.assertRaises(InvalidArgument, |
| 268 | + msg='Cannot scale a global container'): |
| 269 | + service.scale(2) |
| 270 | + |
| 271 | + assert len(tasks) == 1 |
| 272 | + service.reload() |
| 273 | + spec = service.attrs['Spec']['TaskTemplate']['ContainerSpec'] |
| 274 | + assert spec.get('Command') == ['sleep', '300'] |
| 275 | + |
230 | 276 | @helpers.requires_api_version('1.25')
|
231 | 277 | def test_restart_service(self):
|
232 | 278 | client = docker.from_env(version=TEST_API_VERSION)
|
|
0 commit comments