17: def create_load_balancer( options = {} )
18: raise ArgumentError, "No :availability_zones provided" if options[:availability_zones].nil? || options[:availability_zones].empty?
19: raise ArgumentError, "No :listeners provided" if options[:listeners].nil? || options[:listeners].empty?
20: raise ArgumentError, "No :load_balancer_name provided" if options[:load_balancer_name].nil? || options[:load_balancer_name].empty?
21:
22: params = {}
23:
24: params.merge!(pathlist('AvailabilityZones.member', [options[:availability_zones]].flatten))
25: params.merge!(pathhashlist('Listeners.member', [options[:listeners]].flatten, {
26: :protocol => 'Protocol',
27: :load_balancer_port => 'LoadBalancerPort',
28: :instance_port => 'InstancePort'
29: }))
30: params['LoadBalancerName'] = options[:load_balancer_name]
31:
32: return response_generator(:action => "CreateLoadBalancer", :params => params)
33: end