Add ability to generically call most Gerrit APIs.
This will make it easier to call new or uncommon Gerrit APIs, without
needing to add dedicated methods for each one. This also makes it easier
to debug API calls by exposing the raw response data, which is often
processed or filtered in the existing wrapper methods.
BUG=1052179
R=linxinan@chromium.org
Change-Id: I0b594a9fdaabae4b0ebb379dc5473f4d6de67a13
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/tools/depot_tools/+/3235714
Auto-Submit: Michael Moss <mmoss@chromium.org>
Reviewed-by: Dirk Pranke <dpranke@google.com>
Reviewed-by: Xinan Lin <linxinan@chromium.org>
Commit-Queue: Dirk Pranke <dpranke@google.com>
diff --git a/gerrit_util.py b/gerrit_util.py
index 6680ee0..4d5e78b 100644
--- a/gerrit_util.py
+++ b/gerrit_util.py
@@ -502,6 +502,17 @@
return json.loads(s)
+def CallGerritApi(host, path, **kwargs):
+ """Helper for calling a Gerrit API that returns a JSON response."""
+ conn_kwargs = {}
+ conn_kwargs.update(
+ (k, kwargs[k]) for k in ['reqtype', 'headers', 'body'] if k in kwargs)
+ conn = CreateHttpConn(host, path, **conn_kwargs)
+ read_kwargs = {}
+ read_kwargs.update((k, kwargs[k]) for k in ['accept_statuses'] if k in kwargs)
+ return ReadHttpJsonResponse(conn, **read_kwargs)
+
+
def QueryChanges(host, params, first_param=None, limit=None, o_params=None,
start=None):
"""