summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEike Waldt <waldt@b1-systems.de>2017-10-05 23:19:52 +0200
committerEike Waldt <waldt@b1-systems.de>2017-10-05 23:39:20 +0200
commit2b4e979e73649d0306b43345616a675cdeb7e735 (patch)
tree84e00c6b61e028f281b66ab4be237eeee130b94c
parentfde208c800d9186c7c9100087115c8d42084a0ce (diff)
downloadchef-2b4e979e73649d0306b43345616a675cdeb7e735.tar.gz
add allow_downgrade to zypper_package resource
Signed-off-by: Eike Waldt <waldt@b1-systems.de>
-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!(