| #!/usr/bin/env python3 |
| # -*- coding: utf-8 -*-" |
| # |
| # Copyright 2020 The Chromium OS Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| """Module containing methods interfacing with gerrit. |
| |
| i.e Create new bugfix change tickets, and reading metadata about a specific change. |
| """ |
| |
| from __future__ import print_function |
| import json |
| import requests |
| |
| from common import CHROMIUM_REVIEW_BASEURL |
| |
| |
| def get_commit(changeid): |
| """Retrieves current commit message for a change. |
| |
| May add some additional information to the fix patch for tracking purposes. |
| i.e attaching a tag |
| """ |
| get_commit_endpoint = (f'{CHROMIUM_REVIEW_BASEURL}/changes/{changeid}/' |
| 'revisions/current/commit') |
| |
| resp = requests.get(get_commit_endpoint) |
| resp_json = json.loads(resp.text[5:]) |
| |
| return resp_json |
| |
| |
| def get_reviewers(changeid): |
| """Retrieves list of reviewers from gerrit given a chromeos changeid.""" |
| list_reviewers_endpoint = (f'{CHROMIUM_REVIEW_BASEURL}/changes/{changeid}/' |
| 'reviewers/') |
| |
| resp = requests.get(list_reviewers_endpoint) |
| resp_json = json.loads(resp.text[5:]) |
| |
| return resp_json |
| |
| |
| def get_change(changeid): |
| """Retrieves ChangeInfo from gerrit using its changeid""" |
| get_change_endpoint = (f'{CHROMIUM_REVIEW_BASEURL}/changes/{changeid}/') |
| |
| resp = requests.get(get_change_endpoint) |
| resp_json = json.loads(resp.text[5:]) |
| |
| return resp_json |
| |
| |
| def generate_fix_commit_message(old_changeid): |
| """Generates new commit message for a fix change. |
| |
| Use script ./contrib/from_upstream.py to generate new commit msg |
| Commit message should include essential information: |
| i.e: |
| FROMGIT, FROMLIST, ANDROID, CHROMIUM, etc. |
| commit message indiciating what is happening |
| BUG=... |
| TEST=... |
| tag for Fixes: <upstream-sha> |
| """ |
| old_commit_msg = get_commit(old_changeid) |
| print(old_commit_msg) |
| |
| |
| def create_gerrit_change(reviewers, commit_msg): |
| """Uses gerrit api to handle creating gerrit change. |
| |
| Determines whether a change for a fix has already been created, |
| and avoids duplicate creations. |
| |
| May add some additional information to the fix patch for tracking purposes. |
| i.e attaching a tag, |
| """ |
| |
| # Call gerrit api to create new change if neccessary |
| print('Calling gerrit api', reviewers, commit_msg) |