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