determine if instances are InService across a given load balancer and array of load balancers
This commit is contained in:
parent
20b59fb132
commit
9273f748c2
|
@ -24,4 +24,20 @@ class AwsHaRelease
|
|||
|
||||
@group.update(desired_capacity: @group.desired_capacity + 1)
|
||||
end
|
||||
|
||||
def instances_inservice?(load_balancer)
|
||||
load_balancer.instances.health.each do |health|
|
||||
return false unless health[:state] == 'InService'
|
||||
end
|
||||
|
||||
true
|
||||
end
|
||||
|
||||
def all_instances_inservice?(load_balancers)
|
||||
load_balancers.each do |load_balancer|
|
||||
return false unless instances_inservice?(load_balancer)
|
||||
end
|
||||
|
||||
true
|
||||
end
|
||||
end
|
||||
|
|
|
@ -59,5 +59,46 @@ describe 'aws-ha-release' do
|
|||
|
||||
expect(@group.desired_capacity).to eq 2
|
||||
end
|
||||
|
||||
context 'determining if instances are in service' do
|
||||
it 'checks all instances across a given load balancer' do
|
||||
load_balancer = AWS::FakeELB::LoadBalancer.new 'test_load_balancer_01'
|
||||
|
||||
expect(@aws_ha_release.instances_inservice?(load_balancer)).to eq false
|
||||
|
||||
load_balancer.instances.health[1] = {
|
||||
instance: AWS::FakeEC2::Instance.new,
|
||||
description: 'N/A',
|
||||
state: 'InService',
|
||||
reason_code: 'N/A'
|
||||
}
|
||||
|
||||
expect(@aws_ha_release.instances_inservice?(load_balancer)).to eq true
|
||||
end
|
||||
|
||||
it 'checks all instances across an array of load balancers' do
|
||||
load_balancers = [AWS::FakeELB::LoadBalancer.new('test_load_balancer_01'), AWS::FakeELB::LoadBalancer.new('test_load_balancer_02')]
|
||||
|
||||
expect(@aws_ha_release.all_instances_inservice?(load_balancers)).to eq false
|
||||
|
||||
load_balancers[0].instances.health[1] = {
|
||||
instance: AWS::FakeEC2::Instance.new,
|
||||
description: 'N/A',
|
||||
state: 'InService',
|
||||
reason_code: 'N/A'
|
||||
}
|
||||
|
||||
expect(@aws_ha_release.all_instances_inservice?(load_balancers)).to eq false
|
||||
|
||||
load_balancers[1].instances.health[1] = {
|
||||
instance: AWS::FakeEC2::Instance.new,
|
||||
description: 'N/A',
|
||||
state: 'InService',
|
||||
reason_code: 'N/A'
|
||||
}
|
||||
|
||||
expect(@aws_ha_release.all_instances_inservice?(load_balancers)).to eq true
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
11
spec/support/fake_ec2.rb
Normal file
11
spec/support/fake_ec2.rb
Normal file
|
@ -0,0 +1,11 @@
|
|||
module AWS
|
||||
class FakeEC2
|
||||
def initialize
|
||||
end
|
||||
|
||||
class Instance
|
||||
def initialize
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
37
spec/support/fake_elb.rb
Normal file
37
spec/support/fake_elb.rb
Normal file
|
@ -0,0 +1,37 @@
|
|||
module AWS
|
||||
class FakeELB
|
||||
def initialize
|
||||
end
|
||||
|
||||
class LoadBalancer
|
||||
def initialize(name, options = {})
|
||||
end
|
||||
|
||||
def instances
|
||||
@instances ||= InstanceCollection.new
|
||||
end
|
||||
end
|
||||
|
||||
class InstanceCollection
|
||||
def initialize
|
||||
end
|
||||
|
||||
def health
|
||||
@health ||= [
|
||||
{
|
||||
instance: AWS::FakeEC2::Instance.new,
|
||||
description: 'N/A',
|
||||
state: 'InService',
|
||||
reason_code: 'N/A'
|
||||
},
|
||||
{
|
||||
instance: AWS::FakeEC2::Instance.new,
|
||||
description: 'Instance has failed at least the UnhealthyThreshold number of health checks consecutively.',
|
||||
state: 'OutOfService',
|
||||
reason_code: 'Instance'
|
||||
}
|
||||
]
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
Loading…
Reference in New Issue
Block a user