Included modules
Classes and Modules
Module Rudy::AWS::EC2::AddressesModule Rudy::AWS::EC2::Groups
Module Rudy::AWS::EC2::Images
Module Rudy::AWS::EC2::Instances
Module Rudy::AWS::EC2::Keypairs
Module Rudy::AWS::EC2::Snapshots
Module Rudy::AWS::EC2::Volumes
Module Rudy::AWS::EC2::Zones
Class Rudy::AWS::EC2::Address
Class Rudy::AWS::EC2::AddressAssociated
Class Rudy::AWS::EC2::AddressNotAssociated
Class Rudy::AWS::EC2::ErrorCreatingAddress
Class Rudy::AWS::EC2::ErrorCreatingKeypair
Class Rudy::AWS::EC2::Group
Class Rudy::AWS::EC2::Image
Class Rudy::AWS::EC2::InsecureKeypairPermissions
Class Rudy::AWS::EC2::Instance
Class Rudy::AWS::EC2::InvalidRegion
Class Rudy::AWS::EC2::Keypair
Class Rudy::AWS::EC2::KeypairAlreadyDefined
Class Rudy::AWS::EC2::KeypairExists
Class Rudy::AWS::EC2::MalformedResponse
Class Rudy::AWS::EC2::NoAMI
Class Rudy::AWS::EC2::NoAddress
Class Rudy::AWS::EC2::NoDevice
Class Rudy::AWS::EC2::NoGroup
Class Rudy::AWS::EC2::NoInstanceID
Class Rudy::AWS::EC2::NoKeypair
Class Rudy::AWS::EC2::NoPrivateKeyFile
Class Rudy::AWS::EC2::NoRunningInstances
Class Rudy::AWS::EC2::NoVolumeID
Class Rudy::AWS::EC2::Snapshot
Class Rudy::AWS::EC2::UnknownAddress
Class Rudy::AWS::EC2::UnknownState
Class Rudy::AWS::EC2::UnknownVolume
Class Rudy::AWS::EC2::Volume
Class Rudy::AWS::EC2::VolumeAlreadyAttached
Class Rudy::AWS::EC2::VolumeNotAttached
Class Rudy::AWS::EC2::VolumeNotAvailable
Class Rudy::AWS::EC2::Zone
Public class methods
connect
(access_key=nil, secret_key=nil, region=nil, logger=nil)
[show source]
# File lib/rudy/aws/ec2.rb, line 8 8: def self.connect(access_key=nil, secret_key=nil, region=nil, logger=nil) 9: 10: if region 11: raise InvalidRegion, region unless Rudy::AWS.valid_region?(region) 12: host = "#{region}.ec2.amazonaws.com" 13: elsif ENV['EC2_URL'] 14: host = URL.parse(ENV['EC2_URL']).host 15: end 16: 17: host ||= DEFAULT_EC2_HOST 18: port ||= DEFAULT_EC2_PORT 19: 20: @@ec2 = ::AWS::EC2::Base.new(:port => port, :server=> host, :access_key_id => access_key, :secret_access_key => secret_key) 21: end
execute_request
(default=nil, timeout=nil, &request)
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.
[show source]
# File lib/rudy/aws/ec2.rb, line 31 31: def self.execute_request(default=nil, timeout=nil, &request) 32: timeout ||= 30 33: raise "No block provided" unless request 34: response = nil 35: @@mutex.synchronize { 36: begin 37: 38: Timeout::timeout(timeout) do 39: response = request.call 40: end 41: 42: # Raise the EC2 exceptions 43: rescue ::AWS::Error, ::AWS::InvalidInstanceIDMalformed => ex 44: raise Rudy::AWS::Error, ex.message 45: 46: # NOTE: The InternalError is returned for non-existent volume IDs. 47: # It's probably a bug so we're ignoring it -- Dave. 48: rescue ::AWS::InternalError => ex 49: raise Rudy::AWS::Error, ex.message 50: 51: rescue Timeout::Error => ex 52: Rudy::Huxtable.le "Timeout (#{timeout}): #{ex.message}!" 53: rescue SocketError => ex 54: #Rudy::Huxtable.le ex.message 55: #Rudy::Huxtable.le ex.backtrace 56: raise SocketError, "Check your Internets!" unless @@global.offline 57: ensure 58: response ||= default 59: end 60: sleep 0.1 # defeat race conditions 61: } 62: response 63: end