aws-missing-tools/spec/support/fake_elb.rb

80 lines
1.8 KiB
Ruby

module AWS
class FakeELB
def initialize
end
class LoadBalancer
attr_reader :name, :instances
def initialize(name, instances_and_healths)
@name = name
@instances ||= InstanceCollection.new(instances_and_healths)
end
end
class LoadBalancerCollection < Array
def initialize
end
end
class InstanceCollection < Array
attr_reader :health
def initialize(instances_and_healths)
@health = []
instances_and_healths.each do |instance_and_health|
self << instance_and_health[:instance]
instance_and_health[:healthy] ? make_instance_healthy(instance_and_health[:instance]) : make_instance_unhealthy(instance_and_health[:instance])
end
end
def register(*instances)
self.concat instances
end
def deregister(*instances)
instances.each do |i|
self.delete i
end
end
def make_instance_healthy(instance)
opts = {
instance: instance,
description: 'N/A',
state: 'InService',
reason_code: 'N/A'
}
@health.each_with_index do |health, i|
if health[:instance] == instance
@health[i] = opts
return
end
end
@health << opts
end
def make_instance_unhealthy(instance)
opts = {
instance: instance,
description: 'Instance has failed at least the UnhealthyThreshold number of health checks consecutively.',
state: 'OutOfService',
reason_code: 'Instance'
}
@health.each_with_index do |health, i|
if health[:instance] == instance
@health[i] = opts
return
end
end
@health << opts
end
end
end
end