aws 2.1.8 → 2.1.9

Sign up to get free protection for your applications and to get access to all the features.
data/lib/aws.rb CHANGED
@@ -24,4 +24,4 @@ require 'sqs/right_sqs_interface'
24
24
  require 'sqs/right_sqs'
25
25
  require 'sdb/right_sdb_interface'
26
26
  require 'acf/right_acf_interface'
27
- require 'elb/right_elb_interface'
27
+ require 'elb/elb_interface'
@@ -128,7 +128,7 @@ module Aws
128
128
  @logger.info("Registering Instances #{instance_ids.join(',')} with Load Balancer '#{name}'")
129
129
 
130
130
  link = generate_request("RegisterInstancesWithLoadBalancer", params)
131
- resp = request_info(link, QElbRegisterInstanceParser.new(:logger => @logger))
131
+ resp = request_info(link, QElbRegisterInstancesParser.new(:logger => @logger))
132
132
 
133
133
  rescue Exception
134
134
  on_exception
@@ -147,12 +147,13 @@ module Aws
147
147
  @logger.info("Deregistering Instances #{instance_ids.join(',')} from Load Balancer '#{name}'")
148
148
 
149
149
  link = generate_request("DeregisterInstancesFromLoadBalancer", params) # Same response as register I believe
150
- resp = request_info(link, QElbRegisterInstanceParser.new(:logger => @logger))
150
+ resp = request_info(link, QElbRegisterInstancesParser.new(:logger => @logger))
151
151
 
152
152
  rescue Exception
153
153
  on_exception
154
154
  end
155
155
 
156
+
156
157
  def describe_load_balancers(lparams={})
157
158
  @logger.info("Describing Load Balancers")
158
159
 
@@ -167,6 +168,30 @@ module Aws
167
168
  on_exception
168
169
  end
169
170
 
171
+
172
+ def describe_instance_health(name, instance_ids)
173
+ instance_ids = [instance_ids] if instance_ids.is_a?(String)
174
+ # @logger.info("Describing Instance Health")
175
+ params = {}
176
+ params['LoadBalancerName'] = name
177
+
178
+ i = 1
179
+ instance_ids.each do |l|
180
+ params["Instances.member.#{i}.InstanceId"] = "#{l}"
181
+ i += 1
182
+ end
183
+
184
+ @logger.info("Describing Instances Health #{instance_ids.join(',')} with Load Balancer '#{name}'")
185
+
186
+ link = generate_request("DescribeInstanceHealth", params)
187
+ resp = request_info(link, QElbDescribeInstancesHealthParser.new(:logger => @logger))
188
+
189
+
190
+ rescue Exception
191
+ on_exception
192
+ end
193
+
194
+
170
195
  def delete_load_balancer(name)
171
196
  @logger.info("Deleting Load Balancer - " + name.to_s)
172
197
 
@@ -274,28 +299,61 @@ module Aws
274
299
  end
275
300
  end
276
301
 
277
- class QElbRegisterInstanceParser < AwsParser
302
+ class QElbRegisterInstancesParser < AwsParser
278
303
 
279
304
  def reset
280
- @result = {}
305
+ @result = []
281
306
  end
282
307
 
308
+ def tagstart(name, attributes)
309
+ # puts 'tagstart ' + name + ' -- ' + @xmlpath
310
+ if (name == 'member' && @xmlpath == 'RegisterInstancesWithLoadBalancerResult/Instances/member')
311
+ @member = { }
312
+ end
283
313
 
314
+ end
284
315
  def tagend(name)
285
316
  case name
286
317
  when 'InstanceId' then
287
- @result[:instance_id] = @text
318
+ @member[:instance_id] = @text
288
319
  end
289
320
  end
321
+ #
290
322
  end
291
323
 
292
- class QElbDeleteParser < AwsParser
324
+ class QElbDescribeInstancesHealthParser < AwsParser
293
325
 
294
326
  def reset
295
- @result = true
327
+ @result = []
328
+ end
329
+
330
+ def tagstart(name, attributes)
331
+ # puts 'tagstart ' + name + ' -- ' + @xmlpath
332
+ if (name == 'member' && @xmlpath == 'DescribeInstanceHealthResult/InstanceStates')
333
+ @member = { }
334
+ end
296
335
  end
297
336
 
