Muehlenhoff has submitted this change and it was merged.

Change subject: Additional fixes from initial review
......................................................................


Additional fixes from initial review

Change-Id: I74867be0c44912b85cfa9097c5494d4dedfb3331
---
M docs/readme.txt
M master/debdeploy
M minion/debdeploy-minion.py
M tests/test-jobdb
4 files changed, 65 insertions(+), 51 deletions(-)

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



diff --git a/docs/readme.txt b/docs/readme.txt
index fe4a893..eec1418 100644
--- a/docs/readme.txt
+++ b/docs/readme.txt
@@ -147,6 +147,29 @@
 processes which need to be restarted. This may look like this:
 
 
+----------------------------------------------------------
+$ debdeploy status-deploy -u python.yaml -s testsystem
+
+(..)
+
+Deployment summary:
+Number of hosts in this deployment run: 3
+No packages were added
+No packages were removed
+Updated packages:
+libpython2.7-minimal: 2.7.9-2 -> 2.7.10-3 on 1 hosts
+libpython2.7-stdlib: 2.7.9-2 -> 2.7.10-3 on 1 hosts
+libpython2.7: 2.7.9-2 -> 2.7.10-3 on 1 hosts
+python2.7-minimal: 2.7.9-2 -> 2.7.10-3 on 1 hosts
+python2.7: 2.7.9-2 -> 2.7.10-3 on 1 hosts
+
+Restarts needed:
+/usr/bin/diamond on 1 hosts
+
+Error summary:
+No errors found
+----------------------------------------------------------
+
 
 Restarts are intentionally not made automatically for a number of
 reasons:
diff --git a/master/debdeploy b/master/debdeploy
index 62a7677..c1664d1 100755
--- a/master/debdeploy
+++ b/master/debdeploy
@@ -73,7 +73,7 @@
             restart = res[host]['return']['restart']
 
             print host + ":"
-            if len(added) > 0:
+            if added:
                 print "  Added packages:", host['return']['additions']
                 for added_pkg in host['return']['additions']:
                     if not add_cnt.get(added_pkg, None):
@@ -81,7 +81,7 @@
                     else:
                         add_cnt[added_pkg] += 1
 
-            elif len(removed) > 0:
+            elif removed:
                 print "  Removed packages:", host['return']['removals']
                 for removed_pkg in host['return']['removals']:
                     if not remove_cnt.get(removed_pkg, None):
@@ -104,7 +104,7 @@
                 print "  No change"
 
 
-            if len(restart) > 0:
+            if restart:
                 for process in restart:
                     if len(process) > 0:
                         if not restart_cnt.get(process, None):
@@ -187,27 +187,19 @@
     update_file : Filename of update specification (string)
     '''
 
+    update_desc = {}
+    update_desc["tool"] = "Non-daemon update, no service restart needed"
+    update_desc["daemon-direct"] = "Daemon update without user impact"
+    update_desc["daemon-disrupt"] = "Daemon update with service availability 
impact"
+    update_desc["library"] = "Library update, several services might need to 
be restarted"
+
     print "Rolling out", source, ":",
-    if update_type == "tool":
-        print "Non-daemon update, no service restart needed"
-    elif update_type == "daemon-direct":
-        print "Daemon update without user impact"
-    elif update_type == "daemon-direct":
-        print "Daemon update with service availability impact, please confirm 
with 'y'"
-        # confirm = raw_input(">")
-        # if confirm >= 'y':
-        #     sys.exit(0)
-    elif update_type == "daemon-cluster":
+    print update_desc[update_type]
+
+
+    if update_type in ["daemon-cluster", "reboot", "reboot-cluster"]:
         print "Not implemented yet"
         sys.exit(1)
-    elif update_type == "reboot":
-        print "Not implemented yet"
-        sys.exit(1)
-    elif update_type == "reboot-cluster":
-        print "Not implemented yet"
-        sys.exit(1)
-    elif update_type == "library":
-        print "Library update, several services might need to be restarted"
 
     for i in grains:
         if joblogdb.has_been_rolled_back(update_file, i):
@@ -253,7 +245,7 @@
                 if r[host][process] == 0:
                     c_success[process] += 1
                     if opt.verbose:
-                        print "  ", process, "sucessfully restarted"
+                        print "  ", process, "successfully restarted"
                 elif r[host][process] == 1:
                     c_failed[process] += 1
                     if opt.verbose:
@@ -307,8 +299,6 @@
         joblogdb.mark_as_rolled_back(jid, rid)
 
 
-
-
 client = salt.client.LocalClient()
 conf = DebDeployConfig("/etc/debdeploy.conf")
 joblogdb = DebDeployJobLog("/var/lib/debdeploy/jobdb.sqlite")
@@ -360,7 +350,6 @@
     if not opt.host:
         op.error("You need to provide a hostname (-h)")
 
-
 if command == "deploy":
     update = DebDeployUpdateSpec(opt.updatefile, conf.supported_distros)
     deploy_update(update.source, update.update_type, 
conf.server_groups[opt.serverlist], opt.updatefile)
@@ -376,6 +365,9 @@
 
 elif command == "rollback":
     rollback(conf.server_groups[opt.serverlist], opt.updatefile)
+
+sys.exit(0)
+
 
 # elif command == "pkgdb-source":
 #     jid = client.cmd(opt.host, 'debdeploy.return_pkgs')
@@ -394,8 +386,6 @@
 #                 sys.exit(1)
 #             jid = client.cmd_async(i, 'debdeploy-minion.deploy', 
[update.source, update.fixes], expr_form='grain')
 #             joblogdb.add_job(opt.updatefile, i, jid)
-
-sys.exit(0)
 
 # Local variables:
 # mode: python
diff --git a/minion/debdeploy-minion.py b/minion/debdeploy-minion.py
index 78ecb47..3639cc0 100644
--- a/minion/debdeploy-minion.py
+++ b/minion/debdeploy-minion.py
@@ -3,7 +3,7 @@
 Module for deploying DEB packages on wide scale
 '''
 
