File tree Expand file tree Collapse file tree 2 files changed +28
-1
lines changed Expand file tree Collapse file tree 2 files changed +28
-1
lines changed Original file line number Diff line number Diff line change 1
1
import copy
2
- from docker .errors import create_unexpected_kwargs_error
2
+ from docker .errors import create_unexpected_kwargs_error , InvalidArgument
3
3
from docker .types import TaskTemplate , ContainerSpec , ServiceMode
4
4
from .resource import Model , Collection
5
5
@@ -116,6 +116,9 @@ def scale(self, replicas):
116
116
``True``if successful.
117
117
"""
118
118
119
+ if not self .attrs ['Spec' ]['Mode' ].get ('Global' ):
120
+ raise InvalidArgument ('Cannot scale a global container' )
121
+
119
122
service_mode = ServiceMode ('replicated' , replicas )
120
123
return self .client .api .update_service (self .id , self .version ,
121
124
service_mode ,
Original file line number Diff line number Diff line change 4
4
5
5
from .. import helpers
6
6
from .base import TEST_API_VERSION
7
+ from docker .errors import InvalidArgument
8
+ from docker .models .services import ServiceMode
7
9
8
10
9
11
class ServiceTest (unittest .TestCase ):
@@ -225,6 +227,28 @@ def test_scale_method_service(self):
225
227
spec = service .attrs ['Spec' ]['TaskTemplate' ]['ContainerSpec' ]
226
228
assert spec .get ('Command' ) == ['sleep' , '300' ]
227
229
230
+ def test_scale_method_global_service (self ):
231
+ client = docker .from_env (version = TEST_API_VERSION )
232
+ mode = ServiceMode ('global' )
233
+ service = client .services .create (
234
+ name = helpers .random_name (),
235
+ image = "alpine" ,
236
+ command = "sleep 300" ,
237
+ mode = mode
238
+ )
239
+ tasks = []
240
+ while len (tasks ) == 0 :
241
+ tasks = service .tasks ()
242
+ assert len (tasks ) == 1
243
+ with self .assertRaises (InvalidArgument ,
244
+ msg = 'Cannot scale a global container' ):
245
+ service .scale (2 )
246
+
247
+ assert len (tasks ) == 1
248
+ service .reload ()
249
+ spec = service .attrs ['Spec' ]['TaskTemplate' ]['ContainerSpec' ]
250
+ assert spec .get ('Command' ) == ['sleep' , '300' ]
251
+
228
252
@helpers .requires_api_version ('1.25' )
229
253
def test_restart_service (self ):
230
254
client = docker .from_env (version = TEST_API_VERSION )
You can’t perform that action at this time.
0 commit comments