Although URLs with usernames and passwords were valid in the previous version 
of the external_node
script, they weren't being passed in the HTTP request. This commit adds a 
username and password
to the request if a user is present in the URL.

The "if uri.user" isn't strictly necessary, since requests with blank 
usernames/passwords
will still succeed if basic auth isn't enabled in Dashboard, but it adds 
clarity.

Signed-off-by: nfagerlund <[email protected]>
---
Local-branch: ticket/next/5126
 bin/external_node |    4 +++-
 1 files changed, 3 insertions(+), 1 deletions(-)

diff --git a/bin/external_node b/bin/external_node
index 36aa2e6..08d00d8 100755
--- a/bin/external_node
+++ b/bin/external_node
@@ -29,6 +29,8 @@ url = ENV['PUPPET_DASHBOARD_URL'] || DASHBOARD_URL
 uri = URI.parse("#{url}/nodes/#{NODE}")
 require 'net/https' if uri.scheme == 'https'
 
+request = Net::HTTP::Get.new(uri.path, initheader = {'Accept' => 'text/yaml'})
+request.basic_auth uri.user, uri.password if uri.user
 http = Net::HTTP.new(uri.host, uri.port)
 if uri.scheme == 'https'
   cert = File.read(cert_path)
@@ -39,7 +41,7 @@ if uri.scheme == 'https'
   http.ca_file = ca_path
   http.verify_mode = OpenSSL::SSL::VERIFY_PEER
 end
-result = http.start { http.request_get(uri.path, 'Accept' => 'text/yaml') }
+result = http.start {|http| http.request(request)}
 
 case result
 when Net::HTTPSuccess; puts result.body; exit 0
-- 
1.7.3.3

-- 
You received this message because you are subscribed to the Google Groups 
"Puppet Developers" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/puppet-dev?hl=en.

Reply via email to