1
0
Fork 0
mirror of https://github.com/fog/fog.git synced 2022-11-09 13:51:43 -05:00
fog--fog/lib/fog/core/current_machine.rb

39 lines
1 KiB
Ruby
Raw Normal View History

require 'net/http'
require 'uri'
module Fog
class CurrentMachine
@@lock = Mutex.new
AMAZON_AWS_CHECK_IP = 'http://checkip.amazonaws.com'
def self.ip_address= ip_address
@@lock.synchronize do
@@ip_address = ip_address
end
end
# Get the ip address of the machine from which this command is run. It is
# recommended that you surround calls to this function with a timeout block
# to ensure optimum performance in the case where the amazonaws checkip
# service is unavailable.
#
# @example Get the current ip address
# begin
# Timeout::timeout(5) do
# puts "Your ip address is #{Fog::CurrentMachine.ip_address}"
# end
# rescue Timeout::Error
# puts "Service timeout"
# end
#
# @raise [Net::HTTPExceptions] if the net/http request fails.
def self.ip_address
@@lock.synchronize do
@@ip_address ||= Net::HTTP \
.get_response(URI.parse(AMAZON_AWS_CHECK_IP)) \
.body.chomp
end
end
end
end