Refactor is_pkg_installed function

* Should return false instead of errors
* Correct package status processing

Change-Id: I95139c36486a42306f61e7b08cc0cafcd6bffca1
Closes-Bug: 1542501
This commit is contained in:
Dmitry Ilyin 2016-03-22 18:01:03 +03:00
parent a836a98261
commit 6502053cc3
1 changed files with 12 additions and 9 deletions

View File

@ -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