#!/usr/bin/python # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import json import sys import urllib 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))