Skip to content

Commit

Permalink
Merge pull request fog#977 from atbell/master
Browse files Browse the repository at this point in the history
Updated create_load_balancer to support internal ELBs
  • Loading branch information
estonfer committed Jun 13, 2012
2 parents 244a375 + 764bd6c commit 5b808d9
Show file tree
Hide file tree
Showing 6 changed files with 14 additions and 3 deletions.
2 changes: 1 addition & 1 deletion lib/fog/aws/elb.rb
Expand Up @@ -148,7 +148,7 @@ def request(params)
:host => @host,
:path => @path,
:port => @port,
:version => '2011-11-15'
:version => '2012-06-01'
}
)

Expand Down
3 changes: 2 additions & 1 deletion lib/fog/aws/models/elb/load_balancer.rb
Expand Up @@ -16,6 +16,7 @@ class LoadBalancer < Fog::Model
attribute :hosted_zone_name_id, :aliases => 'CanonicalHostedZoneNameID'
attribute :subnet_ids, :aliases => 'Subnets'
attribute :security_groups, :aliases => 'SecurityGroups'
attribute :scheme, :aliases => 'Scheme'
attribute :vpc_id, :aliases => 'VPCId'

def initialize(attributes={})
Expand Down Expand Up @@ -144,7 +145,7 @@ def save
#requires :availability_zones
if (availability_zones || subnet_ids)
connection.create_load_balancer(availability_zones, id, listeners.map{|l| l.to_params}) if availability_zones
connection.create_load_balancer(nil, id, listeners.map{|l| l.to_params}, {:subnet_ids => subnet_ids, :security_groups => security_groups}) if subnet_ids && !availability_zones
connection.create_load_balancer(nil, id, listeners.map{|l| l.to_params}, {:subnet_ids => subnet_ids, :security_groups => security_groups, :scheme => scheme}) if subnet_ids && !availability_zones
else
throw Fog::Errors::Error.new("No availability zones or subnet ids specified")
end
Expand Down
2 changes: 1 addition & 1 deletion lib/fog/aws/parsers/elb/describe_load_balancers.rb
Expand Up @@ -74,7 +74,7 @@ def end_element(name)
reset_load_balancer
end

when 'CanonicalHostedZoneName', 'CanonicalHostedZoneNameID', 'LoadBalancerName', 'DNSName'
when 'CanonicalHostedZoneName', 'CanonicalHostedZoneNameID', 'LoadBalancerName', 'DNSName', 'Scheme'
@load_balancer[name] = value
when 'CreatedTime'
@load_balancer[name] = Time.parse(value)
Expand Down
2 changes: 2 additions & 0 deletions lib/fog/aws/requests/elb/create_load_balancer.rb
Expand Up @@ -26,6 +26,7 @@ class Real
def create_load_balancer(availability_zones, lb_name, listeners, options = {})
params = Fog::AWS.indexed_param('AvailabilityZones.member', [*availability_zones])
params.merge!(Fog::AWS.indexed_param('Subnets.member.%d', options[:subnet_ids]))
params.merge!(Fog::AWS.serialize_keys('Scheme', options[:scheme]))
params.merge!(Fog::AWS.indexed_param('SecurityGroups.member.%d', options[:security_groups]))

listener_protocol = []
Expand Down Expand Up @@ -75,6 +76,7 @@ def create_load_balancer(availability_zones, lb_name, listeners = [], options =
self.data[:load_balancers][lb_name] = {
'AvailabilityZones' => availability_zones,
'Subnets' => options[:subnet_ids],
'Scheme' => options[:scheme],
'SecurityGroups' => options[:security_groups],
'CanonicalHostedZoneName' => '',
'CanonicalHostedZoneNameID' => '',
Expand Down
7 changes: 7 additions & 0 deletions tests/aws/models/elb/model_tests.rb
Expand Up @@ -6,11 +6,13 @@
@vpc_id = @vpc.id
@subnet = Fog::Compute[:aws].subnets.create({:vpc_id => @vpc_id, :cidr_block => '10.0.10.0/24'})
@subnet_id = @subnet.subnet_id
@scheme = 'internal'
@igw=Fog::Compute[:aws].internet_gateways.create
@igw_id = @igw.id
@igw.attach(@vpc_id)



tests('success') do
tests('load_balancers') do
tests('getting a missing elb') do
Expand Down Expand Up @@ -59,6 +61,11 @@
tests("subnet ids are correct").returns(@subnet_id) { elb2.subnet_ids.first }
elb2.destroy
end
tests('with vpc internal') do
elb2 = Fog::AWS[:elb].load_balancers.create(:id => "#{elb_id}-2", :subnet_ids => [@subnet_id], :scheme => 'internal')
tests("scheme is internal").returns(@scheme) { elb2.scheme }
elb2.destroy
end
if !Fog.mocking?
@igw.detach(@vpc_id)
@igw.destroy
Expand Down
1 change: 1 addition & 0 deletions tests/aws/requests/elb/helper.rb
Expand Up @@ -18,6 +18,7 @@ module Formats
"LoadBalancerName" => String,
"Policies" => {"LBCookieStickinessPolicies" => Array, "AppCookieStickinessPolicies" => Array},
"SourceSecurityGroup" => {"GroupName" => String, "OwnerAlias" => String},
"Scheme" => String
}

CREATE_LOAD_BALANCER = BASIC.merge({
Expand Down

0 comments on commit 5b808d9

Please sign in to comment.