summaryrefslogtreecommitdiff
path: root/lib/chef/provider/remote_file
diff options
context:
space:
mode:
authorJohn Kerry <jk185160@ncr.com>2016-03-24 11:35:19 -0400
committerJohn Kerry <jk185160@ncr.com>2016-03-24 11:35:19 -0400
commitc0d0e1cddcb4ead133428fe6ee30a84a51fd1db1 (patch)
tree52e5447340b0c93ffe0c40c9e8b381d921cc9792 /lib/chef/provider/remote_file
parent360d506c9cdf0e94071f0a656eafbc7d2f302d9a (diff)
downloadchef-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.rb2
-rw-r--r--lib/chef/provider/remote_file/sftp.rb39
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