summaryrefslogtreecommitdiff
path: root/lib/chef/provider
diff options
context:
space:
mode:
Diffstat (limited to 'lib/chef/provider')
-rw-r--r--lib/chef/provider/package.rb13
-rw-r--r--lib/chef/provider/package/rpm.rb6
-rw-r--r--lib/chef/provider/package/yum.rb8
3 files changed, 16 insertions, 11 deletions
diff --git a/lib/chef/provider/package.rb b/lib/chef/provider/package.rb
index 9edf8d5f52..fd317a3a31 100644
--- a/lib/chef/provider/package.rb
+++ b/lib/chef/provider/package.rb
@@ -109,18 +109,20 @@ class Chef
converge_by(upgrade_description) do
upgrade_package(package_names_for_targets, versions_for_targets)
- Chef::Log.info("#{@new_resource} upgraded #{package_names_for_targets} to #{versions_for_targets}")
+ log_allow_downgrade = allow_downgrade ? '(allow_downgrade)' : ''
+ Chef::Log.info("#{@new_resource} upgraded#{log_allow_downgrade} #{package_names_for_targets} to #{versions_for_targets}")
end
end
def upgrade_description
+ log_allow_downgrade = allow_downgrade ? '(allow_downgrade)' : ''
description = []
target_version_array.each_with_index do |target_version, i|
next if target_version.nil?
package_name = package_name_array[i]
candidate_version = candidate_version_array[i]
current_version = current_version_array[i] || "uninstalled"
- description << "upgrade package #{package_name} from #{current_version} to #{candidate_version}"
+ description << "upgrade#{log_allow_downgrade} package #{package_name} from #{current_version} to #{candidate_version}"
end
description
end
@@ -475,6 +477,13 @@ class Chef
run_context.has_cookbook_file_in_cookbook?(new_resource.cookbook_name, path)
end
+ def allow_downgrade
+ if @new_resource.respond_to?("allow_downgrade")
+ @new_resource.allow_downgrade
+ else
+ false
+ end
+ end
end
end
end
diff --git a/lib/chef/provider/package/rpm.rb b/lib/chef/provider/package/rpm.rb
index 504932f257..c96261bcd1 100644
--- a/lib/chef/provider/package/rpm.rb
+++ b/lib/chef/provider/package/rpm.rb
@@ -93,7 +93,11 @@ class Chef
unless @current_resource.version
shell_out!( "rpm #{@new_resource.options} -i #{@new_resource.source}" )
else
- shell_out!( "rpm #{@new_resource.options} -U #{@new_resource.source}" )
+ if allow_downgrade
+ shell_out!( "rpm #{@new_resource.options} -U --oldpackage #{@new_resource.source}" )
+ else
+ shell_out!( "rpm #{@new_resource.options} -U #{@new_resource.source}" )
+ end
end
end
diff --git a/lib/chef/provider/package/yum.rb b/lib/chef/provider/package/yum.rb
index 40da14413e..3c4721b6a1 100644
--- a/lib/chef/provider/package/yum.rb
+++ b/lib/chef/provider/package/yum.rb
@@ -976,14 +976,6 @@ class Chef
end
end
- def allow_downgrade
- if @new_resource.respond_to?("allow_downgrade")
- @new_resource.allow_downgrade
- else
- false
- end
- end
-
# Helpers
#