summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLamont Granquist <lamont@scriptkiddie.org>2017-10-06 12:52:56 -0700
committerGitHub <noreply@github.com>2017-10-06 12:52:56 -0700
commitead8e1150015f2bd4dcaee9c68644bc579560990 (patch)
tree14e852ac9c23653f811b737a6cb93e3d61333b7b
parentdeeecfc5dc761a7fb469d24a0741d4f7bd1f7570 (diff)
parent474ebfc7a69b12d944a708c0f705550dc14f27ff (diff)
downloadchef-ead8e1150015f2bd4dcaee9c68644bc579560990.tar.gz
Merge pull request #6476 from b1-systems/master
Add allow_downgrade to zypper_package resource
-rw-r--r--lib/chef/provider/package/zypper.rb6
-rw-r--r--lib/chef/resource/zypper_package.rb1
-rw-r--r--spec/unit/provider/package/zypper_spec.rb8
3 files changed, 14 insertions, 1 deletions
diff --git a/lib/chef/provider/package/zypper.rb b/lib/chef/provider/package/zypper.rb
index 41e8433046..77d619d205 100644
--- a/lib/chef/provider/package/zypper.rb
+++ b/lib/chef/provider/package/zypper.rb
@@ -103,7 +103,7 @@ class Chef
end
def install_package(name, version)
- zypper_package("install", *options, "--auto-agree-with-licenses", name, version)
+ zypper_package("install", *options, "--auto-agree-with-licenses", allow_downgrade, name, version)
end
def upgrade_package(name, version)
@@ -147,6 +147,10 @@ class Chef
def gpg_checks
"--no-gpg-checks" unless new_resource.gpg_check
end
+
+ def allow_downgrade
+ "--oldpackage" if new_resource.allow_downgrade
+ end
end
end
end
diff --git a/lib/chef/resource/zypper_package.rb b/lib/chef/resource/zypper_package.rb
index 6c6e308159..20b1a9f25f 100644
--- a/lib/chef/resource/zypper_package.rb
+++ b/lib/chef/resource/zypper_package.rb
@@ -25,6 +25,7 @@ class Chef
provides :package, platform_family: "suse"
property :gpg_check, [ TrueClass, FalseClass ], default: lazy { Chef::Config[:zypper_check_gpg] }
+ property :allow_downgrade, [ true, false ], default: false
end
end
end
diff --git a/spec/unit/provider/package/zypper_spec.rb b/spec/unit/provider/package/zypper_spec.rb
index b20a548c73..598fedc9fa 100644
--- a/spec/unit/provider/package/zypper_spec.rb
+++ b/spec/unit/provider/package/zypper_spec.rb
@@ -140,6 +140,14 @@ describe Chef::Provider::Package::Zypper do
provider.install_package(["emacs"], ["1.0"])
end
+ it "setting the property should allow downgrade" do
+ new_resource.allow_downgrade true
+ shell_out_expectation!(
+ "zypper", "--non-interactive", "install", "--auto-agree-with-licenses", "--oldpackage", "emacs=1.0"
+ )
+ provider.install_package(["emacs"], ["1.0"])
+ end
+
it "should add user provided options to the command" do
new_resource.options "--user-provided"
shell_out_expectation!(