diff options
author | Thom May <thom@may.lt> | 2017-09-01 11:54:38 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-09-01 11:54:38 +0100 |
commit | 09377dc9fa0518f5760611decbc751b121d8135d (patch) | |
tree | ac1df8cbb56b2f924fd48e337ce22057479f6916 | |
parent | 71c6b79ea31265f124abeaedf983f954441e256d (diff) | |
parent | 8a399ee8b2f9f4c3336e91b0da22c9f5fa67318f (diff) | |
download | chef-09377dc9fa0518f5760611decbc751b121d8135d.tar.gz |
Merge pull request #6372 from gsreynolds/apt_repository_keys
Support an array of keys for apt_repository
-rw-r--r-- | lib/chef/provider/apt_repository.rb | 22 | ||||
-rw-r--r-- | lib/chef/resource/apt_repository.rb | 2 |
2 files changed, 13 insertions, 11 deletions
diff --git a/lib/chef/provider/apt_repository.rb b/lib/chef/provider/apt_repository.rb index 05172c9f98..d8995acd3d 100644 --- a/lib/chef/provider/apt_repository.rb +++ b/lib/chef/provider/apt_repository.rb @@ -41,10 +41,12 @@ class Chef action :add do unless new_resource.key.nil? - if is_key_id?(new_resource.key) && !has_cookbook_file?(new_resource.key) - install_key_from_keyserver - else - install_key_from_uri + new_resource.key.each do |k| + if is_key_id?(k) && !has_cookbook_file?(k) + install_key_from_keyserver(k) + else + install_key_from_uri(k) + end end end @@ -151,19 +153,19 @@ class Chef (installed_keys & proposed_keys).sort == proposed_keys.sort end - def install_key_from_uri - key_name = new_resource.key.gsub(/[^0-9A-Za-z\-]/, "_") + def install_key_from_uri(key) + key_name = key.gsub(/[^0-9A-Za-z\-]/, "_") cached_keyfile = ::File.join(Chef::Config[:file_cache_path], key_name) - type = if new_resource.key.start_with?("http") + type = if key.start_with?("http") :remote_file - elsif has_cookbook_file?(new_resource.key) + elsif has_cookbook_file?(key) :cookbook_file else raise Chef::Exceptions::FileNotFound, "Cannot locate key file" end declare_resource(type, cached_keyfile) do - source new_resource.key + source key mode "0644" sensitive new_resource.sensitive action :create @@ -181,7 +183,7 @@ class Chef end end - def install_key_from_keyserver(key = new_resource.key, keyserver = new_resource.keyserver) + def install_key_from_keyserver(key, keyserver = new_resource.keyserver) cmd = "apt-key adv --recv" cmd << " --keyserver-options http-proxy=#{new_resource.key_proxy}" if new_resource.key_proxy cmd << " --keyserver " diff --git a/lib/chef/resource/apt_repository.rb b/lib/chef/resource/apt_repository.rb index b38bd1c8ec..3a2d30be2c 100644 --- a/lib/chef/resource/apt_repository.rb +++ b/lib/chef/resource/apt_repository.rb @@ -33,7 +33,7 @@ class Chef # whether or not to add the repository as a source repo, too property :deb_src, [TrueClass, FalseClass], default: false property :keyserver, [String, nil, false], default: "keyserver.ubuntu.com", nillable: true, coerce: proc { |x| x ? x : nil } - property :key, [String, nil, false], default: nil, nillable: true, coerce: proc { |x| x ? x : nil } + property :key, [String, Array, nil, false], default: [], coerce: proc { |x| x ? Array(x) : nil } property :key_proxy, [String, nil, false], default: nil, nillable: true, coerce: proc { |x| x ? x : nil } property :cookbook, [String, nil, false], default: nil, desired_state: false, nillable: true, coerce: proc { |x| x ? x : nil } |