poolparty 1.4.6 → 1.4.7

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.
Files changed (57) hide show
  1. data/VERSION.yml +2 -2
  2. data/bin/cloud-contract +6 -1
  3. data/bin/cloud-list +5 -6
  4. data/bin/cloud-vnc +39 -0
  5. data/examples/rds_cloud.rb +44 -0
  6. data/lib/cloud_providers/connections.rb +0 -1
  7. data/lib/cloud_providers/ec2/ec2.rb +86 -25
  8. data/lib/cloud_providers/ec2/ec2_instance.rb +6 -2
  9. data/lib/cloud_providers/ec2/helpers/ec2_helper.rb +19 -6
  10. data/lib/cloud_providers/ec2/helpers/elastic_load_balancer.rb +3 -3
  11. data/lib/cloud_providers/ec2/helpers/rds_instance.rb +110 -0
  12. data/lib/cloud_providers/remote_instance.rb +5 -3
  13. data/lib/poolparty/cloud.rb +8 -3
  14. data/lib/poolparty/pool.rb +12 -0
  15. data/test/fixtures/clouds/rds_cloud.rb +14 -0
  16. data/test/fixtures/clouds/rds_missing_params.rb +11 -0
  17. data/test/fixtures/ec2/ec2-describe-security-groups_response_body.xml +23 -0
  18. data/test/fixtures/ec2/rds-describe-db-instances-empty_response_body.xml +9 -0
  19. data/test/lib/poolparty/rds_test.rb +35 -0
  20. data/test/test_helper.rb +4 -4
  21. data/vendor/gems/amazon-ec2/ChangeLog +15 -0
  22. data/vendor/gems/amazon-ec2/README.rdoc +27 -24
  23. data/vendor/gems/amazon-ec2/README_dev.rdoc +0 -2
  24. data/vendor/gems/amazon-ec2/Rakefile +8 -39
  25. data/vendor/gems/amazon-ec2/VERSION +1 -1
  26. data/vendor/gems/amazon-ec2/amazon-ec2.gemspec +24 -16
  27. data/vendor/gems/amazon-ec2/bin/setup.rb +1 -0
  28. data/vendor/gems/amazon-ec2/lib/AWS/Autoscaling/autoscaling.rb +6 -16
  29. data/vendor/gems/amazon-ec2/lib/AWS/EC2/availability_zones.rb +8 -0
  30. data/vendor/gems/amazon-ec2/lib/AWS/EC2/console.rb +2 -0
  31. data/vendor/gems/amazon-ec2/lib/AWS/EC2/devpay.rb +18 -0
  32. data/vendor/gems/amazon-ec2/lib/AWS/EC2/elastic_ips.rb +37 -32
  33. data/vendor/gems/amazon-ec2/lib/AWS/EC2/images.rb +43 -27
  34. data/vendor/gems/amazon-ec2/lib/AWS/EC2/instances.rb +136 -99
  35. data/vendor/gems/amazon-ec2/lib/AWS/EC2/keypairs.rb +3 -17
  36. data/vendor/gems/amazon-ec2/lib/AWS/EC2/security_groups.rb +4 -23
  37. data/vendor/gems/amazon-ec2/lib/AWS/EC2/snapshots.rb +38 -17
  38. data/vendor/gems/amazon-ec2/lib/AWS/EC2/volumes.rb +6 -21
  39. data/vendor/gems/amazon-ec2/lib/AWS/EC2.rb +2 -2
  40. data/vendor/gems/amazon-ec2/lib/AWS/ELB/load_balancers.rb +11 -38
  41. data/vendor/gems/amazon-ec2/lib/AWS/RDS/rds.rb +522 -0
  42. data/vendor/gems/amazon-ec2/lib/AWS/RDS.rb +73 -0
  43. data/vendor/gems/amazon-ec2/lib/AWS/exceptions.rb +103 -25
  44. data/vendor/gems/amazon-ec2/lib/AWS.rb +19 -9
  45. data/vendor/gems/amazon-ec2/perftools/ec2prof +0 -0
  46. data/vendor/gems/amazon-ec2/perftools/ec2prof-results.dot +130 -191
  47. data/vendor/gems/amazon-ec2/perftools/ec2prof-results.txt +100 -126
  48. data/vendor/gems/amazon-ec2/perftools/ec2prof.symbols +102 -129
  49. data/vendor/gems/amazon-ec2/test/test_Autoscaling_groups.rb +3 -2
  50. data/vendor/gems/amazon-ec2/test/test_EC2_images.rb +32 -0
  51. data/vendor/gems/amazon-ec2/test/test_EC2_instances.rb +204 -22
  52. data/vendor/gems/amazon-ec2/test/test_EC2_snapshots.rb +1 -1
  53. data/vendor/gems/amazon-ec2/test/test_ELB_load_balancers.rb +2 -2
  54. data/vendor/gems/amazon-ec2/test/test_RDS.rb +354 -0
  55. data/vendor/gems/amazon-ec2/wsdl/2009-10-31.ec2.wsdl +4261 -0
  56. data/vendor/gems/amazon-ec2/wsdl/2009-11-30.ec2.wsdl +4668 -0
  57. metadata +17 -2
