diff options
author | John Kerry <jk185160@ncr.com> | 2016-03-24 11:35:19 -0400 |
---|---|---|
committer | John Kerry <jk185160@ncr.com> | 2016-03-24 11:35:19 -0400 |
commit | c0d0e1cddcb4ead133428fe6ee30a84a51fd1db1 (patch) | |
tree | 52e5447340b0c93ffe0c40c9e8b381d921cc9792 /lib/chef/provider/remote_file | |
parent | 360d506c9cdf0e94071f0a656eafbc7d2f302d9a (diff) | |
download | chef-c0d0e1cddcb4ead133428fe6ee30a84a51fd1db1.tar.gz |
Finishing off the sftp unit tests. Added some checks to the sftp provider to maintain the precedent set by the ftp provider
Diffstat (limited to 'lib/chef/provider/remote_file')
-rw-r--r-- | lib/chef/provider/remote_file/fetcher.rb | 2 | ||||
-rw-r--r-- | lib/chef/provider/remote_file/sftp.rb | 39 |
2 files changed, 26 insertions, 15 deletions
diff --git a/lib/chef/provider/remote_file/fetcher.rb b/lib/chef/provider/remote_file/fetcher.rb index c138ee5d6b..563d135d6a 100644 --- a/lib/chef/provider/remote_file/fetcher.rb +++ b/lib/chef/provider/remote_file/fetcher.rb @@ -32,7 +32,7 @@ class Chef when "ftp" Chef::Provider::RemoteFile::FTP.new(uri, new_resource, current_resource) when "sftp" - Chef::Provider::RemoteFile::SFTP.net(uri, new_resource, current_resource) + Chef::Provider::RemoteFile::SFTP.new(uri, new_resource, current_resource) when "file" Chef::Provider::RemoteFile::LocalFile.new(uri, new_resource, current_resource) else diff --git a/lib/chef/provider/remote_file/sftp.rb b/lib/chef/provider/remote_file/sftp.rb index 4e2c0d2c9a..680e69c675 100644 --- a/lib/chef/provider/remote_file/sftp.rb +++ b/lib/chef/provider/remote_file/sftp.rb @@ -36,26 +36,19 @@ class Chef @new_resource = new_resource @current_resource = current_resource validate_path! + validate_userinfo! end def hostname @uri.host end - def user - if uri.userinfo - URI.unescape(uri.user) - else - 'anonymous' - end + def port + @uri.port end - def pass - if uri.userinfo - URI.unescape(uri.password) - else - nil - end + def user + URI.unescape(uri.user) end def filename @@ -67,16 +60,34 @@ class Chef get end + private + def sftp - @sftp ||= Net::SFTP.start(hostname, user, :password => pass) + host = port ? "#{hostname}:#{port}" : hostname + @sftp ||= Net::SFTP.start(host, user, :password => pass) end - private + def pass + URI.unescape(uri.password) + end def validate_path! parse_path end + def validate_userinfo! + if uri.userinfo + if !(uri.user) + raise ArgumentError, "no user name provided in the sftp URI" + end + if !(uri.password) + raise ArgumentError, "no password provided in the sftp URI" + end + else + raise ArgumentError, "no userinfo provided in the sftp URI" + end + end + # Fetches using Net::FTP, returns a Tempfile with the content def get tempfile = Chef::FileContentManagement::Tempfile.new(@new_resource).tempfile |