[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