aws-sdk 1.6.4 → 1.6.5
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/aws/auto_scaling/client.rb +2 -2
- data/lib/aws/cloud_formation/client.rb +2 -2
- data/lib/aws/cloud_watch/client.rb +2 -2
- data/lib/aws/core.rb +4 -1
- data/lib/aws/core/configuration.rb +3 -0
- data/lib/aws/core/options/xml_serializer.rb +7 -16
- data/lib/aws/dynamo_db/client.rb +2 -2
- data/lib/aws/ec2/client.rb +188 -5
- data/lib/aws/ec2/key_pair_collection.rb +1 -1
- data/lib/aws/ec2/security_group.rb +36 -31
- data/lib/aws/ec2/security_group/ip_permission.rb +7 -7
- data/lib/aws/elb/backend_server_policy_collection.rb +11 -12
- data/lib/aws/elb/client.rb +2 -2
- data/lib/aws/elb/instance_collection.rb +8 -9
- data/lib/aws/elb/listener.rb +16 -15
- data/lib/aws/elb/listener_collection.rb +20 -26
- data/lib/aws/elb/load_balancer.rb +97 -69
- data/lib/aws/elb/load_balancer_collection.rb +37 -24
- data/lib/aws/elb/load_balancer_policy.rb +1 -1
- data/lib/aws/elb/load_balancer_policy_collection.rb +9 -9
- data/lib/aws/emr/client.rb +2 -2
- data/lib/aws/iam/client.rb +2 -2
- data/lib/aws/route_53/client.rb +2 -2
- data/lib/aws/s3/bucket_lifecycle_configuration.rb +25 -24
- data/lib/aws/s3/s3_object.rb +6 -2
- data/lib/aws/simple_db/client.rb +2 -2
- data/lib/aws/simple_email_service/client.rb +2 -2
- data/lib/aws/simple_workflow/client.rb +2 -2
- data/lib/aws/sns/client.rb +2 -2
- data/lib/aws/sqs/client.rb +2 -2
- data/lib/aws/sts/client.rb +2 -2
- metadata +3 -5
- data/lib/aws/api_config/.document +0 -0
- data/lib/aws/core/json_error_parser.rb +0 -25
@@ -30,18 +30,18 @@ module AWS
|
|
30
30
|
# @param [Hash] options
|
31
31
|
#
|
32
32
|
# @option options [Integer] :port Specifies the external
|
33
|
-
# load balancer port number. This property cannot be modified for
|
33
|
+
# load balancer port number. This property cannot be modified for
|
34
34
|
# the life of the LoadBalancer.
|
35
35
|
#
|
36
36
|
# @option options [String,Symbol] :protocol Specifies the load balancer
|
37
37
|
# transport protocol to use for routing. Valid values include:
|
38
38
|
#
|
39
|
-
# @option options [Integer] :instance_port Specifies the TCP port on
|
40
|
-
# which the instance server is listening. This property cannot be
|
39
|
+
# @option options [Integer] :instance_port Specifies the TCP port on
|
40
|
+
# which the instance server is listening. This property cannot be
|
41
41
|
# modified for the life of the load balancer.
|
42
42
|
#
|
43
|
-
# @option options [String,Symbol] :instance_protocol Specifies the
|
44
|
-
# protocol to use for routing traffic to back-end instances. Valid
|
43
|
+
# @option options [String,Symbol] :instance_protocol Specifies the
|
44
|
+
# protocol to use for routing traffic to back-end instances. Valid
|
45
45
|
# values include:
|
46
46
|
#
|
47
47
|
# * :http, 'HTTP'
|
@@ -53,14 +53,14 @@ module AWS
|
|
53
53
|
#
|
54
54
|
# NOTE: If the front-end protocol is HTTP or HTTPS, +:instance_protocol+
|
55
55
|
# has to be at the same protocol layer, i.e., HTTP or HTTPS. Likewise,
|
56
|
-
# if the front-end protocol is TCP or SSL, +:instance_protocol+ has
|
56
|
+
# if the front-end protocol is TCP or SSL, +:instance_protocol+ has
|
57
57
|
# to be TCP or SSL.
|
58
58
|
#
|
59
59
|
# NOTE: If there is another listener with the same +:instance_port+
|
60
|
-
# whose +:instance_protocol+ is secure, i.e., HTTPS or SSL, the
|
61
|
-
# listener's +:instance_protocol+ has to be secure, i.e., HTTPS
|
60
|
+
# whose +:instance_protocol+ is secure, i.e., HTTPS or SSL, the
|
61
|
+
# listener's +:instance_protocol+ has to be secure, i.e., HTTPS
|
62
62
|
# or SSL. If there is another listener with the same +:instance_port+
|
63
|
-
# whose +:instance_protocol+ is HTTP or TCP, the listener's
|
63
|
+
# whose +:instance_protocol+ is HTTP or TCP, the listener's
|
64
64
|
# +:instance_protocol+ must be either HTTP or TCP.
|
65
65
|
#
|
66
66
|
# * :tcp, 'TCP'
|
@@ -69,20 +69,20 @@ module AWS
|
|
69
69
|
# This property cannot be modified for the life of the load balancer.
|
70
70
|
#
|
71
71
|
# @option options [String,IAM::ServerCertificate] :server_certificate The
|
72
|
-
# ARN string of an IAM::ServerCertifcate or an IAM::ServerCertificate
|
72
|
+
# ARN string of an IAM::ServerCertifcate or an IAM::ServerCertificate
|
73
73
|
# object. Reqruied for HTTPs listeners.
|
74
74
|
#
|
75
75
|
# @return [Listener]
|
76
76
|
def create options = {}
|
77
|
-
|
77
|
+
|
78
78
|
format_listener_opts(options)
|
79
79
|
|
80
80
|
client.create_load_balancer_listeners(
|
81
81
|
:load_balancer_name => load_balancer.name,
|
82
82
|
:listeners => [options])
|
83
83
|
|
84
|
-
Listener.new(load_balancer,
|
85
|
-
options[:load_balancer_port],
|
84
|
+
Listener.new(load_balancer,
|
85
|
+
options[:load_balancer_port],
|
86
86
|
options.merge(:config => config))
|
87
87
|
|
88
88
|
end
|
@@ -94,25 +94,19 @@ module AWS
|
|
94
94
|
|
95
95
|
protected
|
96
96
|
def _each_item options = {}
|
97
|
-
load_balancer.listener_descriptions.each do |
|
98
|
-
|
99
|
-
desc = desc.listener
|
97
|
+
load_balancer.listener_descriptions.each do |description|
|
100
98
|
|
101
|
-
|
102
|
-
opts[:config] = config
|
103
|
-
opts[:protocol] = desc.protocol
|
104
|
-
opts[:instance_port] = desc.instance_port
|
105
|
-
opts[:instance_protocol] = desc.instance_protocol
|
106
|
-
opts[:ssl_certificate_id] = desc.ssl_certificate_id if
|
107
|
-
desc.respond_to?(:ssl_certificate_id)
|
99
|
+
port = description[:listener][:load_balancer_port]
|
108
100
|
|
109
|
-
|
101
|
+
options = {}
|
102
|
+
options[:config] = config
|
103
|
+
options.merge!(description[:listener])
|
110
104
|
|
111
|
-
yield(
|
105
|
+
yield(Listener.new(load_balancer, port, options))
|
112
106
|
|
113
107
|
end
|
114
108
|
end
|
115
|
-
|
109
|
+
|
116
110
|
end
|
117
111
|
|
118
112
|
end
|
@@ -19,17 +19,45 @@ module AWS
|
|
19
19
|
# @attr_reader [Array<String>] availability_zone_names Return the names of
|
20
20
|
# the availability zones this load balancer routes traffic to.
|
21
21
|
#
|
22
|
-
# @attr_reader [String] canonical_hosted_zone_name Provides the name of
|
22
|
+
# @attr_reader [String] canonical_hosted_zone_name Provides the name of
|
23
23
|
# the Amazon Route 53 hosted zone that is associated with the load
|
24
24
|
# balancer. For more information: {http://docs.amazonwebservices.com/ElasticLoadBalancing/latest/DeveloperGuide/index.html?using-domain-names-with-elb.html}.
|
25
25
|
#
|
26
|
-
# @attr_reader [String] canonical_hosted_zone_name_id Provides the ID of
|
27
|
-
# the Amazon Route 53 hosted zone name that is associated with the
|
26
|
+
# @attr_reader [String] canonical_hosted_zone_name_id Provides the ID of
|
27
|
+
# the Amazon Route 53 hosted zone name that is associated with the
|
28
28
|
# load balancer. For more information: {http://docs.amazonwebservices.com/ElasticLoadBalancing/latest/DeveloperGuide/index.html?using-domain-names-with-elb.html}.
|
29
29
|
#
|
30
|
-
# @attr_reader [String] dns_name Specifies the external DNS name
|
30
|
+
# @attr_reader [String] dns_name Specifies the external DNS name
|
31
31
|
# associated with this load balancer.
|
32
32
|
#
|
33
|
+
# @attr_reader [Hash] policy_descriptions Returns a hash of
|
34
|
+
# +:app_cookie_stickiness_policies+, +:lb_cookie_stickiness_policies+
|
35
|
+
# and +:other_policies+. See also {#policies}.
|
36
|
+
#
|
37
|
+
# @attr_reader [String,nil] scheme Specifies the type of LoadBalancer.
|
38
|
+
# This attribute it set only for LoadBalancers attached to an Amazon VPC.
|
39
|
+
# If the Scheme is 'internet-facing', the LoadBalancer has a publicly
|
40
|
+
# resolvable DNS name that resolves to public IP addresses.
|
41
|
+
# If the Scheme is 'internal', the LoadBalancer has a publicly
|
42
|
+
# resolvable DNS name that resolves to private IP addresses.
|
43
|
+
#
|
44
|
+
# @attr_reader [Array<String>] subnet_ids Provides a list of VPC subnet IDs
|
45
|
+
# for the LoadBalancer.
|
46
|
+
#
|
47
|
+
# @attr_reader [Hash] health_check
|
48
|
+
# Returns a hash of the various health probes conducted on the
|
49
|
+
# load balancer instances. The following entries are returned:
|
50
|
+
# * +:healthy_threshold+
|
51
|
+
# * +:unhealthy_threshold+
|
52
|
+
# * +:interval+
|
53
|
+
# * +:target+
|
54
|
+
# * +:timeout+
|
55
|
+
# See {#configure_health_check} for more details on what each of the
|
56
|
+
# configuration values mean.
|
57
|
+
#
|
58
|
+
# @return [Hash]
|
59
|
+
#
|
60
|
+
#
|
33
61
|
class LoadBalancer < Core::Resource
|
34
62
|
|
35
63
|
def initialize name, options = {}
|
@@ -38,10 +66,10 @@ module AWS
|
|
38
66
|
|
39
67
|
attribute :name, :from => :load_balancer_name, :static => true
|
40
68
|
|
41
|
-
#availability_zones
|
69
|
+
# see #availability_zones
|
42
70
|
attribute :availability_zone_names, :from => :availability_zones
|
43
71
|
|
44
|
-
#backend_server_policies
|
72
|
+
# see #backend_server_policies
|
45
73
|
attribute :backend_server_descriptions
|
46
74
|
|
47
75
|
attribute :canonical_hosted_zone_name, :static => true
|
@@ -52,27 +80,37 @@ module AWS
|
|
52
80
|
|
53
81
|
attribute :dns_name, :static => true
|
54
82
|
|
55
|
-
|
56
|
-
attribute :health_check_description, :from => :health_check
|
83
|
+
attribute :health_check, :alias => :health_check_configuration
|
57
84
|
|
58
|
-
#instances
|
85
|
+
# see #instances
|
59
86
|
attribute :instance_descriptions, :from => :instances
|
60
87
|
|
61
|
-
#listeners
|
88
|
+
# see #listeners
|
62
89
|
attribute :listener_descriptions
|
63
90
|
|
64
|
-
|
65
|
-
|
66
|
-
|
91
|
+
attribute :policy_descriptions, :from => :policies
|
92
|
+
|
93
|
+
attribute :scheme, :static => true
|
94
|
+
|
95
|
+
attribute :subnet_ids, :from => :subnets, :static => true
|
96
|
+
|
97
|
+
attribute :security_group_ids, :from => :security_groups, :static => true
|
98
|
+
|
99
|
+
attribute :source_security_group_owner_alias,
|
100
|
+
:from => [:source_security_group, :owner_alias],
|
101
|
+
:static => true
|
102
|
+
|
103
|
+
attribute :source_security_group_name,
|
104
|
+
:from => [:source_security_group, :group_name],
|
67
105
|
:static => true
|
68
106
|
|
69
107
|
populates_from(:describe_load_balancers) do |resp|
|
70
|
-
resp.load_balancer_descriptions.find do |lb|
|
71
|
-
lb
|
108
|
+
resp.data[:load_balancer_descriptions].find do |lb|
|
109
|
+
lb[:load_balancer_name] == name
|
72
110
|
end
|
73
111
|
end
|
74
112
|
|
75
|
-
# A collection that help maanage the availability zones for
|
113
|
+
# A collection that help maanage the availability zones for
|
76
114
|
# this load balancer.
|
77
115
|
#
|
78
116
|
# @example enable an availability zone
|
@@ -89,7 +127,7 @@ module AWS
|
|
89
127
|
# puts zone.name
|
90
128
|
# end
|
91
129
|
#
|
92
|
-
# @return [AvailabilityZoneCollection] Returns a collection that
|
130
|
+
# @return [AvailabilityZoneCollection] Returns a collection that
|
93
131
|
# represents this load balancer's availability zones. You can
|
94
132
|
# use this collection to enable and disable availability zones.
|
95
133
|
def availability_zones
|
@@ -118,55 +156,55 @@ module AWS
|
|
118
156
|
|
119
157
|
# Updates the configuration that drives the instance health checks.
|
120
158
|
#
|
121
|
-
# You only need to pass the options you want to change. You can
|
122
|
-
# call {#
|
159
|
+
# You only need to pass the options you want to change. You can
|
160
|
+
# call {#health_check} if you want to see what the
|
123
161
|
# current configuration values are.
|
124
162
|
#
|
125
163
|
# @param [Hash] options
|
126
164
|
#
|
127
165
|
# @option options [Integer] :healthy_threshold Specifies the number of
|
128
|
-
# consecutive health probe successes required before moving the
|
166
|
+
# consecutive health probe successes required before moving the
|
129
167
|
# instance to the Healthy state.
|
130
168
|
#
|
131
|
-
# @option options [Integer] :unhealthy_threshold Specifies the number
|
132
|
-
# of consecutive health probe failures required before moving the
|
169
|
+
# @option options [Integer] :unhealthy_threshold Specifies the number
|
170
|
+
# of consecutive health probe failures required before moving the
|
133
171
|
# instance to the Unhealthy state.
|
134
172
|
#
|
135
|
-
# @option options [Integer] :interval Specifies the approximate
|
136
|
-
# interval, in seconds, between health checks of an individual
|
173
|
+
# @option options [Integer] :interval Specifies the approximate
|
174
|
+
# interval, in seconds, between health checks of an individual
|
137
175
|
# instance.
|
138
176
|
#
|
139
|
-
# @option options [Integer] :timeout Specifies the amount of time, in
|
140
|
-
# seconds, during which no response means a failed health probe.
|
177
|
+
# @option options [Integer] :timeout Specifies the amount of time, in
|
178
|
+
# seconds, during which no response means a failed health probe.
|
141
179
|
# This value must be less than the +:interval+ value.
|
142
180
|
#
|
143
|
-
# @option options [String] :target Specifies the instance being checked.
|
181
|
+
# @option options [String] :target Specifies the instance being checked.
|
144
182
|
#
|
145
183
|
# This option should be formatted like: "TCP:80"
|
146
184
|
#
|
147
|
-
# * The protocol is either TCP, HTTP, HTTPS, or SSL.
|
185
|
+
# * The protocol is either TCP, HTTP, HTTPS, or SSL.
|
148
186
|
# * The range of valid ports is one (1) through 65535.
|
149
187
|
#
|
150
|
-
# TCP is the default, specified as a TCP: port pair, for example
|
151
|
-
# "TCP:5000". In this case a healthcheck simply attempts to open a
|
152
|
-
# TCP connection to the instance on the specified port. Failure to
|
188
|
+
# TCP is the default, specified as a TCP: port pair, for example
|
189
|
+
# "TCP:5000". In this case a healthcheck simply attempts to open a
|
190
|
+
# TCP connection to the instance on the specified port. Failure to
|
153
191
|
# connect within the configured timeout is considered unhealthy.
|
154
192
|
#
|
155
193
|
# SSL is also specified as SSL: port pair, for example, SSL:5000.
|
156
|
-
# For HTTP or HTTPS protocol, the situation is different. You have
|
157
|
-
# to include a ping path in the string. HTTP is specified as a
|
158
|
-
# HTTP:port;/;PathToPing; grouping, for example
|
159
|
-
# "HTTP:80/weather/us/wa/seattle". In this case, a HTTP GET request
|
160
|
-
# is issued to the instance on the given port and path. Any answer
|
161
|
-
# other than "200 OK" within the timeout period is considered
|
194
|
+
# For HTTP or HTTPS protocol, the situation is different. You have
|
195
|
+
# to include a ping path in the string. HTTP is specified as a
|
196
|
+
# HTTP:port;/;PathToPing; grouping, for example
|
197
|
+
# "HTTP:80/weather/us/wa/seattle". In this case, a HTTP GET request
|
198
|
+
# is issued to the instance on the given port and path. Any answer
|
199
|
+
# other than "200 OK" within the timeout period is considered
|
162
200
|
# unhealthy.
|
163
201
|
#
|
164
|
-
# The total length of the HTTP ping target needs to be 1024 16-bit
|
202
|
+
# The total length of the HTTP ping target needs to be 1024 16-bit
|
165
203
|
# Unicode characters or less.
|
166
204
|
#
|
167
205
|
def configure_health_check options = {}
|
168
206
|
|
169
|
-
new_config =
|
207
|
+
new_config = health_check.merge(options)
|
170
208
|
|
171
209
|
response = client.configure_health_check(
|
172
210
|
:load_balancer_name => name,
|
@@ -176,29 +214,20 @@ module AWS
|
|
176
214
|
|
177
215
|
end
|
178
216
|
|
179
|
-
#
|
180
|
-
#
|
181
|
-
#
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
#
|
187
|
-
#
|
188
|
-
#
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
def health_check_configuration
|
194
|
-
cfg = health_check_description
|
195
|
-
{
|
196
|
-
:healthy_threshold => cfg.healthy_threshold,
|
197
|
-
:unhealthy_threshold => cfg.unhealthy_threshold,
|
198
|
-
:interval => cfg.interval,
|
199
|
-
:target => cfg.target,
|
200
|
-
:timeout => cfg.timeout,
|
201
|
-
}
|
217
|
+
# @note VPC only
|
218
|
+
# @return [Array<EC2::Subnet>] Returns an array of VPC subnets
|
219
|
+
# for this load balancer.
|
220
|
+
def subnets
|
221
|
+
subnet_ids.map{|id| EC2::Subnet.new(id, :config => config) }
|
222
|
+
end
|
223
|
+
|
224
|
+
# @note VPC only
|
225
|
+
# Returns the VPC security groups assigned to this load balancer.
|
226
|
+
# @return [Array<EC2::SecurityGroup>]
|
227
|
+
def security_groups
|
228
|
+
security_group_ids.collect do |id|
|
229
|
+
EC2::SecurityGroup.new(id, :config => config)
|
230
|
+
end
|
202
231
|
end
|
203
232
|
|
204
233
|
# Generally you don't need to call this method, rather you can
|
@@ -216,9 +245,9 @@ module AWS
|
|
216
245
|
# * {EC2::SecurityGroup#authorize_egress}
|
217
246
|
#
|
218
247
|
def source_security_group
|
219
|
-
{
|
220
|
-
:group_name =>
|
221
|
-
:user_id =>
|
248
|
+
{
|
249
|
+
:group_name => source_security_group_name,
|
250
|
+
:user_id => source_security_group_owner_alias,
|
222
251
|
}
|
223
252
|
end
|
224
253
|
|
@@ -238,14 +267,13 @@ module AWS
|
|
238
267
|
end
|
239
268
|
|
240
269
|
protected
|
270
|
+
|
241
271
|
def resource_identifiers
|
242
|
-
[[:load_balancer_name,name]]
|
272
|
+
[[:load_balancer_name, name]]
|
243
273
|
end
|
244
274
|
|
245
|
-
protected
|
246
275
|
def get_resource attr_name
|
247
|
-
|
248
|
-
client.describe_load_balancers
|
276
|
+
client.describe_load_balancers(:load_balancer_names => [name])
|
249
277
|
end
|
250
278
|
|
251
279
|
end
|
@@ -46,14 +46,13 @@ module AWS
|
|
46
46
|
# one or more availability zones. Values may be availability zone
|
47
47
|
# name strings, or {AWS::EC2::AvailabilityZone} objects.
|
48
48
|
#
|
49
|
-
# @option options [required,Array] :listeners An array of load
|
50
|
-
# listener options. Each value must be an array with the
|
51
|
-
# keys:
|
52
|
-
#
|
53
|
-
# +:
|
54
|
-
# +:
|
55
|
-
# +:
|
56
|
-
# +:instance_protocol+
|
49
|
+
# @option options [required,Array<Hash>] :listeners An array of load
|
50
|
+
# balancer listener options. Each value must be an array with the
|
51
|
+
# following keys:
|
52
|
+
# * +:port+
|
53
|
+
# * +:protocol+
|
54
|
+
# * +:instance_port+
|
55
|
+
# * +:instance_protocol+
|
57
56
|
#
|
58
57
|
# Port values should be integers, and protocols should be symbols or
|
59
58
|
# strings (e.g. :http, or 'HTTP'). See {ListenerCollection#create}
|
@@ -63,34 +62,48 @@ module AWS
|
|
63
62
|
# The ARN string of an IAM::ServerCertifcate or an
|
64
63
|
# IAM::ServerCertificate object. Reqruied for HTTPs listeners.
|
65
64
|
#
|
65
|
+
# @option options [Array] :subnets An list of VPC subets to attach the
|
66
|
+
# load balancer to. This can be an array of subnet ids (strings) or
|
67
|
+
# {EC2::Subnet} objects. VPC only.
|
68
|
+
#
|
69
|
+
# @option options [Array] :security_groups The security groups assigned to
|
70
|
+
# your load balancer within your VPC. This can be an array of
|
71
|
+
# security group ids or {EC2::SecurityGroup} objects. VPC only.
|
72
|
+
#
|
73
|
+
# @option options [String] :scheme ('internal' The type of a load
|
74
|
+
# balancer. Accepts 'internet-facing' or 'internal'. VPC only.
|
75
|
+
#
|
66
76
|
def create name, options = {}
|
67
77
|
|
68
|
-
|
69
|
-
|
78
|
+
if listeners = options[:listeners]
|
79
|
+
options[:listeners] = [listeners].flatten.map do |listener|
|
80
|
+
format_listener_opts(listener)
|
81
|
+
end
|
70
82
|
end
|
71
83
|
|
72
|
-
|
73
|
-
|
84
|
+
if zones = options[:availability_zones]
|
85
|
+
options[:availability_zones] = [zones].flatten.map do |zone|
|
86
|
+
zone.is_a?(EC2::AvailabilityZone) ? zone.name : zone
|
87
|
+
end
|
74
88
|
end
|
75
89
|
|
76
|
-
|
77
|
-
|
90
|
+
if groups = options[:security_groups]
|
91
|
+
options[:security_groups] = [groups].flatten.map do |group|
|
92
|
+
group.is_a?(EC2::SecurityGroup) ? group.id : group
|
93
|
+
end
|
78
94
|
end
|
79
95
|
|
80
|
-
|
81
|
-
|
96
|
+
if subnets = options[:subnets]
|
97
|
+
options[:subnets] = [subnets].flatten.map do |subnet|
|
98
|
+
subnet.is_a?(EC2::Subnet) ? subnet.id : subnet
|
99
|
+
end
|
82
100
|
end
|
83
101
|
|
84
|
-
|
85
|
-
:load_balancer_name => name.to_s,
|
86
|
-
:availability_zones => zones,
|
87
|
-
:listeners => listeners)
|
102
|
+
options[:load_balancer_name] = name.to_s
|
88
103
|
|
89
|
-
|
90
|
-
opts[:config] = config
|
91
|
-
opts[:dns_name] = response.dns_name
|
104
|
+
resp = client.create_load_balancer(options)
|
92
105
|
|
93
|
-
LoadBalancer.new(name,
|
106
|
+
LoadBalancer.new(name, :dns_name => resp[:dns_name], :config => config)
|
94
107
|
|
95
108
|
end
|
96
109
|
|