summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThom May <thom@may.lt>2017-09-01 11:54:38 +0100
committerGitHub <noreply@github.com>2017-09-01 11:54:38 +0100
commit09377dc9fa0518f5760611decbc751b121d8135d (patch)
treeac1df8cbb56b2f924fd48e337ce22057479f6916
parent71c6b79ea31265f124abeaedf983f954441e256d (diff)
parent8a399ee8b2f9f4c3336e91b0da22c9f5fa67318f (diff)
downloadchef-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.rb22
-rw-r--r--lib/chef/resource/apt_repository.rb2
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 }