Add recreate_containers method to service

This commit is contained in:
Ben Firshman 2014-01-03 11:18:59 +00:00 • committed by Aanand Prasad
commit 3c5e334d9d
3 changed files with 33 additions and 0 deletions

View file

@ -87,6 +87,13 @@ class Project(object):
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 service in self.get_services(service_names):
service.recreate_containers()
def start(self, service_names=None, **options):
for service in self.get_services(service_names):
service.start(**options)

View file

@ -73,6 +73,25 @@ class Service(object):
return Container.create(self.client, **container_options)
raise
def recreate_containers(self, **override_options):
"""
If a container for this service doesn't exist, create one. If there are
any, stop, remove and recreate them.
"""
containers = self.containers(stopped=True)
if len(containers) == 0:
return [self.create_container(**override_options)]
else:
new_containers = []
for old_container in containers:
if old_container.is_running:
old_container.stop()
options = dict(override_options)
options['volumes_from'] = old_container.id
new_containers.append(self.create_container(**options))
old_container.remove()
return new_containers
def start_container(self, container=None, **override_options):
if container is None:
container = self.create_container(**override_options)