OLD | NEW |
1 # Copyright (c) 2013 The Chromium OS Authors. All rights reserved. | 1 # Copyright (c) 2013 The Chromium OS Authors. All rights reserved. |
2 # Use of this source code is governed by a BSD-style license that can be | 2 # Use of this source code is governed by a BSD-style license that can be |
3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
4 | 4 |
5 """ | 5 """ |
6 Utilities for requesting information for a gerrit server via https. | 6 Utilities for requesting information for a gerrit server via https. |
7 | 7 |
8 https://gerrit-review.googlesource.com/Documentation/rest-api.html | 8 https://gerrit-review.googlesource.com/Documentation/rest-api.html |
9 """ | 9 """ |
10 | 10 |
(...skipping 512 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
523 | 523 |
524 | 524 |
525 def SubmitChange(host, change, wait_for_merge=True): | 525 def SubmitChange(host, change, wait_for_merge=True): |
526 """Submits a gerrit change via Gerrit.""" | 526 """Submits a gerrit change via Gerrit.""" |
527 path = 'changes/%s/submit' % change | 527 path = 'changes/%s/submit' % change |
528 body = {'wait_for_merge': wait_for_merge} | 528 body = {'wait_for_merge': wait_for_merge} |
529 conn = CreateHttpConn(host, path, reqtype='POST', body=body) | 529 conn = CreateHttpConn(host, path, reqtype='POST', body=body) |
530 return ReadHttpJsonResponse(conn, ignore_404=False) | 530 return ReadHttpJsonResponse(conn, ignore_404=False) |
531 | 531 |
532 | 532 |
| 533 def SetCommitMessage(host, change, description): |
| 534 """Updates a commit message.""" |
| 535 # First, edit the commit message in a draft. |
| 536 path = 'changes/%s/edit:message' % change |
| 537 body = {'message': description} |
| 538 conn = CreateHttpConn(host, path, reqtype='PUT', body=body) |
| 539 try: |
| 540 ReadHttpResponse(conn, ignore_404=False) |
| 541 except GerritError as e: |
| 542 # On success, gerrit returns status 204; anything else is an error. |
| 543 if e.http_status != 204: |
| 544 raise |
| 545 else: |
| 546 raise GerritError( |
| 547 'Unexpectedly received a 200 http status while editing message in ' |
| 548 'change %s' % change) |
| 549 |
| 550 # And then publish it. |
| 551 path = 'changes/%s/edit:publish' % change |
| 552 conn = CreateHttpConn(host, path, reqtype='POST', body={}) |
| 553 try: |
| 554 ReadHttpResponse(conn, ignore_404=False) |
| 555 except GerritError as e: |
| 556 # On success, gerrit returns status 204; anything else is an error. |
| 557 if e.http_status != 204: |
| 558 raise |
| 559 else: |
| 560 raise GerritError( |
| 561 'Unexpectedly received a 200 http status while publishing message ' |
| 562 'change in %s' % change) |
| 563 |
| 564 |
533 def GetReviewers(host, change): | 565 def GetReviewers(host, change): |
534 """Get information about all reviewers attached to a change.""" | 566 """Get information about all reviewers attached to a change.""" |
535 path = 'changes/%s/reviewers' % change | 567 path = 'changes/%s/reviewers' % change |
536 return ReadHttpJsonResponse(CreateHttpConn(host, path)) | 568 return ReadHttpJsonResponse(CreateHttpConn(host, path)) |
537 | 569 |
538 | 570 |
539 def GetReview(host, change, revision): | 571 def GetReview(host, change, revision): |
540 """Get review information about a specific revision of a change.""" | 572 """Get review information about a specific revision of a change.""" |
541 path = 'changes/%s/revisions/%s/review' % (change, revision) | 573 path = 'changes/%s/revisions/%s/review' % (change, revision) |
542 return ReadHttpJsonResponse(CreateHttpConn(host, path)) | 574 return ReadHttpJsonResponse(CreateHttpConn(host, path)) |
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
635 username = review.get('email', jmsg.get('name', '')) | 667 username = review.get('email', jmsg.get('name', '')) |
636 raise GerritError(200, 'Unable to set %s label for user "%s"' | 668 raise GerritError(200, 'Unable to set %s label for user "%s"' |
637 ' on change %s.' % (label, username, change)) | 669 ' on change %s.' % (label, username, change)) |
638 jmsg = GetChangeCurrentRevision(host, change) | 670 jmsg = GetChangeCurrentRevision(host, change) |
639 if not jmsg: | 671 if not jmsg: |
640 raise GerritError( | 672 raise GerritError( |
641 200, 'Could not get review information for change "%s"' % change) | 673 200, 'Could not get review information for change "%s"' % change) |
642 elif jmsg[0]['current_revision'] != revision: | 674 elif jmsg[0]['current_revision'] != revision: |
643 raise GerritError(200, 'While resetting labels on change "%s", ' | 675 raise GerritError(200, 'While resetting labels on change "%s", ' |
644 'a new patchset was uploaded.' % change) | 676 'a new patchset was uploaded.' % change) |
OLD | NEW |