Sha256: c7d0011a72f4835587c4730e5e3083c320ecd43675182012cc2979c05e3a862f
Contents?: true
Size: 1.99 KB
Versions: 1
Compression:
Stored size: 1.99 KB
Contents
require 'aws-sdk-autoscaling' class OpenStax::Utilities::StatusController < ActionController::Base layout 'openstax/utilities/status' def index @application_name = Rails.application.class.parent_name @environment_name = Rails.application.secrets.environment_name @statuses = if @environment_name == 'development' [ [ 'local', 1, 1, :ok ] ] else queues = Delayed::Worker.queue_attributes.keys.map(&:to_s) - [ 'migration' ] asgs = [ 'migration', 'web', 'cron', 'background' ] + queues.map do |queue| "background-#{queue}" end Aws::AutoScaling::Client.new.describe_auto_scaling_groups( auto_scaling_group_names: asgs.map do |asg| "#{@environment_name}-#{@application_name.downcase}-#{asg}-asg" end ).auto_scaling_groups.map do |asg| name = asg.auto_scaling_group_name.sub( "#{@environment_name}-#{@application_name.downcase}-", '' ).chomp('-asg') status = if asg.desired_capacity == 0 if asg.instances.size > 0 :shutting_down elsif [ 'web', 'background', 'cron' ].include?(name) :configuration_error else :sleeping end elsif asg.instances.all? do |instance| instance.health_status != 'Healthy' || instance.lifecycle_state != 'InService' end :down elsif name == 'migration' :migrating elsif asg.max_size > 1 && asg.desired_capacity == asg.max_size :at_capacity elsif asg.instances.size < asg.desired_capacity :scaling_up elsif asg.instances.size > asg.desired_capacity :scaling_down else :ok end [ name, asg.instances.size, asg.max_size, status ] end.sort_by do |name, _, _, _| case name when 'migration' '0' when 'web' '1' when 'cron' '2' else "3#{name}" end end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
openstax_utilities-4.4.0 | app/controllers/openstax/utilities/status_controller.rb |