Refactor jenkins poll
This commit is contained in:
59
jenkins.py
59
jenkins.py
@@ -132,31 +132,7 @@ class JobUpdates():
|
|||||||
def get_in_state(self, state):
|
def get_in_state(self, state):
|
||||||
return self.states[state]
|
return self.states[state]
|
||||||
|
|
||||||
def _jenkins_poll():
|
def _process_build(name, build, new_job_list, new_changes_list):
|
||||||
global poll_fail
|
|
||||||
global poll_fail_message
|
|
||||||
global job_list
|
|
||||||
global changes_list
|
|
||||||
|
|
||||||
while True:
|
|
||||||
time.sleep(jenkins_poll_interval)
|
|
||||||
|
|
||||||
try:
|
|
||||||
j = Jenkins(jenkins_url, username, password)
|
|
||||||
except Exception, e:
|
|
||||||
poll_fail = True
|
|
||||||
poll_fail_message = str(e)
|
|
||||||
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:
|
if build.get_status() == STATE_FAILURE:
|
||||||
new_job_list.add_job(name, build.get_number(), STATE_FAILURE)
|
new_job_list.add_job(name, build.get_number(), STATE_FAILURE)
|
||||||
changed = _set_state(name, STATE_FAILURE)
|
changed = _set_state(name, STATE_FAILURE)
|
||||||
@@ -172,9 +148,8 @@ def _jenkins_poll():
|
|||||||
changed = _set_state(name, STATE_UNSTABLE)
|
changed = _set_state(name, STATE_UNSTABLE)
|
||||||
if changed:
|
if changed:
|
||||||
new_changes_list.add_update(STATE_UNSTABLE, name, build.get_number())
|
new_changes_list.add_update(STATE_UNSTABLE, name, build.get_number())
|
||||||
else:
|
|
||||||
new_job_list.add_job(name, None, STATE_NOBUILDS)
|
def _process_queued_or_running(name, job, new_job_list, new_changes_list):
|
||||||
else:
|
|
||||||
if job.is_queued():
|
if job.is_queued():
|
||||||
new_job_list.add_job(name, None, STATE_QUEUED)
|
new_job_list.add_job(name, None, STATE_QUEUED)
|
||||||
changed = _set_state(name, STATE_QUEUED)
|
changed = _set_state(name, STATE_QUEUED)
|
||||||
@@ -185,6 +160,34 @@ def _jenkins_poll():
|
|||||||
changed = _set_state(name, STATE_RUNNING)
|
changed = _set_state(name, STATE_RUNNING)
|
||||||
if changed:
|
if changed:
|
||||||
new_changes_list.add_update(STATE_RUNNING, name)
|
new_changes_list.add_update(STATE_RUNNING, name)
|
||||||
|
|
||||||
|
def _jenkins_poll():
|
||||||
|
global poll_fail
|
||||||
|
global poll_fail_message
|
||||||
|
global job_list
|
||||||
|
global changes_list
|
||||||
|
|
||||||
|
while True:
|
||||||
|
time.sleep(jenkins_poll_interval)
|
||||||
|
try:
|
||||||
|
j = Jenkins(jenkins_url, username, password)
|
||||||
|
except Exception, e:
|
||||||
|
poll_fail = True
|
||||||
|
poll_fail_message = str(e)
|
||||||
|
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:
|
||||||
|
_process_build(name, build, new_job_list, new_changes_list)
|
||||||
|
else:
|
||||||
|
new_job_list.add_job(name, None, STATE_NOBUILDS)
|
||||||
|
else:
|
||||||
|
_process_queued_or_running(name, job, new_job_list, new_changes_list)
|
||||||
job_list = new_job_list
|
job_list = new_job_list
|
||||||
changes_list = new_changes_list
|
changes_list = new_changes_list
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user