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