Muehlenhoff has uploaded a new change for review. https://gerrit.wikimedia.org/r/236549
Change subject: Add a Salt returner for local logging ...................................................................... Add a Salt returner for local logging Also add a workaround for Salt bug writing out it's return status to stdout Change-Id: I7e61b64afb1c6b43a22fa3513ab93ff9e04fb26d --- M debian/changelog M debian/debdeploy-minion.install M master/debdeploy A minion/debdeploy-log.py 4 files changed, 30 insertions(+), 3 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/operations/debs/debdeploy refs/changes/49/236549/1 diff --git a/debian/changelog b/debian/changelog index 0a9e091..15cd1bb 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,10 @@ +debdeploy (0.0.5-1) jessie-wikimedia; urgency=medium + + * Add a Salt returner for local logging + * Add workaround for Salt bug writing out it's return status to stdout + + -- Moritz Muehlenhoff <mmuhlenh...@wikimedia.org> Mon, 07 Sep 2015 15:20:01 +0200 + debdeploy (0.0.4-1) jessie-wikimedia; urgency=medium * Implement list-server-groups command diff --git a/debian/debdeploy-minion.install b/debian/debdeploy-minion.install index 270b344..e77960b 100644 --- a/debian/debdeploy-minion.install +++ b/debian/debdeploy-minion.install @@ -1,3 +1,4 @@ minion/debdeploy-minion.py /usr/lib/python2.7/dist-packages/salt/modules/ minion/debdeploy_restart.py /usr/lib/python2.7/dist-packages/salt/modules/ +minion/debdeploy-log.py /usr/lib/python2.7/dist-packages/salt/returners/ diff --git a/master/debdeploy b/master/debdeploy index 5912645..c22d292 100755 --- a/master/debdeploy +++ b/master/debdeploy @@ -53,8 +53,12 @@ jid = joblogdb.get_jobid(opt.updatefile, i) # SaltRunner always emits its status on stdout, https://github.com/saltstack/salt/issues/21392 - # TODO: Needs some kludge to suppress it - job = runner.cmd('jobs.print_job', (jid,)) + # Can be dropped once fixed upstream + with open('/dev/null', 'w') as discard_output: + oldstdout = sys.stdout + sys.stdout = discard_output + job = runner.cmd('jobs.print_job', (jid,)) + sys.stdout = oldstdout if not job: print "Job " + str(jid) + " hasn't finished yet, please check again later" sys.exit(0) @@ -212,7 +216,7 @@ if opt.verbose: print "Grain:", i - jid = client.cmd_async(i, 'debdeploy-minion.deploy', [source, update_type, update.fixes], expr_form='grain') + jid = client.cmd_async(i, 'debdeploy-minion.deploy', [source, update_type, update.fixes], expr_form='grain', ret='debdeploy-log') logging.info("Initiated rollout for " + source + " on grain " + i + "(salt job id: " + str(jid) + ")") joblogdb.add_job(update_file, i, jid) diff --git a/minion/debdeploy-log.py b/minion/debdeploy-log.py new file mode 100644 index 0000000..e6cabb2 --- /dev/null +++ b/minion/debdeploy-log.py @@ -0,0 +1,15 @@ +# -*- coding: utf-8 -*- +''' +This returner logs the package status update to /var/log/debdeploy.log +''' + +import datetime + +def returner(ret): + with open("/var/log/debdeploy.log", "a") as log: + indented = [datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S ") + l for l in ret['return']['aptlog'].splitlines()] + log.write("\n".join(indented)) + +# Local variables: +# mode: python +# End: -- To view, visit https://gerrit.wikimedia.org/r/236549 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I7e61b64afb1c6b43a22fa3513ab93ff9e04fb26d Gerrit-PatchSet: 1 Gerrit-Project: operations/debs/debdeploy Gerrit-Branch: master Gerrit-Owner: Muehlenhoff <mmuhlenh...@wikimedia.org> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits