X-Git-Url: https://review.fuel-infra.org/gitweb?a=blobdiff_plain;f=lib%2Ffacter%2Fapt_updates.rb;h=e101dd79a477aae25ebf99995f080f15a76d95a3;hb=1953cc8daac9686bfb8c2db6c76646dffe728c30;hp=014782eab2edaa33c5f29f79bac19d81a901d7da;hpb=4f0ebaced75699bf8456f045375a32c7bc12408a;p=puppet-modules%2Fpuppetlabs-apt.git diff --git a/lib/facter/apt_updates.rb b/lib/facter/apt_updates.rb index 014782e..e101dd7 100644 --- a/lib/facter/apt_updates.rb +++ b/lib/facter/apt_updates.rb @@ -1,16 +1,32 @@ apt_package_updates = nil Facter.add("apt_has_updates") do confine :osfamily => 'Debian' - if File.executable?("/usr/lib/update-notifier/apt-check") - apt_check_result = Facter::Util::Resolution.exec('/usr/lib/update-notifier/apt-check 2>&1') - if not apt_check_result.nil? and apt_check_result =~ /^\d+;\d+$/ - apt_package_updates = apt_check_result.split(';') + if File.executable?("/usr/bin/apt-get") + apt_get_result = Facter::Util::Resolution.exec('/usr/bin/apt-get -s -o Debug::NoLocking=true upgrade 2>&1') + if not apt_get_result.nil? + apt_package_updates = [[], []] + apt_get_result.each_line do |line| + if line =~ /^Inst\s/ + package = line.gsub(/^Inst\s([^\s]+)\s.*/, '\1').strip + apt_package_updates[0].push(package) + security_matches = [ + / Debian[^\s]+-updates /, + / Debian-Security:/, + / Ubuntu[^\s]+-security /, + / gNewSense[^\s]+-security / + ] + re = Regexp.union(security_matches) + if line.match(re) + apt_package_updates[1].push(package) + end + end + end end end setcode do if not apt_package_updates.nil? and apt_package_updates.length == 2 - apt_package_updates != ['0', '0'] + apt_package_updates != [[], []] end end end @@ -18,11 +34,21 @@ end Facter.add("apt_package_updates") do confine :apt_has_updates => true setcode do - packages = Facter::Util::Resolution.exec('/usr/lib/update-notifier/apt-check -p 2>&1').split("\n") if Facter.version < '2.0.0' - packages.join(',') + apt_package_updates[0].join(',') else - packages + apt_package_updates[0] + end + end +end + +Facter.add("apt_package_security_updates") do + confine :apt_has_updates => true + setcode do + if Facter.version < '2.0.0' + apt_package_updates[1].join(',') + else + apt_package_updates[1] end end end @@ -30,13 +56,13 @@ end Facter.add("apt_updates") do confine :apt_has_updates => true setcode do - Integer(apt_package_updates[0]) + Integer(apt_package_updates[0].length) end end Facter.add("apt_security_updates") do confine :apt_has_updates => true setcode do - Integer(apt_package_updates[1]) + Integer(apt_package_updates[1].length) end end