diff options
author | Eike Waldt <waldt@b1-systems.de> | 2017-10-05 23:19:52 +0200 |
---|---|---|
committer | Eike Waldt <waldt@b1-systems.de> | 2017-10-06 07:44:01 +0200 |
commit | 0686c4db36735799664537aca636079950693c84 (patch) | |
tree | 01c3c56b8a3b9d2a61b51ab3a29b33e6265022a0 | |
parent | 842193821084a5487d033f637aec7ff4d8720687 (diff) | |
download | chef-0686c4db36735799664537aca636079950693c84.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.rb | 6 | ||||
-rw-r--r-- | lib/chef/resource/zypper_package.rb | 1 | ||||
-rw-r--r-- | spec/unit/provider/package/zypper_spec.rb | 8 |
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!( |