mirror of https://github.com/docker/docker-py.git
Ensure that global containers are not scaled
Signed-off-by: Felipe Ruhland <felipe.ruhland@gmail.com>
This commit is contained in:
parent
edb9e3c2ae
commit
0e0a852680
|
|
@ -1,5 +1,5 @@
|
|||
import copy
|
||||
from docker.errors import create_unexpected_kwargs_error
|
||||
from docker.errors import create_unexpected_kwargs_error, InvalidArgument
|
||||
from docker.types import TaskTemplate, ContainerSpec, ServiceMode
|
||||
from .resource import Model, Collection
|
||||
|
||||
|
|
@ -116,6 +116,9 @@ class Service(Model):
|
|||
``True``if successful.
|
||||
"""
|
||||
|
||||
if not self.attrs['Spec']['Mode'].get('Global'):
|
||||
raise InvalidArgument('Cannot scale a global container')
|
||||
|
||||
service_mode = ServiceMode('replicated', replicas)
|
||||
return self.client.api.update_service(self.id, self.version,
|
||||
service_mode,
|
||||
|
|
|
|||
|
|
@ -4,6 +4,8 @@ import docker
|
|||
|
||||
from .. import helpers
|
||||
from .base import TEST_API_VERSION
|
||||
from docker.errors import InvalidArgument
|
||||
from docker.models.services import ServiceMode
|
||||
|
||||
|
||||
class ServiceTest(unittest.TestCase):
|
||||
|
|
@ -225,6 +227,28 @@ class ServiceTest(unittest.TestCase):
|
|||
spec = service.attrs['Spec']['TaskTemplate']['ContainerSpec']
|
||||
assert spec.get('Command') == ['sleep', '300']
|
||||
|
||||
def test_scale_method_global_service(self):
|
||||
client = docker.from_env(version=TEST_API_VERSION)
|
||||
mode = ServiceMode('global')
|
||||
service = client.services.create(
|
||||
name=helpers.random_name(),
|
||||
image="alpine",
|
||||
command="sleep 300",
|
||||
mode=mode
|
||||
)
|
||||
tasks = []
|
||||
while len(tasks) == 0:
|
||||
tasks = service.tasks()
|
||||
assert len(tasks) == 1
|
||||
with self.assertRaises(InvalidArgument,
|
||||
msg='Cannot scale a global container'):
|
||||
service.scale(2)
|
||||
|
||||
assert len(tasks) == 1
|
||||
service.reload()
|
||||
spec = service.attrs['Spec']['TaskTemplate']['ContainerSpec']
|
||||
assert spec.get('Command') == ['sleep', '300']
|
||||
|
||||
@helpers.requires_api_version('1.25')
|
||||
def test_restart_service(self):
|
||||
client = docker.from_env(version=TEST_API_VERSION)
|
||||
|
|
|
|||
Loading…
Reference in New Issue