diff options
author | Phil Dibowitz <phil@ipom.com> | 2014-12-19 20:02:33 -0800 |
---|---|---|
committer | Phil Dibowitz <phil@ipom.com> | 2015-02-03 19:32:36 -0800 |
commit | 877278dcedddcbb447b89075e28b4d3b6692ee41 (patch) | |
tree | e4d87bd695ae0dc58b6046764d97a16947730dc2 /lib/chef | |
parent | ab4b814d97faf69ab3ddbaa80ce352ed8453ab46 (diff) | |
download | chef-877278dcedddcbb447b89075e28b4d3b6692ee41.tar.gz |
Several more cleanups
Diffstat (limited to 'lib/chef')
-rw-r--r-- | lib/chef/provider/package.rb | 12 | ||||
-rw-r--r-- | lib/chef/provider/package/yum.rb | 53 |
2 files changed, 30 insertions, 35 deletions
diff --git a/lib/chef/provider/package.rb b/lib/chef/provider/package.rb index 1283538a0b..5c852017cb 100644 --- a/lib/chef/provider/package.rb +++ b/lib/chef/provider/package.rb @@ -48,6 +48,14 @@ class Chef [ candidate_version ].flatten end + def current_version_array + [ @current_resource.version ].flatten + end + + def new_version_array + [ @new_resource.version ].flatten + end + def define_resource_requirements requirements.assert(:install) do |a| a.assertion { ((@new_resource.version != nil) && !(target_version_already_installed?)) \ @@ -120,10 +128,10 @@ class Chef end def removing_package? - if ![ @current_resource.version ].flatten.any? + if !current_version_array.any? # ! any? means it's all nil's, which means nothing is installed false - elsif ![ @new_resource.version ].flatten.any? + elsif !new_version_array.any? true # remove any version of all packages elsif @new_resource.version == @current_resource.version true # remove the version we have diff --git a/lib/chef/provider/package/yum.rb b/lib/chef/provider/package/yum.rb index 9b1481d286..c85cfd20c8 100644 --- a/lib/chef/provider/package/yum.rb +++ b/lib/chef/provider/package/yum.rb @@ -987,6 +987,10 @@ class Chef # Helpers # + def as_array(thing) + [ thing ].flatten + end + def yum_arch arch ? ".#{arch}" : nil end @@ -1090,21 +1094,19 @@ class Chef Chef::Log.debug("#{@new_resource} checking yum info for #{new_resource}") - if @new_resource.package_name.is_a?(String) - installed_version = @yum.installed_version(@new_resource.package_name, arch) - @current_resource.version(installed_version) - @candidate_version = @yum.candidate_version(@new_resource.package_name, arch) + installed_version = [] + @candidate_version = [] + package_name_array.each do |pkg| + installed_version << @yum.installed_version(pkg, arch) + @candidate_version << @yum.candidate_version(pkg, arch) + end + if installed_version.size == 1 + @current_resource.version(installed_version[0]) + @candidate_version = @candidate_version[0] else - installed_version = [] - @candidate_version = [] - @new_resource.package_name.each do |pkg| - installed_version << @yum.installed_version(pkg, arch) - @candidate_version << @yum.candidate_version(pkg, arch) - end @current_resource.version(installed_version) end - Chef::Log.debug("#{@new_resource} installed version: #{installed_version || "(none)"} candidate version: " + "#{@candidate_version || "(none)"}") @@ -1182,19 +1184,12 @@ class Chef # Hacky - better overall solution? Custom compare in Package provider? def action_upgrade # Could be uninstalled or have no candidate - if @current_resource.version.nil? || candidate_version.nil? + if @current_resource.version.nil? || !candidate_version_array.any? super - elsif candidate_version.is_a?(String) && - RPMVersion.parse(candidate_version) > RPMVersion.parse(@current_resource.version) - super - elsif candidate_version.is_a?(Array) - if candidate_version.zip(@current_resource.version).any? do |c, i| + elsif candidate_version_array.zip(current_version_array).any? do |c, i| RPMVersion.parse(c) > RPMVersion.parse(i) end - super - else - Chef::Log.debug("#{@new_resource} are all at the latest versions - nothing to do") - end + super else Chef::Log.debug("#{@new_resource} is at the latest version - nothing to do") end @@ -1206,19 +1201,11 @@ class Chef def remove_package(name, version) if version - if name.is_a?(Array) - remove_str = name.zip(version).map do |x| - "#{x.join('-')}#{yum_arch}" - end.join(' ') - else - remove_str = "#{name}-#{version}#{yum_arch}" - end + remove_str = as_array(name).zip(as_array(version)).map do |x| + "#{x.join('-')}#{yum_arch}" + end.join(' ') else - if name.is_a?(Array) - remove_str = name.map { |n| "#{n}#{yum_arch}" }.join(' ') - else - remove_str = "#{name}#{yum_arch}" - end + remove_str = as_array(name).map { |n| "#{n}#{yum_arch}" }.join(' ') end yum_command("yum -d0 -e0 -y#{expand_options(@new_resource.options)} remove #{remove_str}") |