337
+ def tagend(name)
338
+ case name
339
+ when 'Description' then
340
+ @member[:description] = @text
341
+ when 'State' then
342
+ @member[:state] = @text
343
+ when 'InstanceId' then
344
+ @member[:instance_id] = @text
345
+ when 'ReasonCode' then
346
+ @member[:reason_code] = @text
298
347
 
348
+ end
349
+ end
350
+ #
351
+ end
352
+
353
+ class QElbDeleteParser < AwsParser
354
+ def reset
355
+ @result = true
356
+ end
299
357
  end
300
358
 
301
359
 
@@ -46,7 +46,7 @@ require 'sqs/right_sqs_interface'
46
46
  require 'sqs/right_sqs'
47
47
  require 'sdb/right_sdb_interface'
48
48
  require 'acf/right_acf_interface'
49
- require 'elb/right_elb_interface'
49
+ require 'elb/elb_interface'
50
50
 
51
51
 
52
52
  # backwards compatible.
@@ -343,7 +343,7 @@ module Aws
343
343
  bunch_of_records_requested = args.size > 1 || args.first.is_a?(Array)
344
344
  # flatten ids
345
345
  args = args.to_a.flatten
346
- args.each { |id| cond << "id=#{self.connection.escape(id)}" }
346
+ args.each { |id| cond << "itemName() = #{self.connection.escape(id)}" }
347
347
  ids_cond = "(#{cond.join(' OR ')})"
348
348
  # user defined :conditions to string (if it was defined)
349
349
  options[:conditions] = build_conditions(options[:conditions])
@@ -563,7 +563,7 @@ module Aws
563
563
  sort_by, sort_order = sort_options(options[:order])
564
564
  conditions << (conditions.blank? ? " WHERE " : " AND ") << "(#{sort_by} IS NOT NULL)"
565
565
  end
566
- "SELECT #{select} FROM #{from}#{conditions}#{order}#{limit}"
566
+ "SELECT #{select} FROM `#{from}`#{conditions}#{order}#{limit}"
567
567
  end
568
568
 
569
569
  def build_conditions(conditions) # :nodoc:
@@ -0,0 +1,51 @@
1
+ require File.dirname(__FILE__) + '/test_helper.rb'
2
+ require 'pp'
3
+ require File.dirname(__FILE__) + '/../test_credentials.rb'
4
+
5
+ class TestEc2 < Test::Unit::TestCase
6
+
7
+ # Some of RightEc2 instance methods concerning instance launching and image registration
8
+ # are not tested here due to their potentially risk.
9
+
10
+ def setup
11
+ TestCredentials.get_credentials
12
+ @ec2 = Aws::Elb.new(TestCredentials.aws_access_key_id,
13
+ TestCredentials.aws_secret_access_key)
14
+ @key = 'right_ec2_awesome_test_key'
15
+ @group = 'right_ec2_awesome_test_security_group'
16
+ end
17
+
18
+ def test_01_create_elb
19
+
20
+ end
21
+
22
+ def test_02_register_instances
23
+ assert @ec2.create_security_group(@group,'My awesone test group'), 'Create_security_group fail'
24
+ group = @ec2.describe_security_groups([@group])[0]
25
+ assert_equal @group, group[:aws_group_name], 'Group must be created but does not exist'
26
+ end
27
+
28
+ def test_03_deregister_instances
29
+ assert @ec2.authorize_security_group_named_ingress(@group, TestCredentials.account_number, 'default')
30
+ assert @ec2.authorize_security_group_IP_ingress(@group, 80,80,'udp','192.168.1.0/8')
31
+ end
32
+
33
+ def test_04_describe_instance_health
34
+ assert_equal 2, @ec2.describe_security_groups([@group])[0][:aws_perms].size
35
+ end
36
+
37
+ def test_05_describe_elb
38
+ assert @ec2.revoke_security_group_IP_ingress(@group, 80,80,'udp','192.168.1.0/8')
39
+ assert @ec2.revoke_security_group_named_ingress(@group,
40
+ TestCredentials.account_number, 'default')
41
+ end
42
+
43
+ def test_06_delete_elb
44
+ images = @ec2.describe_images
45
+ assert images.size>0, 'Amazon must have at least some public images'
46
+ # unknown image
47
+ assert_raise(Aws::AwsError){ @ec2.describe_images(['ami-ABCDEFGH'])}
48
+ end
49
+
50
+
51
+ end
@@ -4,10 +4,14 @@ require File.dirname(__FILE__) + '/../test_credentials.rb'
4
4
  class TestSdb < Test::Unit::TestCase
