fog 0.6.0 → 0.7.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.
Files changed (179) hide show
  1. data/Gemfile.lock +11 -6
  2. data/changelog.txt +49 -0
  3. data/fog.gemspec +5 -4
  4. data/lib/fog.rb +1 -1
  5. data/lib/fog/aws/cloud_formation.rb +124 -0
  6. data/lib/fog/aws/elb.rb +4 -1
  7. data/lib/fog/aws/iam.rb +6 -0
  8. data/lib/fog/aws/parsers/cloud_formation/basic.rb +12 -0
  9. data/lib/fog/aws/parsers/cloud_formation/create_stack.rb +19 -0
  10. data/lib/fog/aws/parsers/cloud_formation/describe_stack_events.rb +31 -0
  11. data/lib/fog/aws/parsers/cloud_formation/describe_stack_resources.rb +31 -0
  12. data/lib/fog/aws/parsers/cloud_formation/describe_stacks.rb +72 -0
  13. data/lib/fog/aws/parsers/cloud_formation/get_template.rb +19 -0
  14. data/lib/fog/aws/parsers/cloud_formation/validate_template.rb +52 -0
  15. data/lib/fog/aws/parsers/iam/login_profile.rb +27 -0
  16. data/lib/fog/aws/parsers/iam/upload_server_certificate.rb +26 -0
  17. data/lib/fog/aws/parsers/rds/authorize_db_security_group_ingress.rb +38 -0
  18. data/lib/fog/aws/parsers/rds/create_db_instance.rb +34 -0
  19. data/lib/fog/aws/parsers/rds/create_db_instance_read_replica.rb +34 -0
  20. data/lib/fog/aws/parsers/rds/create_db_parameter_group.rb +35 -0
  21. data/lib/fog/aws/parsers/rds/create_db_security_group.rb +38 -0
  22. data/lib/fog/aws/parsers/rds/create_db_snapshot.rb +35 -0
  23. data/lib/fog/aws/parsers/rds/db_parser.rb +123 -0
  24. data/lib/fog/aws/parsers/rds/delete_db_instance.rb +35 -0
  25. data/lib/fog/aws/parsers/rds/delete_db_parameter_group.rb +27 -0
  26. data/lib/fog/aws/parsers/rds/delete_db_security_group.rb +33 -0
  27. data/lib/fog/aws/parsers/rds/delete_db_snapshot.rb +34 -0
  28. data/lib/fog/aws/parsers/rds/describe_db_instances.rb +36 -0
  29. data/lib/fog/aws/parsers/rds/describe_db_parameter_groups.rb +38 -0
  30. data/lib/fog/aws/parsers/rds/describe_db_parameters.rb +44 -0
  31. data/lib/fog/aws/parsers/rds/describe_db_security_groups.rb +39 -0
  32. data/lib/fog/aws/parsers/rds/describe_db_snapshots.rb +39 -0
  33. data/lib/fog/aws/parsers/rds/modify_db_instance.rb +34 -0
  34. data/lib/fog/aws/parsers/rds/modify_db_parameter_group.rb +28 -0
  35. data/lib/fog/aws/parsers/rds/reboot_db_instance.rb +35 -0
  36. data/lib/fog/aws/parsers/rds/restore_db_instance_from_db_snapshot.rb +34 -0
  37. data/lib/fog/aws/parsers/rds/restore_db_instance_to_point_in_time.rb +35 -0
  38. data/lib/fog/aws/parsers/rds/revoke_db_security_group_ingress.rb +39 -0
  39. data/lib/fog/aws/parsers/rds/security_group_parser.rb +39 -0
  40. data/lib/fog/aws/parsers/rds/snapshot_parser.rb +40 -0
  41. data/lib/fog/aws/rds.rb +161 -0
  42. data/lib/fog/aws/rds/models/parameter.rb +21 -0
  43. data/lib/fog/aws/rds/models/parameter_group.rb +36 -0
  44. data/lib/fog/aws/rds/models/parameter_groups.rb +27 -0
  45. data/lib/fog/aws/rds/models/parameters.rb +37 -0
  46. data/lib/fog/aws/rds/models/security_group.rb +73 -0
  47. data/lib/fog/aws/rds/models/security_groups.rb +43 -0
  48. data/lib/fog/aws/rds/models/server.rb +105 -0
  49. data/lib/fog/aws/rds/models/servers.rb +27 -0
  50. data/lib/fog/aws/rds/models/snapshot.rb +49 -0
  51. data/lib/fog/aws/rds/models/snapshots.rb +45 -0
  52. data/lib/fog/aws/requests/cloud_formation/create_stack.rb +71 -0
  53. data/lib/fog/aws/requests/cloud_formation/delete_stack.rb +30 -0
  54. data/lib/fog/aws/requests/cloud_formation/describe_stack_events.rb +44 -0
  55. data/lib/fog/aws/requests/cloud_formation/describe_stack_resources.rb +43 -0
  56. data/lib/fog/aws/requests/cloud_formation/describe_stacks.rb +42 -0
  57. data/lib/fog/aws/requests/cloud_formation/get_template.rb +32 -0
  58. data/lib/fog/aws/requests/cloud_formation/validate_template.rb +34 -0
  59. data/lib/fog/aws/requests/elb/create_load_balancer.rb +4 -0
  60. data/lib/fog/aws/requests/iam/create_login_profile.rb +36 -0
  61. data/lib/fog/aws/requests/iam/delete_login_profile.rb +31 -0
  62. data/lib/fog/aws/requests/iam/delete_server_certificate.rb +32 -0
  63. data/lib/fog/aws/requests/iam/get_login_profile.rb +35 -0
  64. data/lib/fog/aws/requests/iam/update_login_profile.rb +33 -0
  65. data/lib/fog/aws/requests/iam/upload_server_certificate.rb +45 -0
  66. data/lib/fog/aws/requests/rds/authorize_db_security_group_ingress.rb +43 -0
  67. data/lib/fog/aws/requests/rds/create_db_instance.rb +56 -0
  68. data/lib/fog/aws/requests/rds/create_db_instance_read_replica.rb +42 -0
  69. data/lib/fog/aws/requests/rds/create_db_parameter_group.rb +41 -0
  70. data/lib/fog/aws/requests/rds/create_db_security_group.rb +37 -0
  71. data/lib/fog/aws/requests/rds/create_db_snapshot.rb +36 -0
  72. data/lib/fog/aws/requests/rds/delete_db_instance.rb +40 -0
  73. data/lib/fog/aws/requests/rds/delete_db_parameter_group.rb +36 -0
  74. data/lib/fog/aws/requests/rds/delete_db_security_group.rb +36 -0
  75. data/lib/fog/aws/requests/rds/delete_db_snapshot.rb +36 -0
  76. data/lib/fog/aws/requests/rds/describe_db_instances.rb +42 -0
  77. data/lib/fog/aws/requests/rds/describe_db_parameter_groups.rb +45 -0
  78. data/lib/fog/aws/requests/rds/describe_db_parameters.rb +46 -0
  79. data/lib/fog/aws/requests/rds/describe_db_security_groups.rb +39 -0
  80. data/lib/fog/aws/requests/rds/describe_db_snapshots.rb +42 -0
  81. data/lib/fog/aws/requests/rds/modify_db_instance.rb +54 -0
  82. data/lib/fog/aws/requests/rds/modify_db_parameter_group.rb +55 -0
  83. data/lib/fog/aws/requests/rds/reboot_db_instance.rb +34 -0
  84. data/lib/fog/aws/requests/rds/restore_db_instance_from_db_snapshot.rb +34 -0
  85. data/lib/fog/aws/requests/rds/restore_db_instance_to_point_in_time.rb +35 -0
  86. data/lib/fog/aws/requests/rds/revoke_db_security_group_ingress.rb +44 -0
  87. data/lib/fog/aws/simpledb.rb +21 -7
  88. data/lib/fog/bin.rb +2 -1
  89. data/lib/fog/bin/aws.rb +8 -0
  90. data/lib/fog/bin/virtual_box.rb +52 -0
  91. data/lib/fog/cdn/aws.rb +9 -8
  92. data/lib/fog/cdn/rackspace.rb +6 -6
  93. data/lib/fog/cdn/requests/rackspace/post_container.rb +30 -0
  94. data/lib/fog/cdn/requests/rackspace/put_container.rb +1 -1
  95. data/lib/fog/compute.rb +6 -3
  96. data/lib/fog/compute/aws.rb +11 -7
  97. data/lib/fog/compute/bluebox.rb +5 -6
  98. data/lib/fog/compute/brightbox.rb +3 -0
  99. data/lib/fog/compute/go_grid.rb +5 -6
  100. data/lib/fog/compute/linode.rb +5 -6
  101. data/lib/fog/compute/models/aws/flavors.rb +19 -18
  102. data/lib/fog/compute/models/aws/server.rb +23 -0
  103. data/lib/fog/compute/models/aws/tag.rb +1 -1
  104. data/lib/fog/compute/models/brightbox/server.rb +7 -1
  105. data/lib/fog/compute/models/virtual_box/medium.rb +87 -0
  106. data/lib/fog/compute/models/virtual_box/medium_format.rb +34 -0
  107. data/lib/fog/compute/models/virtual_box/mediums.rb +32 -0
  108. data/lib/fog/compute/models/virtual_box/nat_engine.rb +65 -0
  109. data/lib/fog/compute/models/virtual_box/nat_redirect.rb +91 -0
  110. data/lib/fog/compute/models/virtual_box/nat_redirects.rb +41 -0
  111. data/lib/fog/compute/models/virtual_box/network_adapter.rb +82 -0
  112. data/lib/fog/compute/models/virtual_box/network_adapters.rb +42 -0
  113. data/lib/fog/compute/models/virtual_box/server.rb +241 -0
  114. data/lib/fog/compute/models/virtual_box/servers.rb +41 -0
  115. data/lib/fog/compute/models/virtual_box/storage_controller.rb +83 -0
  116. data/lib/fog/compute/models/virtual_box/storage_controllers.rb +38 -0
  117. data/lib/fog/compute/models/voxel/servers.rb +7 -6
  118. data/lib/fog/compute/new_servers.rb +5 -6
  119. data/lib/fog/compute/parsers/aws/monitor_unmonitor_instances.rb +35 -0
  120. data/lib/fog/compute/rackspace.rb +7 -7
  121. data/lib/fog/compute/requests/aws/delete_tags.rb +12 -9
  122. data/lib/fog/compute/requests/aws/monitor_instances.rb +52 -0
  123. data/lib/fog/compute/requests/aws/revoke_security_group_ingress.rb +24 -8
  124. data/lib/fog/compute/requests/aws/unmonitor_instances.rb +53 -0
  125. data/lib/fog/compute/requests/brightbox/activate_console_server.rb +20 -0
  126. data/lib/fog/compute/requests/brightbox/add_listeners_load_balancer.rb +20 -0
  127. data/lib/fog/compute/requests/brightbox/remove_listeners_load_balancer.rb +20 -0
  128. data/lib/fog/compute/slicehost.rb +5 -6
  129. data/lib/fog/compute/virtual_box.rb +48 -0
  130. data/lib/fog/compute/voxel.rb +30 -27
  131. data/lib/fog/core.rb +1 -0
  132. data/lib/fog/core/attributes.rb +3 -1
  133. data/lib/fog/core/collection.rb +2 -2
  134. data/lib/fog/core/credentials.rb +13 -3
  135. data/lib/fog/core/scp.rb +0 -4
  136. data/lib/fog/core/service.rb +0 -8
  137. data/lib/fog/core/ssh.rb +0 -4
  138. data/lib/fog/dns.rb +3 -3
  139. data/lib/fog/dns/aws.rb +8 -8
  140. data/lib/fog/dns/bluebox.rb +5 -7
  141. data/lib/fog/dns/dnsimple.rb +7 -7
  142. data/lib/fog/dns/linode.rb +5 -6
  143. data/lib/fog/dns/models/dnsimple/record.rb +11 -1
  144. data/lib/fog/dns/models/dnsimple/records.rb +7 -7
  145. data/lib/fog/dns/models/dnsimple/zones.rb +2 -1
  146. data/lib/fog/dns/requests/dnsimple/get_record.rb +34 -0
  147. data/lib/fog/dns/slicehost.rb +5 -6
  148. data/lib/fog/dns/zerigo.rb +5 -7
  149. data/lib/fog/providers.rb +2 -1
  150. data/lib/fog/providers/aws.rb +10 -8
  151. data/lib/fog/providers/virtual_box.rb +11 -0
  152. data/lib/fog/storage.rb +21 -0
  153. data/lib/fog/storage/aws.rb +16 -32
  154. data/lib/fog/storage/google.rb +6 -27
  155. data/lib/fog/storage/local.rb +7 -7
  156. data/lib/fog/storage/models/rackspace/directory.rb +1 -1
  157. data/lib/fog/storage/models/rackspace/file.rb +1 -0
  158. data/lib/fog/storage/rackspace.rb +5 -27
  159. data/lib/fog/storage/requests/aws/put_object.rb +2 -2
  160. data/lib/fog/storage/requests/aws/upload_part.rb +1 -1
  161. data/lib/fog/storage/requests/google/put_object.rb +2 -2
  162. data/lib/fog/storage/requests/rackspace/put_object.rb +1 -1
  163. data/tests/aws/requests/cloud_formation/stack_tests.rb +130 -0
  164. data/tests/aws/requests/iam/login_profile_tests.rb +64 -0
  165. data/tests/aws/requests/rds/helper.rb +169 -0
  166. data/tests/aws/requests/rds/instance_tests.rb +129 -0
  167. data/tests/aws/requests/rds/model_tests.rb +98 -0
  168. data/tests/aws/requests/rds/parameter_group_tests.rb +68 -0
  169. data/tests/aws/requests/rds/parameter_request_tests.rb +35 -0
  170. data/tests/compute/models/aws/server_monitor_tests.rb +47 -0
  171. data/tests/compute/models/server_tests.rb +7 -23
  172. data/tests/compute/parsers/aws/monitor_unmonitor_instances_tests.rb +49 -0
  173. data/tests/compute/requests/aws/security_group_tests.rb +69 -52
  174. data/tests/compute/requests/aws/tag_tests.rb +5 -5
  175. data/tests/compute/requests/brightbox/helper.rb +7 -6
  176. data/tests/compute/requests/brightbox/server_tests.rb +5 -0
  177. data/tests/compute/requests/voxel/server_tests.rb +2 -3
  178. data/tests/storage/requests/aws/bucket_tests.rb +10 -0
  179. metadata +148 -12
