You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@aurora.apache.org by wf...@apache.org on 2014/03/26 19:50:21 UTC
git commit: Allow override of default RB server in shipits tool.
Repository: incubator-aurora
Updated Branches:
refs/heads/master 77db3e541 -> 9d6e13810
Allow override of default RB server in shipits tool.
Reviewed at https://reviews.apache.org/r/19519/
Project: http://git-wip-us.apache.org/repos/asf/incubator-aurora/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-aurora/commit/9d6e1381
Tree: http://git-wip-us.apache.org/repos/asf/incubator-aurora/tree/9d6e1381
Diff: http://git-wip-us.apache.org/repos/asf/incubator-aurora/diff/9d6e1381
Branch: refs/heads/master
Commit: 9d6e138105702c9961b1ce72080c425892b58fc6
Parents: 77db3e5
Author: Bill Farner <wf...@apache.org>
Authored: Wed Mar 26 11:49:55 2014 -0700
Committer: Bill Farner <wf...@apache.org>
Committed: Wed Mar 26 11:49:55 2014 -0700
----------------------------------------------------------------------
build-support/tools/list-missing-shipits | 82 ++++++++++++++++++---------
1 file changed, 54 insertions(+), 28 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-aurora/blob/9d6e1381/build-support/tools/list-missing-shipits
----------------------------------------------------------------------
diff --git a/build-support/tools/list-missing-shipits b/build-support/tools/list-missing-shipits
index 31aada9..1bad980 100755
--- a/build-support/tools/list-missing-shipits
+++ b/build-support/tools/list-missing-shipits
@@ -1,9 +1,7 @@
#!/usr/bin/env python
-"""Utility to show reviews missing your shipit.
+"""Utility to show outstanding reviews for the project
-Usage: list-missing-shipits [REVIEWBOARD_USERNAME]
-
-If not specified REVIEWBOARD_USERNAME defaults to the current user's name.
+Usage: list-missing-shipits [--rb-server=RB_SERVER_URL]
"""
from __future__ import print_function
@@ -14,15 +12,7 @@ import os
import subprocess
import sys
-
-USERNAME = sys.argv[1] if len(sys.argv) > 1 else getpass.getuser()
-RBT_PATH = os.path.realpath(os.path.join(os.path.dirname(sys.argv[0]), '..', '..', 'rbt'))
-
-
-def rb_api_get(resource, params={}):
- return json.loads(subprocess.Popen(
- [RBT_PATH, 'api-get', resource, '--'] + ['--%s=%s' % (k, v) for k, v in params.items()],
- stdout=subprocess.PIPE).communicate()[0])
+from optparse import OptionParser
class Review(object):
@@ -66,8 +56,8 @@ class ReviewRequest(object):
return [p['title'] for p in self._request['target_people']]
@property
- def url(self):
- return 'https://reviews.apache.org%s' % self._request['url']
+ def id(self):
+ return self._request['id']
@property
def summary(self):
@@ -75,27 +65,63 @@ class ReviewRequest(object):
return ((full[:(self.SUMMARY_TRUNCATE - 3)] + '...')
if len(full) > self.SUMMARY_TRUNCATE else full)
- def get_reviews(self):
- return [Review(r) for r in rb_api_get(self._request['links']['reviews']['href'])['reviews']]
+ @property
+ def reviews_href(self):
+ return self._request['links']['reviews']['href']
+
+ @property
+ def diffs_href(self):
+ return self._request['links']['diffs']['href']
+
+
+class Reviewboard(object):
+ def __init__(self, url=None):
+ self._path = os.path.realpath(os.path.join(os.path.dirname(sys.argv[0]), '..', '..', 'rbt'))
+ self._url = url
+
+ def _get(self, resource, params={}):
+ base_cmd = [self._path, 'api-get']
+ if self._url is not None:
+ base_cmd += ['--server=%s' % self._url]
+ return json.loads(subprocess.Popen(
+ base_cmd + [resource, '--'] + ['--%s=%s' % (k, v) for k, v in params.items()],
+ stdout=subprocess.PIPE).communicate()[0])
+
+ def get_server_url(self):
+ return self._get('info')['info']['site']['url']
- def get_diffs(self):
- return [Diff(d) for d in rb_api_get(self._request['links']['diffs']['href'])['diffs']]
+ def get_review_requests(self, params):
+ return [ReviewRequest(r) for r in self._get('review-requests', params)['review_requests']]
+ def get_reviews(self, review_request):
+ return [Review(r) for r in self._get(review_request.reviews_href)['reviews']]
-def get_review_requests(params):
- return [ReviewRequest(r) for r in rb_api_get('review-requests', params)['review_requests']]
+ def get_diffs(self, review_request):
+ return [Diff(d) for d in self._get(review_request.diffs_href)['diffs']]
def main():
- pending_requests = get_review_requests({
+ parser = OptionParser()
+ parser.add_option('--server',
+ dest='server',
+ help='ReviewBoard server',
+ default=None)
+ (options, args) = parser.parse_args()
+
+ api = Reviewboard(options.server)
+
+ server_url = api.get_server_url()
+ def request_url(id):
+ return '%sr/%s' % (server_url, id)
+
+ pending_requests = api.get_review_requests({
'to-groups': 'Aurora',
'status': 'pending',
})
def to_row(request):
- reviews = request.get_reviews()
- diffs = request.get_diffs()
- last = [-1]
+ reviews = api.get_reviews(request)
+ diffs = api.get_diffs(request)
ships_required = set(request.ships_required)
for event in sorted(reviews + diffs, key=lambda x: x.timestamp, reverse=True):
if isinstance(event, Review):
@@ -118,7 +144,7 @@ def main():
break
return (str(event.timestamp),
- request.url,
+ request_url(request.id),
request.submitter.ljust(10),
request.summary.ljust(ReviewRequest.SUMMARY_TRUNCATE),
waiting_for)
@@ -132,14 +158,14 @@ def main():
recently_submitted_days = 1
updated_from = ((datetime.datetime.utcnow() - datetime.timedelta(days=1))
.replace(microsecond=0).isoformat())
- recently_submitted = get_review_requests({
+ recently_submitted = api.get_review_requests({
'to-groups': 'Aurora',
'status': 'submitted',
'last-updated-from': updated_from
})
print('Recently submitted: %s' % len(recently_submitted))
for request in recently_submitted:
- print('\t'.join((request.url, request.submitter, request.summary)))
+ print('\t'.join((request_url(request.id), request.submitter, request.summary)))
if __name__ == '__main__':