class Ec2ClientWrapper
Attributes
commands[RW]
logger[RW]
options[RW]
Public Class Methods
new(commands, logger)
click to toggle source
# File lib/ec2_client_wrapper.rb, line 11 def initialize(commands, logger) @commands = commands @logger = logger @options = commands.global_options @config = { :endpoint => @options[:ec2_endpoint] || "https://ec2.amazonaws.com", :api_version => '2010-11-15', :ca_file => File.join(File.dirname(__FILE__), "cacert.pem"), :aws_access_key => @options[:aws_access_id], :aws_secret_key => @options[:aws_secret_key], :signature_algorithm => :V2, :verbose => (@options[:verbose] != nil) } @client = Amazon::RetryDelegator.new( Amazon::Coral::Ec2Client.new_aws_query(@config), :retry_if => Proc.new { |*opts| self.is_retryable_error_response(*opts) } ) end
Public Instance Methods
allocate_address()
click to toggle source
# File lib/ec2_client_wrapper.rb, line 56 def allocate_address() logger.trace "AllocateAddress()" result = @client.AllocateAddress() logger.trace result.inspect return raise_on_error(result) end
associate_address(instance_id, public_ip)
click to toggle source
# File lib/ec2_client_wrapper.rb, line 63 def associate_address(instance_id, public_ip) logger.trace "AssociateAddress('InstanceId' => #{instance_id.inspect}, 'PublicIp' => #{public_ip.inspect})" result = @client.AssociateAddress('InstanceId' => instance_id, 'PublicIp' => public_ip) logger.trace result.inspect return raise_on_error(result) end
is_error_response(response)
click to toggle source
# File lib/ec2_client_wrapper.rb, line 45 def is_error_response(response) response != nil && response.key?('Error') end
is_retryable_error_response(response)
click to toggle source
# File lib/ec2_client_wrapper.rb, line 32 def is_retryable_error_response(response) if response == nil then false else ret = false if response['Error'] then # note: 'Timeout' is not retryable because the operation might have completed just the connection timed out ret ||= ['Throttling', 'ServiceUnavailable'].include?(response['Error']['Code']) end ret end end
raise_on_error(response)
click to toggle source
# File lib/ec2_client_wrapper.rb, line 49 def raise_on_error(response) if is_error_response(response) then raise RuntimeError, response["Error"].inspect end return response end