@@ -0,0 +1,19 @@
1
+ module Fog
2
+ module Parsers
3
+ module AWS
4
+ module CloudFormation
5
+
6
+ class GetTemplate < Fog::Parsers::Base
7
+
8
+ def end_element(name)
9
+ case name
10
+ when 'RequestId', 'TemplateBody'
11
+ @response[name] = @value
12
+ end
13
+ end
14
+
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,52 @@
1
+ module Fog
2
+ module Parsers
3
+ module AWS
4
+ module CloudFormation
5
+
6
+ class ValidateTemplate < Fog::Parsers::Base
7
+
8
+ def reset
9
+ @parameter = {}
10
+ @response = { 'Parameters' => [] }
11
+ end
12
+
13
+ def start_element(name, attrs = [])
14
+ super
15
+ case name
16
+ when 'Parameters'
17
+ @in_parameters = true
18
+ end
19
+ end
20
+
21
+ def end_element(name)
22
+ case name
23
+ when 'DefaultValue', 'ParameterKey'
24
+ @parameter[name] = @value
25
+ when 'Description'
26
+ if @in_parameters
27
+ @parameter[name] = @value
28
+ else
29
+ @response[name] = @value
30
+ end
31
+ when 'RequestId'
32
+ @response[name] = @value
33
+ when 'member'
34
+ @response['Parameters'] << @parameter
35
+ @parameter = {}
36
+ when 'NoEcho'
37
+ case @value
38
+ when 'false'
39
+ @parameter[name] = false
40
+ when 'true'
41
+ @parameter[name] = true
42
+ end
43
+ when 'Parameters'
44
+ @in_parameters = false
45
+ end
46
+ end
47
+
48
+ end
49
+ end
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,27 @@
1
+ module Fog
2
+ module Parsers
3
+ module AWS
4
+ module IAM
5
+
6
+ class LoginProfile < Fog::Parsers::Base
7
+
8
+ def reset
9
+ @response = { 'LoginProfile' => {} }
10
+ end
11
+
12
+ def end_element(name)
13
+ case name
14
+ when 'UserName'
15
+ @response['LoginProfile']['UserName'] = @value
16
+ when 'CreateDate'
17
+ @response['LoginProfile']['CreateDate'] = Time.parse(@value)
18
+ when 'RequestId'
19
+ @response[name] = @value
20
+ end
21
+ end
22
+
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,26 @@
1
+ module Fog
2
+ module Parsers
3
+ module AWS
4
+ module IAM
5
+
6
+ class UploadServerCertificate < Fog::Parsers::Base
7
+
8
+ def reset
9
+ @response = { 'Certificate' => {} }
10
+ end
11
+
12
+ def end_element(name)
13
+ case name
14
+ when 'Arn', 'Path', 'ServerCertificateId', 'ServerCertificateName', 'UploadDate'
15
+ @response['Certificate'][name] = @value
16
+ when 'RequestId'
17
+ @response[name] = @value
18
+ end
19
+ end
20
+
21
+ end
22
+
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,38 @@
1
+ module Fog
2
+ module Parsers
3
+ module AWS
4
+ module RDS
5
+
6
+ require 'fog/aws/parsers/rds/security_group_parser'
7
+
8
+ class AuthorizeDBSecurityGroupIngress < Fog::Parsers::AWS::RDS::SecurityGroupParser
9
+
10
+ def reset
11
+ @response = { 'AuthorizeDBSecurityGroupIngressResult' => {}, 'ResponseMetadata' => {} }
12
+ super
13
+ end
14
+
15
+ def start_element(name, attrs = [])
16
+ super
17
+ end
18
+
19
+ def end_element(name)
20
+ case name
21
+ when 'DBSecurityGroup' then
22
+ @response['AuthorizeDBSecurityGroupIngressResult']['DBSecurityGroup'] = @security_group
23
+ @security_group = fresh_security_group
24
+ when 'RequestId'
25
+ @response['ResponseMetadata'][name] = @value
26
+ else
27
+ super
28
+ end
29
+
30
+ end
31
+
32
+ end
33
+
34
+ end
35
+ end
36
+ end
37
+ end
38
+
@@ -0,0 +1,34 @@
1
+ module Fog
2
+ module Parsers
3
+ module AWS
4
+ module RDS
5
+
6
+ require 'fog/aws/parsers/rds/db_parser'
7
+
8
+ class CreateDBInstance < Fog::Parsers::AWS::RDS::DbParser
9
+
10
+ def reset
11
+ @response = { 'CreateDBInstanceResult' => {}, 'ResponseMetadata' => {} }
12
+ super
13
+ end
14
+
15
+ def start_element(name, attrs = [])
16
+ super
17
+ end
18
+
19
+ def end_element(name)
20
+ case name
21
+ when 'DBInstance'
22
+ @response['CreateDBInstanceResult']['DBInstance'] = @db_instance
23
+ @db_instance = fresh_instance
24
+ when 'RequestId'
25
+ @response['ResponseMetadata'][name] = @value
26
+ else
27
+ super
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,34 @@
1
+ module Fog
2
+ module Parsers
3
+ module AWS
4
+ module RDS
5
+
6
+ require 'fog/aws/parsers/rds/db_parser'
7
+
8
+ class CreateDBInstanceReadReplica < Fog::Parsers::AWS::RDS::DbParser
9
+
10
+ def reset
11
+ @response = { 'CreateDBInstanceReadReplicaResult' => {}, 'ResponseMetadata' => {} }
12
+ super
13
+ end
14
+
15
+ def start_element(name, attrs = [])
16
+ super
17
+ end
18
+
19
+ def end_element(name)
20
+ case name
21
+ when 'DBInstance'
22
+ @response['CreateDBInstanceReadReplicaResult']['DBInstance'] = @db_instance
23
+ @db_instance = fresh_instance
24
+ when 'RequestId'
25
+ @response['ResponseMetadata'][name] = @value
26
+ else
27
+ super
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,35 @@
1
+ module Fog
2
+ module Parsers
3
+ module AWS
4
+ module RDS
5
+
6
+ class CreateDbParameterGroup < Fog::Parsers::Base
7
+
8
+ def reset
9
+ @response = { 'CreateDBParameterGroupResult' => {}, 'ResponseMetadata' => {} }
10
+ @db_parameter_group = {}
11
+ end
12
+
13
+ def start_element(name, attrs = [])
14
+ super
15
+ end
16
+
17
+ def end_element(name)
18
+ case name
19
+ when 'DBParameterGroupFamily'
20
+ @db_parameter_group['DBParameterGroupFamily'] = @value
21
+ when 'Description'
22
+ @db_parameter_group['Description'] = @value
23
+ when 'DBParameterGroupName'
24
+ @db_parameter_group['DBParameterGroupName'] = @value
25
+ when 'DBParameterGroup'
26
+ @response['CreateDBParameterGroupResult']['DBParameterGroup']= @db_parameter_group
27
+ when 'RequestId'
28
+ @response['ResponseMetadata'][name] = @value
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,38 @@
1
+ module Fog
2
+ module Parsers
3
+ module AWS
4
+ module RDS
5
+
6
+ require 'fog/aws/parsers/rds/security_group_parser'
7
+
8
+ class CreateDBSecurityGroup < Fog::Parsers::AWS::RDS::SecurityGroupParser
9
+
10
+ def reset
11
+ @response = { 'CreateDBSecurityGroupResult' => {}, 'ResponseMetadata' => {} }
12
+ super
13
+ end
14
+
15
+ def start_element(name, attrs = [])
16
+ super
17
+ end
18
+
19
+ def end_element(name)
20
+ case name
21
+ when 'DBSecurityGroup' then
22
+ @response['CreateDBSecurityGroupResult']['DBSecurityGroup'] = @security_group
23
+ @security_group = fresh_security_group
24
+ when 'RequestId'
25
+ @response['ResponseMetadata'][name] = @value
26
+ else
27
+ super
28
+ end
29
+
30
+ end
31
+
32
+ end
33
+
34
+ end
35
+ end
36
+ end
37
+ end
38
+
@@ -0,0 +1,35 @@
1
+ module Fog
2
+ module Parsers
3
+ module AWS
4
+ module RDS
5
+ require 'fog/aws/parsers/rds/snapshot_parser'
6
+
7
+ class CreateDBSnapshot < Fog::Parsers::AWS::RDS::SnapshotParser
8
+
9
+ def reset
10
+ @response = { 'CreateDBSnapshotResult' => {}, 'ResponseMetadata' => {} }
11
+ super
12
+ end
13
+
14
+ def start_element(name, attrs = [])
15
+ super
16
+ end
17
+
18
+ def end_element(name)
19
+ case name
20
+ when 'DBSnapshot' then
21
+ @response['CreateDBSnapshotResult']['DBSnapshot'] = @db_snapshot
22
+ @db_snapshot = fresh_snapshot
23
+ when 'RequestId'
24
+ @response['ResponseMetadata'][name] = @value
25
+ else
26
+ super
27
+ end
28
+ end
29
+
30
+ end
31
+
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,123 @@
1
+ module Fog
2
+ module Parsers
3
+ module AWS
4
+ module RDS
5
+
6
+ class DbParser < Fog::Parsers::Base
7
+
8
+ def reset
9
+ @db_instance = fresh_instance
10
+
11
+ end
12
+
13
+ def fresh_instance
14
+ {'PendingModifiedValues' => [], 'DBSecurityGroups' => [], 'ReadReplicaDBInstanceIdentifiers' => [], 'Endpoint' => {}}
15
+ end
16
+
17
+ def start_element(name, attrs = [])
18
+ super
19
+ case name
20
+ when 'PendingModifiedValues'
21
+ @in_pending_modified_values = true
22
+ @pending_modified_values = {}
23
+ when 'DBSecurityGroups'
24
+ @in_db_security_groups = true
25
+ @db_security_groups = []
26
+ when 'DBSecurityGroup'
27
+ @db_security_group = {}
28
+ when 'Endpoint'
29
+ @in_endpoint = true
30
+ @endpoint = {}
31
+ when 'DBParameterGroup'
32
+ @db_parameter_group = {}
33
+ when 'DBParameterGroups'
34
+ @in_db_parameter_groups = true
35
+ @db_parameter_groups = []
36
+ end
37
+
38
+ end
39
+
40
+ def end_element(name)
41
+ case name
42
+
43
+ when 'LatestRestorableTime', 'InstanceCreateTime'
44
+ @db_instance[name] = Time.parse @value
45
+ when 'Engine',
46
+ 'DBInstanceStatus', 'DBInstanceIdentifier', 'EngineVersion',
47
+ 'PreferredBackupWindow', 'PreferredMaintenanceWindow',
48
+ 'AvailabilityZone', 'MasterUsername', 'DBName'
49
+ @db_instance[name] = @value
50
+ when 'MultiAZ', 'AutoMinorVersionUpgrade'
51
+ if @value == 'false'
52
+ @db_instance[name] = false
53
+ else
54
+ @db_instance[name] = true
55
+ end
56
+ when 'DBParameterGroups'
57
+ @in_db_parameter_groups = false
58
+ @db_instance['DBParameterGroups'] = @db_parameter_groups
59
+ when 'DBParameterGroup'
60
+ @db_parameter_groups << @db_parameter_group
61
+ @db_parameter_group = {}
62
+ when 'ParameterApplyStatus', 'DBParameterGroupName'
63
+ if @in_db_parameter_groups
64
+ @db_parameter_group[name] = @value
65
+ end
66
+
67
+ when 'BackupRetentionPeriod'
68
+ if @in_pending_modified_values
69
+ @pending_modified_values[name] = @value.to_i
70
+ else
71
+ @db_instance[name] = @value.to_i
72
+ end
73
+ when 'DBInstanceClass', 'EngineVersion', 'MasterUserPassword', 'MultiAZ'
74
+ if @in_pending_modified_values
75
+ @pending_modified_values[name] = @value
76
+ else
77
+ @db_instance[name] = @value
78
+ end
79
+ when 'DBSecurityGroups'
80
+ @in_db_security_groups = false
81
+ @db_instance['DBSecurityGroups'] = @db_security_groups
82
+ when 'Status', 'DBSecurityGroupName'
83
+ if @in_db_security_groups
84
+ @db_security_group[name]=@value
85
+ end
86
+ when 'DBSecurityGroup'
87
+ @db_security_groups << @db_security_group
88
+ @db_security_group = {}
89
+
90
+ when 'AllocatedStorage'
91
+ if @in_pending_modified_values
92
+ @pending_modified_values[name] = @value.to_i
93
+ else
94
+ @db_instance[name] = @value.to_i
95
+ end
96
+ when 'Address'
97
+ @endpoint[name] = @value
98
+ when 'Port'
99
+ if @in_pending_modified_values
100
+ @pending_modified_values[name] = @value.to_i
101
+ elsif @in_endpoint
102
+ @endpoint[name] = @value.to_i
103
+ end
104
+
105
+ when 'PendingModifiedValues'
106
+ @in_pending_modified_values = false
107
+ @db_instance['PendingModifiedValues'] = @pending_modified_values
108
+ when 'Endpoint'
109
+ @in_endpoint = false
110
+ @db_instance['Endpoint'] = @endpoint
111
+ when 'ReadReplicaDBInstanceIdentifier'
112
+ @db_instance['ReadReplicaDBInstanceIdentifiers'] << @value
113
+ when 'ReadReplicaSourceDBInstanceIdentifier'
114
+ @db_instance['ReadReplicaSourceDBInstanceIdentifier'] = @value
115
+ when 'DBInstance'
116
+ @db_instance = fresh_instance
117
+ end
118
+ end
119
+ end
120
+ end
121
+ end
122
+ end
123
+ end