|
@@ -2,8 +2,9 @@ from __future__ import unicode_literals
|
|
|
from __future__ import absolute_import
|
|
|
import os
|
|
|
from os import path
|
|
|
-import mock
|
|
|
|
|
|
+from docker.errors import APIError
|
|
|
+import mock
|
|
|
import tempfile
|
|
|
import shutil
|
|
|
import six
|
|
@@ -18,11 +19,11 @@ from compose.const import (
|
|
|
)
|
|
|
from compose.service import (
|
|
|
ConfigError,
|
|
|
+ ConvergencePlan,
|
|
|
Service,
|
|
|
build_extra_hosts,
|
|
|
)
|
|
|
from compose.container import Container
|
|
|
-from docker.errors import APIError
|
|
|
from .testcases import DockerClientTestCase
|
|
|
|
|
|
|
|
@@ -249,7 +250,7 @@ class ServiceTest(DockerClientTestCase):
|
|
|
self.assertIn(volume_container_2.id,
|
|
|
host_container.get('HostConfig.VolumesFrom'))
|
|
|
|
|
|
- def test_converge(self):
|
|
|
+ def test_execute_convergence_plan_recreate(self):
|
|
|
service = self.create_service(
|
|
|
'db',
|
|
|
environment={'FOO': '1'},
|
|
@@ -269,7 +270,8 @@ class ServiceTest(DockerClientTestCase):
|
|
|
num_containers_before = len(self.client.containers(all=True))
|
|
|
|
|
|
service.options['environment']['FOO'] = '2'
|
|
|
- new_container = service.converge()[0]
|
|
|
+ new_container, = service.execute_convergence_plan(
|
|
|
+ ConvergencePlan('recreate', [old_container]))
|
|
|
|
|
|
self.assertEqual(new_container.get('Config.Entrypoint'), ['top'])
|
|
|
self.assertEqual(new_container.get('Config.Cmd'), ['-d', '1'])
|
|
@@ -286,7 +288,7 @@ class ServiceTest(DockerClientTestCase):
|
|
|
self.client.inspect_container,
|
|
|
old_container.id)
|
|
|
|
|
|
- def test_converge_when_containers_are_stopped(self):
|
|
|
+ def test_execute_convergence_plan_when_containers_are_stopped(self):
|
|
|
service = self.create_service(
|
|
|
'db',
|
|
|
environment={'FOO': '1'},
|
|
@@ -295,11 +297,21 @@ class ServiceTest(DockerClientTestCase):
|
|
|
command=['-d', '1']
|
|
|
)
|
|
|
service.create_container()
|
|
|
- self.assertEqual(len(service.containers(stopped=True)), 1)
|
|
|
- service.converge()
|
|
|
- self.assertEqual(len(service.containers(stopped=True)), 1)
|
|
|
|
|
|
- def test_converge_with_image_declared_volume(self):
|
|
|
+ containers = service.containers(stopped=True)
|
|
|
+ self.assertEqual(len(containers), 1)
|
|
|
+ container, = containers
|
|
|
+ self.assertFalse(container.is_running)
|
|
|
+
|
|
|
+ service.execute_convergence_plan(ConvergencePlan('start', [container]))
|
|
|
+
|
|
|
+ containers = service.containers()
|
|
|
+ self.assertEqual(len(containers), 1)
|
|
|
+ container.inspect()
|
|
|
+ self.assertEqual(container, containers[0])
|
|
|
+ self.assertTrue(container.is_running)
|
|
|
+
|
|
|
+ def test_execute_convergence_plan_with_image_declared_volume(self):
|
|
|
service = Service(
|
|
|
project='composetest',
|
|
|
name='db',
|
|
@@ -311,7 +323,8 @@ class ServiceTest(DockerClientTestCase):
|
|
|
self.assertEqual(old_container.get('Volumes').keys(), ['/data'])
|
|
|
volume_path = old_container.get('Volumes')['/data']
|
|
|
|
|
|
- new_container = service.converge()[0]
|
|
|
+ new_container, = service.execute_convergence_plan(
|
|
|
+ ConvergencePlan('recreate', [old_container]))
|
|
|
self.assertEqual(new_container.get('Volumes').keys(), ['/data'])
|
|
|
self.assertEqual(new_container.get('Volumes')['/data'], volume_path)
|
|
|
|