[elb] Adding support for DescribeInstanceHealth
This commit is contained in:
parent
d88ed58f53
commit
14417a7e94
|
@ -5,16 +5,18 @@ module Fog
|
|||
def self.new(options={})
|
||||
|
||||
unless @required
|
||||
require 'fog/aws/parsers/elb/deregister_instances_from_load_balancer.rb'
|
||||
require 'fog/aws/parsers/elb/deregister_instances_from_load_balancer'
|
||||
require 'fog/aws/parsers/elb/describe_instance_health'
|
||||
require 'fog/aws/parsers/elb/describe_load_balancers'
|
||||
require 'fog/aws/parsers/elb/disable_availability_zones_for_load_balancer.rb'
|
||||
require 'fog/aws/parsers/elb/enable_availability_zones_for_load_balancer.rb'
|
||||
require 'fog/aws/parsers/elb/register_instances_with_load_balancer.rb'
|
||||
require 'fog/aws/requests/elb/deregister_instances_from_load_balancer.rb'
|
||||
require 'fog/aws/parsers/elb/disable_availability_zones_for_load_balancer'
|
||||
require 'fog/aws/parsers/elb/enable_availability_zones_for_load_balancer'
|
||||
require 'fog/aws/parsers/elb/register_instances_with_load_balancer'
|
||||
require 'fog/aws/requests/elb/deregister_instances_from_load_balancer'
|
||||
require 'fog/aws/requests/elb/describe_instance_health'
|
||||
require 'fog/aws/requests/elb/describe_load_balancers'
|
||||
require 'fog/aws/requests/elb/disable_availability_zones_for_load_balancer.rb'
|
||||
require 'fog/aws/requests/elb/enable_availability_zones_for_load_balancer.rb'
|
||||
require 'fog/aws/requests/elb/register_instances_with_load_balancer.rb'
|
||||
require 'fog/aws/requests/elb/disable_availability_zones_for_load_balancer'
|
||||
require 'fog/aws/requests/elb/enable_availability_zones_for_load_balancer'
|
||||
require 'fog/aws/requests/elb/register_instances_with_load_balancer'
|
||||
@required = true
|
||||
end
|
||||
|
||||
|
|
|
@ -0,0 +1,30 @@
|
|||
module Fog
|
||||
module Parsers
|
||||
module AWS
|
||||
module ELB
|
||||
|
||||
class DescribeInstanceHealth < Fog::Parsers::Base
|
||||
|
||||
def reset
|
||||
@response = { 'DescribeInstanceHealthResult' => { 'InstanceStates' => [] }, 'ResponseMetadata' => {} }
|
||||
@instance_state = {}
|
||||
end
|
||||
|
||||
def end_element(name)
|
||||
case name
|
||||
when 'Description', 'State', 'InstanceId', 'ReasonCode'
|
||||
@instance_state[name] = @value
|
||||
when 'member'
|
||||
@response['DescribeInstanceHealthResult']['InstanceStates'] << @instance_state
|
||||
@instance_state = {}
|
||||
when 'RequestId'
|
||||
@response['ResponseMetadata'][name] = @value
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
|
@ -0,0 +1,44 @@
|
|||
module Fog
|
||||
module AWS
|
||||
module ELB
|
||||
class Real
|
||||
|
||||
# Get health status for one or more instances on an existing ELB
|
||||
#
|
||||
# ==== Parameters
|
||||
# * lb_name<~String> - Load balancer to check instances health on
|
||||
# * instance_ids<~Array> - Optional list of instance IDs to check
|
||||
#
|
||||
# ==== Returns
|
||||
# * response<~Excon::Response>:
|
||||
# * body<~Hash>:
|
||||
# * 'ResponseMetadata'<~Hash>:
|
||||
# * 'RequestId'<~String> - Id of request
|
||||
# * 'DescribeInstanceHealthResult'<~Hash>:
|
||||
# * 'InstanceStates'<~Array> - array of hashes describing instance health
|
||||
# * 'Description'<~String>
|
||||
# * 'State'<~String>
|
||||
# * 'InstanceId'<~String>
|
||||
# * 'ReasonCode'<~String>
|
||||
def describe_instance_health(lb_name, instance_ids = [])
|
||||
params = ELB.indexed_param('Instances.member.%.InstanceId', [*instance_ids], 1)
|
||||
request({
|
||||
'Action' => 'DescribeInstanceHealth',
|
||||
'LoadBalancerName' => lb_name,
|
||||
:parser => Fog::Parsers::AWS::ELB::DescribeInstanceHealth.new
|
||||
}.merge!(params))
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
class Mock
|
||||
|
||||
def describe_instance_health(lb_name, instance_ids = [])
|
||||
raise MockNotImplemented.new("Contributions welcome!")
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
end
|
Loading…
Reference in New Issue