Index: git_cl.py |
diff --git a/git_cl.py b/git_cl.py |
index e3e3a194000a94b58923e0766afe3586ea90b3e2..74a72739bc6c13485a9e2b7a656f745a9fd6c7db 100755 |
--- a/git_cl.py |
+++ b/git_cl.py |
@@ -395,34 +395,42 @@ def trigger_try_jobs(auth_config, changelist, options, masters, category): |
print('\n'.join(print_text)) |
-def fetch_try_jobs(auth_config, changelist, options): |
+def fetch_try_jobs(auth_config, changelist, buildbucket_host, |
+ patchset=None): |
"""Fetches try jobs from buildbucket. |
Returns a map from build id to build info as a dictionary. |
""" |
- rietveld_url = settings.GetDefaultServerUrl() |
- rietveld_host = urlparse.urlparse(rietveld_url).hostname |
- authenticator = auth.get_authenticator_for_host(rietveld_host, auth_config) |
+ assert buildbucket_host |
+ assert changelist.GetIssue(), 'CL must be uploaded first' |
+ assert changelist.GetCodereviewServer(), 'CL must be uploaded first' |
+ patchset = patchset or changelist.GetMostRecentPatchset() |
+ assert patchset, 'CL must be uploaded first' |
+ |
+ codereview_url = changelist.GetCodereviewServer() |
+ codereview_host = urlparse.urlparse(codereview_url).hostname |
+ authenticator = auth.get_authenticator_for_host(codereview_host, auth_config) |
if authenticator.has_cached_credentials(): |
http = authenticator.authorize(httplib2.Http()) |
else: |
print('Warning: Some results might be missing because %s' % |
# Get the message on how to login. |
- (auth.LoginRequiredError(rietveld_host).message,)) |
+ (auth.LoginRequiredError(codereview_host).message,)) |
http = httplib2.Http() |
http.force_exception_to_status_code = True |
- buildset = 'patch/rietveld/{hostname}/{issue}/{patch}'.format( |
- hostname=rietveld_host, |
+ buildset = 'patch/{codereview}/{hostname}/{issue}/{patch}'.format( |
+ codereview='gerrit' if changelist.IsGerrit() else 'rietveld', |
+ hostname=codereview_host, |
issue=changelist.GetIssue(), |
- patch=options.patchset) |
+ patch=patchset) |
params = {'tag': 'buildset:%s' % buildset} |
builds = {} |
while True: |
url = 'https://{hostname}/_ah/api/buildbucket/v1/search?{params}'.format( |
- hostname=options.buildbucket_host, |
+ hostname=buildbucket_host, |
params=urllib.urlencode(params)) |
content = _buildbucket_retry('fetching try jobs', http, url, 'GET') |
for build in content.get('builds', []): |
@@ -4838,23 +4846,25 @@ def CMDtry_results(parser, args): |
if not cl.GetIssue(): |
parser.error('Need to upload first') |
- if not options.patchset: |
- options.patchset = cl.GetMostRecentPatchset() |
- if options.patchset and options.patchset != cl.GetPatchset(): |
- print( |
- '\nWARNING Mismatch between local config and server. Did a previous ' |
- 'upload fail?\ngit-cl try always uses latest patchset from rietveld. ' |
- 'Continuing using\npatchset %s.\n' % options.patchset) |
+ patchset = options.patchset |
+ if not patchset: |
+ patchset = cl.GetMostRecentPatchset() |
+ if not patchset: |
+ parser.error('Codereview doesn\'t know about issue %s. ' |
+ 'No access to issue or wrong issue number?\n' |
+ 'Either upload first, or pass --patchset explicitely' % |
+ cl.GetIssue()) |
+ |
+ if patchset != cl.GetPatchset(): |
+ print('WARNING: Mismatch between local config and server. Did a previous ' |
+ 'upload fail?\n' |
+ 'By default, git cl try uses latest patchset from codereview.\n' |
+ 'Continuing using patchset %s.\n' % patchset) |
try: |
- jobs = fetch_try_jobs(auth_config, cl, options) |
+ jobs = fetch_try_jobs(auth_config, cl, options.buildbucket_host, patchset) |
except BuildbucketResponseException as ex: |
print('Buildbucket error: %s' % ex) |
return 1 |
- except Exception as e: |
tandrii(chromium)
2016/10/06 13:21:10
there is no value in this, stack trace is printed
|
- stacktrace = (''.join(traceback.format_stack()) + traceback.format_exc()) |
- print('ERROR: Exception when trying to fetch try jobs: %s\n%s' % |
- (e, stacktrace)) |
- return 1 |
if options.json: |
write_try_results_json(options.json, jobs) |
else: |