dustMason-right_aws 2.1.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 +305 -0
- data/Manifest.txt +60 -0
- data/README.txt +165 -0
- data/Rakefile +112 -0
- data/lib/acf/right_acf_interface.rb +549 -0
- 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 +248 -0
- data/lib/as/right_as_interface.rb +698 -0
- data/lib/awsbase/benchmark_fix.rb +39 -0
- data/lib/awsbase/right_awsbase.rb +1174 -0
- data/lib/awsbase/support.rb +35 -0
- data/lib/awsbase/version.rb +9 -0
- data/lib/ec2/right_ec2.rb +458 -0
- data/lib/ec2/right_ec2_ebs.rb +465 -0
- data/lib/ec2/right_ec2_images.rb +413 -0
- data/lib/ec2/right_ec2_instances.rb +785 -0
- data/lib/ec2/right_ec2_monitoring.rb +70 -0
- data/lib/ec2/right_ec2_placement_groups.rb +108 -0
- data/lib/ec2/right_ec2_reserved_instances.rb +174 -0
- 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 +583 -0
- data/lib/ec2/right_ec2_windows_mobility.rb +84 -0
- data/lib/elb/right_elb_interface.rb +571 -0
- 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 +1309 -0
- data/lib/right_aws.rb +88 -0
- data/lib/route_53/right_route_53_interface.rb +630 -0
- data/lib/s3/right_s3.rb +1123 -0
- data/lib/s3/right_s3_interface.rb +1198 -0
- data/lib/sdb/active_sdb.rb +1107 -0
- data/lib/sdb/right_sdb_interface.rb +753 -0
- data/lib/sns/right_sns.rb +205 -0
- data/lib/sns/right_sns_interface.rb +343 -0
- data/lib/sqs/right_sqs.rb +387 -0
- data/lib/sqs/right_sqs_gen2.rb +342 -0
- data/lib/sqs/right_sqs_gen2_interface.rb +523 -0
- data/lib/sqs/right_sqs_interface.rb +593 -0
- data/right_aws.gemspec +91 -0
- data/test/acf/test_helper.rb +2 -0
- data/test/acf/test_right_acf.rb +138 -0
- data/test/awsbase/test_helper.rb +2 -0
- data/test/awsbase/test_right_awsbase.rb +12 -0
- data/test/ec2/test_helper.rb +2 -0
- data/test/ec2/test_right_ec2.rb +108 -0
- data/test/http_connection.rb +87 -0
- data/test/rds/test_helper.rb +2 -0
- data/test/rds/test_right_rds.rb +120 -0
- data/test/s3/test_helper.rb +2 -0
- data/test/s3/test_right_s3.rb +421 -0
- data/test/s3/test_right_s3_stubbed.rb +97 -0
- data/test/sdb/test_active_sdb.rb +357 -0
- data/test/sdb/test_batch_put_attributes.rb +54 -0
- data/test/sdb/test_helper.rb +3 -0
- data/test/sdb/test_right_sdb.rb +253 -0
- data/test/sns/test_helper.rb +2 -0
- data/test/sns/test_right_sns.rb +73 -0
- data/test/sqs/test_helper.rb +2 -0
- data/test/sqs/test_right_sqs.rb +285 -0
- data/test/sqs/test_right_sqs_gen2.rb +264 -0
- data/test/test_credentials.rb +37 -0
- data/test/ts_right_aws.rb +14 -0
- metadata +244 -0
@@ -0,0 +1,264 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/test_helper.rb'
|
2
|
+
|
3
|
+
class TestSqsGen2 < Test::Unit::TestCase
|
4
|
+
|
5
|
+
GRANTEE_EMAIL_ADDRESS = 'fester@example.com'
|
6
|
+
RIGHT_MESSAGE_TEXT = 'Right test message'
|
7
|
+
|
8
|
+
|
9
|
+
def setup
|
10
|
+
$stdout.sync = true
|
11
|
+
@grantee_aws_id = '100000000001'
|
12
|
+
@sqs = Rightscale::SqsGen2Interface.new(TestCredentials.aws_access_key_id, TestCredentials.aws_secret_access_key)
|
13
|
+
@queue_name = 'right_sqs_test_gen2_queue'
|
14
|
+
@queue2_name = @queue_name + '_2'
|
15
|
+
@queue3_name = @queue_name + '_3'
|
16
|
+
@queue4_name = @queue_name + '_4'
|
17
|
+
# for classes
|
18
|
+
@s = Rightscale::SqsGen2.new(TestCredentials.aws_access_key_id, TestCredentials.aws_secret_access_key)
|
19
|
+
end
|
20
|
+
|
21
|
+
# Wait for the queue to appear in the queues list.
|
22
|
+
# Amazon needs some time to after the queue creation to place
|
23
|
+
# it to the accessible queues list. If we dont want to get
|
24
|
+
# the additional faults then wait a bit...
|
25
|
+
def wait_for_queue_url(queue_name)
|
26
|
+
queue_url = nil
|
27
|
+
do_sleep(180) do
|
28
|
+
queue_url = @sqs.queue_url_by_name(queue_name)
|
29
|
+
end
|
30
|
+
sleep 30
|
31
|
+
queue_url
|
32
|
+
end
|
33
|
+
|
34
|
+
def do_sleep(delay, &block)
|
35
|
+
puts "sleeping #{block ? 'up to ' : ''}#{delay} seconds:"
|
36
|
+
wake_up_at = Time.now+delay
|
37
|
+
while Time.now < wake_up_at do
|
38
|
+
sleep 1
|
39
|
+
print '.'
|
40
|
+
break if block && block.call
|
41
|
+
end
|
42
|
+
puts
|
43
|
+
end
|
44
|
+
|
45
|
+
#---------------------------
|
46
|
+
# Rightscale::SqsInterface
|
47
|
+
#---------------------------
|
48
|
+
|
49
|
+
def test_01_create_queue
|
50
|
+
queue_url = @sqs.create_queue @queue_name
|
51
|
+
assert queue_url[/http.*#{@queue_name}/], 'New queue creation failed'
|
52
|
+
end
|
53
|
+
|
54
|
+
def test_02_list_queues
|
55
|
+
wait_for_queue_url(@queue_name)
|
56
|
+
queues = @sqs.list_queues('right_')
|
57
|
+
assert queues.size>0, 'Must more that 0 queues in list'
|
58
|
+
end
|
59
|
+
|
60
|
+
def test_03_set_and_get_queue_attributes
|
61
|
+
queue_url = @sqs.queue_url_by_name(@queue_name)
|
62
|
+
assert queue_url[/https.*#{@queue_name}/], "#{@queue_name} must exist!"
|
63
|
+
assert @sqs.set_queue_attributes(queue_url, 'VisibilityTimeout', 111), 'Set_queue_attributes fail'
|
64
|
+
do_sleep 60 # Amazon needs some time to change attribute
|
65
|
+
assert_equal '111', @sqs.get_queue_attributes(queue_url)['VisibilityTimeout'], 'New VisibilityTimeout must be equal to 111'
|
66
|
+
end
|
67
|
+
|
68
|
+
def test_04_get_queue_attributes_forms
|
69
|
+
queue_url = @sqs.queue_url_by_name(@queue_name)
|
70
|
+
all = nil
|
71
|
+
assert_nothing_raised do
|
72
|
+
all = @sqs.get_queue_attributes(queue_url, 'All')
|
73
|
+
end
|
74
|
+
assert_nothing_raised do
|
75
|
+
assert all, @sqs.get_queue_attributes(queue_url)
|
76
|
+
end
|
77
|
+
assert_nothing_raised do
|
78
|
+
attributes = @sqs.get_queue_attributes(queue_url, 'ApproximateNumberOfMessages', 'VisibilityTimeout')
|
79
|
+
assert_equal 2, attributes.size
|
80
|
+
end
|
81
|
+
assert_nothing_raised do
|
82
|
+
attributes = @sqs.get_queue_attributes(queue_url, ['ApproximateNumberOfMessages', 'VisibilityTimeout'])
|
83
|
+
assert_equal 2, attributes.size
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
def test_05_add_permissions
|
88
|
+
queue_url = @sqs.queue_url_by_name(@queue_name)
|
89
|
+
assert @sqs.add_permissions(queue_url, 'test01', @grantee_aws_id, 'SendMessage')
|
90
|
+
assert @sqs.add_permissions(queue_url, 'test02', @grantee_aws_id, ['DeleteMessage','ReceiveMessage'])
|
91
|
+
do_sleep 60
|
92
|
+
end
|
93
|
+
|
94
|
+
def test_06_test_permissions
|
95
|
+
queue_url = @sqs.queue_url_by_name(@queue_name)
|
96
|
+
permissions = @sqs.get_queue_attributes(queue_url, 'Policy')
|
97
|
+
assert !permissions.right_blank?
|
98
|
+
end
|
99
|
+
|
100
|
+
def test_07_revoke_permissions
|
101
|
+
queue_url = @sqs.queue_url_by_name(@queue_name)
|
102
|
+
assert @sqs.remove_permissions(queue_url, 'test01')
|
103
|
+
assert @sqs.remove_permissions(queue_url, 'test02')
|
104
|
+
end
|
105
|
+
|
106
|
+
def test_14_send_message
|
107
|
+
queue_url = @sqs.queue_url_by_name(@queue_name)
|
108
|
+
# send 5 messages for the tests below
|
109
|
+
assert @sqs.send_message(queue_url, RIGHT_MESSAGE_TEXT)
|
110
|
+
assert @sqs.send_message(queue_url, RIGHT_MESSAGE_TEXT)
|
111
|
+
assert @sqs.send_message(queue_url, RIGHT_MESSAGE_TEXT)
|
112
|
+
assert @sqs.send_message(queue_url, RIGHT_MESSAGE_TEXT)
|
113
|
+
assert @sqs.send_message(queue_url, RIGHT_MESSAGE_TEXT)
|
114
|
+
do_sleep 60
|
115
|
+
end
|
116
|
+
|
117
|
+
def test_15_get_queue_length
|
118
|
+
queue_url = @sqs.queue_url_by_name(@queue_name)
|
119
|
+
assert_equal 5, @sqs.get_queue_length(queue_url), 'Queue must have 5 messages'
|
120
|
+
end
|
121
|
+
|
122
|
+
def test_16_receive_message
|
123
|
+
queue_url = @sqs.queue_url_by_name(@queue_name)
|
124
|
+
r_message = @sqs.receive_message(queue_url, 1)[0]
|
125
|
+
assert r_message, "Receive returned no message(s), but this is not necessarily incorrect"
|
126
|
+
assert_equal RIGHT_MESSAGE_TEXT, r_message['Body'], 'Receive message got wrong message text'
|
127
|
+
end
|
128
|
+
|
129
|
+
def test_17_delete_message
|
130
|
+
queue_url = @sqs.queue_url_by_name(@queue_name)
|
131
|
+
message = @sqs.receive_message(queue_url)[0]
|
132
|
+
assert @sqs.delete_message(queue_url, message['ReceiptHandle']), 'Delete_message fail'
|
133
|
+
assert @sqs.pop_message(queue_url), 'Pop_message fail'
|
134
|
+
end
|
135
|
+
|
136
|
+
def test_18_clear_and_delete_queue
|
137
|
+
queue_url = @sqs.queue_url_by_name(@queue_name)
|
138
|
+
assert @sqs.delete_queue(queue_url)
|
139
|
+
end
|
140
|
+
|
141
|
+
#---------------------------
|
142
|
+
# Rightscale::Sqs classes
|
143
|
+
#---------------------------
|
144
|
+
|
145
|
+
def test_20_sqs_create_queue
|
146
|
+
assert @s, 'Rightscale::SqsGen2 must exist'
|
147
|
+
# get queues list
|
148
|
+
queues_size = @s.queues.size
|
149
|
+
# create new queue
|
150
|
+
queue = @s.queue(@queue2_name, true)
|
151
|
+
# check that it is created
|
152
|
+
assert queue.is_a?(Rightscale::SqsGen2::Queue)
|
153
|
+
wait_for_queue_url(queue.name)
|
154
|
+
# check that amount of queues has increased
|
155
|
+
assert_equal queues_size + 1, @s.queues.size
|
156
|
+
do_sleep 10
|
157
|
+
end
|
158
|
+
|
159
|
+
def test_21_sqs_delete_queue
|
160
|
+
queue = @s.queue(@queue2_name, false)
|
161
|
+
assert queue.delete
|
162
|
+
end
|
163
|
+
|
164
|
+
def test_22_queue_create
|
165
|
+
# create new queue
|
166
|
+
queue = Rightscale::SqsGen2::Queue.create(@s, @queue3_name, true)
|
167
|
+
# check that it is created
|
168
|
+
assert queue.is_a?(Rightscale::SqsGen2::Queue)
|
169
|
+
wait_for_queue_url("#{@queue_name}_21")
|
170
|
+
do_sleep 10
|
171
|
+
end
|
172
|
+
|
173
|
+
def test_23_queue_attributes
|
174
|
+
queue = Rightscale::SqsGen2::Queue.create(@s, @queue3_name, false)
|
175
|
+
# get a list of attrinutes
|
176
|
+
attributes = queue.get_attribute
|
177
|
+
assert attributes.is_a?(Hash) && attributes.size>0
|
178
|
+
# get attribute value and increase it by 10
|
179
|
+
v = (queue.get_attribute('VisibilityTimeout').to_i + 10).to_s
|
180
|
+
# set attribute
|
181
|
+
assert queue.set_attribute('VisibilityTimeout', v)
|
182
|
+
# wait a bit
|
183
|
+
do_sleep 60
|
184
|
+
# check that attribute has changed
|
185
|
+
assert_equal v, queue.get_attribute('VisibilityTimeout')
|
186
|
+
# get queue visibility timeout
|
187
|
+
assert_equal v, queue.visibility
|
188
|
+
# change it
|
189
|
+
queue.visibility = queue.visibility.to_i + 10
|
190
|
+
# make sure that it is changed
|
191
|
+
assert v.to_i + 10, queue.visibility
|
192
|
+
end
|
193
|
+
|
194
|
+
def test_24
|
195
|
+
queue = Rightscale::SqsGen2::Queue.create(@s, @queue3_name, false)
|
196
|
+
assert queue.delete
|
197
|
+
end
|
198
|
+
|
199
|
+
def test_25_send_size
|
200
|
+
queue = Rightscale::SqsGen2::Queue.create(@s, @queue4_name, true)
|
201
|
+
# send 5 messages
|
202
|
+
assert queue.push('a1')
|
203
|
+
assert queue.push('a2')
|
204
|
+
assert queue.push('a3')
|
205
|
+
assert queue.push('a4')
|
206
|
+
assert queue.push('a5')
|
207
|
+
#
|
208
|
+
do_sleep(300){ queue.size == 5 }
|
209
|
+
# check queue size
|
210
|
+
assert_equal 5, queue.size
|
211
|
+
# send one more
|
212
|
+
assert queue.push('a6')
|
213
|
+
#
|
214
|
+
do_sleep(300){ queue.size == 6 }
|
215
|
+
# check queue size again
|
216
|
+
assert_equal 6, queue.size
|
217
|
+
end
|
218
|
+
|
219
|
+
def test_26_message_receive_pop_delete
|
220
|
+
queue = Rightscale::SqsGen2::Queue.create(@s, @queue4_name, false)
|
221
|
+
# get queue size
|
222
|
+
size = queue.size
|
223
|
+
# get first message
|
224
|
+
m1 = queue.receive(10)
|
225
|
+
assert m1.is_a?(Rightscale::SqsGen2::Message)
|
226
|
+
# pop second message
|
227
|
+
m2 = queue.pop
|
228
|
+
assert m2.is_a?(Rightscale::SqsGen2::Message)
|
229
|
+
#
|
230
|
+
do_sleep 30
|
231
|
+
# make sure that queue size has decreased
|
232
|
+
assert_equal size-1, queue.size
|
233
|
+
# delete messsage
|
234
|
+
assert m1.delete
|
235
|
+
#
|
236
|
+
do_sleep 15
|
237
|
+
# make sure that queue size has decreased again
|
238
|
+
assert_equal size-2, queue.size
|
239
|
+
end
|
240
|
+
|
241
|
+
def test_27
|
242
|
+
queue = Rightscale::SqsGen2::Queue.create(@s, @queue4_name, false)
|
243
|
+
# lock message
|
244
|
+
queue.receive(100)
|
245
|
+
# clear queue
|
246
|
+
assert queue.clear
|
247
|
+
# queue size is greater than zero
|
248
|
+
assert queue.size>0
|
249
|
+
# delete queue
|
250
|
+
assert queue.delete
|
251
|
+
end
|
252
|
+
|
253
|
+
def test_28_set_amazon_problems
|
254
|
+
original_problems = Rightscale::SqsGen2Interface.amazon_problems
|
255
|
+
assert(original_problems.length > 0)
|
256
|
+
Rightscale::SqsGen2Interface.amazon_problems= original_problems << "A New Problem"
|
257
|
+
new_problems = Rightscale::SqsGen2Interface.amazon_problems
|
258
|
+
assert_equal(new_problems, original_problems)
|
259
|
+
|
260
|
+
Rightscale::SqsGen2Interface.amazon_problems= nil
|
261
|
+
assert_nil(Rightscale::SqsGen2Interface.amazon_problems)
|
262
|
+
end
|
263
|
+
|
264
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
class TestCredentials
|
2
|
+
|
3
|
+
@@aws_access_key_id = nil
|
4
|
+
@@aws_secret_access_key = nil
|
5
|
+
@@account_number = nil
|
6
|
+
|
7
|
+
def self.aws_access_key_id
|
8
|
+
@@aws_access_key_id
|
9
|
+
end
|
10
|
+
def self.aws_access_key_id=(newval)
|
11
|
+
@@aws_access_key_id = newval
|
12
|
+
end
|
13
|
+
def self.account_number
|
14
|
+
@@account_number
|
15
|
+
end
|
16
|
+
def self.account_number=(newval)
|
17
|
+
@@account_number = newval
|
18
|
+
end
|
19
|
+
def self.aws_secret_access_key
|
20
|
+
@@aws_secret_access_key
|
21
|
+
end
|
22
|
+
def self.aws_secret_access_key=(newval)
|
23
|
+
@@aws_secret_access_key = newval
|
24
|
+
end
|
25
|
+
|
26
|
+
def self.get_credentials
|
27
|
+
Dir.chdir do
|
28
|
+
begin
|
29
|
+
Dir.chdir('./.rightscale') do
|
30
|
+
require 'testcredentials'
|
31
|
+
end
|
32
|
+
rescue Exception => e
|
33
|
+
puts "Couldn't chdir to ~/.rightscale: #{e.message}"
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
require 'test/unit'
|
2
|
+
$: << File.dirname(__FILE__)
|
3
|
+
require 'test_credentials'
|
4
|
+
TestCredentials.get_credentials
|
5
|
+
|
6
|
+
require 'http_connection'
|
7
|
+
require 'awsbase/test_right_awsbase.rb'
|
8
|
+
require 'ec2/test_right_ec2.rb'
|
9
|
+
require 's3/test_right_s3.rb'
|
10
|
+
require 's3/test_right_s3_stubbed.rb'
|
11
|
+
require 'sqs/test_right_sqs.rb'
|
12
|
+
require 'sqs/test_right_sqs_gen2.rb'
|
13
|
+
require 'sdb/test_right_sdb.rb'
|
14
|
+
require 'acf/test_right_acf.rb'
|
metadata
ADDED
@@ -0,0 +1,244 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: dustMason-right_aws
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 11
|
5
|
+
prerelease:
|
6
|
+
segments:
|
7
|
+
- 2
|
8
|
+
- 1
|
9
|
+
- 0
|
10
|
+
version: 2.1.0
|
11
|
+
platform: ruby
|
12
|
+
authors:
|
13
|
+
- RightScale, Inc.
|
14
|
+
autorequire:
|
15
|
+
bindir: bin
|
16
|
+
cert_chain: []
|
17
|
+
|
18
|
+
date: 2011-05-11 00:00:00 -07:00
|
19
|
+
default_executable:
|
20
|
+
dependencies:
|
21
|
+
- !ruby/object:Gem::Dependency
|
22
|
+
name: right_http_connection
|
23
|
+
prerelease: false
|
24
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ">="
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
hash: 21
|
30
|
+
segments:
|
31
|
+
- 1
|
32
|
+
- 2
|
33
|
+
- 5
|
34
|
+
version: 1.2.5
|
35
|
+
type: :runtime
|
36
|
+
version_requirements: *id001
|
37
|
+
- !ruby/object:Gem::Dependency
|
38
|
+
name: rake
|
39
|
+
prerelease: false
|
40
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ">="
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
hash: 3
|
46
|
+
segments:
|
47
|
+
- 0
|
48
|
+
version: "0"
|
49
|
+
type: :development
|
50
|
+
version_requirements: *id002
|
51
|
+
- !ruby/object:Gem::Dependency
|
52
|
+
name: rcov
|
53
|
+
prerelease: false
|
54
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
55
|
+
none: false
|
56
|
+
requirements:
|
57
|
+
- - ">="
|
58
|
+
- !ruby/object:Gem::Version
|
59
|
+
hash: 3
|
60
|
+
segments:
|
61
|
+
- 0
|
62
|
+
version: "0"
|
63
|
+
type: :development
|
64
|
+
version_requirements: *id003
|
65
|
+
description: |
|
66
|
+
== DESCRIPTION:
|
67
|
+
|
68
|
+
The RightScale AWS gems have been designed to provide a robust, fast, and secure interface to Amazon EC2, EBS, S3, SQS, SDB, and CloudFront.
|
69
|
+
These gems have been used in production by RightScale since late 2006 and are being maintained to track enhancements made by Amazon.
|
70
|
+
The RightScale AWS gems comprise:
|
71
|
+
|
72
|
+
- RightAws::Ec2 -- interface to Amazon EC2 (Elastic Compute Cloud) and the
|
73
|
+
associated EBS (Elastic Block Store)
|
74
|
+
- RightAws::S3 and RightAws::S3Interface -- interface to Amazon S3 (Simple Storage Service)
|
75
|
+
- RightAws::Sqs and RightAws::SqsInterface -- interface to first-generation Amazon SQS (Simple Queue Service) (API version 2007-05-01)
|
76
|
+
- RightAws::SqsGen2 and RightAws::SqsGen2Interface -- interface to second-generation Amazon SQS (Simple Queue Service) (API version 2008-01-01)
|
77
|
+
- RightAws::SdbInterface and RightAws::ActiveSdb -- interface to Amazon SDB (SimpleDB)
|
78
|
+
- RightAws::AcfInterface -- interface to Amazon CloudFront, a content distribution service
|
79
|
+
|
80
|
+
== FEATURES:
|
81
|
+
|
82
|
+
- Full programmmatic access to EC2, EBS, S3, SQS, SDB, and CloudFront.
|
83
|
+
- Complete error handling: all operations check for errors and report complete
|
84
|
+
error information by raising an AwsError.
|
85
|
+
- Persistent HTTP connections with robust network-level retry layer using
|
86
|
+
RightHttpConnection). This includes socket timeouts and retries.
|
87
|
+
- Robust HTTP-level retry layer. Certain (user-adjustable) HTTP errors returned
|
88
|
+
by Amazon's services are classified as temporary errors.
|
89
|
+
These errors are automaticallly retried using exponentially increasing intervals.
|
90
|
+
The number of retries is user-configurable.
|
91
|
+
- Fast REXML-based parsing of responses (as fast as a pure Ruby solution allows).
|
92
|
+
- Uses libxml (if available) for faster response parsing.
|
93
|
+
- Support for large S3 list operations. Buckets and key subfolders containing
|
94
|
+
many (> 1000) keys are listed in entirety. Operations based on list (like
|
95
|
+
bucket clear) work on arbitrary numbers of keys.
|
96
|
+
- Support for streaming GETs from S3, and streaming PUTs to S3 if the data source is a file.
|
97
|
+
- Support for single-threaded usage, multithreaded usage, as well as usage with multiple
|
98
|
+
AWS accounts.
|
99
|
+
- Support for both first- and second-generation SQS (API versions 2007-05-01
|
100
|
+
and 2008-01-01). These versions of SQS are not compatible.
|
101
|
+
- Support for signature versions 0 and 1 on SQS, SDB, and EC2.
|
102
|
+
- Interoperability with any cloud running Eucalyptus (http://eucalyptus.cs.ucsb.edu)
|
103
|
+
- Test suite (requires AWS account to do "live" testing).
|
104
|
+
|
105
|
+
email: support@rightscale.com
|
106
|
+
executables: []
|
107
|
+
|
108
|
+
extensions: []
|
109
|
+
|
110
|
+
extra_rdoc_files:
|
111
|
+
- README.txt
|
112
|
+
files:
|
113
|
+
- History.txt
|
114
|
+
- Manifest.txt
|
115
|
+
- README.txt
|
116
|
+
- Rakefile
|
117
|
+
- lib/acf/right_acf_interface.rb
|
118
|
+
- lib/acf/right_acf_invalidations.rb
|
119
|
+
- lib/acf/right_acf_origin_access_identities.rb
|
120
|
+
- lib/acf/right_acf_streaming_interface.rb
|
121
|
+
- lib/acw/right_acw_interface.rb
|
122
|
+
- lib/as/right_as_interface.rb
|
123
|
+
- lib/awsbase/benchmark_fix.rb
|
124
|
+
- lib/awsbase/right_awsbase.rb
|
125
|
+
- lib/awsbase/support.rb
|
126
|
+
- lib/awsbase/version.rb
|
127
|
+
- lib/ec2/right_ec2.rb
|
128
|
+
- lib/ec2/right_ec2_ebs.rb
|
129
|
+
- lib/ec2/right_ec2_images.rb
|
130
|
+
- lib/ec2/right_ec2_instances.rb
|
131
|
+
- lib/ec2/right_ec2_monitoring.rb
|
132
|
+
- lib/ec2/right_ec2_placement_groups.rb
|
133
|
+
- lib/ec2/right_ec2_reserved_instances.rb
|
134
|
+
- lib/ec2/right_ec2_security_groups.rb
|
135
|
+
- lib/ec2/right_ec2_spot_instances.rb
|
136
|
+
- lib/ec2/right_ec2_tags.rb
|
137
|
+
- lib/ec2/right_ec2_vpc.rb
|
138
|
+
- lib/ec2/right_ec2_windows_mobility.rb
|
139
|
+
- lib/elb/right_elb_interface.rb
|
140
|
+
- lib/iam/right_iam_access_keys.rb
|
141
|
+
- lib/iam/right_iam_groups.rb
|
142
|
+
- lib/iam/right_iam_interface.rb
|
143
|
+
- lib/iam/right_iam_mfa_devices.rb
|
144
|
+
- lib/iam/right_iam_users.rb
|
145
|
+
- lib/rds/right_rds_interface.rb
|
146
|
+
- lib/right_aws.rb
|
147
|
+
- lib/route_53/right_route_53_interface.rb
|
148
|
+
- lib/s3/right_s3.rb
|
149
|
+
- lib/s3/right_s3_interface.rb
|
150
|
+
- lib/sdb/active_sdb.rb
|
151
|
+
- lib/sdb/right_sdb_interface.rb
|
152
|
+
- lib/sns/right_sns.rb
|
153
|
+
- lib/sns/right_sns_interface.rb
|
154
|
+
- lib/sqs/right_sqs.rb
|
155
|
+
- lib/sqs/right_sqs_gen2.rb
|
156
|
+
- lib/sqs/right_sqs_gen2_interface.rb
|
157
|
+
- lib/sqs/right_sqs_interface.rb
|
158
|
+
- right_aws.gemspec
|
159
|
+
- test/acf/test_helper.rb
|
160
|
+
- test/acf/test_right_acf.rb
|
161
|
+
- test/awsbase/test_helper.rb
|
162
|
+
- test/awsbase/test_right_awsbase.rb
|
163
|
+
- test/ec2/test_helper.rb
|
164
|
+
- test/ec2/test_right_ec2.rb
|
165
|
+
- test/http_connection.rb
|
166
|
+
- test/rds/test_helper.rb
|
167
|
+
- test/rds/test_right_rds.rb
|
168
|
+
- test/s3/test_helper.rb
|
169
|
+
- test/s3/test_right_s3.rb
|
170
|
+
- test/s3/test_right_s3_stubbed.rb
|
171
|
+
- test/sdb/test_active_sdb.rb
|
172
|
+
- test/sdb/test_batch_put_attributes.rb
|
173
|
+
- test/sdb/test_helper.rb
|
174
|
+
- test/sdb/test_right_sdb.rb
|
175
|
+
- test/sns/test_helper.rb
|
176
|
+
- test/sns/test_right_sns.rb
|
177
|
+
- test/sqs/test_helper.rb
|
178
|
+
- test/sqs/test_right_sqs.rb
|
179
|
+
- test/sqs/test_right_sqs_gen2.rb
|
180
|
+
- test/test_credentials.rb
|
181
|
+
- test/ts_right_aws.rb
|
182
|
+
has_rdoc: true
|
183
|
+
homepage:
|
184
|
+
licenses: []
|
185
|
+
|
186
|
+
post_install_message:
|
187
|
+
rdoc_options:
|
188
|
+
- --main
|
189
|
+
- README.txt
|
190
|
+
- --title
|
191
|
+
- ""
|
192
|
+
require_paths:
|
193
|
+
- lib
|
194
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
195
|
+
none: false
|
196
|
+
requirements:
|
197
|
+
- - ">="
|
198
|
+
- !ruby/object:Gem::Version
|
199
|
+
hash: 57
|
200
|
+
segments:
|
201
|
+
- 1
|
202
|
+
- 8
|
203
|
+
- 7
|
204
|
+
version: 1.8.7
|
205
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
206
|
+
none: false
|
207
|
+
requirements:
|
208
|
+
- - ">="
|
209
|
+
- !ruby/object:Gem::Version
|
210
|
+
hash: 3
|
211
|
+
segments:
|
212
|
+
- 0
|
213
|
+
version: "0"
|
214
|
+
requirements:
|
215
|
+
- libxml-ruby >= 0.5.2.0 is encouraged
|
216
|
+
rubyforge_project: rightaws
|
217
|
+
rubygems_version: 1.6.2
|
218
|
+
signing_key:
|
219
|
+
specification_version: 3
|
220
|
+
summary: Interface classes for the Amazon EC2, SQS, and S3 Web Services
|
221
|
+
test_files:
|
222
|
+
- test/acf/test_helper.rb
|
223
|
+
- test/acf/test_right_acf.rb
|
224
|
+
- test/awsbase/test_helper.rb
|
225
|
+
- test/awsbase/test_right_awsbase.rb
|
226
|
+
- test/ec2/test_helper.rb
|
227
|
+
- test/ec2/test_right_ec2.rb
|
228
|
+
- test/http_connection.rb
|
229
|
+
- test/rds/test_helper.rb
|
230
|
+
- test/rds/test_right_rds.rb
|
231
|
+
- test/s3/test_helper.rb
|
232
|
+
- test/s3/test_right_s3.rb
|
233
|
+
- test/s3/test_right_s3_stubbed.rb
|
234
|
+
- test/sdb/test_active_sdb.rb
|
235
|
+
- test/sdb/test_batch_put_attributes.rb
|
236
|
+
- test/sdb/test_helper.rb
|
237
|
+
- test/sdb/test_right_sdb.rb
|
238
|
+
- test/sns/test_helper.rb
|
239
|
+
- test/sns/test_right_sns.rb
|
240
|
+
- test/sqs/test_helper.rb
|
241
|
+
- test/sqs/test_right_sqs.rb
|
242
|
+
- test/sqs/test_right_sqs_gen2.rb
|
243
|
+
- test/test_credentials.rb
|
244
|
+
- test/ts_right_aws.rb
|