Browse code

add a script to print a json summary of our jenkins configs

Anthony Young authored on 2011/11/15 04:05:04
Showing 1 changed files
1 1
new file mode 100755
... ...
@@ -0,0 +1,45 @@
0
+#!/usr/bin/python
1
+import urllib
2
+import json
3
+import sys
4
+
5
+
6
+def print_usage():
7
+    print "Usage: %s [jenkins_url (eg. http://50.56.12.202:8080/)]"\
8
+          % sys.argv[0]
9
+    sys.exit()
10
+
11
+
12
+def fetch_blob(url):
13
+    return json.loads(urllib.urlopen(url + '/api/json').read())
14
+
15
+
16
+if len(sys.argv) < 2:
17
+    print_usage()
18
+
19
+BASE_URL = sys.argv[1]
20
+
21
+root = fetch_blob(BASE_URL)
22
+results = {}
23
+for job_url in root['jobs']:
24
+    job = fetch_blob(job_url['url'])
25
+    if job.get('activeConfigurations'):
26
+        (tag, name) = job['name'].split('-')
27
+        if not results.get(tag):
28
+            results[tag] = {}
29
+        if not results[tag].get(name):
30
+            results[tag][name] = []
31
+
32
+        for config_url in job['activeConfigurations']:
33
+            config = fetch_blob(config_url['url'])
34
+
35
+            log_url = ''
36
+            if config.get('lastBuild'):
37
+                log_url = config['lastBuild']['url'] + 'console'
38
+
39
+            results[tag][name].append({'test': config['displayName'],
40
+                                       'status': config['color'],
41
+                                       'logUrl': log_url,
42
+                                       'healthReport': config['healthReport']})
43
+
44
+print json.dumps(results)