X-Git-Url: https://review.fuel-infra.org/gitweb?a=blobdiff_plain;f=lib%2Fpuppet%2Fprovider%2Fapt_key%2Fapt_key.rb;h=3f95c3cc96af9c68f40234d6f07a9a3072be5173;hb=73d200fedcb60b3fb1daeba3bff49f8a5881b183;hp=a6d68b1732dd4c0be547c0ce3bfe604aeae5ed04;hpb=ea6a84f336d5bb7e2ccab04cc6b2a4b2722b503d;p=puppet-modules%2Fpuppetlabs-apt.git diff --git a/lib/puppet/provider/apt_key/apt_key.rb b/lib/puppet/provider/apt_key/apt_key.rb index a6d68b1..3f95c3c 100644 --- a/lib/puppet/provider/apt_key/apt_key.rb +++ b/lib/puppet/provider/apt_key/apt_key.rb @@ -26,15 +26,25 @@ Puppet::Type.type(:apt_key).provide(:apt_key) do key_output = apt_key(cli_args) end - pub_line, fpr_line = nil + pub_line, sub_line, fpr_line = nil key_array = key_output.split("\n").collect do |line| if line.start_with?('pub') pub_line = line + # reset fpr_line, to skip any previous subkeys which were collected + fpr_line = nil + sub_line = nil + elsif line.start_with?('sub') + sub_line = line elsif line.start_with?('fpr') fpr_line = line end + if (sub_line and fpr_line) + sub_line, fpr_line = nil + next + end + next unless (pub_line and fpr_line) line_hash = key_line_hash(pub_line, fpr_line) @@ -127,7 +137,15 @@ Puppet::Type.type(:apt_key).provide(:apt_key) do f else begin - key = parsedValue.read + # Only send basic auth if URL contains userinfo + # Some webservers (e.g. Amazon S3) return code 400 if empty basic auth is sent + if parsedValue.userinfo.nil? + key = parsedValue.read + else + user_pass = parsedValue.userinfo.split(':') + parsedValue.userinfo = '' + key = open(parsedValue, :http_basic_authentication => user_pass).read + end rescue OpenURI::HTTPError, Net::FTPPermError => e fail("#{e.message} for #{resource[:source]}") rescue SocketError