def restart_deploy(self, hard_restart=False):
        self.deploying = Deploy.update(self.deploying.uuid, last_deployed=now_utc())
        for host in self.service.get_hosts():
            dp = DeployInstance(host.uuid, self.service.uuid)
            succeeded = dp.restart_deploy(self.deploying, hard_restart=hard_restart)
            self.deploy_succeeded = self.deploy_succeeded & succeeded

        if self.deploy_succeeded:
            current_deploy = self.service.get_current_deploy()
            if self.deploying == current_deploy:
                return
            Deploy.update(uuid=current_deploy.uuid, currently_running=False)
            Deploy.update(uuid=self.deploying.uuid, currently_running=True)
        self._text_admins()
 def deploy(self):
     self.deploying = Deploy.update(self.deploying.uuid, last_deployed=now_utc(), started=True)
     for host in self.service.get_hosts():
         dp = DeployInstance(host.uuid, self.service.uuid)
         succeeded = dp.deploy_instance(self.deploying)
         self.deploy_succeeded = self.deploy_succeeded & succeeded
     self.deploying = Deploy.update(self.deploying.uuid,
                                    currently_running=self.deploy_succeeded,
                                    on_machine=self.deploy_succeeded,
                                    succeeded=self.deploy_succeeded,
                                    finished=True)
     if self.current_deploy and self.deploying.uuid != self.current_deploy.uuid:
         self.current_deploy = Deploy.update(self.current_deploy.uuid, currently_running=not self.deploy_succeeded)
     if self.deploy_succeeded and self.service.has_database:
         self.run_script('run_migrations.py')
     self._text_admins()
 def __init__(self, service_uuid, deploy_uuid):
     self.service = Service.get(uuid=service_uuid)
     if not deploy_uuid:
         self.deploying = None
     else:
         self.deploying = Deploy.get(uuid=deploy_uuid)
     self.deploy_succeeded = True
     self.current_deploy = self.service.get_current_deploy()
 def delete_container(self):
     for host in self.service.get_hosts():
         dp = DeployInstance(host.uuid, self.service.uuid)
         dp.delete_container(self.deploying.docker_tag)
     deploy = Deploy.update(self.deploying.uuid, currently_running=False, on_machine=False)
     return deploy
 def remove_service(self):
     self.deploying = Deploy.get_latest_deploy(self.service.uuid)
     self.host_deploy = HostDeploy.get_or_create(deploy_uuid=self.deploying.uuid, host_uuid=self.host.uuid)
     self.f.write('Remove service for deploy {}\n'.format(self.deploying.uuid))
     self._kill_running_containers()
     self.delete_container(self.deploying.docker_tag)