Merge pull request #2547 from seguins/1125-docker-compose-create
Add docker-compose create command.
This commit is contained in:
commit
a2d2915a64
6 changed files with 179 additions and 11 deletions
|
|
@ -213,6 +213,71 @@ class ProjectTest(DockerClientTestCase):
|
|||
project.remove_stopped()
|
||||
self.assertEqual(len(project.containers(stopped=True)), 0)
|
||||
|
||||
def test_create(self):
|
||||
web = self.create_service('web')
|
||||
db = self.create_service('db', volumes=[VolumeSpec.parse('/var/db')])
|
||||
project = Project('composetest', [web, db], self.client)
|
||||
|
||||
project.create(['db'])
|
||||
self.assertEqual(len(project.containers()), 0)
|
||||
self.assertEqual(len(project.containers(stopped=True)), 1)
|
||||
self.assertEqual(len(db.containers()), 0)
|
||||
self.assertEqual(len(db.containers(stopped=True)), 1)
|
||||
self.assertEqual(len(web.containers(stopped=True)), 0)
|
||||
|
||||
def test_create_twice(self):
|
||||
web = self.create_service('web')
|
||||
db = self.create_service('db', volumes=[VolumeSpec.parse('/var/db')])
|
||||
project = Project('composetest', [web, db], self.client)
|
||||
|
||||
project.create(['db', 'web'])
|
||||
project.create(['db', 'web'])
|
||||
self.assertEqual(len(project.containers()), 0)
|
||||
self.assertEqual(len(project.containers(stopped=True)), 2)
|
||||
self.assertEqual(len(db.containers()), 0)
|
||||
self.assertEqual(len(db.containers(stopped=True)), 1)
|
||||
self.assertEqual(len(web.containers()), 0)
|
||||
self.assertEqual(len(web.containers(stopped=True)), 1)
|
||||
|
||||
def test_create_with_links(self):
|
||||
db = self.create_service('db')
|
||||
web = self.create_service('web', links=[(db, 'db')])
|
||||
project = Project('composetest', [db, web], self.client)
|
||||
|
||||
project.create(['web'])
|
||||
self.assertEqual(len(project.containers()), 0)
|
||||
self.assertEqual(len(project.containers(stopped=True)), 2)
|
||||
self.assertEqual(len(db.containers()), 0)
|
||||
self.assertEqual(len(db.containers(stopped=True)), 1)
|
||||
self.assertEqual(len(web.containers()), 0)
|
||||
self.assertEqual(len(web.containers(stopped=True)), 1)
|
||||
|
||||
def test_create_strategy_always(self):
|
||||
db = self.create_service('db')
|
||||
project = Project('composetest', [db], self.client)
|
||||
project.create(['db'])
|
||||
old_id = project.containers(stopped=True)[0].id
|
||||
|
||||
project.create(['db'], strategy=ConvergenceStrategy.always)
|
||||
self.assertEqual(len(project.containers()), 0)
|
||||
self.assertEqual(len(project.containers(stopped=True)), 1)
|
||||
|
||||
db_container = project.containers(stopped=True)[0]
|
||||
self.assertNotEqual(db_container.id, old_id)
|
||||
|
||||
def test_create_strategy_never(self):
|
||||
db = self.create_service('db')
|
||||
project = Project('composetest', [db], self.client)
|
||||
project.create(['db'])
|
||||
old_id = project.containers(stopped=True)[0].id
|
||||
|
||||
project.create(['db'], strategy=ConvergenceStrategy.never)
|
||||
self.assertEqual(len(project.containers()), 0)
|
||||
self.assertEqual(len(project.containers(stopped=True)), 1)
|
||||
|
||||
db_container = project.containers(stopped=True)[0]
|
||||
self.assertEqual(db_container.id, old_id)
|
||||
|
||||
def test_project_up(self):
|
||||
web = self.create_service('web')
|
||||
db = self.create_service('db', volumes=[VolumeSpec.parse('/var/db')])
|
||||
|
|
|
|||
|
|
@ -339,6 +339,24 @@ class ServiceTest(DockerClientTestCase):
|
|||
self.assertEqual(list(new_container.get('Volumes')), ['/data'])
|
||||
self.assertEqual(new_container.get('Volumes')['/data'], volume_path)
|
||||
|
||||
def test_execute_convergence_plan_without_start(self):
|
||||
service = self.create_service(
|
||||
'db',
|
||||
build='tests/fixtures/dockerfile-with-volume'
|
||||
)
|
||||
|
||||
containers = service.execute_convergence_plan(ConvergencePlan('create', []), start=False)
|
||||
self.assertEqual(len(service.containers()), 0)
|
||||
self.assertEqual(len(service.containers(stopped=True)), 1)
|
||||
|
||||
containers = service.execute_convergence_plan(ConvergencePlan('recreate', containers), start=False)
|
||||
self.assertEqual(len(service.containers()), 0)
|
||||
self.assertEqual(len(service.containers(stopped=True)), 1)
|
||||
|
||||
service.execute_convergence_plan(ConvergencePlan('start', containers), start=False)
|
||||
self.assertEqual(len(service.containers()), 0)
|
||||
self.assertEqual(len(service.containers(stopped=True)), 1)
|
||||
|
||||
def test_start_container_passes_through_options(self):
|
||||
db = self.create_service('db')
|
||||
create_and_start_container(db, environment={'FOO': 'BAR'})
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue