blob: f0ee8cbc41eaeceeee69ac025e9b914c6b010605 [file] [log] [blame]
Fathi Boudra422bf772019-12-02 11:10:16 +02001#!/usr/bin/env python3
2#
Leonardo Sandoval579c7372020-10-23 15:23:32 -05003# Copyright (c) 2019-2020 Arm Limited. All rights reserved.
Fathi Boudra422bf772019-12-02 11:10:16 +02004#
5# SPDX-License-Identifier: BSD-3-Clause
6#
7
8import json
9import subprocess
10
11class GerritServer:
12 def __init__(self, url, port=29418):
13 self.url = url
14 self.port = port
15
16 def query(self, project, q, username=None, keyfile=None):
17 cmd = ["ssh", "-p", str(self.port)]
18
19 if keyfile:
20 cmd += ["-i", keyfile]
21 if username:
22 cmd += ["{}@{}".format(username, self.url)]
23 else:
24 cmd += [self.url]
25
26 cmd += ["gerrit", "query", "--format=json", "--patch-sets",
27 "--comments", "--current-patch-set",
28 "project:{}".format(project)] + q
29
30 with subprocess.Popen(cmd, stdout=subprocess.PIPE) as proc:
31 changes = [json.loads(resp_line.decode()) for resp_line
32 in proc.stdout]
33 if not changes:
34 raise Exception("Error while querying Gerrit server {}.".format(
35 self.url))
36 return changes
37
38class GerritProject:
39 def __init__(self, name, server):
40 self.name = name
41 self.server = server
42
43 def query(self, q, username=None, keyfile=None):
44 return self.server.query(self.name, q, username, keyfile)