#!/usr/bin/env python2.7 -u import subprocess import os import sys import logging sys.path.append(os.path.join(os.path.dirname(__file__), '..', '..')) from zulip_tools import FAIL, WARNING, ENDC, su_to_zulip logging.basicConfig(format="%(asctime)s upgrade-zulip-stage-2: %(message)s", level=logging.INFO) if os.getuid() != 0: logging.error("Must be run as root.") sys.exit(1) if len(sys.argv) != 2: print FAIL + "Usage: %s " % (sys.argv[0],) + ENDC sys.exit(1) deploy_path = sys.argv[1] logging.info("Upgrading system packages...") subprocess.check_call(["apt-get", "update"]) subprocess.check_call(["apt-get", "upgrade"]) logging.info("Stopping Zulip...") subprocess.check_call(["supervisorctl", "stop", "zulip-workers:*", "zulip-django", "zulip-tornado"], preexec_fn=su_to_zulip) logging.info("Applying puppet changes...") subprocess.check_call(["./scripts/zulip-puppet-apply", "--force"]) subprocess.check_call(["apt-get", "upgrade"]) logging.info("Applying database migrations...") subprocess.check_call(["./manage.py", "migrate"], preexec_fn=su_to_zulip) logging.info("Restarting Zulip...") subprocess.check_call(["cp", "-rT", os.path.join(deploy_path, 'prod-static/serve'), '/home/zulip/prod-static'], preexec_fn=su_to_zulip) subprocess.check_output(["./scripts/restart-server"], preexec_fn=su_to_zulip)