class Stax::Cmd::Asg
Constants
- COLORS
Public Instance Methods
filter_asgs(asgs, groups)
click to toggle source
# File lib/stax/mixin/asg.rb, line 36 def filter_asgs(asgs, groups) return asgs unless groups ids = groups.map { |g| prepend(:asg, g) } asgs.select { |g| ids.include?(g.logical_resource_id) } end
ls()
click to toggle source
# File lib/stax/mixin/asg.rb, line 44 def ls print_table Aws::Asg.describe(stack_asgs.map(&:physical_resource_id)).map { |a| [ a.auto_scaling_group_name[0,40], a.launch_configuration_name[0,40], "#{a.instances.length}/#{a.desired_capacity}", "#{a.min_size}-#{a.max_size}", a.availability_zones.map{ |az| az[-1,1] }.sort.join(','), a.created_time ] } end
old()
click to toggle source
# File lib/stax/mixin/asg.rb, line 87 def old Aws::Asg.describe(stack_asgs.map(&:physical_resource_id)).map do |a| Aws::Asg.instances(a.auto_scaling_group_name).select do |i| i.launch_configuration_name != a.launch_configuration_name end end.flatten.tap do |list| print_table list.map { |i| [i.instance_id, i.auto_scaling_group_name, i.launch_configuration_name] } if options[:terminate] list.each do |i| yes?("Terminate #{i.instance_id}?", :yellow) && Aws::Asg.terminate(i.instance_id, options[:decrement]) end end end end
scale()
click to toggle source
# File lib/stax/mixin/asg.rb, line 106 def scale opt = options.slice(*%w[desired_capacity min_size max_size]) fail_task('No change requested') if opt.empty? stack_asgs.each do |a| debug("Scaling to #{opt} for #{a.logical_resource_id} #{a.physical_resource_id}") Aws::Asg.update(a.physical_resource_id, opt) end end
stack_asgs()
click to toggle source
# File lib/stax/mixin/asg.rb, line 31 def stack_asgs a = Aws::Cfn.resources_by_type(my.stack_name, 'AWS::AutoScaling::AutoScalingGroup') filter_asgs(a, options[:groups]) end
status()
click to toggle source
# File lib/stax/mixin/asg.rb, line 58 def status stack_asgs.each do |asg| debug("ASG status for #{asg.physical_resource_id}") print_table Aws::Asg.instances(asg.physical_resource_id).map { |i| [ i.instance_id, i.availability_zone, color(i.lifecycle_state, COLORS), color(i.health_status, COLORS), i.launch_configuration_name, ] } end end
terminate(*ids)
click to toggle source
# File lib/stax/mixin/asg.rb, line 75 def terminate(*ids) instances = Aws::Asg.instances(stack_asgs.map(&:physical_resource_id)) instances.select do |i| ids.any? { |id| i.instance_id.match(id) } end.each do |i| yes?("Terminate #{i.instance_id}?", :yellow) && Aws::Asg.terminate(i.instance_id, options[:decrement]) end end