summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGavin Reynolds <g.reynolds@src.gla.ac.uk>2017-08-31 14:58:48 +0100
committerGavin Reynolds <g.reynolds@src.gla.ac.uk>2017-08-31 15:23:59 +0100
commitf74cade60ded63f26248a38447824a732d581588 (patch)
treef24d11aed60be516b97bda6a5dd9b29137de51e5
parent4f2bac9506f9e93dd33e0a94d61c016f6aeacbb1 (diff)
downloadchef-f74cade60ded63f26248a38447824a732d581588.tar.gz
Support an array of keys for apt_repository
Signed-off-by: Gavin Reynolds <g.reynolds@src.gla.ac.uk>
-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..293d6b6414 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 ? [x].flatten : 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 }