From 6502053cc322328cb8a37574e50a6f9d35ea918e Mon Sep 17 00:00:00 2001 From: Dmitry Ilyin Date: Tue, 22 Mar 2016 18:01:03 +0300 Subject: [PATCH] Refactor is_pkg_installed function * Should return false instead of errors * Correct package status processing Change-Id: I95139c36486a42306f61e7b08cc0cafcd6bffca1 Closes-Bug: 1542501 --- .../parser/functions/is_pkg_installed.rb | 21 +++++++++++-------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/deployment/puppet/tweaks/lib/puppet/parser/functions/is_pkg_installed.rb b/deployment/puppet/tweaks/lib/puppet/parser/functions/is_pkg_installed.rb index 4bf23a1d7a..fb740ca3aa 100644 --- a/deployment/puppet/tweaks/lib/puppet/parser/functions/is_pkg_installed.rb +++ b/deployment/puppet/tweaks/lib/puppet/parser/functions/is_pkg_installed.rb @@ -6,14 +6,17 @@ module Puppet::Parser::Functions Returns if given package is installed ENDOFDOC ) do |args| - pkgname = args[0] - - parameters = { :name => pkgname } - res = Puppet::Type.type(:package).new(parameters) - - query = res.provider.query - - return false if query.nil? - query[:ensure].match(/[-.]|\d+|[^-.\d]+/) != 0 + begin + pkg_name = args[0] + parameters = { :name => pkg_name } + res = Puppet::Type.type(:package).new(parameters) + query = res.provider.query + break false unless query.is_a? Hash + break false unless query[:ensure] + break false if [ :absent, :purged ].include? query[:ensure] + true + rescue + false + end end end