Merge pull request #1918 from rycus86/service-restart-method

Shorthand method for service.restart()
This commit is contained in:
Joffrey F 2018-02-21 12:05:10 -08:00 committed by GitHub
commit ad5f49b690
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 54 additions and 2 deletions

View File

@ -69,6 +69,11 @@ class Service(Model):
spec = self.attrs['Spec']['TaskTemplate']['ContainerSpec']
kwargs['image'] = spec['Image']
if kwargs.get('force_update') is True:
task_template = self.attrs['Spec']['TaskTemplate']
current_value = int(task_template.get('ForceUpdate', 0))
kwargs['force_update'] = current_value + 1
create_kwargs = _get_create_service_kwargs('update', kwargs)
return self.client.api.update_service(
@ -124,6 +129,16 @@ class Service(Model):
service_mode,
fetch_current_spec=True)
def force_update(self):
"""
Force update the service even if no changes require it.
Returns:
``True``if successful.
"""
return self.update(force_update=True, fetch_current_spec=True)
class ServiceCollection(Collection):
"""Services on the Docker server."""

View File

@ -276,7 +276,7 @@ class ServiceTest(unittest.TestCase):
assert spec.get('Command') == ['sleep', '300']
@helpers.requires_api_version('1.25')
def test_restart_service(self):
def test_force_update_service(self):
client = docker.from_env(version=TEST_API_VERSION)
service = client.services.create(
# create arguments
@ -286,7 +286,7 @@ class ServiceTest(unittest.TestCase):
command="sleep 300"
)
initial_version = service.version
service.update(
assert service.update(
# create argument
name=service.name,
# task template argument
@ -296,3 +296,40 @@ class ServiceTest(unittest.TestCase):
)
service.reload()
assert service.version > initial_version
@helpers.requires_api_version('1.25')
def test_force_update_service_using_bool(self):
client = docker.from_env(version=TEST_API_VERSION)
service = client.services.create(
# create arguments
name=helpers.random_name(),
# ContainerSpec arguments
image="alpine",
command="sleep 300"
)
initial_version = service.version
assert service.update(
# create argument
name=service.name,
# task template argument
force_update=True,
# ContainerSpec argument
command="sleep 600"
)
service.reload()
assert service.version > initial_version
@helpers.requires_api_version('1.25')
def test_force_update_service_using_shorthand_method(self):
client = docker.from_env(version=TEST_API_VERSION)
service = client.services.create(
# create arguments
name=helpers.random_name(),
# ContainerSpec arguments
image="alpine",
command="sleep 300"
)
initial_version = service.version
assert service.force_update()
service.reload()
assert service.version > initial_version