summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim Smith <tsmith@chef.io>2017-09-14 20:12:03 -0700
committerTim Smith <tsmith@chef.io>2017-09-28 11:04:54 -0700
commitd638f8b20e4b375f2c3d2d4f6d7cb3d0ed915f96 (patch)
tree50bdc075a8511418e07d97bb061060976bcd4e33
parenta79882fb5e15d8e42b970a64608fedc6c8bccb0b (diff)
downloadchef-d638f8b20e4b375f2c3d2d4f6d7cb3d0ed915f96.tar.gz
Import the zypper GPG key before templating the repo
This prevents failures when the key is unknown. This way is *simple*, but I'm not a fan of the way the :before notification results in double template logging. I'm open to a better way that provides some idempotency to the key import. Signed-off-by: Tim Smith <tsmith@chef.io>
-rw-r--r--lib/chef/provider/zypper_repository.rb16
1 files changed, 9 insertions, 7 deletions
diff --git a/lib/chef/provider/zypper_repository.rb b/lib/chef/provider/zypper_repository.rb
index e6fd917d77..2cc72d14ff 100644
--- a/lib/chef/provider/zypper_repository.rb
+++ b/lib/chef/provider/zypper_repository.rb
@@ -18,24 +18,25 @@
require "chef/resource"
require "chef/dsl/declare_resource"
-require "chef/mixin/which"
require "chef/provider/noop"
require "shellwords"
class Chef
class Provider
class ZypperRepository < Chef::Provider
-
- extend Chef::Mixin::Which
-
- provides :zypper_repository do
- which "zypper"
- end
+ provides :zypper_repository, platform_family: "suse"
def load_current_resource
end
action :create do
+ if new_resource.gpgautoimportkeys
+ declare_resource(:execute, "import gpg key from #{new_resource.gpgkey}") do
+ command "/bin/rpm --import #{new_resource.gpgkey}"
+ action :nothing
+ end
+ end
+
declare_resource(:template, "/etc/zypp/repos.d/#{escaped_repo_name}.repo") do
if template_available?(new_resource.source)
source new_resource.source
@@ -46,6 +47,7 @@ class Chef
sensitive new_resource.sensitive
variables(config: new_resource)
mode new_resource.mode
+ notifies :run, "execute[import gpg key from #{new_resource.gpgkey}]", :before if new_resource.gpgautoimportkeys
notifies :refresh, new_resource, :immediately if new_resource.refresh_cache
end
end