Muehlenhoff has uploaded a new change for review. (
https://gerrit.wikimedia.org/r/373290 )
Change subject: New debdeploy module to query installed reverse dependencies
......................................................................
New debdeploy module to query installed reverse dependencies
Useful to asses whether a library upgrade will require service
restarts.
Change-Id: I15e3d85648aed04834192a77464af5e6400c1ff5
---
A clients/debdeploy-revdeps
M debian/debdeploy-client.install
2 files changed, 69 insertions(+), 0 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/operations/debs/debdeploy
refs/changes/90/373290/1
diff --git a/clients/debdeploy-revdeps b/clients/debdeploy-revdeps
new file mode 100755
index 0000000..f6f30b5
--- /dev/null
+++ b/clients/debdeploy-revdeps
@@ -0,0 +1,68 @@
+#! /usr/bin/python
+# -*- coding: utf-8 -*-
+'''
+Module for querying installed reverse dependencies of a package
+'''
+
+import subprocess
+import os
+import sys
+import argparse
+import json
+
+
+def parse_args():
+ p = argparse.ArgumentParser(
+ description='debdeploy-revdeps - Query for installed reverse
dependencies')
+ p.add_argument('--json', action='store_true', default=False,
+ help='Return results as JSON')
+ p.add_argument('--package', action='store', nargs='+', required=True)
+
+ args = p.parse_args(sys.argv[1:])
+
+ return args
+
+
+def result(status, rev_deps):
+ '''
+ Generates a data set to return to Cumin.
+ status: OK | ERROR: foo
+ rev_deps: sorted list of reverse dependencies
+ '''
+
+ return status + " " + json.dumps(rev_deps)
+
+
+def main():
+ '''
+ Lists all the installed reverse dependencies of the package(s).
+ '''
+ args = parse_args()
+
+ try:
+ rev_deps = subprocess.check_output(['apt-cache', '--installed',
'rdepends'] + args.package)
+ except subprocess.CalledProcessError as e:
+ logger.info('Failed to query reverse dependies', e.returncode)
+ return result('ERROR Failed to query dependencies', '')
+
+ deps = set()
+
+ for i in rev_deps.split():
+ if i.startswith("|"): # denotes an alternate dependency
+ deps.add(i.strip()[1:])
+ elif i in args.package: # apt-cache rdepends also prints the package
name
+ continue
+ elif i in ['Depends:', 'Reverse']: # output by apt-cache
+ continue
+ else:
+ deps.add(i.strip())
+
+ return result('OK', list(sorted(deps)))
+
+
+if __name__ == '__main__':
+ print main()
+
+# Local variables:
+# mode: python
+# End:
diff --git a/debian/debdeploy-client.install b/debian/debdeploy-client.install
index f558e9b..e197171 100644
--- a/debian/debdeploy-client.install
+++ b/debian/debdeploy-client.install
@@ -1,3 +1,4 @@
clients/debdeploy-deploy /usr/bin/
clients/debdeploy-restarts /usr/bin/
+clients/debdeploy-revdeps /usr/bin/
--
To view, visit https://gerrit.wikimedia.org/r/373290
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I15e3d85648aed04834192a77464af5e6400c1ff5
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