third-party-ci-tools/monitoring/lastcomment-scoreboard/cinder_ci.py
Walter A. Boring IV 5c1d963c62 Added cinder_ci script
This script reads the output of the cinder/tools/generate_driver_list.py
then reads the CI_WIKI_NAME entries and then runs the cireporter style
report.

Change-Id: Icb78c28c25e0638f17abf21af820ef935fd12662
2017-02-10 21:31:47 +00:00

90 lines
2.8 KiB
Python
Executable File

#!/usr/bin/env python
"""Take input from Cinder's generate_driver_list and run the cireporter."""
import argparse
import json
import sys
import cireporter
def read_cinder_input(input_file_name):
"""Read the input of the cinder/tools/generate_driver_list.py."""
if input_file_name:
# reading from a file, not stdin
with open(input_file_name, "r") as input_file:
info = json.loads(input_file.read())
return info
else:
# read json from stdin
return json.loads(sys.stdin.read())
def process_ci_name(name):
"""Convert the _ to spaces."""
if name == "Cinder_Jenkins":
return 'Jenkins'
elif name:
return name.replace('_', ' ')
def add_ci_entry(ci_info, entry):
"""Make sure every CI NAME is unique in the ci_info."""
return list(set(ci_info)|set(entry))
def process_cinder_json(cinder_json):
'''Convert the cinder driver list output to something usable.'''
ci_info = []
for driver in cinder_json:
if 'ci_wiki_name' in driver and driver['ci_wiki_name']:
if (type(driver['ci_wiki_name']) is list or
type(driver['ci_wiki_name']) is tuple):
for entry in driver['ci_wiki_name']:
ci_info = add_ci_entry(ci_info,
[process_ci_name(entry)])
else:
name = process_ci_name(driver['ci_wiki_name'])
ci_info = add_ci_entry(ci_info, [name])
# Make Jenkins first in the list
ci_info = sorted(ci_info, key=lambda s: s.lower())
if 'Jenkins' in ci_info:
ci_info.remove('Jenkins')
ci_info.insert(0, 'Jenkins')
return ci_info
def main():
parser = argparse.ArgumentParser(description='list most recent comment by '
'reviewer')
parser.add_argument('-c', '--count',
default=100,
type=int,
help='unique gerrit name of the reviewer')
parser.add_argument('-i', '--input',
default=None,
help='json file containing output of cinder generate_'
'driver_list.py output. Defaults to stdin.')
parser.add_argument('-o', '--output',
default=None,
help='Write the output to a file. Defaults to stdout.')
args = parser.parse_args()
cinder_json = read_cinder_input(args.input)
ci_names = process_cinder_json(cinder_json)
print("Cinder 3rd Party CI Report: %s CI systems found" % len(ci_names))
for name in ci_names:
print("Checking CI: %s" % name)
cireporter.generate_report(name, 250, 'openstack/cinder')
if __name__ == "__main__":
main()