From 3b5ef3b0a88247eeafeee878de528aad71f9fd4b Mon Sep 17 00:00:00 2001 From: maxbr Date: Fri, 19 Aug 2016 17:10:31 +0200 Subject: Split the dashboard into different apps, add tests JIRA: RELENG-12 Signed-off-by: maxbr --- .../dashboard/jenkins/jenkins_adapter.py | 84 ---------------------- .../dashboard/jenkins/jenkins_util.py | 70 ------------------ 2 files changed, 154 deletions(-) delete mode 100644 tools/pharos-dashboard/dashboard/jenkins/jenkins_adapter.py delete mode 100644 tools/pharos-dashboard/dashboard/jenkins/jenkins_util.py (limited to 'tools/pharos-dashboard/dashboard/jenkins') diff --git a/tools/pharos-dashboard/dashboard/jenkins/jenkins_adapter.py b/tools/pharos-dashboard/dashboard/jenkins/jenkins_adapter.py deleted file mode 100644 index cd848ebb..00000000 --- a/tools/pharos-dashboard/dashboard/jenkins/jenkins_adapter.py +++ /dev/null @@ -1,84 +0,0 @@ -import requests -import logging -from django.core.cache import cache - -logger = logging.getLogger(__name__) - - -# TODO: implement caching decorator, cache get_* functions -def get_json(url): - if cache.get(url) is None: - try: - response = requests.get(url) - json = response.json() - cache.set(url, json, 180) # cache result for 180 seconds - return response.json() - except requests.exceptions.RequestException as e: - logger.exception(e) - except ValueError as e: - logger.exception(e) - else: - return cache.get(url) - - -def get_all_slaves(): - url = "https://build.opnfv.org/ci/computer/api/json?tree=computer[displayName,offline,idle]" - json = get_json(url) - if json is not None: - return json['computer'] # return list of dictionaries - return [] - - -def get_slave(slavename): - slaves = get_all_slaves() - for slave in slaves: - if slave['displayName'] == slavename: - return slave - return {} - - -def get_ci_slaves(): - url = "https://build.opnfv.org/ci/label/ci-pod/api/json?tree=nodes[nodeName,offline,idle]" - json = get_json(url) - if json is not None: - return json['nodes'] - return [] - - -def get_all_jobs(): - url = "https://build.opnfv.org/ci/api/json?tree=jobs[displayName,url,lastBuild[fullDisplayName,building,builtOn,timestamp,result]]" - json = get_json(url) - if json is not None: - return json['jobs'] # return list of dictionaries - return [] - - -def get_jenkins_job(slavename): - jobs = get_all_jobs() - max_time = 0 - last_job = None - for job in jobs: - if job['lastBuild'] is not None: - if job['lastBuild']['builtOn'] == slavename: - if job['lastBuild']['building'] is True: - return job # return active build - if job['lastBuild']['timestamp'] > max_time: - last_job = job - max_time = job['lastBuild']['timestamp'] - return last_job - - -def is_ci_slave(slavename): - ci_slaves = get_ci_slaves() - for ci_slave in ci_slaves: - if ci_slave['nodeName'] == slavename: - return True - return False - - -def is_dev_pod(slavename): - if is_ci_slave(slavename): - return False - if slavename.find('pod') != -1: - return True - return False diff --git a/tools/pharos-dashboard/dashboard/jenkins/jenkins_util.py b/tools/pharos-dashboard/dashboard/jenkins/jenkins_util.py deleted file mode 100644 index ba945639..00000000 --- a/tools/pharos-dashboard/dashboard/jenkins/jenkins_util.py +++ /dev/null @@ -1,70 +0,0 @@ -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' -- cgit 1.2.3-korg