aws-sdk 1.1.4 → 1.2.0
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/aws.rb +2 -0
- data/lib/aws/api_config/ELB-2011-08-15.yml +380 -0
- data/lib/aws/api_config/SNS-2010-03-31.yml +2 -2
- data/lib/aws/api_config/SimpleEmailService-2010-12-01.yml +5 -5
- data/lib/aws/core.rb +18 -3
- data/lib/aws/core/client_logging.rb +5 -6
- data/lib/aws/core/collection.rb +241 -0
- data/lib/aws/core/collection/batchable.rb +133 -0
- data/lib/aws/core/collection/limitable.rb +92 -0
- data/lib/aws/core/collection/simple.rb +89 -0
- data/lib/aws/core/configuration.rb +23 -0
- data/lib/aws/core/option_grammar.rb +2 -0
- data/lib/aws/core/page_result.rb +73 -0
- data/lib/aws/ec2/security_group.rb +154 -89
- data/lib/aws/ec2/security_group/egress_ip_permission_collection.rb +1 -2
- data/lib/aws/ec2/security_group/{ip_permission_collection.rb → ingress_ip_permission_collection.rb} +4 -1
- data/lib/aws/ec2/security_group/ip_permission.rb +23 -45
- data/lib/aws/elb.rb +65 -0
- data/lib/aws/elb/availability_zone_collection.rb +138 -0
- data/lib/aws/elb/backend_server_policy_collection.rb +150 -0
- data/lib/aws/elb/client.rb +35 -0
- data/lib/aws/elb/client/xml.rb +33 -0
- data/lib/aws/elb/config.rb +18 -0
- data/lib/aws/elb/errors.rb +30 -0
- data/lib/aws/elb/instance_collection.rb +174 -0
- data/lib/aws/elb/listener.rb +189 -0
- data/lib/aws/elb/listener_collection.rb +119 -0
- data/lib/aws/elb/listener_opts.rb +45 -0
- data/lib/aws/elb/listener_spec.rb +14 -0
- data/lib/aws/elb/load_balancer.rb +255 -0
- data/lib/aws/elb/load_balancer_collection.rb +113 -0
- data/lib/aws/elb/load_balancer_policy.rb +93 -0
- data/lib/aws/elb/load_balancer_policy_collection.rb +208 -0
- data/lib/aws/elb/request.rb +23 -0
- data/lib/aws/iam/collection.rb +24 -26
- data/lib/aws/iam/group_user_collection.rb +21 -28
- data/lib/aws/iam/server_certificate_collection.rb +1 -37
- data/lib/aws/record.rb +1 -1
- data/lib/aws/record/base.rb +14 -1
- data/lib/aws/record/finder_methods.rb +4 -1
- data/lib/aws/record/validations.rb +73 -32
- data/lib/aws/{core/api_config_transform.rb → record/validators/method.rb} +9 -12
- data/lib/aws/s3/bucket_collection.rb +6 -4
- data/lib/aws/s3/client.rb +37 -6
- data/lib/aws/s3/config.rb +3 -1
- data/lib/aws/s3/prefixed_collection.rb +1 -2
- data/lib/aws/s3/presigned_post.rb +37 -4
- data/lib/aws/s3/s3_object.rb +93 -1
- data/lib/aws/simple_db/domain.rb +8 -0
- data/lib/aws/simple_db/item.rb +15 -0
- data/lib/aws/simple_db/item_collection.rb +255 -201
- data/lib/aws/simple_db/item_data.rb +1 -1
- data/lib/aws/simple_email_service/client.rb +0 -1
- data/lib/aws/sns/client.rb +0 -1
- metadata +107 -55
- data/lib/aws/core/collections.rb +0 -229
- data/lib/aws/simple_email_service/client/options.rb +0 -21
- data/lib/aws/sns/client/options.rb +0 -21
data/lib/aws/ec2/security_group/{ip_permission_collection.rb → ingress_ip_permission_collection.rb}
RENAMED
@@ -15,7 +15,7 @@ module AWS
|
|
15
15
|
class EC2
|
16
16
|
class SecurityGroup < Resource
|
17
17
|
|
18
|
-
class
|
18
|
+
class IngressIpPermissionCollection
|
19
19
|
|
20
20
|
include Core::Model
|
21
21
|
include Enumerable
|
@@ -53,6 +53,9 @@ module AWS
|
|
53
53
|
|
54
54
|
end
|
55
55
|
|
56
|
+
# alias for ingress permissions
|
57
|
+
IpPermissionCollection = IngressIpPermissionCollection
|
58
|
+
|
56
59
|
end
|
57
60
|
end
|
58
61
|
end
|
@@ -19,15 +19,21 @@ module AWS
|
|
19
19
|
include Core::Model
|
20
20
|
|
21
21
|
# @param protocol [:tcp, :udp, :icmp]
|
22
|
+
#
|
22
23
|
# @param port [Range,Integer] An integer or a range of integers
|
23
24
|
# to open ports for.
|
25
|
+
#
|
24
26
|
# @param [Hash] options
|
27
|
+
#
|
25
28
|
# @option options [Array] :ip_ranges An array of CIDR ip address
|
26
29
|
# to grant permission to.
|
30
|
+
#
|
27
31
|
# @option options [Array] :groups An array of SecurityGroup objects to
|
28
32
|
# grant permission to.
|
33
|
+
#
|
29
34
|
# @option options [Boolean] :egress (false) When true this IpPermission
|
30
35
|
# is assumed to be an egree permission.
|
36
|
+
#
|
31
37
|
def initialize security_group, protocol, ports, options = {}
|
32
38
|
|
33
39
|
@security_group = security_group
|
@@ -75,33 +81,13 @@ module AWS
|
|
75
81
|
# Authorizes this permission from its security group.
|
76
82
|
# @return [IpPermission] Returns self
|
77
83
|
def authorize
|
78
|
-
|
79
|
-
method = egress? ?
|
80
|
-
:authorize_security_group_egress :
|
81
|
-
:authorize_security_group_ingress
|
82
|
-
|
83
|
-
client.send(method,
|
84
|
-
:group_id => security_group.id,
|
85
|
-
:ip_permissions => [format_permission])
|
86
|
-
|
87
|
-
self
|
88
|
-
|
84
|
+
update_sg(egress? ? :authorize_egress : :authorize_ingress)
|
89
85
|
end
|
90
86
|
|
91
87
|
# Revokes this permission from its security group.
|
92
88
|
# @return [IpPermission] Returns self
|
93
89
|
def revoke
|
94
|
-
|
95
|
-
method = egress? ?
|
96
|
-
:revoke_security_group_egress :
|
97
|
-
:revoke_security_group_ingress
|
98
|
-
|
99
|
-
client.send(method,
|
100
|
-
:group_id => security_group.id,
|
101
|
-
:ip_permissions => [format_permission])
|
102
|
-
|
103
|
-
self
|
104
|
-
|
90
|
+
update_sg(egress? ? :revoke_egress : :revoke_ingress)
|
105
91
|
end
|
106
92
|
|
107
93
|
# @return [Boolean] Returns true if the other IpPermission matches
|
@@ -118,32 +104,24 @@ module AWS
|
|
118
104
|
|
119
105
|
alias_method :eql?, :==
|
120
106
|
|
121
|
-
# @private
|
122
107
|
protected
|
123
|
-
def
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
if
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
108
|
+
def update_sg method
|
109
|
+
|
110
|
+
sources = []
|
111
|
+
sources += ip_ranges
|
112
|
+
sources += groups
|
113
|
+
|
114
|
+
if egress?
|
115
|
+
opts = {}
|
116
|
+
opts[:protocol] = protocol
|
117
|
+
opts[:ports] = port_range if port_range
|
118
|
+
sources << opts
|
119
|
+
security_group.send(method, *sources)
|
120
|
+
else
|
121
|
+
security_group.send(method, protocol, port_range, *sources)
|
136
122
|
end
|
137
123
|
|
138
|
-
|
139
|
-
permission[:user_id_group_pairs] = groups.inject([]) do |list,group|
|
140
|
-
list << { :group_id => group.id, :user_id => group.owner_id }
|
141
|
-
list
|
142
|
-
end
|
143
|
-
end
|
144
|
-
|
145
|
-
permission
|
146
|
-
|
124
|
+
self
|
147
125
|
end
|
148
126
|
|
149
127
|
end
|
data/lib/aws/elb.rb
ADDED
@@ -0,0 +1,65 @@
|
|
1
|
+
# Copyright 2011 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License"). You
|
4
|
+
# may not use this file except in compliance with the License. A copy of
|
5
|
+
# the License is located at
|
6
|
+
#
|
7
|
+
# http://aws.amazon.com/apache2.0/
|
8
|
+
#
|
9
|
+
# or in the "license" file accompanying this file. This file is
|
10
|
+
# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
|
11
|
+
# ANY KIND, either express or implied. See the License for the specific
|
12
|
+
# language governing permissions and limitations under the License.
|
13
|
+
|
14
|
+
require 'aws/core'
|
15
|
+
require 'aws/elb/config'
|
16
|
+
|
17
|
+
module AWS
|
18
|
+
|
19
|
+
# Provides an expressive, object-oriented interface to Elastic Load
|
20
|
+
# Balancing (ELB).
|
21
|
+
#
|
22
|
+
# == Credentials
|
23
|
+
#
|
24
|
+
# You can setup default credentials for all AWS services via
|
25
|
+
# AWS.config:
|
26
|
+
#
|
27
|
+
# AWS.config(
|
28
|
+
# :access_key_id => 'YOUR_ACCESS_KEY_ID',
|
29
|
+
# :secret_access_key => 'YOUR_SECRET_ACCESS_KEY')
|
30
|
+
#
|
31
|
+
# Or you can set them directly on the ELB interface:
|
32
|
+
#
|
33
|
+
# elb = AWS::ELB.new(
|
34
|
+
# :access_key_id => 'YOUR_ACCESS_KEY_ID',
|
35
|
+
# :secret_access_key => 'YOUR_SECRET_ACCESS_KEY')
|
36
|
+
#
|
37
|
+
class ELB
|
38
|
+
|
39
|
+
AWS.register_autoloads(self) do
|
40
|
+
autoload :AvailabilityZoneCollection, 'availability_zone_collection'
|
41
|
+
autoload :BackendServerPolicyCollection, 'backend_server_policy_collection'
|
42
|
+
autoload :Client, 'client'
|
43
|
+
autoload :Errors, 'errors'
|
44
|
+
autoload :InstanceCollection, 'instance_collection'
|
45
|
+
autoload :ListenerOpts, 'listener_opts'
|
46
|
+
autoload :Listener, 'listener'
|
47
|
+
autoload :ListenerCollection, 'listener_collection'
|
48
|
+
autoload :LoadBalancer, 'load_balancer'
|
49
|
+
autoload :LoadBalancerCollection, 'load_balancer_collection'
|
50
|
+
autoload :LoadBalancerPolicy, 'load_balancer_policy'
|
51
|
+
autoload :LoadBalancerPolicyCollection, 'load_balancer_policy_collection'
|
52
|
+
autoload :Request, 'request'
|
53
|
+
end
|
54
|
+
|
55
|
+
include Core::ServiceInterface
|
56
|
+
|
57
|
+
# @return [LoadBalancerCollection] Returns a collection that represents
|
58
|
+
# all of your load balancers.
|
59
|
+
def load_balancers
|
60
|
+
LoadBalancerCollection.new(:config => config)
|
61
|
+
end
|
62
|
+
|
63
|
+
end
|
64
|
+
|
65
|
+
end
|
@@ -0,0 +1,138 @@
|
|
1
|
+
# Copyright 2011 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License"). You
|
4
|
+
# may not use this file except in compliance with the License. A copy of
|
5
|
+
# the License is located at
|
6
|
+
#
|
7
|
+
# http://aws.amazon.com/apache2.0/
|
8
|
+
#
|
9
|
+
# or in the "license" file accompanying this file. This file is
|
10
|
+
# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
|
11
|
+
# ANY KIND, either express or implied. See the License for the specific
|
12
|
+
# language governing permissions and limitations under the License.
|
13
|
+
|
14
|
+
module AWS
|
15
|
+
class ELB
|
16
|
+
|
17
|
+
# A collection that help maanage the availability zones for
|
18
|
+
# a load balancer.
|
19
|
+
#
|
20
|
+
# load_balancer = AWS::ELB.new.load_balancers['my-load-balancer']
|
21
|
+
#
|
22
|
+
# zones = load_balancer.availability_zones
|
23
|
+
#
|
24
|
+
# # adding zones
|
25
|
+
# zones.enable('us-east-1b', 'us-east-1c')
|
26
|
+
#
|
27
|
+
# # removing zones
|
28
|
+
# zones.disable('us-east-1b')
|
29
|
+
#
|
30
|
+
# # enumerating enabled zones
|
31
|
+
# zones.each do |zone|
|
32
|
+
# puts zone.name
|
33
|
+
# end
|
34
|
+
#
|
35
|
+
class AvailabilityZoneCollection
|
36
|
+
|
37
|
+
include Core::Collection::Simple
|
38
|
+
|
39
|
+
# @param [LoadBalancer] The load balancer this list of availability
|
40
|
+
# zones belongs to.
|
41
|
+
def initialize load_balancer, options = {}
|
42
|
+
@load_balancer = load_balancer
|
43
|
+
super
|
44
|
+
end
|
45
|
+
|
46
|
+
# @return [LoadBalancer] Returns the load balancer this list describes.
|
47
|
+
attr_reader :load_balancer
|
48
|
+
|
49
|
+
# Adds one or more EC2 Availability Zones to the load balancer.
|
50
|
+
#
|
51
|
+
# load_balancer.availability_zones.enable("us-east-1a", "us-east-1b")
|
52
|
+
#
|
53
|
+
# You can also pass {EC2::AvailabilityZone} objects:
|
54
|
+
#
|
55
|
+
# # enable all availabilty zones for this region
|
56
|
+
# zones = AWS::EC2.new.availability_zones.to_a
|
57
|
+
# load_balancer.availability_zones.enable(zones)
|
58
|
+
#
|
59
|
+
# The load balancer evenly distributes requests across all its
|
60
|
+
# registered availability zones that contain instances. As a result,
|
61
|
+
# the client must ensure that its load balancer is appropriately
|
62
|
+
# scaled for each registered Availability Zone.
|
63
|
+
#
|
64
|
+
# @param [String,EC2::AvailabilityZone] availability_zones One or more
|
65
|
+
# availability zone names (strings) or objects {EC2::AvailabilityZone}.
|
66
|
+
#
|
67
|
+
# @return [nil]
|
68
|
+
#
|
69
|
+
def enable *availability_zones
|
70
|
+
|
71
|
+
names = availability_zones.flatten.collect do |av|
|
72
|
+
av.is_a?(EC2::AvailabilityZone) ? av.name : av.to_s
|
73
|
+
end
|
74
|
+
|
75
|
+
client.enable_availability_zones_for_load_balancer(
|
76
|
+
:load_balancer_name => load_balancer.name,
|
77
|
+
:availability_zones => names)
|
78
|
+
|
79
|
+
nil
|
80
|
+
|
81
|
+
end
|
82
|
+
|
83
|
+
# Removes the specified EC2 availability zones from the set of
|
84
|
+
# configured availability zones for the load balancer.
|
85
|
+
#
|
86
|
+
# load_balancer.availability_zones.disable("us-east-1a", "us-east-1b")
|
87
|
+
#
|
88
|
+
# You can also pass {EC2::AvailabilityZone} objects:
|
89
|
+
#
|
90
|
+
# # disable all availabilty zones
|
91
|
+
# zones = AWS::EC2.new.availability_zones.to_a
|
92
|
+
# load_balancer.availability_zones.disable(zones)
|
93
|
+
#
|
94
|
+
# There must be at least one availability zone registered with a
|
95
|
+
# load balancer at all times. A client cannot remove all the availability
|
96
|
+
# zones from a load balancer. Once an availability zone is removed,
|
97
|
+
# all the instances registered with the load balancer that are in the
|
98
|
+
# removed availability zone go into the out of service state.
|
99
|
+
#
|
100
|
+
# Upon availability zone removal, the load balancer attempts to
|
101
|
+
# equally balance the traffic among its remaining usable availability
|
102
|
+
# zones. Trying to remove an availability zone that was not
|
103
|
+
# associated with the load balancer does nothing.
|
104
|
+
#
|
105
|
+
# @param [String,EC2::AvailabilityZone] availability_zones One or more
|
106
|
+
# availability zone names (strings) or objects {EC2::AvailabilityZone}.
|
107
|
+
#
|
108
|
+
# @return [nil]
|
109
|
+
#
|
110
|
+
def disable *availability_zones
|
111
|
+
|
112
|
+
names = availability_zones.flatten.collect do |av|
|
113
|
+
av.is_a?(EC2::AvailabilityZone) ? av.name : av.to_s
|
114
|
+
end
|
115
|
+
|
116
|
+
client.disable_availability_zones_for_load_balancer(
|
117
|
+
:load_balancer_name => load_balancer.name,
|
118
|
+
:availability_zones => names)
|
119
|
+
|
120
|
+
nil
|
121
|
+
|
122
|
+
end
|
123
|
+
|
124
|
+
protected
|
125
|
+
def _each_item options = {}, &block
|
126
|
+
load_balancer.availability_zone_names.each do |az_name|
|
127
|
+
|
128
|
+
availability_zone = EC2::AvailabilityZone.new(
|
129
|
+
az_name, :config => config)
|
130
|
+
|
131
|
+
yield(availability_zone)
|
132
|
+
|
133
|
+
end
|
134
|
+
end
|
135
|
+
|
136
|
+
end
|
137
|
+
end
|
138
|
+
end
|
@@ -0,0 +1,150 @@
|
|
1
|
+
# Copyright 2011 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License"). You
|
4
|
+
# may not use this file except in compliance with the License. A copy of
|
5
|
+
# the License is located at
|
6
|
+
#
|
7
|
+
# http://aws.amazon.com/apache2.0/
|
8
|
+
#
|
9
|
+
# or in the "license" file accompanying this file. This file is
|
10
|
+
# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
|
11
|
+
# ANY KIND, either express or implied. See the License for the specific
|
12
|
+
# language governing permissions and limitations under the License.
|
13
|
+
|
14
|
+
module AWS
|
15
|
+
class ELB
|
16
|
+
|
17
|
+
# Helps manage policies assigned to backend server instnace ports.
|
18
|
+
#
|
19
|
+
# == Creating a Backend Server Policy
|
20
|
+
#
|
21
|
+
# Creating a backend server policy can be a bit tricky. A
|
22
|
+
# BackendServerAuthenticationPolicyType policy only has one
|
23
|
+
# attribute, a list of public key policies.
|
24
|
+
#
|
25
|
+
# Before you can assign a policy to a backend server instance port you
|
26
|
+
# must create on of the appropriate type:
|
27
|
+
#
|
28
|
+
# # step 1, create one (or more) PublicKeyPolicyType policies
|
29
|
+
#
|
30
|
+
# public_key1 = <<-KEY
|
31
|
+
# -----BEGIN CERTIFICATE-----
|
32
|
+
# MIICaTCCAdICCQDuvCF4erLGSjANBgkqhkiG9w0BAQUFADB5MQswCQYDVQQGEwJa
|
33
|
+
# WjENMAsGA1UECBMERkFLRTENMAsGA1UEBxMERkFLRTENMAsGA1UEChMERkFLRTEN
|
34
|
+
# MAsGA1UECxMERkFLRTENMAsGA1UEAxMERkFLRTEfMB0GCSqGSIb3DQEJARYQZmFr
|
35
|
+
# ZUBleGFtcGxlLmNvbTAeFw0xMTA4MTAyMjE0NDVaFw0xMjA4MDkyMjE0NDVaMHkx
|
36
|
+
# CzAJBgNVBAYTAlpaMQ0wCwYDVQQIEwRGQUtFMQ0wCwYDVQQHEwRGQUtFMQ0wCwYD
|
37
|
+
# VQQKEwRGQUtFMQ0wCwYDVQQLEwRGQUtFMQ0wCwYDVQQDEwRGQUtFMR8wHQYJKoZI
|
38
|
+
# hvcNAQkBFhBmYWtlQGV4YW1wbGUuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCB
|
39
|
+
# iQKBgQC4vy7K2LCgYJs7AbxdanPEwL4KLC9gi1LqzkRWShEaz8COUZswcOkevLQy
|
40
|
+
# SMFTXAvmH1FVqNO97wVG6ydxi+LNE7Jub62QQnsK420y+nXRTytxrboH1eAiAIEt
|
41
|
+
# ZoUKaOymfAN8l/MJbcPH0rTYNdni99B+UMPWmFeRg/BeWiy2hwIDAQABMA0GCSqG
|
42
|
+
# SIb3DQEBBQUAA4GBAD+VNA6ia8TXa2lJgvmoGYCLGcCaccz7Nv/u4/oqv8qMPvdZ
|
43
|
+
# 5DZxDLIExOSHiFGwWg5m8NgcirH2diveyRBgNhgC6S6DntkEMvAV0yvaQgHtUO53
|
44
|
+
# o50MymfqtoVcebZcXbiDVAXW1cPEHKLBXecX6/LZ+GOzEsUOxgt7Xs9uabqp
|
45
|
+
# -----END CERTIFICATE-----
|
46
|
+
# KEY
|
47
|
+
#
|
48
|
+
# public_key_policy = load_balancer.policies.create("pkp",
|
49
|
+
# 'PublicKeyPolicyType', 'PublicKey' => public_key.strip)
|
50
|
+
#
|
51
|
+
# # step 2, create the backend server policy, passing the public key policy
|
52
|
+
#
|
53
|
+
# name = 'backend-policy'
|
54
|
+
# type = 'BackendServerAuthenticationPolicyType'
|
55
|
+
# attributes = {
|
56
|
+
# # note: you can pass more than one public key policy here
|
57
|
+
# 'PublicKeyPolicyName' => [public_key_policy]
|
58
|
+
# }
|
59
|
+
#
|
60
|
+
# backend_policy = @load_balancer.policies.create(name, type, attributes)
|
61
|
+
# 'BackendServerAuthenticationPolicyType', attributes)
|
62
|
+
#
|
63
|
+
# Once you have created a backend server authentication policy, you
|
64
|
+
# can assign it to a backend instance port:
|
65
|
+
#
|
66
|
+
# load_balancer.backend_server_policies[80] = backend_policy
|
67
|
+
#
|
68
|
+
# If you want to remove the policy you can pass nil instead.
|
69
|
+
#
|
70
|
+
# # removes the policy from instance port 80
|
71
|
+
# load_balancer.backend_server_policies[80] = nil
|
72
|
+
#
|
73
|
+
# You can also get the current policy:
|
74
|
+
#
|
75
|
+
# load_balancer.backend_server_policies[80] # returns a policy or nil
|
76
|
+
#
|
77
|
+
class BackendServerPolicyCollection
|
78
|
+
|
79
|
+
include Core::Collection::Simple
|
80
|
+
|
81
|
+
def initialize load_balancer, options = {}
|
82
|
+
@load_balancer = load_balancer
|
83
|
+
super
|
84
|
+
end
|
85
|
+
|
86
|
+
# @return [LoadBalancer]
|
87
|
+
attr_reader :load_balancer
|
88
|
+
|
89
|
+
# Returns the policy currently assigned to the given instance port.
|
90
|
+
#
|
91
|
+
# @param [Integer] instance_port The backend server port to
|
92
|
+
# get the currently policy of.
|
93
|
+
#
|
94
|
+
# @return [LoadBalancerPolicy,nil] Returns the load balancer policy
|
95
|
+
# currently assigned to the given instance port. Returns nil if
|
96
|
+
# no policy has been assigned.
|
97
|
+
#
|
98
|
+
def [] instance_port
|
99
|
+
enum(:instance_port => instance_port).first
|
100
|
+
end
|
101
|
+
|
102
|
+
# Sets the policy for the given backend server instance port.
|
103
|
+
#
|
104
|
+
# @param [Integer] instance_port The instance port you want to set
|
105
|
+
# backend server policies for.
|
106
|
+
#
|
107
|
+
# @param [String,LoadBalancerPolicy,nil] policies Load balancer policy
|
108
|
+
# name or object. Passing nil removes the current policy.
|
109
|
+
#
|
110
|
+
# @return [nil]
|
111
|
+
#
|
112
|
+
def []= instance_port, policy
|
113
|
+
|
114
|
+
client.set_load_balancer_policies_for_backend_server(
|
115
|
+
:load_balancer_name => load_balancer.name,
|
116
|
+
:instance_port => instance_port.to_i,
|
117
|
+
:policy_names => [policy_name(policy)].compact)
|
118
|
+
|
119
|
+
nil
|
120
|
+
|
121
|
+
end
|
122
|
+
|
123
|
+
protected
|
124
|
+
def policy_name policy
|
125
|
+
case policy
|
126
|
+
when nil then nil
|
127
|
+
when LoadBalancerPolicy then policy.name
|
128
|
+
else policy.to_s
|
129
|
+
end
|
130
|
+
end
|
131
|
+
|
132
|
+
protected
|
133
|
+
def _each_item options = {}
|
134
|
+
|
135
|
+
instance_port = options[:instance_port]
|
136
|
+
|
137
|
+
load_balancer.backend_server_descriptions.each do |desc|
|
138
|
+
if instance_port.nil? or desc.instance_port == instance_port
|
139
|
+
desc.policy_names.collect do |policy_name|
|
140
|
+
policy = load_balancer.policies[policy_name]
|
141
|
+
yield(policy)
|
142
|
+
end
|
143
|
+
end
|
144
|
+
end
|
145
|
+
|
146
|
+
end
|
147
|
+
|
148
|
+
end
|
149
|
+
end
|
150
|
+
end
|