From 2ef090ab7bcb1de58ef4a23867cb0cd37700dcc7 Mon Sep 17 00:00:00 2001 From: James Booth Date: Tue, 10 Jun 2014 00:57:43 +0100 Subject: [PATCH] Refactor jenkins poll --- jenkins.py | 59 ++++++++++++++++++++++++++++-------------------------- 1 file changed, 31 insertions(+), 28 deletions(-) diff --git a/jenkins.py b/jenkins.py index d8f36b4..99449d3 100644 --- a/jenkins.py +++ b/jenkins.py @@ -132,6 +132,35 @@ class JobUpdates(): def get_in_state(self, state): return self.states[state] +def _process_build(name, build, new_job_list, new_changes_list): + if build.get_status() == STATE_FAILURE: + new_job_list.add_job(name, build.get_number(), STATE_FAILURE) + changed = _set_state(name, STATE_FAILURE) + if changed: + new_changes_list.add_update(STATE_FAILURE, name, build.get_number()) + elif build.get_status() == STATE_SUCCESS: + new_job_list.add_job(name, build.get_number(), STATE_SUCCESS) + changed = _set_state(name, STATE_SUCCESS) + if changed: + new_changes_list.add_update(STATE_SUCCESS, name, build.get_number()) + elif build.get_status() == STATE_UNSTABLE: + new_job_list.add_job(name, build.get_number(), STATE_UNSTABLE) + changed = _set_state(name, STATE_UNSTABLE) + if changed: + new_changes_list.add_update(STATE_UNSTABLE, name, build.get_number()) + +def _process_queued_or_running(name, job, new_job_list, new_changes_list): + if job.is_queued(): + new_job_list.add_job(name, None, STATE_QUEUED) + changed = _set_state(name, STATE_QUEUED) + if changed: + new_changes_list.add_update(STATE_QUEUED, name) + elif job.is_running(): + new_job_list.add_job(name, None, STATE_RUNNING) + changed = _set_state(name, STATE_RUNNING) + if changed: + new_changes_list.add_update(STATE_RUNNING, name) + def _jenkins_poll(): global poll_fail global poll_fail_message @@ -140,7 +169,6 @@ def _jenkins_poll(): while True: time.sleep(jenkins_poll_interval) - try: j = Jenkins(jenkins_url, username, password) except Exception, e: @@ -149,42 +177,17 @@ def _jenkins_poll(): else: poll_fail = False poll_fail_message = None - new_job_list = JobList() new_changes_list = JobUpdates() - for name, job in j.get_jobs(): if not job.is_queued_or_running(): build = job.get_last_build_or_none() if build: - if build.get_status() == STATE_FAILURE: - new_job_list.add_job(name, build.get_number(), STATE_FAILURE) - changed = _set_state(name, STATE_FAILURE) - if changed: - new_changes_list.add_update(STATE_FAILURE, name, build.get_number()) - elif build.get_status() == STATE_SUCCESS: - new_job_list.add_job(name, build.get_number(), STATE_SUCCESS) - changed = _set_state(name, STATE_SUCCESS) - if changed: - new_changes_list.add_update(STATE_SUCCESS, name, build.get_number()) - elif build.get_status() == STATE_UNSTABLE: - new_job_list.add_job(name, build.get_number(), STATE_UNSTABLE) - changed = _set_state(name, STATE_UNSTABLE) - if changed: - new_changes_list.add_update(STATE_UNSTABLE, name, build.get_number()) + _process_build(name, build, new_job_list, new_changes_list) else: new_job_list.add_job(name, None, STATE_NOBUILDS) else: - if job.is_queued(): - new_job_list.add_job(name, None, STATE_QUEUED) - changed = _set_state(name, STATE_QUEUED) - if changed: - new_changes_list.add_update(STATE_QUEUED, name) - elif job.is_running(): - new_job_list.add_job(name, None, STATE_RUNNING) - changed = _set_state(name, STATE_RUNNING) - if changed: - new_changes_list.add_update(STATE_RUNNING, name) + _process_queued_or_running(name, job, new_job_list, new_changes_list) job_list = new_job_list changes_list = new_changes_list