ArielGlenn has submitted this change and it was merged. Change subject: beta: autoupdate should restart parsoid ......................................................................
beta: autoupdate should restart parsoid The script runs as jenkins-deploy user on deployment-bastion. It ssh to deployment-parsoid2 to restart the parsoid daemon there as root. Added a check to make sure parsoid is running there. bug: 57233 Change-Id: Ie3f0a46d99a2e02b9a943bcd1d4a699a36631aee --- M files/misc/beta/wmf-beta-autoupdate.py 1 file changed, 60 insertions(+), 0 deletions(-) Approvals: ArielGlenn: Looks good to me, approved jenkins-bot: Verified diff --git a/files/misc/beta/wmf-beta-autoupdate.py b/files/misc/beta/wmf-beta-autoupdate.py index 044c38f..3855157 100755 --- a/files/misc/beta/wmf-beta-autoupdate.py +++ b/files/misc/beta/wmf-beta-autoupdate.py @@ -13,11 +13,15 @@ import argparse import logging import os.path +import time import subprocess import sys PATH_MWCORE = '/home/wikipedia/common/php-master' PATH_MWEXT = '/home/wikipedia/common/php-master/extensions' + +# Beta cluster instance used to run Parsoid daemon +PARSOID_INSTANCE = 'deployment-parsoid2.pmtpa.wmflabs' def main(): @@ -48,6 +52,9 @@ logging.getLevelName(logging.ERROR)) logger = logging.getLogger('main') + + parsoid_pre = parsoid_head_ts() + logger.info("Starting updating tasks...") exit_codes = [ pull_mediawiki(), @@ -56,6 +63,16 @@ update_parsoid_deps(), update_l10n(), ] + + parsoid_post = parsoid_head_ts() + logger.debug('Parsoid HEAD timestamps: %s -> %s', + parsoid_pre, parsoid_post) + if parsoid_post != parsoid_pre: + logger.info("Restarting updated Parsoid code base") + exit_codes.append(restart_parsoid()) + else: + logger.debug('Skipping Parsoid restart since code has not changed') + logger.info("Executions completed %s", exit_codes) final_exit = 0 @@ -90,6 +107,18 @@ return parser.parse_args() +def git_head_ts(git_dir): + proc = subprocess.check_output( + ['git', '--git-dir', git_dir, 'log', + '--pretty=tformat:%ct', '-1', 'HEAD']) + return proc.rstrip('\n') + + +def parsoid_head_ts(): + """Returns timestamp of the HEAD committer date""" + return git_head_ts(os.path.join(PATH_MWEXT, 'Parsoid/.git')) + + def pull_mediawiki(): """Updates MediaWiki core""" return runner(name='mwcore', path=PATH_MWCORE, cmd=['git', 'pull']) @@ -113,6 +142,37 @@ 'npm', 'install', '--verbose', '--color', 'always']) +def restart_parsoid(): + """Restart parsoid daemon via ssh""" + logger = logging.getLogger(__name__) + logger.info("restarting parsoid on %s", PARSOID_INSTANCE) + + parsoid_restart_cmd = [ + 'ssh', PARSOID_INSTANCE, + 'sudo -u root /etc/init.d/parsoid restart'] + logger.info("Executing %s", parsoid_restart_cmd) + try: + cmd = subprocess.Popen(args=parsoid_restart_cmd) + except OSError, exception: + logger.error(exception) + return False + + logger.info('Waiting for parsoid to launch...') + time.sleep(5) + logger.info('Checking parsoid is running...') + + try: + cmd = subprocess.Popen([ + 'ssh', PARSOID_INSTANCE, + '/etc/init.d/parsoid', 'status']) + status_exit_code = cmd.wait() + except OSError, exception: + logger.error(exception) + return False + + return status_exit_code + + def update_l10n(): """Localisation cache update""" return runner(name='mw-update-l10n', cmd=['mw-update-l10n']) -- To view, visit https://gerrit.wikimedia.org/r/98007 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ie3f0a46d99a2e02b9a943bcd1d4a699a36631aee Gerrit-PatchSet: 4 Gerrit-Project: operations/puppet Gerrit-Branch: production Gerrit-Owner: Hashar <has...@free.fr> Gerrit-Reviewer: ArielGlenn <ar...@wikimedia.org> Gerrit-Reviewer: jenkins-bot _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits