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)