From: Craig Gumbley Date: Wed, 17 Aug 2022 10:44:17 +0000 (+0100) Subject: Merge pull request #1050 from ekohl/deal-with-net-ftp-as-default-gem X-Git-Tag: v9.0.0~2 X-Git-Url: https://review.fuel-infra.org/gitweb?a=commitdiff_plain;h=8b15f6f58f843edff96d03e5a3b4dbdd92647a3d;hp=06207c35da2c9ad20bc733abe43a8566b3506c28;p=puppet-modules%2Fpuppetlabs-apt.git Merge pull request #1050 from ekohl/deal-with-net-ftp-as-default-gem Deal with net-ftp being unavailable --- diff --git a/lib/puppet/provider/apt_key/apt_key.rb b/lib/puppet/provider/apt_key/apt_key.rb index 56f9a07..115ed31 100644 --- a/lib/puppet/provider/apt_key/apt_key.rb +++ b/lib/puppet/provider/apt_key/apt_key.rb @@ -1,7 +1,11 @@ # frozen_string_literal: true require 'open-uri' -require 'net/ftp' +begin + require 'net/ftp' +rescue LoadError + # Ruby 3.0 changed net-ftp to a default gem +end require 'tempfile' Puppet::Type.type(:apt_key).provide(:apt_key) do @@ -124,6 +128,9 @@ Puppet::Type.type(:apt_key).provide(:apt_key) do f.close f else + exceptions = [OpenURI::HTTPError] + exceptions << Net::FTPPermError if defined?(Net::FTPPermError) + begin # Only send basic auth if URL contains userinfo # Some webservers (e.g. Amazon S3) return code 400 if empty basic auth is sent @@ -138,7 +145,7 @@ Puppet::Type.type(:apt_key).provide(:apt_key) do parsed_value.userinfo = '' key = open(parsed_value, http_basic_authentication: user_pass).read end - rescue OpenURI::HTTPError, Net::FTPPermError => e + rescue *exceptions => e raise(_('%{_e} for %{_resource}') % { _e: e.message, _resource: resource[:source] }) rescue SocketError raise(_('could not resolve %{_resource}') % { _resource: resource[:source] })