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