| #!/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) |