From 87927d194ce639b4029c26352775e3c3addcbbdd Mon Sep 17 00:00:00 2001 From: Lars Kruse Date: Wed, 28 Mar 2018 05:57:02 +0200 Subject: [PATCH] plugin apt_ubuntu: various improvements * fix category parsing for plugin gallery * python3 compatibility * zero exitcodes for autoconf failures * PEP8 clean --- plugins/ubuntu/apt_ubuntu | 98 ++++++++++++++++++++------------------- 1 file changed, 50 insertions(+), 48 deletions(-) diff --git a/plugins/ubuntu/apt_ubuntu b/plugins/ubuntu/apt_ubuntu index d13654a3..cf30c0c5 100755 --- a/plugins/ubuntu/apt_ubuntu +++ b/plugins/ubuntu/apt_ubuntu @@ -21,12 +21,15 @@ # Magic markers - optional - used by installation scripts and # munin-config: # -#%# capabilities=autoconf -#%# family=contrib +# #%# capabilities=autoconf +# #%# family=contrib + +import os +import sys +import warnings ########################################################### -category = 'security' # 'upgrades' -title = 'Upgradable packages' # 'Upgradeable packages' +title = 'Upgradable packages' # 'Upgradeable packages' vlabel = 'Total packages' other = 'other' total = 'total' @@ -38,12 +41,9 @@ origins = ['Ubuntu'] critical = 1 ########################################################### -import os -import sys -import warnings - warnings.filterwarnings('ignore', 'apt API not stable yet', FutureWarning) + def autoconf(): if os.path.exists('/etc/lsb-release'): for line in open('/etc/lsb-release'): @@ -51,60 +51,60 @@ def autoconf(): try: import apt except ImportError: - print 'no (python-apt not installed)' - sys.exit(1) + print('no (python-apt not installed)') + sys.exit(0) cache = apt.Cache() - if not cache.has_key('update-notifier-common'): - print 'no (update-notifier-common not found)' - sys.exit(1) + if 'update-notifier-common' not in cache: + print('no (update-notifier-common not found)') + sys.exit(0) if not cache['update-notifier-common'].isInstalled: - print 'no (update-notifier-common not installed)' - sys.exit(1) + print('no (update-notifier-common not installed)') + sys.exit(0) if not os.path.exists('/etc/apt/apt.conf.d/10periodic'): - print 'no (/etc/apt/apt.conf.d/10periodic not found)' + print('no (/etc/apt/apt.conf.d/10periodic not found)') sys.exit(1) for line in open('/etc/apt/apt.conf.d/10periodic'): if line.strip() == 'APT::Periodic::Update-Package-Lists "1";': - print 'yes' + print('yes') sys.exit(0) - print 'no (APT::Periodic::Update-Package-Lists not "1")' - sys.exit(1) - print 'no' - sys.exit(1) - -def config(): - print 'graph_category security' - print 'graph_title %s' % (title) - #print 'graph_total %s' % (total) - print 'graph_vlabel %s' % (vlabel) - for i, archive in enumerate(archives + [other]): - if len(colour) > i: - print '%s.colour %s' % (archive, colour[i]) - if i < critical: - print '%s.critical 0:0' % (archive) - if i == 0: - print '%s.draw AREA' % (archive) - else: - print '%s.draw STACK' % (archive) - print '%s.label %s' % (archive, archive) - if i + 1 > critical: - print '%s.warning 0:0' % (archive) - print 'total.colour 000000' - print 'total.draw LINE1' - print 'total.label %s' % (total) + print('no (APT::Periodic::Update-Package-Lists not "1")') + sys.exit(0) + print('no (missing /etc/lsb-release file)') sys.exit(0) + +def config(): + print('graph_category security') + print('graph_title %s' % (title)) + print('graph_vlabel %s' % (vlabel)) + for i, archive in enumerate(archives + [other]): + if len(colour) > i: + print('%s.colour %s' % (archive, colour[i])) + if i < critical: + print('%s.critical 0:0' % (archive)) + if i == 0: + print('%s.draw AREA' % (archive)) + else: + print('%s.draw STACK' % (archive)) + print('%s.label %s' % (archive, archive)) + if i + 1 > critical: + print('%s.warning 0:0' % (archive)) + print('total.colour 000000') + print('total.draw LINE1') + print('total.label %s' % (total)) + sys.exit(0) + + def check_origin(pkg): - #print 'Checking: %s (%s)' % (pkg.name, map(str, pkg.candidateOrigin)) if pkg.candidate.origins: for archive in archives: for origin in pkg.candidate.origins: - #a = origin.archive.rpartition('-')[2] a = origin.archive.split('-')[origin.archive.count('-')] - if a == archive and origin.origin in origins: + if (a == archive) and (origin.origin in origins): return a return other + if len(sys.argv) > 1: if sys.argv[1] == 'autoconf': autoconf() @@ -118,9 +118,11 @@ try: import apt import apt_pkg except ImportError: - print "The module 'apt' is currently not installed. You can install it by typing:\nsudo apt-get install python-apt\nImportError: No module named apt" + print("The module 'apt' is currently not installed. You can install it by typing:\n" + "sudo apt-get install python-apt\nImportError: No module named apt") sys.exit(1) + pkgs = {} total = 0 for pkg in apt.Cache(): @@ -130,6 +132,6 @@ for pkg in apt.Cache(): total += 1 for archive in archives + [other]: - print '%s.value %s' % (archive, pkgs.pop(archive, 0)) + print('%s.value %s' % (archive, pkgs.pop(archive, 0))) -print 'total.value %s' % (total) +print('total.value %s' % (total))