5
5
 
6
6
  DOMAIN_NAME = 'right_sdb_awesome_test_domain'
7
+ DASH_DOMAIN_NAME = 'right_sdb-awesome_test_domain'
7
8
 
8
9
  class Client < Aws::ActiveSdb::Base
9
10
  set_domain_name DOMAIN_NAME
10
11
  end
12
+ class DashClient < RightAws::ActiveSdb::Base
13
+ set_domain_name DASH_DOMAIN_NAME
14
+ end
11
15
 
12
16
  def setup
13
17
  TestCredentials.get_credentials
@@ -115,6 +119,39 @@ class TestSdb < Test::Unit::TestCase
115
119
  end
116
120
  end
117
121
 
122
+ def test_04b_find_all_dashed
123
+ # retrieve all the DB, make sure all are in place
124
+ clients = DashedClient.find(:all)
125
+ ids = clients.map{|client| client.id }[0..1]
126
+ assert_equal @clients.size + 1, clients.size
127
+ # retrieve all presidents (must find: Bush, Putin, Medvedev)
128
+ assert_equal 3, DashedClient.find(:all, :conditions => ["[?=?]",'post','president']).size
129
+ # retrieve all russian presidents (must find: Putin, Medvedev)
130
+ assert_equal 2, DashedClient.find(:all, :conditions => ["['post'=?] intersection ['country'=?]",'president', 'Russia']).size
131
+ # retrieve all russian presidents and all women (must find: Putin, Medvedev, 2 Maries and Sandy)
132
+ assert_equal 5, DashedClient.find(:all, :conditions => ["['post'=?] intersection ['country'=?] union ['gender'=?]",'president', 'Russia','female']).size
133
+ # find all rissian presidents Bushes
134
+ assert_equal 0, DashedClient.find(:all, :conditions => ["['post'=?] intersection ['country'=?] intersection ['name'=?]",'president', 'Russia','Bush']).size
135
+ # --- find by ids
136
+ # must find 1 rec (by rec id) and return it
137
+ assert_equal ids.first, DashedClient.find(ids.first).id
138
+ # must find 1 rec (by one item array) and return an array
139
+ assert_equal ids.first, DashedClient.find([ids.first]).first.id
140
+ # must find 2 recs (by a list of comma separated ids) and return an array
141
+ assert_equal ids.size, DashedClient.find(*ids).size
142
+ # must find 2 recs (by an array of ids) and return an array
143
+ assert_equal ids.size, DashedClient.find(ids).size
144
+ ids << 'dummy_id'
145
+ # must raise an error when getting unexistent record
146
+ assert_raise(RightAws::ActiveSdb::ActiveSdbError) do
147
+ DashedClient.find(ids)
148
+ end
149
+ # find one record by unknown id
150
+ assert_raise(RightAws::ActiveSdb::ActiveSdbError) do
151
+ DashedClient.find('dummy_id')
152
+ end
153
+ end
154
+
118
155
  def test_05_find_first
119
156
  # find any record
120
157
  assert Client.find(:first)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: aws
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.8
4
+ version: 2.1.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Travis Reeder
@@ -11,7 +11,7 @@ autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
13
 
14
- date: 2009-11-19 00:00:00 -08:00
14
+ date: 2009-12-02 00:00:00 -08:00
15
15
  default_executable:
16
16
  dependencies:
17
17
  - !ruby/object:Gem::Dependency
@@ -50,7 +50,7 @@ files:
50
50
  - lib/awsbase/support.rb
51
51
  - lib/ec2/right_ec2.rb
52
52
  - lib/ec2/right_mon_interface.rb
53
- - lib/elb/right_elb_interface.rb
53
+ - lib/elb/elb_interface.rb
54
54
  - lib/right_aws.rb
55
55
  - lib/s3/right_s3.rb
56
56
  - lib/s3/right_s3_interface.rb
@@ -93,6 +93,7 @@ test_files:
93
93
  - test/ec2/test_helper.rb
94
94
  - test/ec2/test_mon.rb
95
95
  - test/ec2/test_right_ec2.rb
96
+ - test/elb/test_elb.rb
96
97
  - test/http_connection.rb
97
98
  - test/s3/test_helper.rb
98
99
  - test/s3/test_right_s3.rb