From 5b6f4fa4aae419bd2d65e1af6e185123dd432ac6 Mon Sep 17 00:00:00 2001 From: Paul Nasrat Date: Sun, 28 Jun 2009 11:22:28 +0100 Subject: Discussion on ec2 facts - #2346 The EC2 fact is completely broken at the moment: * Timeout::Error isn't caught by rescue (due to how it inherits) * The issue of wrong open semantics outlined here, this is causing hidden immediate failure * The fact is going to cause a 2 second wait to every facter run Whilst the following patch fixes the first two, I'm not sure we want to take the timeout hit, we also want to add tests as even simple ruby code can get logic errors such as the open(). Signed-off-by: Paul Nasrat --- lib/facter/ec2.rb | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'lib') diff --git a/lib/facter/ec2.rb b/lib/facter/ec2.rb index ef84757..ea29d14 100644 --- a/lib/facter/ec2.rb +++ b/lib/facter/ec2.rb @@ -6,9 +6,12 @@ require 'open-uri' require 'timeout' def can_connect?(ip,port,wait_sec=2) - Timeout::timeout(wait_sec) {open(ip, port)} + url = "http://#{ip}:#{port}/" + Timeout::timeout(wait_sec) {open(url)} return true -rescue +rescue Timeout::Error + return false +rescue return false end -- cgit