summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJames Turnbull <james@lovedthanlost.net>2011-05-04 11:02:41 +1000
committerNigel Kersten <nigel@puppetlabs.com>2011-05-09 17:25:42 -0700
commitcc67a0148b97e315572cdb905476df1224a78dd5 (patch)
treea9d959a55c352870da31d9389f053403c9a423c2
parentee93457099c286973f397ff1a03f2be7fddfe9ae (diff)
downloadfacter-cc67a0148b97e315572cdb905476df1224a78dd5.tar.gz
facter-cc67a0148b97e315572cdb905476df1224a78dd5.tar.xz
facter-cc67a0148b97e315572cdb905476df1224a78dd5.zip
Removed inappropriately uncredited Ohai method from ec2 fact
-rw-r--r--lib/facter/arp.rb4
-rw-r--r--lib/facter/ec2.rb54
2 files changed, 18 insertions, 40 deletions
diff --git a/lib/facter/arp.rb b/lib/facter/arp.rb
index 6269ae0..383fb48 100644
--- a/lib/facter/arp.rb
+++ b/lib/facter/arp.rb
@@ -13,7 +13,7 @@ Facter.add(:arp) do
end
end
end
- EC2_ARP == arp ? arp : nil
+ "fe:ff:ff:ff:ff:ff" == arp ? arp : nil
end
end
@@ -22,7 +22,7 @@ Facter::Util::IP.get_interfaces.each do |interface|
confine :kernel => :linux
setcode do
arp = Facter::Util::IP.get_arp_value(interface)
- EC2_ARP == arp ? arp : nil
+ "fe:ff:ff:ff:ff:ff" == arp ? arp : nil
end
end
end
diff --git a/lib/facter/ec2.rb b/lib/facter/ec2.rb
index 693e78e..c52f76b 100644
--- a/lib/facter/ec2.rb
+++ b/lib/facter/ec2.rb
@@ -4,45 +4,24 @@
# Additional work modelled on Ohai EC2 fact
require 'open-uri'
-require 'socket'
-
-EC2_ADDR = "169.254.169.254"
-EC2_METADATA_URL = "http://#{EC2_ADDR}/2008-02-01/meta-data"
-EC2_USERDATA_URL = "http://#{EC2_ADDR}/2008-02-01/user-data"
-EC2_ARP = "fe:ff:ff:ff:ff:ff"
-EC2_EUCA_MAC = %r{^[dD]0:0[dD]:}
-
-def can_metadata_connect?(addr, port, timeout=2)
- t = Socket.new(Socket::Constants::AF_INET, Socket::Constants::SOCK_STREAM, 0)
- saddr = Socket.pack_sockaddr_in(port, addr)
- connected = false
-
- begin
- t.connect_nonblock(saddr)
- rescue Errno::EINPROGRESS
- r,w,e = IO::select(nil,[t],nil,timeout)
- if !w.nil?
- connected = true
- else
- begin
- t.connect_nonblock(saddr)
- rescue Errno::EISCONN
- t.close
- connected = true
- rescue SystemCallError
- end
- end
- rescue SystemCallError
- end
- connected
+require 'timeout'
+
+def can_connect?(wait_sec=2)
+ url = "http://169.254.169.254:80/"
+ Timeout::timeout(wait_sec) {open(url)}
+ return true
+ rescue Timeout::Error
+ return false
+ rescue
+ return false
end
def metadata(id = "")
- open("#{EC2_METADATA_URL}/#{id||=''}").read.
+ open("http://169.254.169.254/2008-02-01/meta-data/#{id||=''}").read.
split("\n").each do |o|
key = "#{id}#{o.gsub(/\=.*$/, '/')}"
if key[-1..-1] != '/'
- value = open("#{EC2_METADATA_URL}/#{key}").read.
+ value = open("http://169.254.169.254/2008-02-01/meta-data/#{key}").read.
split("\n")
value = value.size>1 ? value : value.first
symbol = "ec2_#{key.gsub(/\-|\//, '_')}".to_sym
@@ -54,23 +33,22 @@ def metadata(id = "")
end
def userdata()
- # assumes the only expected error is the 404 if there's no user-data
begin
- value = OpenURI.open_uri("#{EC2_USERDATA_URL}/").read.split
+ value = OpenURI.open_uri("http://169.254.169.254/2008-02-01/user-data/").read.split
Facter.add(:ec2_userdata) { setcode { value } }
rescue OpenURI::HTTPError
end
end
def has_euca_mac?
- !!(Facter.value(:macaddress) =~ EC2_EUCA_MAC)
+ !!(Facter.value(:macaddress) =~ %r{^[dD]0:0[dD]:})
end
def has_ec2_arp?
- !!(Facter.value(:arp) == EC2_ARP)
+ !!(Facter.value(:arp) == "fe:ff:ff:ff:ff:ff")
end
-if (has_euca_mac? || has_ec2_arp?) && can_metadata_connect?(EC2_ADDR,80)
+if (has_euca_mac? || has_ec2_arp?) && can_connect?
metadata
userdata
else