diff options
author | Tim Smith <tsmith@chef.io> | 2017-09-14 20:12:03 -0700 |
---|---|---|
committer | Tim Smith <tsmith@chef.io> | 2017-09-28 11:04:54 -0700 |
commit | d638f8b20e4b375f2c3d2d4f6d7cb3d0ed915f96 (patch) | |
tree | 50bdc075a8511418e07d97bb061060976bcd4e33 | |
parent | a79882fb5e15d8e42b970a64608fedc6c8bccb0b (diff) | |
download | chef-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.rb | 16 |
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 |