blob: f0ee8cbc41eaeceeee69ac025e9b914c6b010605 [file] [log] [blame]
#!/usr/bin/env python3
#
# Copyright (c) 2019-2020 Arm Limited. All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
#
import json
import subprocess
class GerritServer:
def __init__(self, url, port=29418):
self.url = url
self.port = port
def query(self, project, q, username=None, keyfile=None):
cmd = ["ssh", "-p", str(self.port)]
if keyfile:
cmd += ["-i", keyfile]
if username:
cmd += ["{}@{}".format(username, self.url)]
else:
cmd += [self.url]
cmd += ["gerrit", "query", "--format=json", "--patch-sets",
"--comments", "--current-patch-set",
"project:{}".format(project)] + q
with subprocess.Popen(cmd, stdout=subprocess.PIPE) as proc:
changes = [json.loads(resp_line.decode()) for resp_line
in proc.stdout]
if not changes:
raise Exception("Error while querying Gerrit server {}.".format(
self.url))
return changes
class GerritProject:
def __init__(self, name, server):
self.name = name
self.server = server
def query(self, q, username=None, keyfile=None):
return self.server.query(self.name, q, username, keyfile)