mirror of
https://github.com/docker/compose.git
synced 2025-07-23 13:45:00 +02:00
Remove project.create_containers(), revamp project.recreate_containers()
`recreate_containers` now returns two lists of old+new containers, along with their services.
This commit is contained in:
parent
bdc6b47e1f
commit
f5f9357736
@ -79,20 +79,22 @@ class Project(object):
|
|||||||
unsorted = [self.get_service(name) for name in service_names]
|
unsorted = [self.get_service(name) for name in service_names]
|
||||||
return [s for s in self.services if s in unsorted]
|
return [s for s in self.services if s in unsorted]
|
||||||
|
|
||||||
def create_containers(self, service_names=None):
|
def recreate_containers(self, service_names=None):
|
||||||
"""
|
|
||||||
For each service, creates a container if there are none.
|
|
||||||
"""
|
|
||||||
for service in self.get_services(service_names):
|
|
||||||
if len(service.containers(stopped=True)) == 0:
|
|
||||||
service.create_container()
|
|
||||||
|
|
||||||
def recreate_containers(self, service_names):
|
|
||||||
"""
|
"""
|
||||||
For each service, create or recreate their containers.
|
For each service, create or recreate their containers.
|
||||||
|
Returns a tuple with two lists. The first is a list of
|
||||||
|
(service, old_container) tuples; the second is a list
|
||||||
|
of (service, new_container) tuples.
|
||||||
"""
|
"""
|
||||||
|
old = []
|
||||||
|
new = []
|
||||||
|
|
||||||
for service in self.get_services(service_names):
|
for service in self.get_services(service_names):
|
||||||
service.recreate_containers()
|
(s_old, s_new) = service.recreate_containers()
|
||||||
|
old += [(service, container) for container in s_old]
|
||||||
|
new += [(service, container) for container in s_new]
|
||||||
|
|
||||||
|
return (old, new)
|
||||||
|
|
||||||
def start(self, service_names=None, **options):
|
def start(self, service_names=None, **options):
|
||||||
for service in self.get_services(service_names):
|
for service in self.get_services(service_names):
|
||||||
|
@ -80,7 +80,7 @@ class Service(object):
|
|||||||
"""
|
"""
|
||||||
old_containers = self.containers(stopped=True)
|
old_containers = self.containers(stopped=True)
|
||||||
if len(old_containers) == 0:
|
if len(old_containers) == 0:
|
||||||
return [self.create_container(**override_options)]
|
return ([], [self.create_container(**override_options)])
|
||||||
else:
|
else:
|
||||||
new_containers = []
|
new_containers = []
|
||||||
for old_container in old_containers:
|
for old_container in old_containers:
|
||||||
|
@ -42,17 +42,22 @@ class ProjectTest(DockerClientTestCase):
|
|||||||
project = Project('test', [web], self.client)
|
project = Project('test', [web], self.client)
|
||||||
self.assertEqual(project.get_service('web'), web)
|
self.assertEqual(project.get_service('web'), web)
|
||||||
|
|
||||||
def test_create_containers(self):
|
def test_recreate_containers(self):
|
||||||
web = self.create_service('web')
|
web = self.create_service('web')
|
||||||
db = self.create_service('db')
|
db = self.create_service('db')
|
||||||
project = Project('test', [web, db], self.client)
|
project = Project('test', [web, db], self.client)
|
||||||
|
|
||||||
project.create_containers(service_names=['web'])
|
old_web_container = web.create_container()
|
||||||
self.assertEqual(len(web.containers(stopped=True)), 1)
|
self.assertEqual(len(web.containers(stopped=True)), 1)
|
||||||
self.assertEqual(len(db.containers(stopped=True)), 0)
|
self.assertEqual(len(db.containers(stopped=True)), 0)
|
||||||
|
|
||||||
project.create_containers()
|
(old, new) = project.recreate_containers()
|
||||||
self.assertEqual(len(web.containers(stopped=True)), 1)
|
self.assertEqual(old, [(web, old_web_container)])
|
||||||
|
self.assertEqual(len(new), 2)
|
||||||
|
self.assertEqual(new[0][0], web)
|
||||||
|
self.assertEqual(new[1][0], db)
|
||||||
|
|
||||||
|
self.assertEqual(len(web.containers(stopped=True)), 2)
|
||||||
self.assertEqual(len(db.containers(stopped=True)), 1)
|
self.assertEqual(len(db.containers(stopped=True)), 1)
|
||||||
|
|
||||||
def test_start_stop_kill_remove(self):
|
def test_start_stop_kill_remove(self):
|
||||||
|
Loading…
x
Reference in New Issue
Block a user