From ec64f55c80ad85a9d9bb7e0f93766af092b78a90 Mon Sep 17 00:00:00 2001 From: Salim Fadhley Date: Sun, 30 Jun 2013 00:12:51 +0100 Subject: [PATCH] an attempt to force the launcher to wait until jenkins is actually launched --- jenkinsapi_utils/jenkins_launcher.py | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/jenkinsapi_utils/jenkins_launcher.py b/jenkinsapi_utils/jenkins_launcher.py index 4fffc72..fb8f9fe 100644 --- a/jenkinsapi_utils/jenkins_launcher.py +++ b/jenkinsapi_utils/jenkins_launcher.py @@ -1,14 +1,18 @@ import os import time -import requests import Queue import shutil import logging +import datetime import tempfile +import requests import threading import subprocess import pkg_resources +from jenkinsapi.jenkins import Jenkins +from jenkinsapi.exceptions import JenkinsAPIException + log = logging.getLogger(__name__) @@ -95,7 +99,21 @@ class JenkinsLancher(object): self.jenkins_process.wait() shutil.rmtree(self.jenkins_home) - def start(self, timeout=30): + def block_until_jenkins_ready(self, timeout): + start_time = datetime.datetime.now() + timeout_time = start_time + datetime.timedelta(seconds=timeout) + + while True: + try: + Jenkins('http://localhost:8080') + log.info('Jenkins is finally ready for use.') + except JenkinsAPIException: + log.info('Jenkins is not yet ready...') + if datetime.datetime.now() > timeout_time: + raise TimeOut('Took too long for Jenkins to become ready...') + time.sleep(5) + + def start(self, timeout=60): self.update_war() self.update_config() @@ -139,6 +157,8 @@ class JenkinsLancher(object): else: log.warn('Stream %s has terminated', streamName) + self.block_until_jenkins_ready(timeout) + if __name__ == '__main__': logging.basicConfig() -- 2.7.4