gerrit/auto-submit/gerrit-autosubmit | 60 +++++++++++++++++++---------------- 1 file changed, 33 insertions(+), 27 deletions(-)
New commits: commit 2b8fec90b689c911593da1e33d76c0144bc7abe7 Author: Miklos Vajna <vmik...@collabora.com> AuthorDate: Thu Jan 31 10:15:48 2019 +0100 Commit: Miklos Vajna <vmik...@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() _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits