[Libreoffice-commits] dev-tools.git: gerrit/auto-submit
Libreoffice Gerrit user
logerrit at kemper.freedesktop.org
Thu Jan 31 09:16:10 UTC 2019
gerrit/auto-submit/gerrit-autosubmit | 60 +++++++++++++++++++----------------
1 file changed, 33 insertions(+), 27 deletions(-)
New commits:
commit 2b8fec90b689c911593da1e33d76c0144bc7abe7
Author: Miklos Vajna <vmiklos at collabora.com>
AuthorDate: Thu Jan 31 10:15:48 2019 +0100
Commit: Miklos Vajna <vmiklos at collabora.com>
CommitDate: Thu Jan 31 10:15:48 2019 +0100
gerrit-autosubmit: reconnect after ssh disconnect
diff --git a/gerrit/auto-submit/gerrit-autosubmit b/gerrit/auto-submit/gerrit-autosubmit
index 4aa4f1e..fdc998e 100755
--- a/gerrit/auto-submit/gerrit-autosubmit
+++ b/gerrit/auto-submit/gerrit-autosubmit
@@ -8,6 +8,7 @@
import json
import os
import subprocess
+import time
def get_config(key):
@@ -20,33 +21,38 @@ server = get_config("gerrit.host")
project = get_config("gerrit.project")
branch = get_config("gerrit.defaultbranch")
-sock = subprocess.Popen(["ssh", "-o", "ServerAliveInterval=5", server, "gerrit", "stream-events"], stdout=subprocess.PIPE, bufsize=1)
-
-try:
- for line in iter(sock.stdout.readline, b''):
- event = json.loads(line)
-
- if event['type'] != "comment-added":
- continue
- if 'username' not in event['change']['owner'].keys():
- continue
- if event['change']['owner']['username'] != os.environ['USER']:
- continue
- if event['change']['project'] != project:
- continue
- if event['change']['branch'] != branch:
- continue
- if 'approvals' not in event.keys():
- continue
- if len([approval for approval in event['approvals'] if approval['type'] == "Verified" and approval['value'] == "1"]) != 1:
- continue
-
- rev = event['patchSet']['revision']
- cmd = "ssh " + server + " gerrit review -s " + rev
- print(cmd)
- os.system(cmd)
-except KeyboardInterrupt:
- print("Interrupted!")
+while True:
+ sock = subprocess.Popen(["ssh", "-o", "ServerAliveInterval=5", server, "gerrit", "stream-events"], stdout=subprocess.PIPE, bufsize=1)
+
+ try:
+ for line in iter(sock.stdout.readline, b''):
+ event = json.loads(line)
+
+ if event['type'] != "comment-added":
+ continue
+ if 'username' not in event['change']['owner'].keys():
+ continue
+ if event['change']['owner']['username'] != os.environ['USER']:
+ continue
+ if event['change']['project'] != project:
+ continue
+ if event['change']['branch'] != branch:
+ continue
+ if 'approvals' not in event.keys():
+ continue
+ if len([approval for approval in event['approvals'] if approval['type'] == "Verified" and approval['value'] == "1"]) != 1:
+ continue
+
+ rev = event['patchSet']['revision']
+ cmd = "ssh " + server + " gerrit review -s " + rev
+ print(cmd)
+ os.system(cmd)
+ except KeyboardInterrupt:
+ print("Interrupted.")
+ break
+
+ print("Socket closed, reconnecting.")
+ time.sleep(1)
sock.communicate()
More information about the Libreoffice-commits
mailing list