summaryrefslogtreecommitdiffstats
path: root/tools/pharos-dashboard/dashboard/jenkins/jenkins_util.py
diff options
context:
space:
mode:
Diffstat (limited to 'tools/pharos-dashboard/dashboard/jenkins/jenkins_util.py')
-rw-r--r--tools/pharos-dashboard/dashboard/jenkins/jenkins_util.py70
1 files changed, 70 insertions, 0 deletions
diff --git a/tools/pharos-dashboard/dashboard/jenkins/jenkins_util.py b/tools/pharos-dashboard/dashboard/jenkins/jenkins_util.py
new file mode 100644
index 00000000..ba945639
--- /dev/null
+++ b/tools/pharos-dashboard/dashboard/jenkins/jenkins_util.py
@@ -0,0 +1,70 @@
+import dashboard.jenkins.jenkins_adapter as jenkins
+import re
+
+
+def parse_slave_data(slave_dict, slave):
+ slave_dict['status'] = get_slave_status(slave)
+ slave_dict['status_color'] = get_status_color(slave)
+ slave_dict['slaveurl'] = get_slave_url(slave)
+ job = jenkins.get_jenkins_job(slave['displayName'])
+ if job is not None:
+ slave_dict['last_job'] = parse_job(job)
+
+
+def parse_job(job):
+ result = parse_job_string(job['lastBuild']['fullDisplayName'])
+ result['url'] = job['url']
+ result['color'] = get_job_color(job)
+ if job['lastBuild']['building']:
+ result['blink'] = 'class=blink_me'
+ return result
+
+
+def parse_job_string(full_displayname):
+ job = {}
+ tokens = re.split(r'[ -]', full_displayname)
+ for i in range(len(tokens)):
+ if tokens[i] == 'os':
+ job['scenario'] = '-'.join(tokens[i: i + 4])
+ elif tokens[i] in ['fuel', 'joid', 'apex', 'compass']:
+ job['installer'] = tokens[i]
+ elif tokens[i] in ['master', 'arno', 'brahmaputra', 'colorado']:
+ job['branch'] = tokens[i]
+
+ tokens = full_displayname.split(' ')
+ job['name'] = tokens[0]
+ return job
+
+
+# TODO: use css
+def get_job_color(job):
+ if job['lastBuild']['building'] is True:
+ return '#646F73'
+ result = job['lastBuild']['result']
+ if result == 'SUCCESS':
+ return '#33cc00'
+ if result == 'FAILURE':
+ return '#FF5555'
+ if result == 'UNSTABLE':
+ return '#EDD62B'
+
+
+# TODO: use css
+def get_status_color(slave):
+ if not slave['offline'] and slave['idle']:
+ return '#C8D6C3'
+ if not slave['offline']:
+ return '#BEFAAA'
+ return '#FAAAAB'
+
+
+def get_slave_url(slave):
+ return 'https://build.opnfv.org/ci/computer/' + slave['displayName']
+
+
+def get_slave_status(slave):
+ if not slave['offline'] and slave['idle']:
+ return 'online / idle'
+ if not slave['offline']:
+ return 'online'
+ return 'offline'