icehouse-right_aws 1.11.0 → 2.2.0
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/History.txt +93 -15
- data/Manifest.txt +15 -1
- data/README.txt +0 -4
- data/Rakefile +34 -17
- data/lib/acf/right_acf_interface.rb +260 -124
- data/lib/acf/right_acf_invalidations.rb +144 -0
- data/lib/acf/right_acf_origin_access_identities.rb +230 -0
- data/lib/acf/right_acf_streaming_interface.rb +229 -0
- data/lib/acw/right_acw_interface.rb +4 -5
- data/lib/as/right_as_interface.rb +59 -51
- data/lib/awsbase/benchmark_fix.rb +0 -0
- data/lib/awsbase/right_awsbase.rb +351 -104
- data/lib/awsbase/support.rb +2 -82
- data/lib/awsbase/version.rb +9 -0
- data/lib/ec2/right_ec2.rb +97 -246
- data/lib/ec2/right_ec2_ebs.rb +88 -68
- data/lib/ec2/right_ec2_images.rb +90 -50
- data/lib/ec2/right_ec2_instances.rb +118 -89
- data/lib/ec2/right_ec2_placement_groups.rb +108 -0
- data/lib/ec2/right_ec2_reserved_instances.rb +51 -44
- data/lib/ec2/right_ec2_security_groups.rb +396 -0
- data/lib/ec2/right_ec2_spot_instances.rb +425 -0
- data/lib/ec2/right_ec2_tags.rb +139 -0
- data/lib/ec2/right_ec2_vpc.rb +152 -140
- data/lib/ec2/right_ec2_windows_mobility.rb +84 -0
- data/lib/elb/right_elb_interface.rb +205 -39
- data/lib/iam/right_iam_access_keys.rb +71 -0
- data/lib/iam/right_iam_groups.rb +195 -0
- data/lib/iam/right_iam_interface.rb +341 -0
- data/lib/iam/right_iam_mfa_devices.rb +67 -0
- data/lib/iam/right_iam_users.rb +251 -0
- data/lib/rds/right_rds_interface.rb +591 -205
- data/lib/right_aws.rb +16 -12
- data/lib/route_53/right_route_53_interface.rb +640 -0
- data/lib/s3/right_s3.rb +34 -13
- data/lib/s3/right_s3_interface.rb +17 -14
- data/lib/sdb/active_sdb.rb +215 -38
- data/lib/sdb/right_sdb_interface.rb +93 -12
- data/lib/sqs/right_sqs.rb +1 -2
- data/lib/sqs/right_sqs_gen2.rb +0 -1
- data/lib/sqs/right_sqs_gen2_interface.rb +9 -9
- data/lib/sqs/right_sqs_interface.rb +6 -7
- data/right_aws.gemspec +91 -0
- data/test/README.mdown +39 -0
- data/test/acf/test_helper.rb +0 -0
- data/test/acf/test_right_acf.rb +10 -18
- data/test/awsbase/test_helper.rb +0 -0
- data/test/awsbase/test_right_awsbase.rb +0 -1
- data/test/ec2/test_helper.rb +0 -0
- data/test/ec2/test_right_ec2.rb +0 -1
- data/test/elb/test_helper.rb +2 -0
- data/test/elb/test_right_elb.rb +43 -0
- data/test/http_connection.rb +0 -0
- data/test/route_53/fixtures/a_record.xml +18 -0
- data/test/route_53/fixtures/alias_record.xml +18 -0
- data/test/route_53/test_helper.rb +2 -0
- data/test/route_53/test_right_route_53.rb +141 -0
- data/test/s3/test_helper.rb +0 -0
- data/test/s3/test_right_s3.rb +11 -9
- data/test/s3/test_right_s3_stubbed.rb +6 -4
- data/test/sdb/test_active_sdb.rb +71 -13
- data/test/sdb/test_batch_put_attributes.rb +54 -0
- data/test/sdb/test_helper.rb +0 -0
- data/test/sdb/test_right_sdb.rb +13 -7
- data/test/sqs/test_helper.rb +0 -0
- data/test/sqs/test_right_sqs.rb +0 -6
- data/test/sqs/test_right_sqs_gen2.rb +22 -34
- data/test/test_credentials.rb +0 -0
- data/test/ts_right_aws.rb +0 -0
- metadata +146 -16
- data/VERSION +0 -1
data/History.txt
CHANGED
@@ -4,7 +4,7 @@ Initial release.
|
|
4
4
|
== 1.2.0 2007-09-12
|
5
5
|
|
6
6
|
* r1718, todd, 2007-09-12 15:34:37
|
7
|
-
* # 458, Extensive documentation review, rework, and expansion. Also added
|
7
|
+
* # 458, Extensive documentation review, rework, and expansion. Also added
|
8
8
|
coverage analysis to the test suite using RCov.
|
9
9
|
|
10
10
|
* r1690, todd, 2007-09-07 15:23:11
|
@@ -39,7 +39,7 @@ Initial release.
|
|
39
39
|
* # 487, # 488, Consolidate a lot of code that was repeated in three places.
|
40
40
|
Fix error handling path when using streaming GET interfaces with S3.
|
41
41
|
Also add a stub for RightHttpConnection which allows more control over the
|
42
|
-
unit tests. Expand the unit tests and coverage tests.
|
42
|
+
unit tests. Expand the unit tests and coverage tests.
|
43
43
|
|
44
44
|
* r1755, todd, 2007-09-19 14:29:19
|
45
45
|
* # 487, RDoc fixes after code consolidation
|
@@ -59,13 +59,13 @@ Initial release.
|
|
59
59
|
* # 524, blocks added to ec2_describe_xxx to support aws_cache
|
60
60
|
|
61
61
|
* r1924, konstantin, 2007-10-12 11:35:06
|
62
|
-
* # 536, user_data bug fix
|
62
|
+
* # 536, user_data bug fix
|
63
63
|
|
64
64
|
* r1929, tve, 2007-10-15 00:00:11
|
65
65
|
* Fix libxml/rexml selection bug
|
66
66
|
|
67
67
|
* r1938, konstantin, 2007-10-16 10:53:56
|
68
|
-
* instance type support is set to default
|
68
|
+
* instance type support is set to default
|
69
69
|
|
70
70
|
== 1.4.3 2007-10-25
|
71
71
|
|
@@ -82,11 +82,11 @@ Initial release.
|
|
82
82
|
* r2001, konstantin, 2007-11-01 12:03:13 +0300
|
83
83
|
* Fixed multiple permissions assignment on Grantee#grant/revoke
|
84
84
|
* Fixed new grantee permissions set ingnore (Grantee#apply)
|
85
|
-
* S3::Grantee#exists? method added
|
85
|
+
* S3::Grantee#exists? method added
|
86
86
|
|
87
87
|
* r2109, konstantin, 2007-11-12 21:49:36 +0300
|
88
88
|
* RightAwsBaseInterface: caching implemented.
|
89
|
-
(The Ec2 functions are being cached: describe_images, describe_instances,
|
89
|
+
(The Ec2 functions are being cached: describe_images, describe_instances,
|
90
90
|
describe_security_groups and describe_key_pairs)
|
91
91
|
|
92
92
|
== 1.4.5 - 1.4.6
|
@@ -107,7 +107,7 @@ Initial release.
|
|
107
107
|
== 1.5.0
|
108
108
|
* r 2688, konstantin, 02-30-08 15:42:00 +0300
|
109
109
|
* SDB support added.
|
110
|
-
* RightAws::S3::bucket and RightAws::S3::Bucket.create methods behaviour
|
110
|
+
* RightAws::S3::bucket and RightAws::S3::Bucket.create methods behaviour
|
111
111
|
changed: param +create+ is set to +false+ by default.
|
112
112
|
|
113
113
|
== 1.6.0
|
@@ -151,7 +151,7 @@ Initial release.
|
|
151
151
|
== 1.7.2
|
152
152
|
|
153
153
|
Release Notes:
|
154
|
-
|
154
|
+
|
155
155
|
RightAws includes some new features, including:
|
156
156
|
- Support in RightAws::S3 and RightAws::S3Interface for S3 key copy, move, and rename
|
157
157
|
- Support for signature version 0 request authentication to EC2, SQS, and SDB
|
@@ -165,7 +165,7 @@ Initial release.
|
|
165
165
|
We now reset the seek pointer of the streaming IO object to its initial position.
|
166
166
|
- Removal of an accidental dependency on ActiveSupport in RightAws::S3Interface.get_link().
|
167
167
|
- Monkey-patch of the Ruby File class on Windows platforms to correct a problem in lstat.
|
168
|
-
The lstat bug was causing failure of very large file uploads on Windows [ Contributed by Benjamin Allfree ]
|
168
|
+
The lstat bug was causing failure of very large file uploads on Windows [ Contributed by Benjamin Allfree ]
|
169
169
|
- Fixed parsing of the ETag field for S3 objects
|
170
170
|
|
171
171
|
== 1.7.3
|
@@ -174,7 +174,7 @@ Initial release.
|
|
174
174
|
|
175
175
|
- Removed the 1.7.2 monkey-patch of the Ruby File class on Windows. This patch broke Rails 2.0.
|
176
176
|
The patch is now included in the README for anyone to use at their own risk.
|
177
|
-
|
177
|
+
|
178
178
|
== 1.8.0
|
179
179
|
|
180
180
|
Release Notes:
|
@@ -186,7 +186,7 @@ Initial release.
|
|
186
186
|
|
187
187
|
Bug fixes include correction of RightAws::S3 copy's failure to url-encode
|
188
188
|
the source key.
|
189
|
-
|
189
|
+
|
190
190
|
== 1.8.1
|
191
191
|
|
192
192
|
Release Notes:
|
@@ -197,7 +197,7 @@ the source key.
|
|
197
197
|
result sorting and attributes auto loading
|
198
198
|
- RightAws::ActiveSdb::Base#find_all_by_ and find_by_ helpers improved to support
|
199
199
|
:order, :auto_load, :limit and :next_token options
|
200
|
-
- RightAws::SdbInterface#delete_attributes bug fixed
|
200
|
+
- RightAws::SdbInterface#delete_attributes bug fixed
|
201
201
|
- SdbInterface allows specification of a string value to use for
|
202
202
|
representing Ruby nil in SDB.
|
203
203
|
- Sdb tests fixed and improved
|
@@ -215,7 +215,7 @@ the source key.
|
|
215
215
|
- Ec::cancel_bundle_task
|
216
216
|
|
217
217
|
- Full Amazon CloudFront support added with RightAws::AcfInterface
|
218
|
-
- Bug fixes to S3Interface::store_object_and_verify and
|
218
|
+
- Bug fixes to S3Interface::store_object_and_verify and
|
219
219
|
S3Interface::retrieve_object_and_verify (thanks to numerous user reports)
|
220
220
|
- Updates to caching for Ec2::describe_images_by methods
|
221
221
|
- Ec2 now has Ec2::last_request_id
|
@@ -228,7 +228,7 @@ the source key.
|
|
228
228
|
- CloudFront: docs fixes
|
229
229
|
- SDB: added: SQL-like query, select and query_with_attributes support
|
230
230
|
- SDB: fixed no method error when searching for id that doesn't exist
|
231
|
-
|
231
|
+
|
232
232
|
=== 1.11.0
|
233
233
|
|
234
234
|
Release Notes:
|
@@ -236,4 +236,82 @@ the source key.
|
|
236
236
|
- Boot from EBS support added
|
237
237
|
- VPC support added
|
238
238
|
- Latest EC2 API 2009-10-31 support added
|
239
|
-
- Some of bugs fixed
|
239
|
+
- Some of bugs fixed
|
240
|
+
|
241
|
+
=== 2.0.0
|
242
|
+
|
243
|
+
Release Notes:
|
244
|
+
- Added:
|
245
|
+
- Ruby 1.9 support
|
246
|
+
- Ec2:
|
247
|
+
- SpotInstances support
|
248
|
+
- m2.xlarge instances
|
249
|
+
- GetPasswordData API call (see get_password_data_v2)
|
250
|
+
- SecurityGroups support for Eucalyptus clouds
|
251
|
+
- EBS:
|
252
|
+
- :delete_on_termination field for volumes
|
253
|
+
- SimpleDB:
|
254
|
+
- BatchPutAttributes support
|
255
|
+
- ActiveSDB:
|
256
|
+
- Dynamic attribute accessors
|
257
|
+
- "Columns" support
|
258
|
+
- Simple Type Casting support
|
259
|
+
- ELB:
|
260
|
+
- API '2009-11-25' support (stickiness policies)
|
261
|
+
- ACF:
|
262
|
+
- API '2010-03-01' support (origin access policy and streaming distributions)
|
263
|
+
- Bunch of small issues were fixed
|
264
|
+
- Time objects were replaced by Strings (as Amazon returns them) to make the gem more consistent:
|
265
|
+
- :last_modified_time in:
|
266
|
+
RightAws::AcfInterface#incrementally_list_distributions,
|
267
|
+
RightAws::AcfInterface#create_distribution_by_config,
|
268
|
+
RightAws::AcfInterface#get_distribution,
|
269
|
+
RightAws::AcfInterface#get_distribution_config
|
270
|
+
- :timestamp in:
|
271
|
+
RightAws::AcwInterface#get_metric_statistics
|
272
|
+
- :aws_created_at in:
|
273
|
+
RightAws::Ec2#create_volume,
|
274
|
+
RightAws::Ec2#describe_volumes
|
275
|
+
- :aws_attached_at in:
|
276
|
+
RightAws::Ec2#attach_volume,
|
277
|
+
RightAws::Ec2#detach_volume,
|
278
|
+
RightAws::Ec2#describe_volumes
|
279
|
+
- :aws_started_at in:
|
280
|
+
RightAws::Ec2#describe_snapshots,
|
281
|
+
RightAws::Ec2#create_snapshot,
|
282
|
+
RightAws::Ec2#try_create_snapshot
|
283
|
+
- :created_time in:
|
284
|
+
RightAws::ElbInterface#describe_load_balancers
|
285
|
+
|
286
|
+
=== 2.1.0
|
287
|
+
Release Notes:
|
288
|
+
- Added:
|
289
|
+
- Route 53: API '2010-10-01'
|
290
|
+
- ACF: API '2010-11-01'
|
291
|
+
- EC2:
|
292
|
+
- API '2010-08-31'
|
293
|
+
- Port based group permissions support
|
294
|
+
- HPC Support
|
295
|
+
- Tags Suport
|
296
|
+
- ClientToken support added on instance launch
|
297
|
+
- RDS: API "2010-07-28"
|
298
|
+
- ELB: API '2010-07-01' (SSL support)
|
299
|
+
- IAM: API '2010-05-08' (AWS Identity and Access Management interface)
|
300
|
+
- 301 Redirect support added
|
301
|
+
- Removed:
|
302
|
+
- ActiveSupport dependency
|
303
|
+
- SDB: uuid gem dependency
|
304
|
+
- this gem requires right_http_connection 0bc3343232133bdb38c237d8285525d74495d3f5 or later
|
305
|
+
- "Raise On Timeout On Action" feature added to avoid duplicate resources creation if a timeout error occures and a retry is performed
|
306
|
+
|
307
|
+
=== next
|
308
|
+
Release Notes:
|
309
|
+
- Fixed:
|
310
|
+
- EC2: ClientToken (launch_instances, run_instances) is not used for Eucalyptus clouds
|
311
|
+
- RDS:
|
312
|
+
- RDS: API 2011-04-01
|
313
|
+
- Make :instance_class param more consistent: :db_instance_class --> :instance_class
|
314
|
+
- Issue 53: regression in latest master version of right_rds_interface
|
315
|
+
- Issue 73: Can't get list of instances with RdsInterface
|
316
|
+
- EBS: Issue 54: regression in right_ec2_ebs.rb
|
317
|
+
- Add the port number with server name in the v2 signature string if it is not the RFC standard number (author: unakatsuo).
|
data/Manifest.txt
CHANGED
@@ -2,16 +2,21 @@ History.txt
|
|
2
2
|
Manifest.txt
|
3
3
|
README.txt
|
4
4
|
Rakefile
|
5
|
+
lib/awsbase/support.rb
|
5
6
|
lib/awsbase/benchmark_fix.rb
|
6
7
|
lib/awsbase/right_awsbase.rb
|
7
|
-
lib/awsbase/support.rb
|
8
8
|
lib/ec2/right_ec2.rb
|
9
9
|
lib/ec2/right_ec2_images.rb
|
10
10
|
lib/ec2/right_ec2_instances.rb
|
11
|
+
lib/ec2/right_ec2_security_groups.rb
|
12
|
+
lib/ec2/right_ec2_spot_instances.rb
|
11
13
|
lib/ec2/right_ec2_ebs.rb
|
12
14
|
lib/ec2/right_ec2_reserved_instances.rb
|
13
15
|
lib/ec2/right_ec2_vpc.rb
|
14
16
|
lib/ec2/right_ec2_monitoring.rb
|
17
|
+
lib/ec2/right_ec2_placement_groups.rb
|
18
|
+
lib/ec2/right_ec2_windows_mobility.rb
|
19
|
+
lib/ec2/right_ec2_tags.rb
|
15
20
|
lib/right_aws.rb
|
16
21
|
lib/s3/right_s3.rb
|
17
22
|
lib/acw/right_acw_interface.rb
|
@@ -25,7 +30,16 @@ lib/sqs/right_sqs_gen2.rb
|
|
25
30
|
lib/sqs/right_sqs_gen2_interface.rb
|
26
31
|
lib/sqs/right_sqs_interface.rb
|
27
32
|
lib/acf/right_acf_interface.rb
|
33
|
+
lib/acf/right_acf_streaming_interface.rb
|
34
|
+
lib/acf/right_acf_origin_access_identities.rb
|
35
|
+
lib/acf/right_acf_invalidations.rb
|
28
36
|
lib/rds/right_rds_interface.rb
|
37
|
+
lib/iam/right_iam_interface.rb
|
38
|
+
lib/iam/right_iam_groups.rb
|
39
|
+
lib/iam/right_iam_users.rb
|
40
|
+
lib/iam/right_iam_access_keys.rb
|
41
|
+
lib/iam/right_iam_mfa_devices.rb
|
42
|
+
lib/route_53/right_route_53_interface.rb
|
29
43
|
test/ec2/test_helper.rb
|
30
44
|
test/ec2/test_right_ec2.rb
|
31
45
|
test/http_connection.rb
|
data/README.txt
CHANGED
@@ -68,10 +68,6 @@ concurrent requests to AWS. The way this plays out in practice is:
|
|
68
68
|
Note that due to limitations in the I/O of the Ruby interpreter you
|
69
69
|
may not get the degree of parallelism you may expect with the multi-threaded setting.
|
70
70
|
|
71
|
-
By default, EC2/S3/SQS/SDB/ACF interface instances are created in single-threaded mode. Set
|
72
|
-
"params[:multi_thread]" to "true" in the initialization arguments to use
|
73
|
-
multithreaded mode.
|
74
|
-
|
75
71
|
== GETTING STARTED:
|
76
72
|
|
77
73
|
* For EC2 read RightAws::Ec2 and consult the Amazon EC2 API documentation at
|
data/Rakefile
CHANGED
@@ -3,34 +3,37 @@
|
|
3
3
|
require 'rubygems'
|
4
4
|
require "rake/testtask"
|
5
5
|
require 'rcov/rcovtask'
|
6
|
+
require 'rake/gempackagetask'
|
7
|
+
require 'rake/clean'
|
6
8
|
$: << File.dirname(__FILE__)
|
7
|
-
require 'lib/right_aws.rb'
|
8
|
-
|
9
9
|
testglobs = ["test/ts_right_aws.rb"]
|
10
10
|
|
11
11
|
begin
|
12
|
-
require '
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
puts "Jeweler (or a dependency) not available. Install it with: sudo gem install jeweler"
|
12
|
+
require 'bundler'
|
13
|
+
rescue LoadError => e
|
14
|
+
STDERR.puts("Bundler is not available, some rake tasks will not be defined: #{e.message}")
|
15
|
+
else
|
16
|
+
Bundler::GemHelper.install_tasks :name => 'icehouse-right_aws'
|
17
|
+
end
|
18
|
+
|
19
|
+
# == Gem == #
|
20
|
+
|
21
|
+
gemtask = Rake::GemPackageTask.new(Gem::Specification.load("icehouse-right_aws.gemspec")) do |package|
|
22
|
+
package.package_dir = ENV['PACKAGE_DIR'] || 'pkg'
|
23
|
+
package.need_zip = true
|
24
|
+
package.need_tar = true
|
26
25
|
end
|
27
26
|
|
27
|
+
directory gemtask.package_dir
|
28
|
+
|
29
|
+
CLEAN.include(gemtask.package_dir)
|
30
|
+
|
28
31
|
desc "Analyze code coverage of the unit tests."
|
29
32
|
Rcov::RcovTask.new do |t|
|
30
33
|
t.test_files = FileList[testglobs]
|
31
34
|
#t.verbose = true # uncomment to see the executed command
|
32
35
|
end
|
33
|
-
|
36
|
+
|
34
37
|
desc "Test just the SQS interface"
|
35
38
|
task :testsqs do
|
36
39
|
require 'test/test_credentials'
|
@@ -98,4 +101,18 @@ task :testrds do
|
|
98
101
|
require 'test/rds/test_right_rds.rb'
|
99
102
|
end
|
100
103
|
|
104
|
+
desc "Test Route 53 interface"
|
105
|
+
task :testroute53 do
|
106
|
+
require 'test/test_credentials'
|
107
|
+
TestCredentials.get_credentials
|
108
|
+
require 'test/route_53/test_right_route_53'
|
109
|
+
end
|
110
|
+
|
111
|
+
desc "Test ELB interface"
|
112
|
+
task :testelb do
|
113
|
+
require 'test/test_credentials'
|
114
|
+
TestCredentials.get_credentials
|
115
|
+
require 'test/elb/test_right_elb'
|
116
|
+
end
|
117
|
+
|
101
118
|
# vim: syntax=Ruby
|
@@ -20,7 +20,6 @@
|
|
20
20
|
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
21
21
|
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
22
22
|
#
|
23
|
-
|
24
23
|
module RightAws
|
25
24
|
|
26
25
|
# = RightAws::AcfInterface -- RightScale Amazon's CloudFront interface
|
@@ -39,24 +38,25 @@ module RightAws
|
|
39
38
|
# [{:status => "Deployed",
|
40
39
|
# :domain_name => "d74zzrxmpmygb.6hops.net",
|
41
40
|
# :aws_id => "E4U91HCJHGXVC",
|
42
|
-
# :
|
41
|
+
# :s3_origin => {:dns_name=>"bucket-for-konstantin-00.s3.amazonaws.com"},
|
43
42
|
# :cnames => ["x1.my-awesome-site.net", "x1.my-awesome-site.net"]
|
44
43
|
# :comment => "My comments",
|
45
|
-
# :last_modified_time =>
|
44
|
+
# :last_modified_time => "2008-09-10T17:00:04.000Z" }, ..., {...} ]
|
46
45
|
#
|
47
46
|
# distibution = list.first
|
48
47
|
#
|
49
48
|
# info = acf.get_distribution(distibution[:aws_id]) #=>
|
50
|
-
# {:
|
51
|
-
# :
|
52
|
-
# :
|
53
|
-
# :
|
54
|
-
# :
|
55
|
-
# :
|
56
|
-
#
|
57
|
-
#
|
58
|
-
#
|
59
|
-
# :
|
49
|
+
# {:last_modified_time=>"2010-05-19T18:54:38.242Z",
|
50
|
+
# :status=>"Deployed",
|
51
|
+
# :domain_name=>"dpzl38cuix402.cloudfront.net",
|
52
|
+
# :caller_reference=>"201005181943052207677116",
|
53
|
+
# :e_tag=>"EJSXFGM5JL8ER",
|
54
|
+
# :s3_origin=>
|
55
|
+
# {:dns_name=>"bucket-for-konstantin-eu.s3.amazonaws.com",
|
56
|
+
# :origin_access_identity=>
|
57
|
+
# "origin-access-identity/cloudfront/E3JPJZ80ZBX24G"},
|
58
|
+
# :aws_id=>"E5P8HQ3ZAZIXD",
|
59
|
+
# :enabled=>false}
|
60
60
|
#
|
61
61
|
# config = acf.get_distribution_config(distibution[:aws_id]) #=>
|
62
62
|
# {:enabled => true,
|
@@ -64,7 +64,7 @@ module RightAws
|
|
64
64
|
# :e_tag => "E39OHHU1ON65SI",
|
65
65
|
# :cnames => ["web1.my-awesome-site.net", "web2.my-awesome-site.net"]
|
66
66
|
# :comment => "Woo-Hoo!",
|
67
|
-
# :
|
67
|
+
# :s3_origin => {:dns_name => "my-bucket.s3.amazonaws.com"}}
|
68
68
|
#
|
69
69
|
# config[:comment] = 'Olah-lah!'
|
70
70
|
# config[:enabled] = false
|
@@ -76,7 +76,7 @@ module RightAws
|
|
76
76
|
|
77
77
|
include RightAwsBaseInterface
|
78
78
|
|
79
|
-
API_VERSION = "
|
79
|
+
API_VERSION = "2010-11-01"
|
80
80
|
DEFAULT_HOST = 'cloudfront.amazonaws.com'
|
81
81
|
DEFAULT_PORT = 443
|
82
82
|
DEFAULT_PROTOCOL = 'https'
|
@@ -97,7 +97,6 @@ module RightAws
|
|
97
97
|
# * <tt>:server</tt>: CloudFront service host, default: DEFAULT_HOST
|
98
98
|
# * <tt>:port</tt>: CloudFront service port, default: DEFAULT_PORT
|
99
99
|
# * <tt>:protocol</tt>: 'http' or 'https', default: DEFAULT_PROTOCOL
|
100
|
-
# * <tt>:multi_thread</tt>: true=HTTP connection per thread, false=per process
|
101
100
|
# * <tt>:logger</tt>: for log messages, default: RAILS_DEFAULT_LOGGER else STDOUT
|
102
101
|
#
|
103
102
|
# acf = RightAws::AcfInterface.new('1E3GDYEOGFJPIT7XXXXXX','hgTHt68JY07JKUY08ftHYtERkjgtfERn57XXXXXX',
|
@@ -122,8 +121,8 @@ module RightAws
|
|
122
121
|
# Generates request hash for REST API.
|
123
122
|
def generate_request(method, path, params={}, body=nil, headers={}) # :nodoc:
|
124
123
|
# Params
|
125
|
-
params.delete_if{ |key, val| val.
|
126
|
-
unless params.
|
124
|
+
params.delete_if{ |key, val| val.right_blank? }
|
125
|
+
unless params.right_blank?
|
127
126
|
path += "?" + params.to_a.collect{ |key,val| "#{AwsUtils::amz_escape(key)}=#{AwsUtils::amz_escape(val.to_s)}" }.join("&")
|
128
127
|
end
|
129
128
|
# Headers
|
@@ -134,7 +133,7 @@ module RightAws
|
|
134
133
|
headers['Authorization'] = "AWS #{@aws_access_key_id}:#{signature}"
|
135
134
|
# Request
|
136
135
|
path = "#{@params[:service]}#{@params[:api_version]}/#{path}"
|
137
|
-
request = "Net::HTTP::#{method.capitalize}".
|
136
|
+
request = "Net::HTTP::#{method.capitalize}".right_constantize.new(path)
|
138
137
|
request.body = body if body
|
139
138
|
# Set request headers
|
140
139
|
headers.each { |key, value| request[key.to_s] = value }
|
@@ -155,14 +154,6 @@ module RightAws
|
|
155
154
|
# Helpers:
|
156
155
|
#-----------------------------------------------------------------
|
157
156
|
|
158
|
-
def self.escape(text) # :nodoc:
|
159
|
-
REXML::Text::normalize(text)
|
160
|
-
end
|
161
|
-
|
162
|
-
def self.unescape(text) # :nodoc:
|
163
|
-
REXML::Text::unnormalize(text)
|
164
|
-
end
|
165
|
-
|
166
157
|
def generate_call_reference # :nodoc:
|
167
158
|
result = Time.now.strftime('%Y%m%d%H%M%S')
|
168
159
|
10.times{ result << rand(10).to_s }
|
@@ -175,29 +166,84 @@ module RightAws
|
|
175
166
|
hash
|
176
167
|
end
|
177
168
|
|
178
|
-
def
|
179
|
-
cnames = ''
|
180
|
-
|
181
|
-
|
169
|
+
def distribution_config_to_xml(config, xml_wrapper='DistributionConfig') # :nodoc:
|
170
|
+
cnames = logging = trusted_signers = s3_origin = custom_origin = default_root_object = ''
|
171
|
+
# CNAMES
|
172
|
+
unless config[:cnames].right_blank?
|
173
|
+
Array(config[:cnames]).each { |cname| cnames += " <CNAME>#{cname}</CNAME>\n" }
|
182
174
|
end
|
183
|
-
#
|
184
|
-
logging
|
185
|
-
unless config[:logging].blank?
|
175
|
+
# Logging
|
176
|
+
unless config[:logging].right_blank?
|
186
177
|
logging = " <Logging>\n" +
|
187
178
|
" <Bucket>#{config[:logging][:bucket]}</Bucket>\n" +
|
188
179
|
" <Prefix>#{config[:logging][:prefix]}</Prefix>\n" +
|
189
180
|
" </Logging>\n"
|
190
181
|
end
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
"
|
196
|
-
|
182
|
+
unless config[:required_protocols].right_blank?
|
183
|
+
required_protocols = " <RequiredProtocols>\n" +
|
184
|
+
" <Protocol>#{config[:required_protocols]}</Protocol>\n" +
|
185
|
+
" </RequiredProtocols>\n"
|
186
|
+
else required_protocols = ""
|
187
|
+
end
|
188
|
+
# Default Root Object
|
189
|
+
unless config[:default_root_object].right_blank?
|
190
|
+
default_root_object = " <DefaultRootObject>#{config[:default_root_object]}</DefaultRootObject>\n" unless config[:default_root_object].right_blank?
|
191
|
+
end
|
192
|
+
# Trusted Signers
|
193
|
+
unless config[:trusted_signers].right_blank?
|
194
|
+
trusted_signers = " <TrustedSigners>\n"
|
195
|
+
Array(config[:trusted_signers]).each do |trusted_signer|
|
196
|
+
trusted_signers += if trusted_signer.to_s[/self/i]
|
197
|
+
" <Self/>\n"
|
198
|
+
else
|
199
|
+
" <AwsAccountNumber>#{trusted_signer}</AwsAccountNumber>\n"
|
200
|
+
end
|
201
|
+
end
|
202
|
+
trusted_signers += " </TrustedSigners>\n"
|
203
|
+
end
|
204
|
+
# S3Origin
|
205
|
+
unless config[:s3_origin].right_blank?
|
206
|
+
origin_access_identity = ''
|
207
|
+
# Origin Access Identity
|
208
|
+
unless config[:s3_origin][:origin_access_identity].right_blank?
|
209
|
+
origin_access_identity = config[:s3_origin][:origin_access_identity]
|
210
|
+
unless origin_access_identity[%r{^origin-access-identity}]
|
211
|
+
origin_access_identity = "origin-access-identity/cloudfront/#{origin_access_identity}"
|
212
|
+
end
|
213
|
+
origin_access_identity = " <OriginAccessIdentity>#{origin_access_identity}</OriginAccessIdentity>\n"
|
214
|
+
end
|
215
|
+
s3_origin = " <S3Origin>\n" +
|
216
|
+
" <DNSName>#{config[:s3_origin][:dns_name]}</DNSName>\n" +
|
217
|
+
"#{origin_access_identity}" +
|
218
|
+
" </S3Origin>\n"
|
219
|
+
end
|
220
|
+
# Custom Origin
|
221
|
+
unless config[:custom_origin].right_blank?
|
222
|
+
http_port = https_port = origin_protocol_policy = ''
|
223
|
+
http_port = " <HTTPPort>#{config[:custom_origin][:http_port]}</HTTPPort>\n" unless config[:custom_origin][:http_port].right_blank?
|
224
|
+
https_port = " <HTTPSPort>#{config[:custom_origin][:https_port]}</HTTPSPort>" unless config[:custom_origin][:https_port].right_blank?
|
225
|
+
origin_protocol_policy = " <OriginProtocolPolicy>#{config[:custom_origin][:origin_protocol_policy]}</OriginProtocolPolicy>\n" unless config[:custom_origin][:origin_protocol_policy].right_blank?
|
226
|
+
custom_origin = " <CustomOrigin>\n" +
|
227
|
+
" <DNSName>#{config[:custom_origin][:dns_name]}</DNSName>\n" +
|
228
|
+
"#{http_port}" +
|
229
|
+
"#{https_port}" +
|
230
|
+
"#{origin_protocol_policy}" +
|
231
|
+
" </CustomOrigin>\n"
|
232
|
+
end
|
233
|
+
# XML
|
234
|
+
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
|
235
|
+
"<#{xml_wrapper} xmlns=\"http://#{@params[:server]}/doc/#{API_VERSION}/\">\n" +
|
236
|
+
" <CallerReference>#{config[:caller_reference]}</CallerReference>\n" +
|
237
|
+
" <Comment>#{AwsUtils::xml_escape(config[:comment].to_s)}</Comment>\n" +
|
197
238
|
" <Enabled>#{config[:enabled]}</Enabled>\n" +
|
198
|
-
|
199
|
-
|
200
|
-
|
239
|
+
s3_origin +
|
240
|
+
custom_origin +
|
241
|
+
default_root_object +
|
242
|
+
cnames +
|
243
|
+
logging +
|
244
|
+
required_protocols +
|
245
|
+
trusted_signers +
|
246
|
+
"</#{xml_wrapper}>"
|
201
247
|
end
|
202
248
|
|
203
249
|
#-----------------------------------------------------------------
|
@@ -208,13 +254,13 @@ module RightAws
|
|
208
254
|
# Returns an array of distributions or RightAws::AwsError exception.
|
209
255
|
#
|
210
256
|
# acf.list_distributions #=>
|
211
|
-
# [{:status
|
212
|
-
# :domain_name
|
213
|
-
# :
|
214
|
-
# :
|
215
|
-
# :
|
216
|
-
# :
|
217
|
-
# :
|
257
|
+
# [{:status=>"Deployed",
|
258
|
+
# :domain_name=>"dgmde.6os.net",
|
259
|
+
# :comment=>"ONE LINE OF COMMENT",
|
260
|
+
# :last_modified_time=>"2009-06-16T16:10:02.210Z",
|
261
|
+
# :s3_origin=>{:dns_name=>"example.s3.amazonaws.com"},
|
262
|
+
# :aws_id=>"12Q05OOMFN7SYL",
|
263
|
+
# :enabled=>true}, ... ]
|
218
264
|
#
|
219
265
|
def list_distributions
|
220
266
|
result = []
|
@@ -234,11 +280,10 @@ module RightAws
|
|
234
280
|
# {:distributions=>
|
235
281
|
# [{:status=>"Deployed",
|
236
282
|
# :aws_id=>"E2Q0AOOMFNPSYL",
|
237
|
-
# :
|
238
|
-
# :origin=>"my-bucket.s3.amazonaws.com",
|
283
|
+
# :s3_origin=>{:dns_name=>"example.s3.amazonaws.com"},
|
239
284
|
# :domain_name=>"d1s5gmdtmafnre.6hops.net",
|
240
285
|
# :comment=>"ONE LINE OF COMMENT",
|
241
|
-
# :last_modified_time=>
|
286
|
+
# :last_modified_time=>"2008-10-22T19:31:23.000Z",
|
242
287
|
# :enabled=>true,
|
243
288
|
# :cnames=>[]}],
|
244
289
|
# :is_truncated=>true,
|
@@ -252,7 +297,7 @@ module RightAws
|
|
252
297
|
# # list distributions by 10
|
253
298
|
# incrementally_list_distributions(:max_items => 10) do |response|
|
254
299
|
# puts response.inspect # a list of 10 distributions
|
255
|
-
#
|
300
|
+
# true # return false if the listing should be broken otherwise use true
|
256
301
|
# end
|
257
302
|
#
|
258
303
|
def incrementally_list_distributions(params={}, &block)
|
@@ -264,7 +309,7 @@ module RightAws
|
|
264
309
|
link = generate_request('GET', 'distribution', opts)
|
265
310
|
last_response = request_info(link, AcfDistributionListParser.new(:logger => @logger))
|
266
311
|
opts['Marker'] = last_response[:next_marker]
|
267
|
-
break unless block && block.call(last_response) && !last_response[:next_marker].
|
312
|
+
break unless block && block.call(last_response) && !last_response[:next_marker].right_blank?
|
268
313
|
end
|
269
314
|
last_response
|
270
315
|
end
|
@@ -272,51 +317,101 @@ module RightAws
|
|
272
317
|
# Create a new distribution.
|
273
318
|
# Returns the just created distribution or RightAws::AwsError exception.
|
274
319
|
#
|
275
|
-
#
|
276
|
-
# { :prefix=>"log/", :bucket=>"my-logs.s3.amazonaws.com" } ) #=>
|
277
|
-
# {:comment => "Woo-Hoo!",
|
278
|
-
# :enabled => true,
|
279
|
-
# :location => "https://cloudfront.amazonaws.com/2008-06-30/distribution/E2REJM3VUN5RSI",
|
280
|
-
# :status => "InProgress",
|
281
|
-
# :aws_id => "E2REJM3VUN5RSI",
|
282
|
-
# :domain_name => "d3dxv71tbbt6cd.6hops.net",
|
283
|
-
# :origin => "my-bucket.s3.amazonaws.com",
|
284
|
-
# :cnames => ["web1.my-awesome-site.net"],
|
285
|
-
# :logging => { :prefix => "log/",
|
286
|
-
# :bucket => "my-logs.s3.amazonaws.com"},
|
287
|
-
# :last_modified_time => Wed Sep 10 17:00:54 UTC 2008,
|
288
|
-
# :caller_reference => "200809102100536497863003"}
|
320
|
+
# # S3 Origin
|
289
321
|
#
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
-
|
300
|
-
|
322
|
+
# config = { :comment => "kd: delete me please",
|
323
|
+
# :s3_origin => { :dns_name => "devs-us-east.s3.amazonaws.com",
|
324
|
+
# :origin_access_identity => "origin-access-identity/cloudfront/E3JPJZ80ZBX24G"},
|
325
|
+
# :enabled => true,
|
326
|
+
# :logging => { :prefix => "kd/log/",
|
327
|
+
# :bucket => "devs-us-west.s3.amazonaws.com"}}
|
328
|
+
# acf.create_distribution(config) #=>
|
329
|
+
# { :status=>"InProgress",
|
330
|
+
# :enabled=>true,
|
331
|
+
# :caller_reference=>"201012071910051044304704",
|
332
|
+
# :logging=>{:prefix=>"kd/log/", :bucket=>"devs-us-west.s3.amazonaws.com"},
|
333
|
+
# :e_tag=>"ESCTG5WJCFWJK",
|
334
|
+
# :location=> "https://cloudfront.amazonaws.com/2010-11-01/distribution/E3KUBANZ7N1B2",
|
335
|
+
# :comment=>"kd: delete me please",
|
336
|
+
# :domain_name=>"d3stykk6upgs20.cloudfront.net",
|
337
|
+
# :aws_id=>"E3KUBANZ7N1B2",
|
338
|
+
# :s3_origin=>
|
339
|
+
# {:origin_access_identity=>"origin-access-identity/cloudfront/E3JPJZ80ZBX24G",
|
340
|
+
# :dns_name=>"devs-us-east.s3.amazonaws.com"},
|
341
|
+
# :last_modified_time=>"2010-12-07T16:10:07.087Z",
|
342
|
+
# :in_progress_invalidation_batches=>0}
|
343
|
+
#
|
344
|
+
# # Custom Origin
|
345
|
+
#
|
346
|
+
# custom_config = { :comment => "kd: delete me please",
|
347
|
+
# :custom_origin => { :dns_name => "custom_origin.my-site.com",
|
348
|
+
# :http_port => 80,
|
349
|
+
# :https_port => 443,
|
350
|
+
# :origin_protocol_policy => 'match-viewer' },
|
351
|
+
# :enabled => true,
|
352
|
+
# :logging => { :prefix => "kd/log/",
|
353
|
+
# :bucket => "my-bucket.s3.amazonaws.com"}} #=>
|
354
|
+
# { :last_modified_time=>"2010-12-08T14:23:43.522Z",
|
355
|
+
# :status=>"InProgress",
|
356
|
+
# :custom_origin=>
|
357
|
+
# {:http_port=>"80",
|
358
|
+
# :https_port=>"443",
|
359
|
+
# :origin_protocol_policy=>"match-viewer",
|
360
|
+
# :dns_name=>"custom_origin.my-site.com"},
|
361
|
+
# :enabled=>true,
|
362
|
+
# :caller_reference=>"201012081723428499167245",
|
363
|
+
# :in_progress_invalidation_batches=>0,
|
364
|
+
# :e_tag=>"E1ZCJ8N5E52KO6",
|
365
|
+
# :location=>
|
366
|
+
# "https://cloudfront.amazonaws.com/2010-11-01/distribution/EK0AJ4RMNIF2P",
|
367
|
+
# :logging=>{:prefix=>"kd/log/", :bucket=>"my-bucket.s3.amazonaws.com"},
|
368
|
+
# :domain_name=>"do36k7s2wxklg.cloudfront.net",
|
369
|
+
# :comment=>"kd: delete me please",
|
370
|
+
# :aws_id=>"EK0AJ4RMNIF2P"}
|
371
|
+
#
|
372
|
+
def create_distribution(config)
|
301
373
|
config[:caller_reference] ||= generate_call_reference
|
302
|
-
link = generate_request('POST', 'distribution', {},
|
374
|
+
link = generate_request('POST', 'distribution', {}, distribution_config_to_xml(config))
|
303
375
|
merge_headers(request_info(link, AcfDistributionListParser.new(:logger => @logger))[:distributions].first)
|
304
376
|
end
|
377
|
+
alias_method :create_distribution_by_config, :create_distribution
|
305
378
|
|
306
379
|
# Get a distribution's information.
|
307
380
|
# Returns a distribution's information or RightAws::AwsError exception.
|
308
381
|
#
|
309
382
|
# acf.get_distribution('E2REJM3VUN5RSI') #=>
|
310
|
-
# {:
|
311
|
-
# :
|
312
|
-
# :
|
313
|
-
# :
|
314
|
-
# :
|
315
|
-
# :
|
316
|
-
#
|
317
|
-
#
|
318
|
-
#
|
319
|
-
# :
|
383
|
+
# {:last_modified_time=>"2010-05-19T18:54:38.242Z",
|
384
|
+
# :status=>"Deployed",
|
385
|
+
# :domain_name=>"dpzl38cuix402.cloudfront.net",
|
386
|
+
# :caller_reference=>"201005181943052207677116",
|
387
|
+
# :e_tag=>"EJSXFGM5JL8ER",
|
388
|
+
# :s3_origin=>
|
389
|
+
# {:dns_name=>"bucket-for-konstantin-eu.s3.amazonaws.com",
|
390
|
+
# :origin_access_identity=>
|
391
|
+
# "origin-access-identity/cloudfront/E3JPJZ80ZBX24G"},
|
392
|
+
# :aws_id=>"E5P8HQ3ZAZIXD",
|
393
|
+
# :enabled=>false}
|
394
|
+
#
|
395
|
+
# acf.get_distribution('E2FNSBHNVVF11E') #=>
|
396
|
+
# {:e_tag=>"E1Q2DJEPTQOLJD",
|
397
|
+
# :status=>"InProgress",
|
398
|
+
# :last_modified_time=>"2010-04-17T17:24:25.000Z",
|
399
|
+
# :cnames=>["web1.my-awesome-site.net", "web2.my-awesome-site.net"],
|
400
|
+
# :aws_id=>"E2FNSBHNVVF11E",
|
401
|
+
# :logging=>{:prefix=>"xlog/", :bucket=>"my-bucket.s3.amazonaws.com"},
|
402
|
+
# :enabled=>true,
|
403
|
+
# :active_trusted_signers=>
|
404
|
+
# [{:aws_account_number=>"120288270000",
|
405
|
+
# :key_pair_ids=>["APKAJTD5OHNDX0000000", "APKAIK74BJWCL0000000"]},
|
406
|
+
# {:aws_account_number=>"self"},
|
407
|
+
# {:aws_account_number=>"648772220000"}],
|
408
|
+
# :caller_reference=>"201004171154450740700072",
|
409
|
+
# :domain_name=>"d1f6lpevremt5m.cloudfront.net",
|
410
|
+
# :s3_origin=>
|
411
|
+
# {:dns_name=>"bucket-for-konstantin-eu.s3.amazonaws.com",
|
412
|
+
# :origin_access_identity=>
|
413
|
+
# "origin-access-identity/cloudfront/E3JPJZ80ZBX24G"},
|
414
|
+
# :trusted_signers=>["self", "648772220000", "120288270000"]}
|
320
415
|
#
|
321
416
|
def get_distribution(aws_id)
|
322
417
|
link = generate_request('GET', "distribution/#{aws_id}")
|
@@ -327,12 +422,24 @@ module RightAws
|
|
327
422
|
# Returns a distribution's configuration or RightAws::AwsError exception.
|
328
423
|
#
|
329
424
|
# acf.get_distribution_config('E2REJM3VUN5RSI') #=>
|
330
|
-
# {:
|
331
|
-
# :
|
332
|
-
# :
|
333
|
-
#
|
334
|
-
#
|
335
|
-
#
|
425
|
+
# {:caller_reference=>"201005181943052207677116",
|
426
|
+
# :e_tag=>"EJSXFGM5JL8ER",
|
427
|
+
# :s3_origin=>
|
428
|
+
# {:dns_name=>"bucket-for-konstantin-eu.s3.amazonaws.com",
|
429
|
+
# :origin_access_identity=>
|
430
|
+
# "origin-access-identity/cloudfront/E3JPJZ80ZBX24G"},
|
431
|
+
# :enabled=>false}
|
432
|
+
#
|
433
|
+
# acf.get_distribution_config('E2FNSBHNVVF11E') #=>
|
434
|
+
# {:e_tag=>"E1Q2DJEPTQOLJD",
|
435
|
+
# :logging=>{:prefix=>"xlog/", :bucket=>"my-bucket.s3.amazonaws.com"},
|
436
|
+
# :enabled=>true,
|
437
|
+
# :caller_reference=>"201004171154450740700072",
|
438
|
+
# :trusted_signers=>["self", "648772220000", "120288270000"],
|
439
|
+
# :s3_origin=>
|
440
|
+
# {:dns_name=>"bucket-for-konstantin-eu.s3.amazonaws.com",
|
441
|
+
# :origin_access_identity=>
|
442
|
+
# "origin-access-identity/cloudfront/E3JPJZ80ZBX24G"}}
|
336
443
|
#
|
337
444
|
def get_distribution_config(aws_id)
|
338
445
|
link = generate_request('GET', "distribution/#{aws_id}/config")
|
@@ -340,7 +447,6 @@ module RightAws
|
|
340
447
|
end
|
341
448
|
|
342
449
|
# Set a distribution's configuration
|
343
|
-
# (the :origin and the :caller_reference cannot be changed).
|
344
450
|
# Returns +true+ on success or RightAws::AwsError exception.
|
345
451
|
#
|
346
452
|
# config = acf.get_distribution_config('E2REJM3VUN5RSI') #=>
|
@@ -349,13 +455,20 @@ module RightAws
|
|
349
455
|
# :e_tag => "E39OHHU1ON65SI",
|
350
456
|
# :cnames => ["web1.my-awesome-site.net", "web2.my-awesome-site.net"]
|
351
457
|
# :comment => "Woo-Hoo!",
|
352
|
-
# :
|
353
|
-
#
|
354
|
-
# config[:
|
458
|
+
# :s3_origin => { :dns_name => "my-bucket.s3.amazonaws.com"}}
|
459
|
+
#
|
460
|
+
# config[:comment] = 'Olah-lah!'
|
461
|
+
# config[:enabled] = false
|
462
|
+
# config[:s3_origin][:origin_access_identity] = "origin-access-identity/cloudfront/E3JPJZ80ZBX24G"
|
463
|
+
# # or just
|
464
|
+
# # config[:s3_origin][:origin_access_identity] = "E3JPJZ80ZBX24G"
|
465
|
+
# config[:trusted_signers] = ['self', '648772220000', '120288270000']
|
466
|
+
# config[:logging] = { :bucket => 'my-bucket.s3.amazonaws.com', :prefix => 'xlog/' }
|
467
|
+
#
|
355
468
|
# acf.set_distribution_config('E2REJM3VUN5RSI', config) #=> true
|
356
469
|
#
|
357
470
|
def set_distribution_config(aws_id, config)
|
358
|
-
link = generate_request('PUT', "distribution/#{aws_id}/config", {},
|
471
|
+
link = generate_request('PUT', "distribution/#{aws_id}/config", {}, distribution_config_to_xml(config),
|
359
472
|
'If-Match' => config[:e_tag])
|
360
473
|
request_info(link, RightHttp2xxParser.new(:logger => @logger))
|
361
474
|
end
|
@@ -380,32 +493,55 @@ module RightAws
|
|
380
493
|
@result = { :distributions => [] }
|
381
494
|
end
|
382
495
|
def tagstart(name, attributes)
|
383
|
-
|
384
|
-
|
385
|
-
@
|
496
|
+
case full_tag_name
|
497
|
+
when %r{/Signer$}
|
498
|
+
@active_signer = {}
|
499
|
+
when %r{(Streaming)?DistributionSummary$},
|
500
|
+
%r{^(Streaming)?Distribution$},
|
501
|
+
%r{^(Streaming)?DistributionConfig$}
|
502
|
+
@distribution = { }
|
503
|
+
when %r{/S3Origin$} then @distribution[:s3_origin] = {}
|
504
|
+
when %r{/CustomOrigin$} then @distribution[:custom_origin] = {}
|
386
505
|
end
|
387
506
|
end
|
388
507
|
def tagend(name)
|
389
508
|
case name
|
390
|
-
|
391
|
-
|
392
|
-
|
393
|
-
|
394
|
-
|
395
|
-
|
396
|
-
|
397
|
-
|
398
|
-
|
399
|
-
|
400
|
-
|
401
|
-
|
402
|
-
|
403
|
-
|
404
|
-
|
405
|
-
|
406
|
-
|
407
|
-
|
408
|
-
|
509
|
+
when 'Marker' then @result[:marker] = @text
|
510
|
+
when 'NextMarker' then @result[:next_marker] = @text
|
511
|
+
when 'MaxItems' then @result[:max_items] = @text.to_i
|
512
|
+
when 'IsTruncated' then @result[:is_truncated] = (@text == 'true')
|
513
|
+
when 'Id' then @distribution[:aws_id] = @text
|
514
|
+
when 'Status' then @distribution[:status] = @text
|
515
|
+
when 'LastModifiedTime' then @distribution[:last_modified_time] = @text
|
516
|
+
when 'DomainName' then @distribution[:domain_name] = @text
|
517
|
+
when 'Comment' then @distribution[:comment] = AwsUtils::xml_unescape(@text)
|
518
|
+
when 'CallerReference' then @distribution[:caller_reference] = @text
|
519
|
+
when 'CNAME' then (@distribution[:cnames] ||= []) << @text
|
520
|
+
when 'Enabled' then @distribution[:enabled] = (@text == 'true')
|
521
|
+
when 'Bucket' then (@distribution[:logging] ||= {})[:bucket] = @text
|
522
|
+
when 'Prefix' then (@distribution[:logging] ||= {})[:prefix] = @text
|
523
|
+
when 'Protocol' then (@distribution[:required_protocols] ||= {})[:protocol] = @text
|
524
|
+
when 'InProgressInvalidationBatches' then @distribution[:in_progress_invalidation_batches] = @text.to_i
|
525
|
+
when 'DefaultRootObject' then @distribution[:default_root_object] = @text
|
526
|
+
else
|
527
|
+
case full_tag_name
|
528
|
+
when %r{/S3Origin/DNSName$} then @distribution[:s3_origin][:dns_name] = @text
|
529
|
+
when %r{/S3Origin/OriginAccessIdentity$} then @distribution[:s3_origin][:origin_access_identity] = @text
|
530
|
+
when %r{/CustomOrigin/DNSName$} then @distribution[:custom_origin][:dns_name] = @text
|
531
|
+
when %r{/CustomOrigin/HTTPPort} then @distribution[:custom_origin][:http_port] = @text
|
532
|
+
when %r{/CustomOrigin/HTTPSPort$} then @distribution[:custom_origin][:https_port] = @text
|
533
|
+
when %r{/CustomOrigin/OriginProtocolPolicy$} then @distribution[:custom_origin][:origin_protocol_policy] = @text
|
534
|
+
when %r{/TrustedSigners/Self$} then (@distribution[:trusted_signers] ||= []) << 'self'
|
535
|
+
when %r{/TrustedSigners/AwsAccountNumber$} then (@distribution[:trusted_signers] ||= []) << @text
|
536
|
+
when %r{/Signer/Self$} then @active_signer[:aws_account_number] = 'self'
|
537
|
+
when %r{/Signer/AwsAccountNumber$} then @active_signer[:aws_account_number] = @text
|
538
|
+
when %r{/Signer/KeyPairId$} then (@active_signer[:key_pair_ids] ||= []) << @text
|
539
|
+
when %r{/Signer$} then (@distribution[:active_trusted_signers] ||= []) << @active_signer
|
540
|
+
when %r{(Streaming)?DistributionSummary$},
|
541
|
+
%r{^(Streaming)?Distribution$},
|
542
|
+
%r{^(Streaming)?DistributionConfig$}
|
543
|
+
@result[:distributions] << @distribution
|
544
|
+
end
|
409
545
|
end
|
410
546
|
end
|
411
547
|
end
|