Merge pull request #1874 from mikehale/asg-exclude-instances

[AWS | AutoScaling] Do not send Instances for update_auto_scaling_group
This commit is contained in:
Dan Peterson 2013-06-14 05:27:11 -07:00
commit 7f3e8a2df6
5 changed files with 46 additions and 4 deletions

View File

@ -60,6 +60,8 @@ module Fog
model :policy
collection :policies
ExpectedOptions = {}
class Real
include Fog::AWS::CredentialFetcher::ConnectionMethods

View File

@ -111,8 +111,7 @@ module Fog
requires :launch_configuration_name
requires :max_size
requires :min_size
service.create_auto_scaling_group(id, availability_zones, launch_configuration_name, max_size, min_size, options)
service.create_auto_scaling_group(id, availability_zones, launch_configuration_name, max_size, min_size, filtered_options(:create_auto_scaling_group))
reload
end
@ -132,10 +131,14 @@ module Fog
def update
requires :id
service.update_auto_scaling_group(id, options)
service.update_auto_scaling_group(id, filtered_options(:update_auto_scaling_group) )
reload
end
def filtered_options(method)
Hash[options.select{|k,_| ExpectedOptions[method].include?(k)}]
end
def options
ret = Hash[self.class.aliases.map { |key, value| [key, send(value)] }]
ret.delete_if { |key, value| value.nil? }

View File

@ -63,6 +63,9 @@ module Fog
# ==== See Also
# http://docs.amazonwebservices.com/AutoScaling/latest/APIReference/API_CreateAutoScalingGroup.html
#
ExpectedOptions[:create_auto_scaling_group] = %w[DefaultCooldown DesiredCapacity HealthCheckGracePeriod HealthCheckType LoadBalancerNames PlacementGroup Tags TerminationPolicies VPCZoneIdentifier]
def create_auto_scaling_group(auto_scaling_group_name, availability_zones, launch_configuration_name, max_size, min_size, options = {})
options.merge!(AWS.indexed_param('AvailabilityZones.member.%d', [*availability_zones]))
options.delete('AvailabilityZones')
@ -94,6 +97,11 @@ module Fog
class Mock
def create_auto_scaling_group(auto_scaling_group_name, availability_zones, launch_configuration_name, max_size, min_size, options = {})
unexpected_options = options.keys - ExpectedOptions[:create_auto_scaling_group]
unless unexpected_options.empty?
raise Fog::AWS::AutoScaling::ValidationError.new("Options #{unexpected_options.join(',')} should not be included in request")
end
if self.data[:auto_scaling_groups].has_key?(auto_scaling_group_name)
raise Fog::AWS::AutoScaling::IdentifierTaken.new("AutoScalingGroup by this name already exists - A group with the name #{auto_scaling_group_name} already exists")
end

View File

@ -1,7 +1,6 @@
module Fog
module AWS
class AutoScaling
class Real
require 'fog/aws/parsers/auto_scaling/basic'
@ -52,6 +51,9 @@ module Fog
# ==== See Also
# http://docs.amazonwebservices.com/AutoScaling/latest/APIReference/API_UpdateAutoScalingGroup.html
#
ExpectedOptions[:update_auto_scaling_group] = %w[AvailabilityZones DefaultCooldown DesiredCapacity HealthCheckGracePeriod HealthCheckType LaunchConfigurationName MaxSize MinSize PlacementGroup TerminationPolicies VPCZoneIdentifier]
def update_auto_scaling_group(auto_scaling_group_name, options = {})
if availability_zones = options.delete('AvailabilityZones')
options.merge!(AWS.indexed_param('AvailabilityZones.member.%d', [*availability_zones]))
@ -71,6 +73,11 @@ module Fog
class Mock
def update_auto_scaling_group(auto_scaling_group_name, options = {})
unexpected_options = options.keys - ExpectedOptions[:update_auto_scaling_group]
unless unexpected_options.empty?
raise Fog::AWS::AutoScaling::ValidationError.new("Options #{unexpected_options.join(',')} should not be included in request")
end
unless self.data[:auto_scaling_groups].has_key?(auto_scaling_group_name)
raise Fog::AWS::AutoScaling::ValidationError.new('AutoScalingGroup name not found - null')
end

View File

@ -0,0 +1,22 @@
Shindo.tests('AWS::AutoScaling | group', ['aws', 'auto_scaling_m']) do
params = {
:id => uniq_id,
:auto_scaling_group_name => "name",
:availability_zones => [],
:launch_configuration_name => "lc"
}
lc_params = {
:id => params[:launch_configuration_name],
:image_id => "image-id",
:instance_type => "instance-type",
}
Fog::AWS[:auto_scaling].configurations.new(lc_params).save
model_tests(Fog::AWS[:auto_scaling].groups, params, true) do
@instance.update
end
end