Adding gerrit request file with request methods
- These methods help facilitate querying gerrit for different statistics such as earliest merged commit date and number of merged commits - Next step will be to incorporate these methods into a few IRC bots Change-Id: Ic370d48c7d079a40d012bcaa6ae0cda78454e407
This commit is contained in:
parent
4316cbfadd
commit
a085b5dc52
|
@ -0,0 +1,67 @@
|
|||
#!/usr/bin/env python
|
||||
|
||||
from __future__ import print_function, unicode_literals
|
||||
|
||||
import json
|
||||
import requests
|
||||
|
||||
from dateutil.parser import parse as dparse
|
||||
|
||||
BASE_URL = "https://review.openstack.org/changes/?q=%s"
|
||||
|
||||
|
||||
def greq(**kwargs):
|
||||
gfilter = []
|
||||
for k, v in kwargs.items():
|
||||
gfilter.append('%s:%s' % (k, v))
|
||||
resp = requests.get(BASE_URL % ' AND '.join(gfilter))
|
||||
return json.loads(resp.text[4:])
|
||||
|
||||
|
||||
def get_merged(author):
|
||||
return greq(owner="{%s}" % author, status='merged')
|
||||
|
||||
|
||||
def get_abandoned(author):
|
||||
return greq(owner="{%s}" % author, status='abandoned')
|
||||
|
||||
|
||||
def earliest_merged(merged):
|
||||
return merged[-1]['submitted'].split()[0]
|
||||
|
||||
|
||||
def open_review(merged):
|
||||
longest = None
|
||||
for review in merged:
|
||||
d1 = dparse(review['created'])
|
||||
d2 = dparse(review['submitted'])
|
||||
dt = d2 - d1
|
||||
if not longest or dt > longest:
|
||||
longest = dt
|
||||
return longest.days
|
||||
|
||||
|
||||
def lines_added(merged):
|
||||
return sum(map(lambda x: x['insertions'], merged))
|
||||
|
||||
|
||||
def lines_deleted(merged):
|
||||
return sum(map(lambda x: x['deletions'], merged))
|
||||
|
||||
|
||||
def projects(merged):
|
||||
found = set()
|
||||
map(lambda x: found.add(x['project']), merged)
|
||||
return "\n\t".join(list(sorted(found)))
|
||||
|
||||
|
||||
def stats(author):
|
||||
merged = get_merged(author)
|
||||
abandoned = get_abandoned(author)
|
||||
return "\n".join(["Cake Day: %s" % earliest_merged(merged),
|
||||
"Num Merged: %s" % len(merged),
|
||||
"Num Abandoned: %s" % len(abandoned),
|
||||
"Longest Open Merged Review: %s" % open_review(merged),
|
||||
"Lines Added: %s" % lines_added(merged),
|
||||
"Lines Deleted: %s" % lines_deleted(merged),
|
||||
"Projects: %s" % projects(merged)])
|
Loading…
Reference in New Issue