class Aws::Elb
Constants
- API_VERSION
Amazon ELB API version being used
- DEFAULT_HOST
- DEFAULT_PATH
- DEFAULT_PORT
- DEFAULT_PROTOCOL
Public Class Methods
api()
click to toggle source
# File lib/elb/elb_interface.rb, line 38 def self.api @@api end
bench()
click to toggle source
# File lib/elb/elb_interface.rb, line 23 def self.bench @@bench end
bench_ec2()
click to toggle source
# File lib/elb/elb_interface.rb, line 31 def self.bench_ec2 @@bench.service end
bench_xml()
click to toggle source
# File lib/elb/elb_interface.rb, line 27 def self.bench_xml @@bench.xml end
connection_name()
click to toggle source
# File lib/elb/elb_interface.rb, line 17 def self.connection_name :elb_connection end
new(aws_access_key_id=nil, aws_secret_access_key=nil, params={})
click to toggle source
# File lib/elb/elb_interface.rb, line 43 def initialize(aws_access_key_id=nil, aws_secret_access_key=nil, params={}) init({:name => 'ELB', :default_host => ENV['ELB_URL'] ? URI.parse(ENV['ELB_URL']).host : DEFAULT_HOST, :default_port => ENV['ELB_URL'] ? URI.parse(ENV['ELB_URL']).port : DEFAULT_PORT, :default_service => ENV['ELB_URL'] ? URI.parse(ENV['ELB_URL']).path : DEFAULT_PATH, :default_protocol => ENV['ELB_URL'] ? URI.parse(ENV['ELB_URL']).scheme : DEFAULT_PROTOCOL, :api_version => API_VERSION}, aws_access_key_id || ENV['AWS_ACCESS_KEY_ID'], aws_secret_access_key|| ENV['AWS_SECRET_ACCESS_KEY'], params) end
Public Instance Methods
create_load_balancer(name, availability_zones, listeners)
click to toggle source
name: name of load balancer availability_zones: array of zones listeners: array of hashes containing :load_balancer_port, :instance_port, :protocol
eg: {:load_balancer_port=>80, :instance_port=>8080, :protocol=>"HTTP"}
# File lib/elb/elb_interface.rb, line 91 def create_load_balancer(name, availability_zones, listeners) params = hash_params('AvailabilityZones.member', availability_zones) i = 1 listeners.each do |l| params["Listeners.member.#{i}.Protocol"] = "#{l[:protocol]}" params["Listeners.member.#{i}.LoadBalancerPort"] = "#{l[:load_balancer_port]}" params["Listeners.member.#{i}.InstancePort"] = "#{l[:instance_port]}" i += 1 end params['LoadBalancerName'] = name @logger.info("Creating LoadBalancer called #{params['LoadBalancerName']}") link = generate_request("CreateLoadBalancer", params) resp = request_info(link, QElbCreateParser.new(:logger => @logger)) rescue Exception on_exception end
delete_load_balancer(name)
click to toggle source
# File lib/elb/elb_interface.rb, line 191 def delete_load_balancer(name) @logger.info("Deleting Load Balancer - " + name.to_s) params = {} params['LoadBalancerName'] = name link = generate_request("DeleteLoadBalancer", params) resp = request_info(link, QElbDeleteParser.new(:logger => @logger)) rescue Exception on_exception end
deregister_instances_from_load_balancer(name, instance_ids)
click to toggle source
# File lib/elb/elb_interface.rb, line 133 def deregister_instances_from_load_balancer(name, instance_ids) params = {} params['LoadBalancerName'] = name i = 1 instance_ids.each do |l| params["Instances.member.#{i}.InstanceId"] = "#{l}" i += 1 end @logger.info("Deregistering Instances #{instance_ids.join(',')} from Load Balancer '#{name}'") link = generate_request("DeregisterInstancesFromLoadBalancer", params) # Same response as register I believe resp = request_info(link, QElbRegisterInstancesParser.new(:logger => @logger)) rescue Exception on_exception end
describe_instance_health(name, instance_ids=[])
click to toggle source
# File lib/elb/elb_interface.rb, line 168 def describe_instance_health(name, instance_ids=[]) instance_ids = [instance_ids] if instance_ids.is_a?(String) # @logger.info("Describing Instance Health") params = {} params['LoadBalancerName'] = name i = 1 instance_ids.each do |l| params["Instances.member.#{i}.InstanceId"] = "#{l}" i += 1 end @logger.info("Describing Instances Health #{instance_ids.join(',')} with Load Balancer '#{name}'") link = generate_request("DescribeInstanceHealth", params) resp = request_info(link, QElbDescribeInstancesHealthParser.new(:logger => @logger)) rescue Exception on_exception end
describe_load_balancers(lparams={})
click to toggle source
# File lib/elb/elb_interface.rb, line 153 def describe_load_balancers(lparams={}) @logger.info("Describing Load Balancers") params = {} params.update(hash_params('LoadBalancerNames.member', lparams[:names])) if lparams[:names] link = generate_request("DescribeLoadBalancers", params) resp = request_info(link, QElbDescribeLoadBalancersParser.new(:logger => @logger)) rescue Exception on_exception end
do_request(action, params, options={})
click to toggle source
todo: convert to xml-simple version and get rid of parser below
# File lib/elb/elb_interface.rb, line 63 def do_request(action, params, options={}) link = generate_request(action, params) resp = request_info_xml_simple(self.class.connection_name, @params, link, @logger, :group_tags =>{"LoadBalancersDescriptions"=>"LoadBalancersDescription", "DBParameterGroups" =>"DBParameterGroup", "DBSecurityGroups" =>"DBSecurityGroup", "EC2SecurityGroups" =>"EC2SecurityGroup", "IPRanges" =>"IPRange"}, :force_array =>["DBInstances", "DBParameterGroups", "DBSecurityGroups", "EC2SecurityGroups", "IPRanges"], :pull_out_array =>options[:pull_out_array], :pull_out_single=>options[:pull_out_single], :wrapper =>options[:wrapper]) end
register_instances_with_load_balancer(name, instance_ids)
click to toggle source
name: name of load balancer instance_ids: array of instance_id's to add to load balancer
# File lib/elb/elb_interface.rb, line 114 def register_instances_with_load_balancer(name, instance_ids) params = {} params['LoadBalancerName'] = name i = 1 instance_ids.each do |l| params["Instances.member.#{i}.InstanceId"] = "#{l}" i += 1 end @logger.info("Registering Instances #{instance_ids.join(',')} with Load Balancer '#{name}'") link = generate_request("RegisterInstancesWithLoadBalancer", params) resp = request_info(link, QElbRegisterInstancesParser.new(:logger => @logger)) rescue Exception on_exception end
request_info(request, parser, options={})
click to toggle source
Sends request to Amazon and parses the response Raises AwsError if any banana happened
# File lib/elb/elb_interface.rb, line 58 def request_info(request, parser, options={}) request_info2(request, parser, @params, self.class.connection_name, @logger, @@bench, options) end