jenkins.py refactored JobUpdates

This commit is contained in:
James Booth
2014-06-10 00:45:46 +01:00
parent 19352d32ff
commit 9a16e4881d

View File

@@ -116,41 +116,21 @@ class JobList():
class JobUpdates(): class JobUpdates():
def __init__(self): def __init__(self):
self.failing = [] self.states = {}
self.passing = [] self.states[STATE_FAILURE] = []
self.unstable = [] self.states[STATE_SUCCESS] = []
self.queued = [] self.states[STATE_UNSTABLE] = []
self.running = [] self.states[STATE_QUEUED] = []
self.states[STATE_RUNNING] = []
def add_failing(self, name, build_number): def add_update(self, state, name, build_number=None):
self.failing.append((name, build_number)) if build_number:
self.states[state].append((name, build_number))
else:
self.states[state].append(name)
def get_failing(self): def get_in_state(self, state):
return self.failing return self.states[state]
def add_passing(self, name, build_number):
self.passing.append((name, build_number))
def get_passing(self):
return self.passing
def add_unstable(self, name, build_number):
self.unstable.append((name, build_number))
def get_unstable(self):
return self.unstable
def add_queued(self, name):
self.queued.append(name)
def get_queued(self):
return self.queued
def add_running(self, name):
self.running.append(name)
def get_running(self):
return self.running
def _jenkins_poll(): def _jenkins_poll():
global poll_fail global poll_fail
@@ -181,17 +161,17 @@ def _jenkins_poll():
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)
if changed: if changed:
new_changes_list.add_failing(name, build.get_number()) new_changes_list.add_update(STATE_FAILURE, name, build.get_number())
elif build.get_status() == STATE_SUCCESS: elif build.get_status() == STATE_SUCCESS:
new_job_list.add_job(name, build.get_number(), STATE_SUCCESS) new_job_list.add_job(name, build.get_number(), STATE_SUCCESS)
changed = _set_state(name, STATE_SUCCESS) changed = _set_state(name, STATE_SUCCESS)
if changed: if changed:
new_changes_list.add_passing(name, build.get_number()) new_changes_list.add_update(STATE_SUCCESS, name, build.get_number())
elif build.get_status() == STATE_UNSTABLE: elif build.get_status() == STATE_UNSTABLE:
new_job_list.add_job(name, build.get_number(), STATE_UNSTABLE) new_job_list.add_job(name, build.get_number(), STATE_UNSTABLE)
changed = _set_state(name, STATE_UNSTABLE) changed = _set_state(name, STATE_UNSTABLE)
if changed: if changed:
new_changes_list.add_unstable(name, build.get_number()) new_changes_list.add_update(STATE_UNSTABLE, name, build.get_number())
else: else:
new_job_list.add_job(name, None, STATE_NOBUILDS) new_job_list.add_job(name, None, STATE_NOBUILDS)
else: else:
@@ -199,12 +179,12 @@ def _jenkins_poll():
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)
if changed: if changed:
new_changes_list.add_queued(name) new_changes_list.add_update(STATE_QUEUED, name)
elif job.is_running(): elif job.is_running():
new_job_list.add_job(name, None, STATE_RUNNING) new_job_list.add_job(name, None, STATE_RUNNING)
changed = _set_state(name, STATE_RUNNING) changed = _set_state(name, STATE_RUNNING)
if changed: if changed:
new_changes_list.add_running(name) new_changes_list.add_update(STATE_RUNNING, name)
job_list = new_job_list job_list = new_job_list
changes_list = new_changes_list changes_list = new_changes_list
@@ -217,19 +197,19 @@ def _prof_callback():
else: else:
prof.log_warning("Jenkins poll failed") prof.log_warning("Jenkins poll failed")
elif changes_list: elif changes_list:
for name in changes_list.get_queued(): for name in changes_list.get_in_state(STATE_QUEUED):
prof.win_show_cyan(win_tag, name + " " + STATE_QUEUED) prof.win_show_cyan(win_tag, name + " " + STATE_QUEUED)
for name in changes_list.get_running(): for name in changes_list.get_in_state(STATE_RUNNING):
prof.win_show_cyan(win_tag, name + " " + STATE_RUNNING) prof.win_show_cyan(win_tag, name + " " + STATE_RUNNING)
for name, build_number in changes_list.get_passing(): for name, build_number in changes_list.get_in_state(STATE_SUCCESS):
prof.win_show_green(win_tag, name + " #" + str(build_number) + " " + STATE_SUCCESS) prof.win_show_green(win_tag, name + " #" + str(build_number) + " " + STATE_SUCCESS)
if enable_notify: if enable_notify:
prof.notify(name + " " + STATE_SUCCESS, 5000, "Jenkins") prof.notify(name + " " + STATE_SUCCESS, 5000, "Jenkins")
for name, build_number in changes_list.get_unstable(): for name, build_number in changes_list.get_in_state(STATE_UNSTABLE):
prof.win_show_yellow(win_tag, name + " #" + str(build_number) + " " + STATE_UNSTABLE) prof.win_show_yellow(win_tag, name + " #" + str(build_number) + " " + STATE_UNSTABLE)
if enable_notify: if enable_notify:
prof.notify(name + " " + STATE_UNSTABLE, 5000, "Jenkins") prof.notify(name + " " + STATE_UNSTABLE, 5000, "Jenkins")
for name, build_number in changes_list.get_failing(): for name, build_number in changes_list.get_in_state(STATE_FAILURE):
prof.win_show_red(win_tag, name + " #" + str(build_number) + " " + STATE_FAILURE) prof.win_show_red(win_tag, name + " #" + str(build_number) + " " + STATE_FAILURE)
if enable_notify: if enable_notify:
prof.notify(name + " " + STATE_FAILURE, 5000, "Jenkins") prof.notify(name + " " + STATE_FAILURE, 5000, "Jenkins")