@@ -0,0 +1,354 @@
1
+ require File.dirname(__FILE__) + '/test_helper.rb'
2
+
3
+ context "rds databases " do
4
+ before do
5
+ @rds = AWS::RDS::Base.new( :access_key_id => "not a key", :secret_access_key => "not a secret" )
6
+
7
+ @create_db_instance_body = <<-RESPONSE
8
+ <CreateDBInstanceResponse xmlns="http://rds.amazonaws.com/admin/2009-10-16/">
9
+ <CreateDBInstanceResult>
10
+ <DBInstance>
11
+ <Engine>MySQL5.1</Engine>
12
+ <BackupRetentionPeriod>1</BackupRetentionPeriod>
13
+ <DBInstanceStatus>creating</DBInstanceStatus>
14
+ <DBInstanceIdentifier>mydbinstance</DBInstanceIdentifier>
15
+ <PreferredBackupWindow>03:00-05:00</PreferredBackupWindow>
16
+ <DBSecurityGroups>
17
+ <DBSecurityGroup>
18
+ <Status>active</Status>
19
+ <DBSecurityGroupName>default</DBSecurityGroupName>
20
+ </DBSecurityGroup>
21
+ </DBSecurityGroups>
22
+ <PreferredMaintenanceWindow>sun:05:00-sun:09:00</PreferredMaintenanceWindow>
23
+ <AllocatedStorage>10</AllocatedStorage>
24
+ <DBInstanceClass>db.m1.large</DBInstanceClass>
25
+ <MasterUsername>master</MasterUsername>
26
+ </DBInstance>
27
+ </CreateDBInstanceResult>
28
+ <ResponseMetadata>
29
+ <RequestId>e6fb58c5-bf34-11de-b88d-993294bf1c81</RequestId>
30
+ </ResponseMetadata>
31
+ </CreateDBInstanceResponse>
32
+ RESPONSE
33
+ @create_db_security_group = <<-RESPONSE
34
+ <CreateDBSecurityGroupResponse xmlns="http://rds.amazonaws.com/admin/2009-10-16/">
35
+ <CreateDBSecurityGroupResult>
36
+ <DBSecurityGroup>
37
+ <EC2SecurityGroups/>
38
+ <DBSecurityGroupDescription>My new DBSecurityGroup</DBSecurityGroupDescription>
39
+ <IPRanges/>
40
+ <OwnerId>621567473609</OwnerId>
41
+ <DBSecurityGroupName>mydbsecuritygroup4</DBSecurityGroupName>
42
+ </DBSecurityGroup>
43
+ </CreateDBSecurityGroupResult>
44
+ <ResponseMetadata>
45
+ <RequestId>c9cf9ff2-bf36-11de-b88d-993294bf1c81</RequestId>
46
+ </ResponseMetadata>
47
+ </CreateDBSecurityGroupResponse>
48
+ RESPONSE
49
+ end
50
+
51
+ specify "should be able to be create a db_instance" do
52
+ @rds.stubs(:make_request).with('CreateDBInstance', {'Engine' => 'MySQL5.1',
53
+ 'MasterUsername' => 'master',
54
+ 'DBInstanceClass' => 'db.m1.large',
55
+ 'DBInstanceIdentifier' => 'testdb',
56
+ 'AllocatedStorage' => '10',
57
+ 'MasterUserPassword' => 'SecretPassword01'}).
58
+ returns stub(:body => @create_db_instance_body, :is_a? => true)
59
+ response = @rds.create_db_instance(
60
+ :db_instance_class => "db.m1.large",
61
+ :db_instance_identifier=>"testdb",
62
+ :allocated_storage => 10,
63
+ :engine => "MySQL5.1",
64
+ :master_user_password => "SecretPassword01",
65
+ :master_username => "master"
66
+ )
67
+ response.should.be.an.instance_of Hash
68
+
69
+ assert_equal response.CreateDBInstanceResult.DBInstance.AllocatedStorage, "10"
70
+ end
71
+
72
+ specify "should be able to create_db_security_group" do
73
+ @rds.stubs(:make_request).with('CreateDBSecurityGroup', {
74
+ 'DBSecurityGroupName' => 'mydbsecuritygroup',
75
+ 'DBSecurityGroupDescription' => 'My new DBSecurityGroup'}).
76
+ returns stub(:body => @create_db_security_group, :is_a? => true)
77
+ response = @rds.create_db_security_group(
78
+ :db_security_group_name => "mydbsecuritygroup",
79
+ :db_security_group_description => "My new DBSecurityGroup"
80
+ )
81
+ response.should.be.an.instance_of Hash
82
+
83
+ assert_equal response.CreateDBSecurityGroupResult.DBSecurityGroup.DBSecurityGroupName, "mydbsecuritygroup4"
84
+ end
85
+
86
+ specify "should be able to create_db_parameter_group" do
87
+ body =<<-EOE
88
+ <CreateDBParameterGroupResponse xmlns="http://rds.amazonaws.com/admin/2009-10-16/">
89
+ <CreateDBParameterGroupResult>
90
+ <DBParameterGroup>
91
+ <Engine>mysql5.1</Engine>
92
+ <Description>My new DBParameterGroup</Description>
93
+ <DBParameterGroupName>mydbparametergroup3</DBParameterGroupName>
94
+ </DBParameterGroup>
95
+ </CreateDBParameterGroupResult>
96
+ <ResponseMetadata>
97
+ <RequestId>0b447b66-bf36-11de-a88b-7b5b3d23b3a7</RequestId>
98
+ </ResponseMetadata>
99
+ </CreateDBParameterGroupResponse>
100
+ EOE
101
+ @rds.stubs(:make_request).with('CreateDBParameterGroup', {'Engine' => 'MySQL5.1',
102
+ 'DBParameterGroupName' => 'mydbsecuritygroup',
103
+ 'Description' => 'My test DBSecurity group'}).
104
+ returns stub(:body => body, :is_a? => true)
105
+ response = @rds.create_db_parameter_group(
106
+ :db_parameter_group_name => "mydbsecuritygroup",
107
+ :description => "My test DBSecurity group",
108
+ :engine => "MySQL5.1"
109
+ )
110
+ response.should.be.an.instance_of Hash
111
+
112
+ assert_equal response.CreateDBParameterGroupResult.DBParameterGroup.DBParameterGroupName, "mydbparametergroup3"
113
+ end
114
+
115
+ specify "should be able to create_db_snapshot" do
116
+ body =<<-EOE
117
+ <CreateDBSnapshotResponse xmlns="http://rds.amazonaws.com/admin/2009-10-16/">
118
+ <CreateDBSnapshotResult>
119
+ <DBSnapshot>
120
+ <Port>3306</Port>
121
+ <Status>creating</Status>
122
+ <Engine>mysql5.1</Engine>
123
+ <AvailabilityZone>us-east-1d</AvailabilityZone>
124
+ <InstanceCreateTime>2009-10-21T04:05:43.609Z</InstanceCreateTime>
125
+ <AllocatedStorage>50</AllocatedStorage>
126
+ <DBInstanceIdentifier>mynewdbinstance</DBInstanceIdentifier>
127
+ <MasterUsername>sa</MasterUsername>
128
+ <DBSnapshotIdentifier>mynewdbsnapshot3</DBSnapshotIdentifier>
129
+ </DBSnapshot>
130
+ </CreateDBSnapshotResult>
131
+ <ResponseMetadata>
132
+ <RequestId>48e870fd-bf38-11de-a88b-7b5b3d23b3a7</RequestId>
133
+ </ResponseMetadata>
134
+ </CreateDBSnapshotResponse>
135
+ EOE
136
+ @rds.stubs(:make_request).with('CreateDBSnapshot', {'DBSnapshotIdentifier' => 'mynewdbsnapshot3', 'DBInstanceIdentifier' => 'mynewdbinstance'}).
137
+ returns stub(:body => body, :is_a? => true)
138
+ response = @rds.create_db_snapshot(
139
+ :db_snapshot_identifier => "mynewdbsnapshot3",
140
+ :db_instance_identifier => "mynewdbinstance"
141
+ )
142
+ response.should.be.an.instance_of Hash
143
+
144
+ assert_equal response.CreateDBSnapshotResult.DBSnapshot.DBSnapshotIdentifier, "mynewdbsnapshot3"
145
+ end
146
+
147
+ specify "should be able to authorize_db_security_group" do
148
+ body =<<-EOE
149
+ <AuthorizeDBSecurityGroupIngressResponse xmlns="http://rds.amazonaws.com/admin/2009-10-16/">
150
+ <AuthorizeDBSecurityGroupIngressResult>
151
+ <DBSecurityGroup>
152
+ <EC2SecurityGroups/>
153
+ <DBSecurityGroupDescription>My new DBSecurityGroup</DBSecurityGroupDescription>
154
+ <IPRanges>
155
+ <IPRange>
156
+ <CIDRIP>192.168.1.1/24</CIDRIP>
157
+ <Status>authorizing</Status>
158
+ </IPRange>
159
+ </IPRanges>
160
+ <OwnerId>621567473609</OwnerId>
161
+ <DBSecurityGroupName>mydbsecuritygroup</DBSecurityGroupName>
162
+ </DBSecurityGroup>
163
+ </AuthorizeDBSecurityGroupIngressResult>
164
+ <ResponseMetadata>
165
+ <RequestId>d9799197-bf2d-11de-b88d-993294bf1c81</RequestId>
166
+ </ResponseMetadata>
167
+ </AuthorizeDBSecurityGroupIngressResponse>
168
+ EOE
169
+ @rds.stubs(:make_request).with('AuthorizeDBSecurityGroupIngress', {'CIDRIP' => '192.168.1.1/24', 'DBSecurityGroupName' => 'mydbsecuritygroup'}).
170
+ returns stub(:body => body, :is_a? => true)
171
+ response = @rds.authorize_db_security_group(
172
+ :db_security_group_name => "mydbsecuritygroup",
173
+ :cidrip => "192.168.1.1/24"
174
+ )
175
+ response.should.be.an.instance_of Hash
176
+
177
+ assert_equal response.AuthorizeDBSecurityGroupIngressResult.DBSecurityGroup.IPRanges.IPRange.CIDRIP, "192.168.1.1/24"
178
+ end
179
+
180
+ specify "should be able to delete_db_parameter_group" do
181
+ body =<<-EOE
182
+ <DeleteDBParameterGroupResponse xmlns="http://rds.amazonaws.com/admin/2009-10-16/">
183
+ <ResponseMetadata>
184
+ <RequestId>4dc38be9-bf3b-11de-a88b-7b5b3d23b3a7</RequestId>
185
+ </ResponseMetadata>
186
+ </DeleteDBParameterGroupResponse>
187
+ EOE
188
+ @rds.stubs(:make_request).with('DeleteDBParameterGroup', {'DBParameterGroupName' => 'mydbsecuritygroup'}).
189
+ returns stub(:body => body, :is_a? => true)
190
+ response = @rds.delete_db_parameter_group(
191
+ :db_parameter_group_name => "mydbsecuritygroup"
192
+ )
193
+ response.should.be.an.instance_of Hash
194
+ end
195
+
196
+ specify "should be able to delete_db_security_group" do
197
+ body =<<-EOE
198
+ <DeleteDBParameterGroupResponse xmlns="http://rds.amazonaws.com/admin/2009-10-16/">
199
+ <ResponseMetadata>
200
+ <RequestId>4dc38be9-bf3b-11de-a88b-7b5b3d23b3a7</RequestId>
201
+ </ResponseMetadata>
202
+ </DeleteDBParameterGroupResponse>
203
+ EOE
204
+ @rds.stubs(:make_request).with('DeleteDBSecurityGroup', {'DBSecurityGroupName' => 'mydbsecuritygroup'}).
205
+ returns stub(:body => body, :is_a? => true)
206
+ response = @rds.delete_db_security_group(
207
+ :db_security_group_name => "mydbsecuritygroup"
208
+ )
209
+ response.should.be.an.instance_of Hash
210
+ end
211
+
212
+ specify "should be able to delete_db_snapshot" do
213
+ body =<<-EOE
214
+ <DeleteDBParameterGroupResponse xmlns="http://rds.amazonaws.com/admin/2009-10-16/">
215
+ <ResponseMetadata>
216
+ <RequestId>4dc38be9-bf3b-11de-a88b-7b5b3d23b3a7</RequestId>
217
+ </ResponseMetadata>
218
+ </DeleteDBParameterGroupResponse>
219
+ EOE
220
+ @rds.stubs(:make_request).with('DeleteDBSnapshot', {'DBSnapshotIdentifier' => 'snapshotname'}).
221
+ returns stub(:body => body, :is_a? => true)
222
+ response = @rds.delete_db_snapshot(
223
+ :db_snapshot_identifier => "snapshotname"
224
+ )
225
+ response.should.be.an.instance_of Hash
226
+ end
227
+
228
+ specify "should be able to describe_db_instances" do
229
+ body =<<-EOE
230
+ <DescribeDBInstancesResponse xmlns="http://rds.amazonaws.com/admin/2009-10-16/">
231
+ <DescribeDBInstancesResult>
232
+ <DBInstances>
233
+ <DBInstance>
234
+ <LatestRestorableTime>2009-10-22T18:59:59Z</LatestRestorableTime>
235
+ <Engine>mysql5.1</Engine>
236
+ <BackupRetentionPeriod>3</BackupRetentionPeriod>
237
+ <DBInstanceStatus>available</DBInstanceStatus>
238
+ <DBParameterGroups>
239
+ <DBParameterGroup>
240
+ <ParameterApplyStatus>pending-reboot</ParameterApplyStatus>
241
+ <DBParameterGroupName>default.mysql5.1</DBParameterGroupName>
242
+ </DBParameterGroup>
243
+ </DBParameterGroups>
244
+ <Endpoint>
245
+ <Port>8443</Port>
246
+ <Address>dbinstancename.clouwupjnvmq.us-east-1-devo.rds.amazonaws.com</Address>
247
+ </Endpoint>
248
+ <DBInstanceIdentifier>dbinstancename</DBInstanceIdentifier>
249
+ <PreferredBackupWindow>03:00-05:00</PreferredBackupWindow>
250
+ <DBSecurityGroups>
251
+ <DBSecurityGroup>
252
+ <Status>active</Status>
253
+ <DBSecurityGroupName>default</DBSecurityGroupName>
254
+ </DBSecurityGroup>
255
+ </DBSecurityGroups>
256
+ <DBName>testdb</DBName>
257
+ <PreferredMaintenanceWindow>sun:05:00-sun:09:00</PreferredMaintenanceWindow>
258
+ <AvailabilityZone>us-east-1a</AvailabilityZone>
259
+ <InstanceCreateTime>2009-09-11T00:50:45.523Z</InstanceCreateTime>
260
+ <AllocatedStorage>20</AllocatedStorage>
261
+ <DBInstanceClass>db.m1.xlarge</DBInstanceClass>
262
+ <MasterUsername>sa</MasterUsername>
263
+ </DBInstance>
264
+ </DBInstances>
265
+ </DescribeDBInstancesResult>
266
+ <ResponseMetadata>
267
+ <RequestId>4f1fae46-bf3d-11de-a88b-7b5b3d23b3a7</RequestId>
268
+ </ResponseMetadata>
269
+ </DescribeDBInstancesResponse>
270
+ EOE
271
+ @rds.stubs(:make_request).with('DescribeDBInstances', {'MaxRecords' => '100'}).
272
+ returns stub(:body => body, :is_a? => true)
273
+ response = @rds.describe_db_instances(
274
+ :max_records => "100"
275
+ )
276
+ response.should.be.an.instance_of Hash
277
+ end
278
+
279
+ specify "should be able to describe_db_instances" do
280
+ body =<<-EOE
281
+ <DescribeEngineDefaultParametersResponse xmlns="http://rds.amazonaws.com/admin/2009-10-16/">
282
+ <DescribeEngineDefaultParametersResult>
283
+ <EngineDefaults>
284
+ <Engine>mysql5.1</Engine>
285
+ <Marker>bWF4X3VzZXJfY29ubmVjdGlvbnM=</Marker>
286
+ <Parameters>
287
+ <Parameter>
288
+ <DataType>boolean</DataType>
289
+ <Source>engine-default</Source>
290
+ <IsModifiable>true</IsModifiable>
291
+ <Description>Controls whether user-defined functions that have only an xxx symbol for the main function can be loaded</Description>
292
+ <ApplyType>static</ApplyType>
293
+ <AllowedValues>ON,OFF</AllowedValues>
294
+ <ParameterName>allow-suspicious-udfs</ParameterName>
295
+ </Parameter>
296
+ <Parameter>
297
+ <DataType>integer</DataType>
298
+ <Source>engine-default</Source>
299
+ <IsModifiable>true</IsModifiable>
300
+ <Description>Intended for use with master-to-master replication, and can be used to control the operation of AUTO_INCREMENT columns</Description>
301
+ <ApplyType>dynamic</ApplyType>
302
+ <AllowedValues>1-65535</AllowedValues>
303
+ <ParameterName>auto_increment_increment</ParameterName>
304
+ </Parameter>
305
+ </Parameters>
306
+ </EngineDefaults>
307
+ </DescribeEngineDefaultParametersResult>
308
+ <ResponseMetadata>
309
+ <RequestId>811f4032-bf3e-11de-b88d-993294bf1c81</RequestId>
310
+ </ResponseMetadata>
311
+ </DescribeEngineDefaultParametersResponse>
312
+ EOE
313
+ @rds.stubs(:make_request).with('DescribeEngineDefaultParameters', {'Engine' => 'MySQL5.1'}).
314
+ returns stub(:body => body, :is_a? => true)
315
+ response = @rds.describe_engine_default_parameters(
316
+ :engine => "MySQL5.1"
317
+ )
318
+ response.should.be.an.instance_of Hash
319
+ end
320
+
321
+ specify "should be able to describe_db_instances" do
322
+ body =<<-EOE
323
+ <ModifyDBParameterGroupResponse xmlns="http://rds.amazonaws.com/admin/2009-10-16/">
324
+ <ModifyDBParameterGroupResult>
325
+ <DBParameterGroupName>mydbparametergroup</DBParameterGroupName>
326
+ </ModifyDBParameterGroupResult>
327
+ <ResponseMetadata>
328
+ <RequestId>5ba91f97-bf51-11de-bf60-ef2e377db6f3</RequestId>
329
+ </ResponseMetadata>
330
+ </ModifyDBParameterGroupResponse>
331
+ EOE
332
+
333
+ @rds.stubs(:make_request).with('ModifyDBParameterGroup', {
334
+ 'DBParameterGroupName' => 'mytestdb',
335
+ 'Parameters.member.1.ParameterName' => 'max_user_connections',
336
+ 'Parameters.member.1.ParameterValue' => '24',
337
+ 'Parameters.member.1.ApplyMethod' => 'pending-reboot',
338
+ 'Parameters.member.2.ParameterName' => 'max_allowed_packet',
339
+ 'Parameters.member.2.ParameterValue' => '1024',
340
+ 'Parameters.member.2.ApplyMethod' => 'immediate',
341
+ }).
342
+ returns stub(:body => body, :is_a? => true)
343
+ response = @rds.modify_db_parameter_group(
344
+ :db_parameter_group_name => "mytestdb",
345
+ :parameters => [
346
+ {:name => "max_user_connections", :value => "24", :apply_method => "pending-reboot"},
347
+ {:name => "max_allowed_packet", :value => "1024", :apply_method => "immediate"}
348
+ ]
349
+ )
350
+ response.should.be.an.instance_of Hash
351
+ end
352
+
353
+ end
354
+