Module Rudy::AWS::EC2

  1. lib/rudy/aws/ec2/address.rb
  2. lib/rudy/aws/ec2/group.rb
  3. lib/rudy/aws/ec2/image.rb
  4. lib/rudy/aws/ec2/keypair.rb
  5. lib/rudy/aws/ec2/instance.rb
  6. lib/rudy/aws/ec2/snapshot.rb
  7. lib/rudy/aws/ec2/volume.rb
  8. lib/rudy/aws/ec2/zone.rb
  9. lib/rudy/aws/ec2.rb
  10. show all

Methods

public class

  1. connect
  2. execute_request

Included modules

  1. Rudy::Huxtable

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