fog 0.0.84 → 0.0.85
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|