aws 2.3.25 → 2.3.26
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/lib/acf/right_acf_interface.rb +79 -49
- data/lib/aws.rb +1 -0
- data/lib/ec2/right_ec2.rb +7 -2
- data/lib/iam/iam.rb +118 -0
- data/test/iam/test_iam.rb +36 -0
- metadata +6 -3
@@ -195,6 +195,11 @@ module Aws
|
|
195
195
|
request_cache_or_info :list_distributions, request_hash, AcfDistributionListParser, @@bench
|
196
196
|
end
|
197
197
|
|
198
|
+
def list_streaming_distributions
|
199
|
+
request_hash = generate_request('GET', 'streaming-distribution')
|
200
|
+
request_cache_or_info :list_streaming_distributions, request_hash, AcfStreamingDistributionListParser, @@bench
|
201
|
+
end
|
202
|
+
|
198
203
|
# Create a new distribution.
|
199
204
|
# Returns the just created distribution or Aws::AwsError exception.
|
200
205
|
#
|
@@ -210,26 +215,38 @@ module Aws
|
|
210
215
|
# :last_modified_time => Wed Sep 10 17:00:54 UTC 2008,
|
211
216
|
# :caller_reference => "200809102100536497863003"}
|
212
217
|
#
|
213
|
-
def create_distribution(origin, comment='', enabled=true, cnames=[], caller_reference=nil)
|
218
|
+
def create_distribution(origin, comment='', enabled=true, cnames=[], caller_reference=nil, default_root_object=nil)
|
219
|
+
body = distribution_config_for(origin, comment, enabled, cnames, caller_reference, false, default_root_object)
|
220
|
+
request_hash = generate_request('POST', 'distribution', body.strip)
|
221
|
+
merge_headers(request_info(request_hash, AcfDistributionParser.new))
|
222
|
+
end
|
223
|
+
|
224
|
+
def create_streaming_distribution(origin, comment='', enabled=true, cnames=[], caller_reference=nil, default_root_object=nil)
|
225
|
+
body = distribution_config_for(origin, comment, enabled, cnames, caller_reference, true, default_root_object)
|
226
|
+
request_hash = generate_request('POST', 'streaming-distribution', body.strip)
|
227
|
+
merge_headers(request_info(request_hash, AcfDistributionParser.new))
|
228
|
+
end
|
229
|
+
|
230
|
+
def distribution_config_for(origin, comment='', enabled=true, cnames=[], caller_reference=nil, streaming = false, default_root_object=nil)
|
231
|
+
rootElement = streaming ? "StreamingDistributionConfig" : "DistributionConfig"
|
214
232
|
# join CNAMES
|
215
233
|
cnames_str = ''
|
216
234
|
unless cnames.blank?
|
217
235
|
cnames.to_a.each { |cname| cnames_str += "\n <CNAME>#{cname}</CNAME>" }
|
218
236
|
end
|
219
|
-
# reference
|
220
237
|
caller_reference ||= generate_call_reference
|
238
|
+
root_ob = default_root_object ? "<DefaultRootObject>#{config[:default_root_object]}</DefaultRootObject>" : ""
|
221
239
|
body = <<-EOXML
|
222
240
|
<?xml version="1.0" encoding="UTF-8"?>
|
223
|
-
|
241
|
+
<#{rootElement} xmlns=#{xmlns}>
|
224
242
|
<Origin>#{origin}</Origin>
|
225
243
|
<CallerReference>#{caller_reference}</CallerReference>
|
226
244
|
#{cnames_str.lstrip}
|
227
245
|
<Comment>#{AcfInterface::escape(comment.to_s)}</Comment>
|
228
246
|
<Enabled>#{enabled}</Enabled>
|
229
|
-
|
247
|
+
#{root_ob}
|
248
|
+
</#{rootElement}>
|
230
249
|
EOXML
|
231
|
-
request_hash = generate_request('POST', 'distribution', body.strip)
|
232
|
-
merge_headers(request_info(request_hash, AcfDistributionParser.new))
|
233
250
|
end
|
234
251
|
|
235
252
|
# Get a distribution's information.
|
@@ -252,6 +269,11 @@ module Aws
|
|
252
269
|
merge_headers(request_info(request_hash, AcfDistributionParser.new))
|
253
270
|
end
|
254
271
|
|
272
|
+
def get_streaming_distribution(aws_id)
|
273
|
+
request_hash = generate_request('GET', "streaming-distribution/#{aws_id}")
|
274
|
+
merge_headers(request_info(request_hash, AcfDistributionParser.new))
|
275
|
+
end
|
276
|
+
|
255
277
|
# Get a distribution's configuration.
|
256
278
|
# Returns a distribution's configuration or Aws::AwsError exception.
|
257
279
|
#
|
@@ -286,25 +308,15 @@ module Aws
|
|
286
308
|
# acf.set_distribution_config('E2REJM3VUN5RSI', config) #=> true
|
287
309
|
#
|
288
310
|
def set_distribution_config(aws_id, config)
|
289
|
-
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
|
296
|
-
body =
|
297
|
-
|
298
|
-
<DistributionConfig xmlns=#{xmlns}>
|
299
|
-
<Origin>#{config[:origin]}</Origin>
|
300
|
-
<CallerReference>#{config[:caller_reference]}</CallerReference>
|
301
|
-
#{cnames_str.lstrip}
|
302
|
-
<Comment>#{AcfInterface::escape(config[:comment].to_s)}</Comment>
|
303
|
-
<Enabled>#{config[:enabled]}</Enabled>
|
304
|
-
#{root_ob}
|
305
|
-
</DistributionConfig>
|
306
|
-
EOXML
|
307
|
-
request_hash = generate_request('PUT', "distribution/#{aws_id}/config", body.strip,
|
311
|
+
body = distribution_config_for(config[:origin], config[:comment], config[:enabled], config[:cnames], config[:caller_reference], false)
|
312
|
+
request_hash = generate_request('PUT', "distribution/#{aws_id}/config", body.strip,
|
313
|
+
'If-Match' => config[:e_tag])
|
314
|
+
request_info(request_hash, RightHttp2xxParser.new)
|
315
|
+
end
|
316
|
+
|
317
|
+
def set_streaming_distribution_config(aws_id, config)
|
318
|
+
body = distribution_config_for(config[:origin], config[:comment], config[:enabled], config[:cnames], config[:caller_reference], true)
|
319
|
+
request_hash = generate_request('PUT', "streaming-distribution/#{aws_id}/config", body.strip,
|
308
320
|
'If-Match' => config[:e_tag])
|
309
321
|
request_info(request_hash, RightHttp2xxParser.new)
|
310
322
|
end
|
@@ -320,46 +332,52 @@ module Aws
|
|
320
332
|
request_info(request_hash, RightHttp2xxParser.new)
|
321
333
|
end
|
322
334
|
|
335
|
+
def delete_streaming_distribution(aws_id, e_tag)
|
336
|
+
request_hash = generate_request('DELETE', "streaming-distribution/#{aws_id}", nil,
|
337
|
+
'If-Match' => e_tag)
|
338
|
+
request_info(request_hash, RightHttp2xxParser.new)
|
339
|
+
end
|
340
|
+
|
323
341
|
#-----------------------------------------------------------------
|
324
342
|
# PARSERS:
|
325
343
|
#-----------------------------------------------------------------
|
326
344
|
|
327
|
-
|
345
|
+
# Parses attributes common to many CF distribution API calls
|
346
|
+
class AcfBaseDistributionParser < AwsParser # :nodoc:
|
328
347
|
def reset
|
348
|
+
@distribution = { :cnames => [] }
|
329
349
|
@result = []
|
330
350
|
end
|
331
|
-
def tagstart(name, attributes)
|
332
|
-
@distribution = { :cnames => [] } if name == 'DistributionSummary'
|
333
|
-
end
|
334
351
|
def tagend(name)
|
335
352
|
case name
|
336
|
-
when 'Id'
|
337
|
-
when 'Status'
|
338
|
-
when 'LastModifiedTime'
|
339
|
-
when 'DomainName'
|
340
|
-
when 'Origin'
|
341
|
-
when '
|
342
|
-
when '
|
343
|
-
when '
|
353
|
+
when 'Id' then @distribution[:aws_id] = @text
|
354
|
+
when 'Status' then @distribution[:status] = @text
|
355
|
+
when 'LastModifiedTime' then @distribution[:last_modified_time] = Time.parse(@text)
|
356
|
+
when 'DomainName' then @distribution[:domain_name] = @text
|
357
|
+
when 'Origin' then @distribution[:origin] = @text
|
358
|
+
when 'CallerReference' then @distribution[:caller_reference] = @text
|
359
|
+
when 'Comment' then @distribution[:comment] = AcfInterface::unescape(@text)
|
360
|
+
when 'Enabled' then @distribution[:enabled] = @text == 'true' ? true : false
|
361
|
+
when 'CNAME' then @distribution[:cnames] << @text
|
344
362
|
end
|
345
363
|
end
|
346
364
|
end
|
347
365
|
|
348
|
-
class AcfDistributionParser <
|
349
|
-
def
|
350
|
-
|
366
|
+
class AcfDistributionParser < AcfBaseDistributionParser # :nodoc:
|
367
|
+
def tagend(name)
|
368
|
+
super
|
369
|
+
@result = @distribution
|
370
|
+
end
|
371
|
+
end
|
372
|
+
|
373
|
+
class AcfDistributionListParser < AcfBaseDistributionParser # :nodoc:
|
374
|
+
def tagstart(name, attributes)
|
375
|
+
@distribution = { :cnames => [] } if name == 'DistributionSummary'
|
351
376
|
end
|
352
377
|
def tagend(name)
|
378
|
+
super(name)
|
353
379
|
case name
|
354
|
-
when '
|
355
|
-
when 'Status' then @result[:status] = @text
|
356
|
-
when 'LastModifiedTime' then @result[:last_modified_time] = Time.parse(@text)
|
357
|
-
when 'DomainName' then @result[:domain_name] = @text
|
358
|
-
when 'Origin' then @result[:origin] = @text
|
359
|
-
when 'CallerReference' then @result[:caller_reference] = @text
|
360
|
-
when 'Comment' then @result[:comment] = AcfInterface::unescape(@text)
|
361
|
-
when 'Enabled' then @result[:enabled] = @text == 'true' ? true : false
|
362
|
-
when 'CNAME' then @result[:cnames] << @text
|
380
|
+
when 'DistributionSummary' then @result << @distribution
|
363
381
|
end
|
364
382
|
end
|
365
383
|
end
|
@@ -379,5 +397,17 @@ module Aws
|
|
379
397
|
end
|
380
398
|
end
|
381
399
|
|
400
|
+
class AcfStreamingDistributionListParser < AcfBaseDistributionParser # :nodoc:
|
401
|
+
def tagstart(name, attributes)
|
402
|
+
@distribution = { :cnames => [] } if name == 'StreamingDistributionSummary'
|
403
|
+
end
|
404
|
+
def tagend(name)
|
405
|
+
super(name)
|
406
|
+
case name
|
407
|
+
when 'StreamingDistributionSummary' then @result << @distribution
|
408
|
+
end
|
409
|
+
end
|
410
|
+
end
|
411
|
+
|
382
412
|
end
|
383
413
|
end
|
data/lib/aws.rb
CHANGED
data/lib/ec2/right_ec2.rb
CHANGED
@@ -81,7 +81,7 @@ module Aws
|
|
81
81
|
# Amazon EC2 Instance Types : http://www.amazon.com/b?ie=UTF8&node=370375011
|
82
82
|
# Default EC2 instance type (platform)
|
83
83
|
DEFAULT_INSTANCE_TYPE = 'm1.small'
|
84
|
-
INSTANCE_TYPES = ['m1.small','c1.medium','m1.large','m1.xlarge','c1.xlarge']
|
84
|
+
INSTANCE_TYPES = ['t1.micro', 'm1.small','c1.medium','m1.large','m1.xlarge','c1.xlarge']
|
85
85
|
|
86
86
|
@@bench = AwsBenchmarkingBlock.new
|
87
87
|
def self.bench_xml
|
@@ -186,7 +186,10 @@ module Aws
|
|
186
186
|
params.each do |list_by, list|
|
187
187
|
request_hash.merge! hash_params(list_by, list.to_a)
|
188
188
|
end
|
189
|
-
|
189
|
+
if image_type
|
190
|
+
request_hash['Filter.1.Name'] = "image-type"
|
191
|
+
request_hash['Filter.1.Value.1'] = image_type
|
192
|
+
end
|
190
193
|
link = generate_request("DescribeImages", request_hash)
|
191
194
|
request_cache_or_info cache_for, link, QEc2DescribeImagesParser, @@bench, cache_for
|
192
195
|
rescue Exception
|
@@ -1433,6 +1436,8 @@ module Aws
|
|
1433
1436
|
def tagend(name)
|
1434
1437
|
case name
|
1435
1438
|
when 'imageId' then @image[:aws_id] = @text
|
1439
|
+
when 'name' then @image[:aws_name] = @text
|
1440
|
+
when 'description' then @image[:aws_description] = @text
|
1436
1441
|
when 'imageLocation' then @image[:aws_location] = @text
|
1437
1442
|
when 'imageState' then @image[:aws_state] = @text
|
1438
1443
|
when 'imageOwnerId' then @image[:aws_owner] = @text
|
data/lib/iam/iam.rb
ADDED
@@ -0,0 +1,118 @@
|
|
1
|
+
module Aws
|
2
|
+
|
3
|
+
require 'xmlsimple'
|
4
|
+
|
5
|
+
class Iam < AwsBase
|
6
|
+
|
7
|
+
include AwsBaseInterface
|
8
|
+
|
9
|
+
API_VERSION = "2010-05-08"
|
10
|
+
DEFAULT_HOST = "iam.amazonaws.com"
|
11
|
+
DEFAULT_PATH = '/'
|
12
|
+
DEFAULT_PROTOCOL = 'https'
|
13
|
+
DEFAULT_PORT = 443
|
14
|
+
|
15
|
+
@@bench = AwsBenchmarkingBlock.new
|
16
|
+
|
17
|
+
def self.bench_xml
|
18
|
+
@@bench.xml
|
19
|
+
end
|
20
|
+
|
21
|
+
def self.bench_ec2
|
22
|
+
@@bench.service
|
23
|
+
end
|
24
|
+
|
25
|
+
# Current API version (sometimes we have to check it outside the GEM).
|
26
|
+
@@api = ENV['IAM_API_VERSION'] || API_VERSION
|
27
|
+
|
28
|
+
def self.api
|
29
|
+
@@api
|
30
|
+
end
|
31
|
+
|
32
|
+
|
33
|
+
def initialize(aws_access_key_id=nil, aws_secret_access_key=nil, params={})
|
34
|
+
init({:name => 'IAM',
|
35
|
+
:default_host => ENV['IAM_URL'] ? URI.parse(ENV['IAM_URL']).host : DEFAULT_HOST,
|
36
|
+
:default_port => ENV['IAM_URL'] ? URI.parse(ENV['IAM_URL']).port : DEFAULT_PORT,
|
37
|
+
:default_service => ENV['IAM_URL'] ? URI.parse(ENV['IAM_URL']).path : DEFAULT_PATH,
|
38
|
+
:default_protocol => ENV['IAM_URL'] ? URI.parse(ENV['IAM_URL']).scheme : DEFAULT_PROTOCOL,
|
39
|
+
:api_version => API_VERSION},
|
40
|
+
aws_access_key_id || ENV['AWS_ACCESS_KEY_ID'],
|
41
|
+
aws_secret_access_key|| ENV['AWS_SECRET_ACCESS_KEY'],
|
42
|
+
params)
|
43
|
+
end
|
44
|
+
|
45
|
+
def do_request(action, params, options={})
|
46
|
+
link = generate_request(action, params)
|
47
|
+
p link[:request]
|
48
|
+
resp = request_info_xml_simple(:iam_connection, @params, link, @logger,
|
49
|
+
:group_tags =>{"LoadBalancersDescriptions"=>"LoadBalancersDescription",
|
50
|
+
"DBParameterGroups" =>"DBParameterGroup",
|
51
|
+
"DBSecurityGroups" =>"DBSecurityGroup",
|
52
|
+
"EC2SecurityGroups" =>"EC2SecurityGroup",
|
53
|
+
"IPRanges" =>"IPRange"},
|
54
|
+
:force_array =>["DBInstances",
|
55
|
+
"DBParameterGroups",
|
56
|
+
"DBSecurityGroups",
|
57
|
+
"EC2SecurityGroups",
|
58
|
+
"IPRanges"],
|
59
|
+
:pull_out_array =>options[:pull_out_array],
|
60
|
+
:pull_out_single=>options[:pull_out_single],
|
61
|
+
:wrapper =>options[:wrapper])
|
62
|
+
end
|
63
|
+
|
64
|
+
|
65
|
+
#-----------------------------------------------------------------
|
66
|
+
# REQUESTS
|
67
|
+
#-----------------------------------------------------------------
|
68
|
+
|
69
|
+
|
70
|
+
# options:
|
71
|
+
# :marker => value received from previous response if IsTruncated = true
|
72
|
+
# :max_items => number of items you want returned
|
73
|
+
# :path_previx => for filtering results, default is /
|
74
|
+
def list_server_certificates(options={})
|
75
|
+
@logger.info("Listing server certificates...")
|
76
|
+
|
77
|
+
params = {}
|
78
|
+
params['Marker'] = options[:marker] if options[:marker]
|
79
|
+
params['MaxItems'] = options[:max_items] if options[:max_items]
|
80
|
+
params['PathPrefix'] = options[:path_prefix] if options[:path_prefix]
|
81
|
+
|
82
|
+
resp = do_request("ListServerCertificates", params, :pull_out_array=>[:list_server_certificates_result, :server_certificate_metadata_list])
|
83
|
+
|
84
|
+
|
85
|
+
rescue Exception
|
86
|
+
on_exception
|
87
|
+
end
|
88
|
+
|
89
|
+
#
|
90
|
+
# name: name of certificate
|
91
|
+
# public_key: public key certificate in PEM-encoded format
|
92
|
+
# private_key: private key in PEM-encoded format
|
93
|
+
# options:
|
94
|
+
# :path => specify a path you want it stored in
|
95
|
+
# :certificate_chain => contents of certificate chain
|
96
|
+
def upload_server_certificate(name, public_key, private_key, options={})
|
97
|
+
params = {}
|
98
|
+
params['ServerCertificateName'] = name
|
99
|
+
params['PrivateKey'] = private_key
|
100
|
+
params['CertificateBody'] = public_key
|
101
|
+
|
102
|
+
params['CertificateChain'] = options[:certificate_chain] if options[:certificate_chain]
|
103
|
+
params['Path'] = options[:path] if options[:path]
|
104
|
+
|
105
|
+
p params
|
106
|
+
|
107
|
+
resp = do_request("UploadServerCertificate", params, :pull_out_array=>[:list_server_certificates_result, :server_certificate_metadata_list])
|
108
|
+
|
109
|
+
|
110
|
+
rescue Exception
|
111
|
+
on_exception
|
112
|
+
end
|
113
|
+
|
114
|
+
|
115
|
+
end
|
116
|
+
|
117
|
+
|
118
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
require 'test/unit'
|
2
|
+
require File.dirname(__FILE__) + '/../../lib/aws'
|
3
|
+
require 'pp'
|
4
|
+
require File.dirname(__FILE__) + '/../test_credentials.rb'
|
5
|
+
|
6
|
+
class TestElb < Test::Unit::TestCase
|
7
|
+
|
8
|
+
# Some of RightEc2 instance methods concerning instance launching and image registration
|
9
|
+
# are not tested here due to their potentially risk.
|
10
|
+
|
11
|
+
def setup
|
12
|
+
TestCredentials.get_credentials
|
13
|
+
|
14
|
+
@iam = Aws::Iam.new(TestCredentials.aws_access_key_id,
|
15
|
+
TestCredentials.aws_secret_access_key)
|
16
|
+
|
17
|
+
end
|
18
|
+
|
19
|
+
def test_01_list_server_certificates
|
20
|
+
|
21
|
+
ret = @iam.list_server_certificates
|
22
|
+
p ret
|
23
|
+
assert_true(ret.size == 0)
|
24
|
+
end
|
25
|
+
|
26
|
+
def test_02_upload_server_certificate
|
27
|
+
ret = @iam.upload_server_certificate("test_cert",
|
28
|
+
IO.read('x').strip,
|
29
|
+
IO.read('y').strip,
|
30
|
+
:certificate_chain=>IO.read('z').strip)
|
31
|
+
|
32
|
+
p ret
|
33
|
+
end
|
34
|
+
|
35
|
+
|
36
|
+
end
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 2
|
7
7
|
- 3
|
8
|
-
-
|
9
|
-
version: 2.3.
|
8
|
+
- 26
|
9
|
+
version: 2.3.26
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Travis Reeder
|
@@ -16,7 +16,7 @@ autorequire:
|
|
16
16
|
bindir: bin
|
17
17
|
cert_chain: []
|
18
18
|
|
19
|
-
date: 2010-11-
|
19
|
+
date: 2010-11-15 00:00:00 -08:00
|
20
20
|
default_executable:
|
21
21
|
dependencies:
|
22
22
|
- !ruby/object:Gem::Dependency
|
@@ -89,6 +89,7 @@ files:
|
|
89
89
|
- lib/ec2/right_ec2.rb
|
90
90
|
- lib/ec2/right_mon_interface.rb
|
91
91
|
- lib/elb/elb_interface.rb
|
92
|
+
- lib/iam/iam.rb
|
92
93
|
- lib/rds/rds.rb
|
93
94
|
- lib/right_aws.rb
|
94
95
|
- lib/s3/right_s3.rb
|
@@ -105,6 +106,7 @@ files:
|
|
105
106
|
- test/ec2/test_mon.rb
|
106
107
|
- test/elb/test_elb.rb
|
107
108
|
- test/http_connection.rb
|
109
|
+
- test/iam/test_iam.rb
|
108
110
|
- test/rds/test_rds.rb
|
109
111
|
- test/s3/test_helper.rb
|
110
112
|
- test/s3/test_s3.rb
|
@@ -156,6 +158,7 @@ test_files:
|
|
156
158
|
- test/ec2/test_mon.rb
|
157
159
|
- test/elb/test_elb.rb
|
158
160
|
- test/http_connection.rb
|
161
|
+
- test/iam/test_iam.rb
|
159
162
|
- test/rds/test_rds.rb
|
160
163
|
- test/s3/test_helper.rb
|
161
164
|
- test/s3/test_s3.rb
|