def run_script(self, script_name, args=None):
     hosts = self.service.get_hosts()
     if len(hosts) > 0:
         # only need to run this on one host
         host = hosts[0]
         current_deploy = self.service.get_current_deploy()
         dp = DeployInstance(host.uuid, self.service.uuid)
         command = './run.sh ./scripts/{}'.format(script_name)
         if args:
             for arg in args:
                 command = command + ' \'{}\''.format(arg)
         dp.execute_command(current_deploy.docker_tag, command)
    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 remove_service(host_uuid, service_uuid):
    dp = DeployInstance(host_uuid, service_uuid)
    dp.remove_service()
def configure_instance(host_uuid, service_uuid):
    dp = DeployInstance(host_uuid, service_uuid)
    dp.configure()
 def delete_images(self):
     for host in self.service.get_hosts():
         dp = DeployInstance(host.uuid, self.service.uuid)
         dp.delete_images()
 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