fog 0.0.84 → 0.0.85
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +1 -0
- data/Gemfile.lock +47 -37
- data/bin/fog +9 -10
- data/fog.gemspec +23 -4
- data/lib/fog.rb +19 -1
- data/lib/fog/aws.rb +23 -0
- data/lib/fog/aws/bin.rb +4 -0
- data/lib/fog/aws/ec2.rb +20 -27
- data/lib/fog/aws/elb.rb +115 -0
- data/lib/fog/aws/models/ec2/server.rb +7 -1
- data/lib/fog/aws/models/s3/directories.rb +4 -4
- data/lib/fog/aws/models/s3/directory.rb +13 -11
- data/lib/fog/aws/parsers/elb/deregister_instances_from_load_balancer.rb +26 -0
- data/lib/fog/aws/parsers/elb/describe_instance_health.rb +30 -0
- data/lib/fog/aws/parsers/elb/describe_load_balancers.rb +101 -0
- data/lib/fog/aws/parsers/elb/disable_availability_zones_for_load_balancer.rb +26 -0
- data/lib/fog/aws/parsers/elb/enable_availability_zones_for_load_balancer.rb +26 -0
- data/lib/fog/aws/parsers/elb/register_instances_with_load_balancer.rb +26 -0
- data/lib/fog/aws/requests/ec2/detach_volume.rb +2 -2
- data/lib/fog/aws/requests/elb/deregister_instances_from_load_balancer.rb +45 -0
- data/lib/fog/aws/requests/elb/describe_instance_health.rb +44 -0
- data/lib/fog/aws/requests/elb/describe_load_balancers.rb +57 -0
- data/lib/fog/aws/requests/elb/disable_availability_zones_for_load_balancer.rb +44 -0
- data/lib/fog/aws/requests/elb/enable_availability_zones_for_load_balancer.rb +44 -0
- data/lib/fog/aws/requests/elb/register_instances_with_load_balancer.rb +45 -0
- data/lib/fog/aws/s3.rb +8 -1
- data/lib/fog/aws/simpledb.rb +9 -18
- data/lib/fog/bin.rb +11 -1
- data/lib/fog/credentials.rb +1 -0
- data/lib/fog/local.rb +72 -0
- data/lib/fog/local/bin.rb +34 -0
- data/lib/fog/local/models/directories.rb +43 -0
- data/lib/fog/local/models/directory.rb +47 -0
- data/lib/fog/local/models/file.rb +58 -0
- data/lib/fog/local/models/files.rb +74 -0
- data/lib/fog/model.rb +2 -8
- data/lib/fog/rackspace/models/files/directories.rb +3 -3
- data/lib/fog/rackspace/models/files/directory.rb +8 -5
- data/lib/fog/rackspace/models/servers/server.rb +7 -3
- data/lib/fog/rackspace/requests/servers/create_server.rb +1 -1
- data/lib/fog/ssh.rb +91 -25
- data/lib/fog/terremark/bin.rb +1 -8
- data/lib/fog/terremark/ecloud.rb +14 -5
- data/lib/fog/terremark/models/shared/server.rb +54 -3
- data/lib/fog/terremark/parsers/shared/vapp.rb +1 -1
- data/lib/fog/terremark/requests/shared/get_network.rb +39 -1
- data/lib/fog/terremark/requests/shared/get_organization.rb +45 -1
- data/lib/fog/terremark/requests/shared/get_organizations.rb +2 -1
- data/lib/fog/terremark/requests/shared/get_public_ips.rb +32 -1
- data/lib/fog/terremark/requests/shared/get_vdc.rb +83 -1
- data/lib/fog/terremark/requests/shared/{reset.rb → power_reset.rb} +1 -1
- data/lib/fog/terremark/requests/shared/power_shutdown.rb +32 -0
- data/lib/fog/terremark/shared.rb +139 -18
- data/lib/fog/terremark/vcloud.rb +14 -5
- data/spec/aws/models/ec2/address_spec.rb +1 -3
- data/spec/aws/models/ec2/snapshot_spec.rb +25 -49
- data/spec/aws/models/ec2/snapshots_spec.rb +25 -31
- data/spec/aws/models/ec2/volume_spec.rb +9 -3
- data/spec/aws/models/s3/directory_spec.rb +14 -14
- data/spec/aws/requests/ec2/associate_address_spec.rb +4 -5
- data/spec/aws/requests/ec2/attach_volume_spec.rb +14 -16
- data/spec/aws/requests/ec2/create_snapshot_spec.rb +2 -3
- data/spec/aws/requests/ec2/delete_snapshot_spec.rb +5 -6
- data/spec/aws/requests/ec2/describe_instances_spec.rb +3 -2
- data/spec/aws/requests/ec2/describe_snapshots_spec.rb +21 -25
- data/spec/aws/requests/ec2/detach_volume_spec.rb +14 -16
- data/spec/aws/requests/ec2/disassociate_address_spec.rb +3 -4
- data/spec/aws/requests/ec2/get_console_output_spec.rb +1 -0
- data/spec/aws/requests/s3/get_service_spec.rb +5 -6
- data/spec/spec_helper.rb +0 -20
- data/tests/helper.rb +0 -10
- data/tests/rackspace/requests/servers/create_image_tests.rb +2 -2
- data/tests/rackspace/requests/servers/create_server_tests.rb +3 -2
- data/tests/rackspace/requests/servers/delete_image_tests.rb +2 -2
- data/tests/rackspace/requests/servers/delete_server_tests.rb +1 -1
- data/tests/rackspace/requests/servers/get_server_details_tests.rb +1 -1
- data/tests/rackspace/requests/servers/list_addresses_tests.rb +1 -1
- data/tests/rackspace/requests/servers/list_private_addresses_tests.rb +1 -1
- data/tests/rackspace/requests/servers/list_public_addresses_tests.rb +1 -1
- data/tests/rackspace/requests/servers/list_servers_detail_tests.rb +1 -1
- data/tests/rackspace/requests/servers/list_servers_tests.rb +1 -1
- data/tests/rackspace/requests/servers/reboot_server_tests.rb +3 -3
- data/tests/rackspace/requests/servers/update_server_tests.rb +1 -1
- data/tests/slicehost/requests/create_slice_tests.rb +1 -1
- data/tests/slicehost/requests/delete_slice_tests.rb +1 -1
- data/tests/slicehost/requests/get_slice_tests.rb +1 -1
- data/tests/slicehost/requests/reboot_slice_tests.rb +2 -2
- metadata +24 -5
- data/lib/fog/terremark/requests/shared/shutdown.rb +0 -43
@@ -8,7 +8,7 @@ module Fog
|
|
8
8
|
|
9
9
|
identity :id, 'instanceId'
|
10
10
|
|
11
|
-
|
11
|
+
attr_accessor :architecture
|
12
12
|
attribute :ami_launch_index, 'amiLaunchIndex'
|
13
13
|
attribute :availability_zone, 'availabilityZone'
|
14
14
|
attribute :block_device_mapping, 'blockDeviceMapping'
|
@@ -43,6 +43,12 @@ module Fog
|
|
43
43
|
connection.addresses(:server => self)
|
44
44
|
end
|
45
45
|
|
46
|
+
def console_output
|
47
|
+
requires :id
|
48
|
+
|
49
|
+
connection.get_console_output(@id)
|
50
|
+
end
|
51
|
+
|
46
52
|
def destroy
|
47
53
|
requires :id
|
48
54
|
|
@@ -26,15 +26,15 @@ module Fog
|
|
26
26
|
load(data)
|
27
27
|
end
|
28
28
|
|
29
|
-
def get(
|
29
|
+
def get(key, options = {})
|
30
30
|
remap_attributes(options, {
|
31
31
|
:delimiter => 'delimiter',
|
32
32
|
:marker => 'marker',
|
33
33
|
:max_keys => 'max-keys',
|
34
34
|
:prefix => 'prefix'
|
35
35
|
})
|
36
|
-
data = connection.get_bucket(
|
37
|
-
directory = new(:
|
36
|
+
data = connection.get_bucket(key, options).body
|
37
|
+
directory = new(:key => data['Name'])
|
38
38
|
options = {}
|
39
39
|
for key, value in data
|
40
40
|
if ['Delimiter', 'IsTruncated', 'Marker', 'MaxKeys', 'Prefix'].include?(key)
|
@@ -44,7 +44,7 @@ module Fog
|
|
44
44
|
directory.files.merge_attributes(options)
|
45
45
|
files = data['Contents']
|
46
46
|
while data['IsTruncated']
|
47
|
-
data = connection.get_bucket(
|
47
|
+
data = connection.get_bucket(key, options.merge!('marker' => files.last['Key'])).body
|
48
48
|
files.concat(data['Contents'])
|
49
49
|
end
|
50
50
|
directory.files.load(files)
|
@@ -6,22 +6,24 @@ module Fog
|
|
6
6
|
module S3
|
7
7
|
|
8
8
|
class Directory < Fog::Model
|
9
|
+
extend Fog::Deprecation
|
10
|
+
deprecate(:name, :key)
|
9
11
|
|
10
|
-
identity :
|
12
|
+
identity :key, 'Name'
|
11
13
|
|
12
14
|
attribute :creation_date, 'CreationDate'
|
13
15
|
|
14
16
|
def destroy
|
15
|
-
requires :
|
16
|
-
connection.delete_bucket(
|
17
|
+
requires :key
|
18
|
+
connection.delete_bucket(key)
|
17
19
|
true
|
18
20
|
rescue Excon::Errors::NotFound
|
19
21
|
false
|
20
22
|
end
|
21
23
|
|
22
24
|
def location
|
23
|
-
requires :
|
24
|
-
data = connection.get_bucket_location(
|
25
|
+
requires :key
|
26
|
+
data = connection.get_bucket_location(key)
|
25
27
|
data.body['LocationConstraint']
|
26
28
|
end
|
27
29
|
|
@@ -39,24 +41,24 @@ module Fog
|
|
39
41
|
end
|
40
42
|
|
41
43
|
def payer
|
42
|
-
requires :
|
43
|
-
data = connection.get_request_payment(
|
44
|
+
requires :key
|
45
|
+
data = connection.get_request_payment(key)
|
44
46
|
data.body['Payer']
|
45
47
|
end
|
46
48
|
|
47
49
|
def payer=(new_payer)
|
48
|
-
requires :
|
49
|
-
connection.put_request_payment(
|
50
|
+
requires :key
|
51
|
+
connection.put_request_payment(key, new_payer)
|
50
52
|
@payer = new_payer
|
51
53
|
end
|
52
54
|
|
53
55
|
def save
|
54
|
-
requires :
|
56
|
+
requires :key
|
55
57
|
options = {}
|
56
58
|
if @location
|
57
59
|
options['LocationConstraint'] = @location
|
58
60
|
end
|
59
|
-
connection.put_bucket(
|
61
|
+
connection.put_bucket(key, options)
|
60
62
|
true
|
61
63
|
end
|
62
64
|
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module Fog
|
2
|
+
module Parsers
|
3
|
+
module AWS
|
4
|
+
module ELB
|
5
|
+
|
6
|
+
class DeregisterInstancesFromLoadBalancer < Fog::Parsers::Base
|
7
|
+
|
8
|
+
def reset
|
9
|
+
@response = { 'DeregisterInstancesFromLoadBalancerResult' => { 'Instances' => [] }, 'ResponseMetadata' => {} }
|
10
|
+
end
|
11
|
+
|
12
|
+
def end_element(name)
|
13
|
+
case name
|
14
|
+
when 'InstanceId'
|
15
|
+
@response['DeregisterInstancesFromLoadBalancerResult']['Instances'] << {name => @value}
|
16
|
+
when 'RequestId'
|
17
|
+
@response['ResponseMetadata'][name] = @value
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
module Fog
|
2
|
+
module Parsers
|
3
|
+
module AWS
|
4
|
+
module ELB
|
5
|
+
|
6
|
+
class DescribeInstanceHealth < Fog::Parsers::Base
|
7
|
+
|
8
|
+
def reset
|
9
|
+
@response = { 'DescribeInstanceHealthResult' => { 'InstanceStates' => [] }, 'ResponseMetadata' => {} }
|
10
|
+
@instance_state = {}
|
11
|
+
end
|
12
|
+
|
13
|
+
def end_element(name)
|
14
|
+
case name
|
15
|
+
when 'Description', 'State', 'InstanceId', 'ReasonCode'
|
16
|
+
@instance_state[name] = @value
|
17
|
+
when 'member'
|
18
|
+
@response['DescribeInstanceHealthResult']['InstanceStates'] << @instance_state
|
19
|
+
@instance_state = {}
|
20
|
+
when 'RequestId'
|
21
|
+
@response['ResponseMetadata'][name] = @value
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,101 @@
|
|
1
|
+
module Fog
|
2
|
+
module Parsers
|
3
|
+
module AWS
|
4
|
+
module ELB
|
5
|
+
|
6
|
+
class DescribeLoadBalancers < Fog::Parsers::Base
|
7
|
+
|
8
|
+
def reset
|
9
|
+
@load_balancer = { 'ListenerDescriptions' => [], 'Instances' => [], 'AvailabilityZones' => [], 'Policies' => {'AppCookieStickinessPolicies' => [], 'LBCookieStickinessPolicies' => [] }, 'HealthCheck' => {} }
|
10
|
+
@listener_description = { 'PolicyNames' => [], 'Listener' => {} }
|
11
|
+
@results = { 'LoadBalancerDescriptions' => [] }
|
12
|
+
@response = { 'DescribeLoadBalancersResult' => {}, 'ResponseMetadata' => {} }
|
13
|
+
end
|
14
|
+
|
15
|
+
def start_element(name, attrs = [])
|
16
|
+
case name
|
17
|
+
when 'ListenerDescriptions'
|
18
|
+
@in_listeners = true
|
19
|
+
when 'Instances'
|
20
|
+
@in_instances = true
|
21
|
+
when 'AvailabilityZones'
|
22
|
+
@in_availability_zones = true
|
23
|
+
when 'PolicyNames'
|
24
|
+
@in_policy_names = true
|
25
|
+
when 'Policies'
|
26
|
+
@in_policies = true
|
27
|
+
when 'LBCookieStickinessPolicies'
|
28
|
+
@in_lb_cookies = true
|
29
|
+
when 'AppCookieStickinessPolicies'
|
30
|
+
@in_app_cookies = true
|
31
|
+
end
|
32
|
+
@value = ''
|
33
|
+
end
|
34
|
+
|
35
|
+
def end_element(name)
|
36
|
+
case name
|
37
|
+
when 'member'
|
38
|
+
if @in_policy_names
|
39
|
+
@listener_description['PolicyNames'] << @value
|
40
|
+
elsif @in_availability_zones
|
41
|
+
@load_balancer['AvailabilityZones'] << @value
|
42
|
+
elsif @in_listeners
|
43
|
+
@load_balancer['ListenerDescriptions'] << @listener_description
|
44
|
+
@listener_description = { 'PolicyNames' => [], 'Listener' => {} }
|
45
|
+
elsif @in_app_cookies
|
46
|
+
@load_balancer['Policies']['AppCookieStickinessPolicies'] << @value
|
47
|
+
elsif @in_lb_cookies
|
48
|
+
@load_balancer['Policies']['LBCookieStickinessPolicies'] << @value
|
49
|
+
elsif !@in_instances && !@in_policies
|
50
|
+
@results['LoadBalancerDescriptions'] << @load_balancer
|
51
|
+
@load_balancer = { 'ListenerDescriptions' => [], 'Instances' => [], 'AvailabilityZones' => [], 'Policies' => {'AppCookieStickinessPolicies' => [], 'LBCookieStickinessPolicies' => [] }, 'HealthCheck' => {} }
|
52
|
+
end
|
53
|
+
|
54
|
+
when 'LoadBalancerName', 'DNSName'
|
55
|
+
@load_balancer[name] = @value
|
56
|
+
when 'CreatedTime'
|
57
|
+
@load_balancer[name] = Time.parse(@value)
|
58
|
+
|
59
|
+
when 'ListenerDescriptions'
|
60
|
+
@in_listeners = false
|
61
|
+
when 'PolicyNames'
|
62
|
+
@in_policy_names = false
|
63
|
+
when 'Protocol'
|
64
|
+
@listener_description['Listener'][name] = @value
|
65
|
+
when 'LoadBalancerPort', 'InstancePort'
|
66
|
+
@listener_description['Listener'][name] = @value.to_i
|
67
|
+
|
68
|
+
when 'Instances'
|
69
|
+
@in_instances = false
|
70
|
+
when 'InstanceId'
|
71
|
+
@load_balancer['Instances'] << @value
|
72
|
+
|
73
|
+
when 'AvailabilityZones'
|
74
|
+
@in_availability_zones = false
|
75
|
+
|
76
|
+
when 'Policies'
|
77
|
+
@in_policies = false
|
78
|
+
when 'AppCookieStickinessPolicies'
|
79
|
+
@in_app_cookies = false
|
80
|
+
when 'LBCookieStickinessPolicies'
|
81
|
+
@in_lb_cookies = false
|
82
|
+
|
83
|
+
when 'Interval', 'HealthyThreshold', 'Timeout', 'UnhealthyThreshold'
|
84
|
+
@load_balancer['HealthCheck'][name] = @value.to_i
|
85
|
+
when 'Target'
|
86
|
+
@load_balancer['HealthCheck'][name] = @value
|
87
|
+
|
88
|
+
when 'RequestId'
|
89
|
+
@response['ResponseMetadata'][name] = @value
|
90
|
+
|
91
|
+
when 'DescribeLoadBalancersResponse'
|
92
|
+
@response['DescribeLoadBalancersResult'] = @results
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
end
|
97
|
+
|
98
|
+
end
|
99
|
+
end
|
100
|
+
end
|
101
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module Fog
|
2
|
+
module Parsers
|
3
|
+
module AWS
|
4
|
+
module ELB
|
5
|
+
|
6
|
+
class DisableAvailabilityZonesForLoadBalancer < Fog::Parsers::Base
|
7
|
+
|
8
|
+
def reset
|
9
|
+
@response = { 'DisableAvailabilityZonesForLoadBalancerResult' => { 'AvailabilityZones' => [] }, 'ResponseMetadata' => {} }
|
10
|
+
end
|
11
|
+
|
12
|
+
def end_element(name)
|
13
|
+
case name
|
14
|
+
when 'member'
|
15
|
+
@response['DisableAvailabilityZonesForLoadBalancerResult']['AvailabilityZones'] << @value
|
16
|
+
when 'RequestId'
|
17
|
+
@response['ResponseMetadata'][name] = @value
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module Fog
|
2
|
+
module Parsers
|
3
|
+
module AWS
|
4
|
+
module ELB
|
5
|
+
|
6
|
+
class EnableAvailabilityZonesForLoadBalancer < Fog::Parsers::Base
|
7
|
+
|
8
|
+
def reset
|
9
|
+
@response = { 'EnableAvailabilityZonesForLoadBalancerResult' => { 'AvailabilityZones' => [] }, 'ResponseMetadata' => {} }
|
10
|
+
end
|
11
|
+
|
12
|
+
def end_element(name)
|
13
|
+
case name
|
14
|
+
when 'member'
|
15
|
+
@response['EnableAvailabilityZonesForLoadBalancerResult']['AvailabilityZones'] << @value
|
16
|
+
when 'RequestId'
|
17
|
+
@response['ResponseMetadata'][name] = @value
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module Fog
|
2
|
+
module Parsers
|
3
|
+
module AWS
|
4
|
+
module ELB
|
5
|
+
|
6
|
+
class RegisterInstancesWithLoadBalancer < Fog::Parsers::Base
|
7
|
+
|
8
|
+
def reset
|
9
|
+
@response = { 'RegisterInstancesWithLoadBalancerResult' => { 'Instances' => [] }, 'ResponseMetadata' => {} }
|
10
|
+
end
|
11
|
+
|
12
|
+
def end_element(name)
|
13
|
+
case name
|
14
|
+
when 'InstanceId'
|
15
|
+
@response['RegisterInstancesWithLoadBalancerResult']['Instances'] << {name => @value}
|
16
|
+
when 'RequestId'
|
17
|
+
@response['ResponseMetadata'][name] = @value
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -36,9 +36,9 @@ module Fog
|
|
36
36
|
def detach_volume(volume_id, options = {})
|
37
37
|
response = Excon::Response.new
|
38
38
|
response.status = 200
|
39
|
-
if volume = @data[:volumes][volume_id]
|
39
|
+
if (volume = @data[:volumes][volume_id]) && !volume['attachmentSet'].empty?
|
40
40
|
data = volume['attachmentSet'].pop
|
41
|
-
|
41
|
+
volume['status'] = 'available'
|
42
42
|
response.status = 200
|
43
43
|
response.body = {
|
44
44
|
'requestId' => Fog::AWS::Mock.request_id
|
@@ -0,0 +1,45 @@
|
|
1
|
+
module Fog
|
2
|
+
module AWS
|
3
|
+
module ELB
|
4
|
+
class Real
|
5
|
+
|
6
|
+
# Deregister an instance from an existing ELB
|
7
|
+
#
|
8
|
+
# ==== Parameters
|
9
|
+
# * instance_ids<~Array> - List of instance IDs to remove from ELB
|
10
|
+
# * lb_name<~String> - Load balancer to remove instances from
|
11
|
+
#
|
12
|
+
# ==== Returns
|
13
|
+
# * response<~Excon::Response>:
|
14
|
+
# * body<~Hash>:
|
15
|
+
# * 'ResponseMetadata'<~Hash>:
|
16
|
+
# * 'RequestId'<~String> - Id of request
|
17
|
+
# * 'DeregisterInstancesFromLoadBalancerResult'<~Hash>:
|
18
|
+
# * 'Instances'<~Array> - array of hashes describing instances currently enabled
|
19
|
+
# * 'InstanceId'<~String>
|
20
|
+
def deregister_instances_from_load_balancer(instance_ids, lb_name)
|
21
|
+
params = ELB.indexed_param('Instances.member.%.InstanceId', [*instance_ids], 1)
|
22
|
+
request({
|
23
|
+
'Action' => 'DeregisterInstancesFromLoadBalancer',
|
24
|
+
'LoadBalancerName' => lb_name,
|
25
|
+
:parser => Fog::Parsers::AWS::ELB::DeregisterInstancesFromLoadBalancer.new
|
26
|
+
}.merge!(params))
|
27
|
+
end
|
28
|
+
|
29
|
+
alias :deregister_instances :deregister_instances_from_load_balancer
|
30
|
+
|
31
|
+
end
|
32
|
+
|
33
|
+
class Mock
|
34
|
+
|
35
|
+
def deregister_instances_from_load_balancer(instance_ids, lb_name)
|
36
|
+
raise MockNotImplemented.new("Contributions welcome!")
|
37
|
+
end
|
38
|
+
|
39
|
+
alias :deregister_instances :deregister_instances_from_load_balancer
|
40
|
+
|
41
|
+
end
|
42
|
+
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
module Fog
|
2
|
+
module AWS
|
3
|
+
module ELB
|
4
|
+
class Real
|
5
|
+
|
6
|
+
# Get health status for one or more instances on an existing ELB
|
7
|
+
#
|
8
|
+
# ==== Parameters
|
9
|
+
# * lb_name<~String> - Load balancer to check instances health on
|
10
|
+
# * instance_ids<~Array> - Optional list of instance IDs to check
|
11
|
+
#
|
12
|
+
# ==== Returns
|
13
|
+
# * response<~Excon::Response>:
|
14
|
+
# * body<~Hash>:
|
15
|
+
# * 'ResponseMetadata'<~Hash>:
|
16
|
+
# * 'RequestId'<~String> - Id of request
|
17
|
+
# * 'DescribeInstanceHealthResult'<~Hash>:
|
18
|
+
# * 'InstanceStates'<~Array> - array of hashes describing instance health
|
19
|
+
# * 'Description'<~String>
|
20
|
+
# * 'State'<~String>
|
21
|
+
# * 'InstanceId'<~String>
|
22
|
+
# * 'ReasonCode'<~String>
|
23
|
+
def describe_instance_health(lb_name, instance_ids = [])
|
24
|
+
params = ELB.indexed_param('Instances.member.%.InstanceId', [*instance_ids], 1)
|
25
|
+
request({
|
26
|
+
'Action' => 'DescribeInstanceHealth',
|
27
|
+
'LoadBalancerName' => lb_name,
|
28
|
+
:parser => Fog::Parsers::AWS::ELB::DescribeInstanceHealth.new
|
29
|
+
}.merge!(params))
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
33
|
+
|
34
|
+
class Mock
|
35
|
+
|
36
|
+
def describe_instance_health(lb_name, instance_ids = [])
|
37
|
+
raise MockNotImplemented.new("Contributions welcome!")
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
41
|
+
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|