File tree Expand file tree Collapse file tree 2 files changed +39
-1
lines changed Expand file tree Collapse file tree 2 files changed +39
-1
lines changed Original file line number Diff line number Diff line change 1
1
import copy
2
2
from docker .errors import create_unexpected_kwargs_error
3
- from docker .types import TaskTemplate , ContainerSpec
3
+ from docker .types import TaskTemplate , ContainerSpec , ServiceMode
4
4
from .resource import Model , Collection
5
5
6
6
@@ -105,6 +105,22 @@ def logs(self, **kwargs):
105
105
)
106
106
return self .client .api .service_logs (self .id , is_tty = is_tty , ** kwargs )
107
107
108
+ def scale (self , replicas ):
109
+ """
110
+ Scale service container.
111
+
112
+ Args:
113
+ replicas (int): The number of containers that should be running.
114
+
115
+ Returns:
116
+ ``True``if successful.
117
+ """
118
+
119
+ service_mode = ServiceMode ('replicated' , replicas )
120
+ return self .client .api .update_service (self .id , self .version ,
121
+ service_mode ,
122
+ fetch_current_spec = True )
123
+
108
124
109
125
class ServiceCollection (Collection ):
110
126
"""Services on the Docker server."""
Original file line number Diff line number Diff line change @@ -203,6 +203,28 @@ def test_scale_service(self):
203
203
spec = service .attrs ['Spec' ]['TaskTemplate' ]['ContainerSpec' ]
204
204
assert spec .get ('Command' ) == ['sleep' , '300' ]
205
205
206
+ def test_scale_method_service (self ):
207
+ client = docker .from_env (version = TEST_API_VERSION )
208
+ service = client .services .create (
209
+ # create arguments
210
+ name = helpers .random_name (),
211
+ # ContainerSpec arguments
212
+ image = "alpine" ,
213
+ command = "sleep 300"
214
+ )
215
+ tasks = []
216
+ while len (tasks ) == 0 :
217
+ tasks = service .tasks ()
218
+ assert len (tasks ) == 1
219
+ service .scale (2 )
220
+ while len (tasks ) == 1 :
221
+ tasks = service .tasks ()
222
+ assert len (tasks ) >= 2
223
+ # check that the container spec is not overridden with None
224
+ service .reload ()
225
+ spec = service .attrs ['Spec' ]['TaskTemplate' ]['ContainerSpec' ]
226
+ assert spec .get ('Command' ) == ['sleep' , '300' ]
227
+
206
228
@helpers .requires_api_version ('1.25' )
207
229
def test_restart_service (self ):
208
230
client = docker .from_env (version = TEST_API_VERSION )
You can’t perform that action at this time.
0 commit comments