blob: a58e792902f4d499142c11a41c593301ad65fb3a [file] [log] [blame]
#!/usr/bin/env python
# Copyright 2015 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
"""Query build slave hardware info, and print it to stdout as csv."""
import cStringIO
import csv
import json
import mimetools
import sys
import urllib2
_MASTERS = [
'chromium.perf',
'tryserver.chromium.perf',
]
_KEYS = [
'master', 'builder', 'hostname',
'osfamily', 'os version', 'windows version',
'product name', 'architecture', 'processor count', 'memory total',
'git version',
'android device 1', 'android device 2',
'android device 3', 'android device 4',
'android device 5', 'android device 6',
'android device 7', 'android device 8',
]
def main():
writer = csv.DictWriter(sys.stdout, _KEYS)
writer.writeheader()
for master_name in _MASTERS:
master_data = json.load(urllib2.urlopen(
'http://build.chromium.org/p/%s/json/slaves' % master_name))
slaves = sorted(master_data.iteritems(), key=lambda x: x[1]['builders'])
for slave_name, slave_data in slaves:
for builder_name in slave_data['builders']:
row = {
'master': master_name,
'builder': builder_name,
'hostname': slave_name,
}
host_data = slave_data['host']
if host_data:
row.update(dict(mimetools.Message(cStringIO.StringIO(host_data))))
if 'product name' not in row and slave_name.startswith('slave'):
row['product name'] = 'Google Compute Engine'
writer.writerow(row)
if __name__ == '__main__':
main()