# File lib/rudy/aws/ec2.rb, line 8 def self.connect(access_key=nil, secret_key=nil, region=nil, logger=nil) if region raise InvalidRegion, region unless Rudy::AWS.valid_region?(region) host = "#{region}.ec2.amazonaws.com" elsif ENV['EC2_URL'] host = URL.parse(ENV['EC2_URL']).host end host ||= DEFAULT_EC2_HOST port ||= DEFAULT_EC2_PORT @@ec2 = ::AWS::EC2::Base.new(:port => port, :server=> host, :access_key_id => access_key, :secret_access_key => secret_key) end
Execute AWS requests safely. This will trap errors and return a default value (if specified).
default A default response value
request A block which contains the AWS request
Returns the return value from the request is returned untouched or the default value on error or if the request returned nil.
# File lib/rudy/aws/ec2.rb, line 31 def self.execute_request(default=nil, timeout=nil, &request) timeout ||= 30 raise "No block provided" unless request response = nil @@mutex.synchronize { begin Timeout::timeout(timeout) do response = request.call end # Raise the EC2 exceptions rescue ::AWS::Error, ::AWS::InvalidInstanceIDMalformed => ex raise Rudy::AWS::Error, ex.message # NOTE: The InternalError is returned for non-existent volume IDs. # It's probably a bug so we're ignoring it -- Dave. rescue ::AWS::InternalError => ex raise Rudy::AWS::Error, ex.message rescue Timeout::Error => ex Rudy::Huxtable.le "Timeout (#{timeout}): #{ex.message}!" rescue SocketError => ex #Rudy::Huxtable.le ex.message #Rudy::Huxtable.le ex.backtrace raise SocketError, "Check your Internets!" unless @@global.offline ensure response ||= default end sleep 0.1 # defeat race conditions } response end
Generated with the Darkfish Rdoc Generator 2.