-import logging, pickle, copy
+import logging, pickle, subprocess, os
 import logging.handlers
 #import salt.log
 
@@ -14,7 +14,7 @@
 #from salt.modules import aptpkg
 from debian import deb822
 
-from salt.modules.debdeploy_restart import *
+from salt.modules.debdeploy_restart import Checkrestart
 from salt.exceptions import (
     CommandExecutionError, MinionError, SaltInvocationError
 )
@@ -106,11 +106,11 @@
                 results[program] = 3
             else:
                 try:
-                    if subprocess.call(handler) == 0:
+                    if subprocess.check_call(handler) == 0:
                         results[program] = 0
                     else:
                         results[program] = 1
-                except OSError:
+                except CalledProcessError:
                     results[program] = 1
             break
 
@@ -244,8 +244,8 @@
         pending_restarts_post = Checkrestart().get_programs_to_restart()
         logging.debug("Packages needing a restart after to the update:" + 
str(pending_restarts_post))
 
-    ok = set(old.keys())
-    nk = set(new.keys())
+    old_keys = set(old.keys())
+    new_keys = set(new.keys())
 
     additions = []
     removals = []
@@ -255,11 +255,11 @@
     if update_type == "library":
         restarts = list(pending_restarts_post.difference(pending_restarts_pre))
 
-    for i in nk.difference(ok):
+    for i in new_keys.difference(old_keys):
         additions.append[i]
-    for i in ok.difference(nk):
+    for i in old_keys.difference(new_keys):
         removals.append[i]
-    intersect = ok.intersection(nk)
+    intersect = old_keys.intersection(new_keys)
     modified = {x : (old[x], new[x]) for x in intersect if old[x] != new[x]}
 
     logging.info("Newly installed packages:" + str(additions))
@@ -277,9 +277,8 @@
     r["aptreturn"] = apt_call['retcode']
 
     jobid = kwargs.get('__pub_jid')
-    jobfile = open("/var/lib/debdeploy/" + jobid + ".job", "w")
-    pickle.dump(r, jobfile)
-    jobfile.close()
+    with open("/var/lib/debdeploy/" + jobid + ".job", "w") as jobfile:
+        pickle.dump(r, jobfile)
 
     return r
 
@@ -289,8 +288,8 @@
     Roll back a software update specified by a Salt job ID
 
     '''
-    jobfile = open("/var/lib/debdeploy/" + jobid + ".job", "r")
-    r = pickle.load(jobfile)
+    with open("/var/lib/debdeploy/" + jobid + ".job", "r") as jobfile:
+        r = pickle.load(jobfile)
 
     old = list_pkgs()
     __salt__['pkg.refresh_db']
@@ -324,19 +323,19 @@
         aptreturn = 100
 
     new = list_pkgs()
-    ok = set(old.keys())
-    nk = set(new.keys())
+    old_keys = set(old.keys())
+    new_keys = set(new.keys())
 
     additions = []
     removals = []
     updated = []
     restarts = []
 
-    for i in nk.difference(ok):
+    for i in new_keys.difference(old_keys):
         additions.append[i]
-    for i in ok.difference(nk):
+    for i in old_keys.difference(new_keys):
         removals.append[i]
-    intersect = ok.intersection(nk)
+    intersect = old_keys.intersection(new_keys)
     modified = {x : (old[x], new[x]) for x in intersect if old[x] != new[x]}
 
     logging.info("Newly installed packages:" + str(additions))
diff --git a/tests/test-jobdb b/tests/test-jobdb
index 189bd4c..93a6b0f 100755
--- a/tests/test-jobdb
+++ b/tests/test-jobdb
@@ -2,9 +2,12 @@
 # -*- coding: utf-8 -*-
 
 import sqlite3, os, unittest
-from debdeploylog import *
+from debdeploy_joblog import *
 
 class TestDeployJob(unittest.TestCase):
+
+    if not os.path.exists("testrun"):
+        os.mkdir("testrun")
 
     testdb = os.path.join("testrun/", "tests-jobs.sqlite")
     if os.path.exists(testdb):
@@ -23,9 +26,8 @@
 
     yamlfile = os.path.join("job1.yaml")
     if not os.path.exists(yamlfile):
-        f = open(yamlfile, "w")
-        f.write(yaml1)
-        f.close()
+        with open(yamlfile, "w") as f:
+            f.write(yaml1)
 
     def testJobs(self):
 
@@ -56,7 +58,7 @@
 
         self.assertEqual(self.joblogdb.has_been_rolled_back(self.yamlfile, 
"hostclass:testsystem"), True)
         self.assertEqual(self.joblogdb.get_rollbackid(self.yamlfile, 
"hostclass:testsystem"), "20150519122347248000")
-        
+
 if __name__ == '__main__':
     unittest.main()
 

-- 
To view, visit https://gerrit.wikimedia.org/r/233678
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I74867be0c44912b85cfa9097c5494d4dedfb3331
Gerrit-PatchSet: 1
Gerrit-Project: operations/debs/debdeploy
Gerrit-Branch: master
Gerrit-Owner: Muehlenhoff <[email protected]>
Gerrit-Reviewer: Muehlenhoff <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to