class Algae::Asg
Public Class Methods
new(name)
click to toggle source
# File lib/algae.rb, line 47 def initialize(name) @name = name end
Public Instance Methods
client()
click to toggle source
# File lib/algae.rb, line 117 def client @client ||= Aws::AutoScaling::Resource.new end
desired()
click to toggle source
# File lib/algae.rb, line 92 def desired group.reload group.desired_capacity end
desired=(value)
click to toggle source
# File lib/algae.rb, line 97 def desired=(value) puts "setting desired to #{value} for #{group.name}" group.set_desired_capacity desired_capacity: value, honor_cooldown: false end
display()
click to toggle source
# File lib/algae.rb, line 51 def display pp status end
elb_client()
click to toggle source
# File lib/algae.rb, line 129 def elb_client @elb_client ||= Aws::ElasticLoadBalancing::Client.new end
elb_in_service()
click to toggle source
# File lib/algae.rb, line 67 def elb_in_service status.select do |i, status| status[:elb_health_status] == 'InService' end.keys end
elb_instance_health()
click to toggle source
# File lib/algae.rb, line 121 def elb_instance_health result = {} elb_client.describe_instance_health(load_balancer_name: @name).instance_states.each do |instance| result[instance.instance_id] = instance.state end result end
find_group()
click to toggle source
# File lib/algae.rb, line 103 def find_group matching_groups = client.groups.select do |g| g.auto_scaling_group_name.start_with? @name end raise('group name isnt unique') if matching_groups.count > 1 matching_groups.first end
group()
click to toggle source
# File lib/algae.rb, line 113 def group @group ||= find_group end
healthy_instances()
click to toggle source
# File lib/algae.rb, line 86 def healthy_instances instances.select do |i| i.health_status == 'Healthy' and i.lifecycle_state == 'InService' end end
in_service()
click to toggle source
# File lib/algae.rb, line 78 def in_service elb_instance_health.select{|id, state| state == 'InService'} end
instance_ids()
click to toggle source
# File lib/algae.rb, line 82 def instance_ids instances.map(&:id) end
instances()
click to toggle source
# File lib/algae.rb, line 73 def instances group.reload group.instances end
status()
click to toggle source
# File lib/algae.rb, line 55 def status result = {} elb_instance_healths = elb_instance_health instances.each do |i| result[i.instance_id] = {#az: i.availability_zone, lifecycle_state: i.lifecycle_state, health_status: i.health_status, elb_health_status: elb_instance_healths[i.instance_id]} end result end