| #!/usr/bin/python |
| import urllib |
| import json |
| import sys |
| |
| |
| def print_usage(): |
| print ("Usage: %s [jenkins_url (eg. http://50.56.12.202:8080/)]" |
| % sys.argv[0]) |
| sys.exit() |
| |
| |
| def fetch_blob(url): |
| return json.loads(urllib.urlopen(url + '/api/json').read()) |
| |
| |
| if len(sys.argv) < 2: |
| print_usage() |
| |
| BASE_URL = sys.argv[1] |
| |
| root = fetch_blob(BASE_URL) |
| results = {} |
| for job_url in root['jobs']: |
| job = fetch_blob(job_url['url']) |
| if job.get('activeConfigurations'): |
| (tag, name) = job['name'].split('-') |
| if not results.get(tag): |
| results[tag] = {} |
| if not results[tag].get(name): |
| results[tag][name] = [] |
| |
| for config_url in job['activeConfigurations']: |
| config = fetch_blob(config_url['url']) |
| |
| log_url = '' |
| if config.get('lastBuild'): |
| log_url = config['lastBuild']['url'] + 'console' |
| |
| results[tag][name].append({'test': config['displayName'], |
| 'status': config['color'], |
| 'logUrl': log_url, |
| 'healthReport': config['healthReport']}) |
| |
| print json.dumps(results) |