add a MAX keyword to simply bring up as many instances as are already running
This commit is contained in:
parent
03b826dbe1
commit
6cc88eb9aa
|
@ -21,6 +21,8 @@ module AwsMissingTools
|
||||||
raise ArgumentError, "The Auto Scaling Group named #{@opts[:as_group_name]} does not exist in #{@opts[:region]}."
|
raise ArgumentError, "The Auto Scaling Group named #{@opts[:as_group_name]} does not exist in #{@opts[:region]}."
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@opts[:num_simultaneous_instances] = Integer(@opts[:num_simultaneous_instances]) rescue @group.auto_scaling_instances.count
|
||||||
|
|
||||||
@max_size_change = 0
|
@max_size_change = 0
|
||||||
@time_spent_inservice = 0
|
@time_spent_inservice = 0
|
||||||
end
|
end
|
||||||
|
@ -64,7 +66,7 @@ module AwsMissingTools
|
||||||
end
|
end
|
||||||
|
|
||||||
opts.on('-n', '--num-simultaneous-instances NUM', 'Number of instances to simultaneously bring up per iteration') do |v|
|
opts.on('-n', '--num-simultaneous-instances NUM', 'Number of instances to simultaneously bring up per iteration') do |v|
|
||||||
options[:num_simultaneous_instances] = v.to_i
|
options[:num_simultaneous_instances] = v
|
||||||
end
|
end
|
||||||
end.parse!(arguments)
|
end.parse!(arguments)
|
||||||
|
|
||||||
|
@ -98,6 +100,7 @@ module AwsMissingTools
|
||||||
@group.update(desired_capacity: @group.desired_capacity + @opts[:num_simultaneous_instances])
|
@group.update(desired_capacity: @group.desired_capacity + @opts[:num_simultaneous_instances])
|
||||||
|
|
||||||
puts "The list of instances in Auto Scaling Group #{@group.name} that will be terminated is:\n#{@group.auto_scaling_instances.map{ |i| i.ec2_instance.id }.to_ary}"
|
puts "The list of instances in Auto Scaling Group #{@group.name} that will be terminated is:\n#{@group.auto_scaling_instances.map{ |i| i.ec2_instance.id }.to_ary}"
|
||||||
|
puts "The number of instances that will be brought up simultaneously is: #{@opts[:num_simultaneous_instances]}"
|
||||||
@group.auto_scaling_instances.to_a.each_slice(@opts[:num_simultaneous_instances]) do |instances|
|
@group.auto_scaling_instances.to_a.each_slice(@opts[:num_simultaneous_instances]) do |instances|
|
||||||
time_taken = 0
|
time_taken = 0
|
||||||
|
|
||||||
|
|
|
@ -28,6 +28,22 @@ describe 'aws-ha-release' do
|
||||||
AwsMissingTools::AwsHaRelease.new(opts)
|
AwsMissingTools::AwsHaRelease.new(opts)
|
||||||
}.should raise_error
|
}.should raise_error
|
||||||
end
|
end
|
||||||
|
|
||||||
|
context 'number of simultaneous instances' do
|
||||||
|
before do
|
||||||
|
as.groups.create opts[1]
|
||||||
|
opts.push('--num-simultaneous-instances')
|
||||||
|
end
|
||||||
|
it 'with MAX, sets the option to the number of active instances' do
|
||||||
|
opts.push('MAX')
|
||||||
|
expect(AwsMissingTools::AwsHaRelease.new(opts).instance_variable_get('@opts')[:num_simultaneous_instances]).to eq 2
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'with an integer, sets the option to that integer' do
|
||||||
|
opts.push('1')
|
||||||
|
expect(AwsMissingTools::AwsHaRelease.new(opts).instance_variable_get('@opts')[:num_simultaneous_instances]).to eq 1
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
describe '#parse_options' do
|
describe '#parse_options' do
|
||||||
|
@ -82,9 +98,17 @@ describe 'aws-ha-release' do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'number of instances to simultaneously bring up' do
|
context 'number of instances to simultaneously bring up' do
|
||||||
|
it 'recognizes integer inputs' do
|
||||||
[%w(-a test_group -n 2), %w(-a test_group --num-simultaneous-instances 2)].each do |options|
|
[%w(-a test_group -n 2), %w(-a test_group --num-simultaneous-instances 2)].each do |options|
|
||||||
expect(AwsMissingTools::AwsHaRelease.parse_options(options)[:num_simultaneous_instances]).to eq 2
|
expect(AwsMissingTools::AwsHaRelease.parse_options(options)[:num_simultaneous_instances]).to eq '2'
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'recognizes the MAX keyword' do
|
||||||
|
[%w(-a test_group -n MAX), %w(-a test_group --num-simultaneous-instances MAX)].each do |options|
|
||||||
|
expect(AwsMissingTools::AwsHaRelease.parse_options(options)[:num_simultaneous_instances]).to eq 'MAX'
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue
Block a user