Muehlenhoff has uploaded a new change for review. (
https://gerrit.wikimedia.org/r/373865 )
Change subject: Add support for querying reverse dependencies
......................................................................
Add support for querying reverse dependencies
Executes debdeploy-revdeps on the clients.
Change-Id: I2865a2c447c5b44563d1ee7cff65bc10275f4c51
---
M server/debdeploy
1 file changed, 39 insertions(+), 13 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/operations/debs/debdeploy
refs/changes/65/373865/1
diff --git a/server/debdeploy b/server/debdeploy
index 63c77ae..c3977f2 100755
--- a/server/debdeploy
+++ b/server/debdeploy
@@ -168,7 +168,8 @@
msg = str(output)
if msg.startswith("OK "):
if str(msg[3:]) == '"No service needs a restart"':
- no_restarts_needed = nodeset
+ print "No restarts were needed for", len(no_restarts_needed),
"host(s):"
+ print nodeset
else:
restarts = json.loads(msg[3:])
if restarts:
@@ -187,17 +188,44 @@
print " ", program
print " " + str(restarts_per_lib[lib][program]) + " (" +
str(len(restarts_per_lib[lib][program])) + " hosts)"
- if no_restarts_needed:
- print
- print "No restarts were needed for", len(no_restarts_needed),
"host(s)."
+ show_unreachable_hosts(worker)
+
+
+def detect_rev_deps(pkgnames, servergroup):
+ '''
+ Query for necessary restarts after a library or interpreter upgrade
+
+ pkgnames : A list of package names for which reverse depencies are
displayed,
+ e.g. libssl1.1 (list of strings)
+ servergroup : The name of the server group for which process restarts
should be queried (string)
+ '''
+
+ cmd = '/usr/bin/debdeploy-revdeps --json ' + ' '.join(pkgnames)
+
+ worker = run_cumin(cmd)
+
+ for nodeset, output in worker.get_results():
+ msg = str(output)
+ if msg.startswith("OK "):
+ deps = json.loads(msg[3:])
+ if deps:
+ print nodeset
+ for service in deps:
+ print " ", service
+ else:
+ print nodeset
+ print " No reverse dependencies instaled"
show_unreachable_hosts(worker)
+
def main():
p = argparse.ArgumentParser(usage="""debdeploy-master [options] command
<cmd-option> \n
The following commands are supported: \n\n
deploy Install a software update, requires --update
and --servers \n
query_restart Query for necessary restarts after a library
or interpreter \n
+ upgrade \n
+ query_deps Query for necessary restarts after a library
or interpreter \n
upgrade \n
rollback Rollback a software deployment""")
@@ -209,13 +237,14 @@
p.add_argument("--verbose", action="store_true", dest="verbose",
help="Enable verbose output, e.g. show full apt output in
status-deploy and \
status-rollback")
+ p.add_argument('--packages', action='store', nargs='+', help="Packages to
query reverse dependencies")
p.add_argument("command")
p.add_argument("command_option", nargs="?", default="unset")
opt = p.parse_args()
- if opt.command in ("deploy", "rollback", "restart", "query_restart"):
+ if opt.command in ("deploy", "rollback", "restart", "query_restart",
"query_deps"):
if not opt.serverlist:
p.error("You need to provide a server list (-s)")
@@ -223,9 +252,9 @@
if not opt.updatefile:
p.error("You need to provide an update file (-u)")
- if opt.command in ("restart"):
- if not opt.program:
- p.error("You need to provide a program to restart (-p)")
+ if opt.command in ("query_deps"):
+ if not opt.packages:
+ p.error("You need to provide packages for dependency detection")
if opt.command == "deploy":
update = DebDeployUpdateSpec(opt.updatefile, conf.supported_distros)
@@ -236,11 +265,8 @@
update = DebDeployUpdateSpec(opt.updatefile, conf.supported_distros)
detect_restarts(update.libraries, opt.serverlist)
- elif opt.command == "status-rollback":
- display_status(rollback_mode=True)
-
- elif opt.command == "rollback":
- rollback(opt.serverlist, opt.updatefile)
+ elif opt.command == "query_deps":
+ detect_rev_deps(opt.packages, opt.serverlist)
if __name__ == '__main__':
--
To view, visit https://gerrit.wikimedia.org/r/373865
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I2865a2c447c5b44563d1ee7cff65bc10275f4c51
Gerrit-PatchSet: 1
Gerrit-Project: operations/debs/debdeploy
Gerrit-Branch: master
Gerrit-Owner: Muehlenhoff <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits