Muehlenhoff has submitted this change and it was merged.

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(-)

Approvals:
  Muehlenhoff: Verified; Looks good to me, approved



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: merged
Gerrit-Change-Id: I7e61b64afb1c6b43a22fa3513ab93ff9e04fb26d
Gerrit-PatchSet: 1
Gerrit-Project: operations/debs/debdeploy
Gerrit-Branch: master
Gerrit-Owner: Muehlenhoff <mmuhlenh...@wikimedia.org>
Gerrit-Reviewer: Muehlenhoff <mmuhlenh...@wikimedia.org>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to