fog 1.1.0 → 1.2.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 (780) hide show
  1. data/.gitignore +6 -0
  2. data/README.rdoc +1 -1
  3. data/Rakefile +7 -19
  4. data/changelog.txt +827 -2
  5. data/docs/_layouts/default.html +1 -1
  6. data/docs/compute/index.markdown +15 -1
  7. data/docs/index.markdown +2 -2
  8. data/docs/storage/index.markdown +4 -4
  9. data/fog.gemspec +8 -5
  10. data/lib/fog/aws/auto_scaling.rb +2 -17
  11. data/lib/fog/aws/beanstalk.rb +140 -0
  12. data/lib/fog/aws/cloud_formation.rb +1 -16
  13. data/lib/fog/aws/cloud_watch.rb +2 -17
  14. data/lib/fog/aws/compute.rb +22 -21
  15. data/lib/fog/aws/dns.rb +2 -2
  16. data/lib/fog/aws/dynamodb.rb +162 -0
  17. data/lib/fog/aws/elasticache.rb +1 -7
  18. data/lib/fog/aws/elb/policy_types.rb +35 -0
  19. data/lib/fog/aws/elb.rb +34 -24
  20. data/lib/fog/aws/emr.rb +5 -4
  21. data/lib/fog/aws/iam.rb +16 -1
  22. data/lib/fog/aws/models/auto_scaling/activity.rb +1 -1
  23. data/lib/fog/aws/models/auto_scaling/group.rb +2 -2
  24. data/lib/fog/aws/models/beanstalk/application.rb +62 -0
  25. data/lib/fog/aws/models/beanstalk/applications.rb +25 -0
  26. data/lib/fog/aws/models/beanstalk/environment.rb +129 -0
  27. data/lib/fog/aws/models/beanstalk/environments.rb +29 -0
  28. data/lib/fog/aws/models/beanstalk/event.rb +20 -0
  29. data/lib/fog/aws/models/beanstalk/events.rb +19 -0
  30. data/lib/fog/aws/models/beanstalk/template.rb +62 -0
  31. data/lib/fog/aws/models/beanstalk/templates.rb +70 -0
  32. data/lib/fog/aws/models/beanstalk/version.rb +79 -0
  33. data/lib/fog/aws/models/beanstalk/versions.rb +31 -0
  34. data/lib/fog/aws/models/cloud_watch/metric_statistic.rb +1 -2
  35. data/lib/fog/aws/models/compute/address.rb +7 -4
  36. data/lib/fog/aws/models/compute/addresses.rb +2 -2
  37. data/lib/fog/aws/models/compute/flavors.rb +1 -1
  38. data/lib/fog/aws/models/compute/key_pairs.rb +2 -2
  39. data/lib/fog/aws/models/compute/security_group.rb +3 -3
  40. data/lib/fog/aws/models/compute/security_groups.rb +30 -5
  41. data/lib/fog/aws/models/compute/server.rb +5 -1
  42. data/lib/fog/aws/models/compute/servers.rb +2 -2
  43. data/lib/fog/aws/models/compute/subnet.rb +58 -0
  44. data/lib/fog/aws/models/compute/subnets.rb +99 -0
  45. data/lib/fog/aws/models/compute/volumes.rb +3 -3
  46. data/lib/fog/aws/models/compute/vpc.rb +63 -0
  47. data/lib/fog/aws/models/compute/vpcs.rb +93 -0
  48. data/lib/fog/aws/models/dns/record.rb +37 -23
  49. data/lib/fog/aws/models/dns/records.rb +3 -3
  50. data/lib/fog/aws/models/elasticache/cluster.rb +1 -1
  51. data/lib/fog/aws/models/elb/listener.rb +9 -7
  52. data/lib/fog/aws/models/elb/load_balancer.rb +6 -0
  53. data/lib/fog/aws/models/storage/directory.rb +22 -1
  54. data/lib/fog/aws/models/storage/file.rb +60 -9
  55. data/lib/fog/aws/models/storage/files.rb +4 -4
  56. data/lib/fog/aws/models/storage/version.rb +36 -0
  57. data/lib/fog/aws/models/storage/versions.rb +38 -0
  58. data/lib/fog/aws/parsers/auto_scaling/describe_scheduled_actions.rb +3 -3
  59. data/lib/fog/aws/parsers/beanstalk/check_dns_availability.rb +19 -0
  60. data/lib/fog/aws/parsers/beanstalk/create_application.rb +24 -0
  61. data/lib/fog/aws/parsers/beanstalk/create_application_version.rb +26 -0
  62. data/lib/fog/aws/parsers/beanstalk/create_configuration_template.rb +29 -0
  63. data/lib/fog/aws/parsers/beanstalk/create_environment.rb +37 -0
  64. data/lib/fog/aws/parsers/beanstalk/create_storage_location.rb +18 -0
  65. data/lib/fog/aws/parsers/beanstalk/describe_application_versions.rb +26 -0
  66. data/lib/fog/aws/parsers/beanstalk/describe_applications.rb +24 -0
  67. data/lib/fog/aws/parsers/beanstalk/describe_configuration_options.rb +32 -0
  68. data/lib/fog/aws/parsers/beanstalk/describe_configuration_settings.rb +30 -0
  69. data/lib/fog/aws/parsers/beanstalk/describe_environment_resources.rb +26 -0
  70. data/lib/fog/aws/parsers/beanstalk/describe_environments.rb +38 -0
  71. data/lib/fog/aws/parsers/beanstalk/describe_events.rb +27 -0
  72. data/lib/fog/aws/parsers/beanstalk/empty.rb +27 -0
  73. data/lib/fog/aws/parsers/beanstalk/list_available_solution_stacks.rb +21 -0
  74. data/lib/fog/aws/parsers/beanstalk/parser.rb +93 -0
  75. data/lib/fog/aws/parsers/beanstalk/retrieve_environment_info.rb +22 -0
  76. data/lib/fog/aws/parsers/beanstalk/terminate_environment.rb +37 -0
  77. data/lib/fog/aws/parsers/beanstalk/update_application.rb +24 -0
  78. data/lib/fog/aws/parsers/beanstalk/update_application_version.rb +26 -0
  79. data/lib/fog/aws/parsers/beanstalk/update_configuration_template.rb +29 -0
  80. data/lib/fog/aws/parsers/beanstalk/update_environment.rb +37 -0
  81. data/lib/fog/aws/parsers/beanstalk/validate_configuration_settings.rb +22 -0
  82. data/lib/fog/aws/parsers/compute/allocate_address.rb +1 -1
  83. data/lib/fog/aws/parsers/compute/associate_address.rb +25 -0
  84. data/lib/fog/aws/parsers/compute/create_subnet.rb +51 -0
  85. data/lib/fog/aws/parsers/compute/create_vpc.rb +51 -0
  86. data/lib/fog/aws/parsers/compute/delete_subnet.rb +24 -0
  87. data/lib/fog/aws/parsers/compute/delete_vpc.rb +24 -0
  88. data/lib/fog/aws/parsers/compute/describe_addresses.rb +1 -1
  89. data/lib/fog/aws/parsers/compute/describe_images.rb +20 -13
  90. data/lib/fog/aws/parsers/compute/describe_instance_status.rb +97 -0
  91. data/lib/fog/aws/parsers/compute/describe_instances.rb +2 -2
  92. data/lib/fog/aws/parsers/compute/describe_security_groups.rb +4 -4
  93. data/lib/fog/aws/parsers/compute/describe_subnets.rb +49 -0
  94. data/lib/fog/aws/parsers/compute/describe_volume_status.rb +70 -0
  95. data/lib/fog/aws/parsers/compute/describe_vpcs.rb +49 -0
  96. data/lib/fog/aws/parsers/dns/list_resource_record_sets.rb +15 -7
  97. data/lib/fog/aws/parsers/elb/describe_load_balancer_policies.rb +64 -0
  98. data/lib/fog/aws/parsers/elb/describe_load_balancer_policy_types.rb +70 -0
  99. data/lib/fog/aws/parsers/sns/confirm_subscription.rb +1 -1
  100. data/lib/fog/aws/parsers/sns/create_topic.rb +1 -1
  101. data/lib/fog/aws/parsers/sns/list_subscriptions.rb +2 -2
  102. data/lib/fog/aws/parsers/sns/list_topics.rb +1 -1
  103. data/lib/fog/aws/parsers/sns/subscribe.rb +1 -1
  104. data/lib/fog/aws/parsers/sqs/receive_message.rb +1 -1
  105. data/lib/fog/aws/parsers/storage/get_bucket_lifecycle.rb +32 -0
  106. data/lib/fog/aws/parsers/storage/get_bucket_object_versions.rb +1 -1
  107. data/lib/fog/aws/parsers/storage/get_bucket_versioning.rb +1 -1
  108. data/lib/fog/aws/parsers/sts/get_session_token.rb +31 -0
  109. data/lib/fog/aws/rds.rb +51 -18
  110. data/lib/fog/aws/requests/auto_scaling/delete_launch_configuration.rb +10 -1
  111. data/lib/fog/aws/requests/auto_scaling/describe_launch_configurations.rb +16 -7
  112. data/lib/fog/aws/requests/auto_scaling/describe_scheduled_actions.rb +5 -0
  113. data/lib/fog/aws/requests/auto_scaling/put_scheduled_update_group_action.rb +13 -3
  114. data/lib/fog/aws/requests/beanstalk/check_dns_availability.rb +27 -0
  115. data/lib/fog/aws/requests/beanstalk/create_application.rb +29 -0
  116. data/lib/fog/aws/requests/beanstalk/create_application_version.rb +41 -0
  117. data/lib/fog/aws/requests/beanstalk/create_configuration_template.rb +44 -0
  118. data/lib/fog/aws/requests/beanstalk/create_environment.rb +50 -0
  119. data/lib/fog/aws/requests/beanstalk/create_storage_location.rb +27 -0
  120. data/lib/fog/aws/requests/beanstalk/delete_application.rb +29 -0
  121. data/lib/fog/aws/requests/beanstalk/delete_application_version.rb +36 -0
  122. data/lib/fog/aws/requests/beanstalk/delete_configuration_template.rb +34 -0
  123. data/lib/fog/aws/requests/beanstalk/delete_environment_configuration.rb +34 -0
  124. data/lib/fog/aws/requests/beanstalk/describe_application_versions.rb +34 -0
  125. data/lib/fog/aws/requests/beanstalk/describe_applications.rb +30 -0
  126. data/lib/fog/aws/requests/beanstalk/describe_configuration_options.rb +40 -0
  127. data/lib/fog/aws/requests/beanstalk/describe_configuration_settings.rb +31 -0
  128. data/lib/fog/aws/requests/beanstalk/describe_environment_resources.rb +29 -0
  129. data/lib/fog/aws/requests/beanstalk/describe_environments.rb +40 -0
  130. data/lib/fog/aws/requests/beanstalk/describe_events.rb +29 -0
  131. data/lib/fog/aws/requests/beanstalk/list_available_solution_stacks.rb +27 -0
  132. data/lib/fog/aws/requests/beanstalk/rebuild_environment.rb +30 -0
  133. data/lib/fog/aws/requests/beanstalk/request_environment_info.rb +29 -0
  134. data/lib/fog/aws/requests/beanstalk/restart_app_server.rb +29 -0
  135. data/lib/fog/aws/requests/beanstalk/retrieve_environment_info.rb +29 -0
  136. data/lib/fog/aws/requests/beanstalk/swap_environment_cnames.rb +29 -0
  137. data/lib/fog/aws/requests/beanstalk/terminate_environment.rb +31 -0
  138. data/lib/fog/aws/requests/beanstalk/update_application.rb +30 -0
  139. data/lib/fog/aws/requests/beanstalk/update_application_version.rb +30 -0
  140. data/lib/fog/aws/requests/beanstalk/update_configuration_template.rb +36 -0
  141. data/lib/fog/aws/requests/beanstalk/update_environment.rb +42 -0
  142. data/lib/fog/aws/requests/beanstalk/validate_configuration_settings.rb +33 -0
  143. data/lib/fog/aws/requests/compute/allocate_address.rb +11 -4
  144. data/lib/fog/aws/requests/compute/associate_address.rb +44 -17
  145. data/lib/fog/aws/requests/compute/authorize_security_group_ingress.rb +15 -17
  146. data/lib/fog/aws/requests/compute/create_security_group.rb +8 -4
  147. data/lib/fog/aws/requests/compute/create_subnet.rb +79 -0
  148. data/lib/fog/aws/requests/compute/create_tags.rb +3 -2
  149. data/lib/fog/aws/requests/compute/create_vpc.rb +71 -0
  150. data/lib/fog/aws/requests/compute/delete_security_group.rb +22 -4
  151. data/lib/fog/aws/requests/compute/delete_subnet.rb +49 -0
  152. data/lib/fog/aws/requests/compute/delete_vpc.rb +52 -0
  153. data/lib/fog/aws/requests/compute/describe_availability_zones.rb +3 -0
  154. data/lib/fog/aws/requests/compute/describe_instance_status.rb +36 -0
  155. data/lib/fog/aws/requests/compute/describe_security_groups.rb +4 -0
  156. data/lib/fog/aws/requests/compute/describe_subnets.rb +66 -0
  157. data/lib/fog/aws/requests/compute/describe_volume_status.rb +50 -0
  158. data/lib/fog/aws/requests/compute/describe_vpcs.rb +62 -0
  159. data/lib/fog/aws/requests/compute/detach_volume.rb +13 -8
  160. data/lib/fog/aws/requests/compute/disassociate_address.rb +7 -5
  161. data/lib/fog/aws/requests/compute/request_spot_instances.rb +5 -1
  162. data/lib/fog/aws/requests/compute/revoke_security_group_ingress.rb +11 -13
  163. data/lib/fog/aws/requests/compute/run_instances.rb +5 -1
  164. data/lib/fog/aws/requests/dns/change_resource_record_sets.rb +43 -28
  165. data/lib/fog/aws/requests/dns/create_hosted_zone.rb +9 -9
  166. data/lib/fog/aws/requests/dns/delete_hosted_zone.rb +7 -7
  167. data/lib/fog/aws/requests/dns/get_change.rb +5 -5
  168. data/lib/fog/aws/requests/dns/get_hosted_zone.rb +8 -8
  169. data/lib/fog/aws/requests/dns/list_hosted_zones.rb +15 -15
  170. data/lib/fog/aws/requests/dns/list_resource_record_sets.rb +23 -20
  171. data/lib/fog/aws/requests/dynamodb/batch_get_item.rb +43 -0
  172. data/lib/fog/aws/requests/dynamodb/create_table.rb +55 -0
  173. data/lib/fog/aws/requests/dynamodb/delete_item.rb +45 -0
  174. data/lib/fog/aws/requests/dynamodb/delete_table.rb +42 -0
  175. data/lib/fog/aws/requests/dynamodb/describe_table.rb +44 -0
  176. data/lib/fog/aws/requests/dynamodb/get_item.rb +43 -0
  177. data/lib/fog/aws/requests/dynamodb/list_tables.rb +29 -0
  178. data/lib/fog/aws/requests/dynamodb/put_item.rb +41 -0
  179. data/lib/fog/aws/requests/dynamodb/query.rb +44 -0
  180. data/lib/fog/aws/requests/dynamodb/scan.rb +45 -0
  181. data/lib/fog/aws/requests/dynamodb/update_item.rb +49 -0
  182. data/lib/fog/aws/requests/dynamodb/update_table.rb +46 -0
  183. data/lib/fog/aws/requests/elasticache/create_cache_cluster.rb +2 -2
  184. data/lib/fog/aws/requests/elasticache/modify_cache_cluster.rb +2 -2
  185. data/lib/fog/aws/requests/elb/create_app_cookie_stickiness_policy.rb +2 -0
  186. data/lib/fog/aws/requests/elb/create_lb_cookie_stickiness_policy.rb +3 -1
  187. data/lib/fog/aws/requests/elb/create_load_balancer.rb +7 -2
  188. data/lib/fog/aws/requests/elb/create_load_balancer_listeners.rb +10 -1
  189. data/lib/fog/aws/requests/elb/create_load_balancer_policy.rb +79 -0
  190. data/lib/fog/aws/requests/elb/delete_load_balancer_policy.rb +1 -1
  191. data/lib/fog/aws/requests/elb/describe_load_balancer_policies.rb +71 -0
  192. data/lib/fog/aws/requests/elb/describe_load_balancer_policy_types.rb +68 -0
  193. data/lib/fog/aws/requests/elb/describe_load_balancers.rb +5 -1
  194. data/lib/fog/aws/requests/elb/set_load_balancer_listener_ssl_certificate.rb +27 -0
  195. data/lib/fog/aws/requests/elb/set_load_balancer_policies_of_listener.rb +1 -1
  196. data/lib/fog/aws/requests/emr/run_job_flow.rb +9 -7
  197. data/lib/fog/aws/requests/iam/add_user_to_group.rb +24 -0
  198. data/lib/fog/aws/requests/iam/create_access_key.rb +24 -0
  199. data/lib/fog/aws/requests/iam/create_group.rb +21 -0
  200. data/lib/fog/aws/requests/iam/create_user.rb +21 -0
  201. data/lib/fog/aws/requests/iam/delete_access_key.rb +17 -0
  202. data/lib/fog/aws/requests/iam/delete_group.rb +19 -0
  203. data/lib/fog/aws/requests/iam/delete_user.rb +17 -0
  204. data/lib/fog/aws/requests/iam/delete_user_policy.rb +16 -0
  205. data/lib/fog/aws/requests/iam/list_access_keys.rb +21 -0
  206. data/lib/fog/aws/requests/iam/list_groups.rb +18 -0
  207. data/lib/fog/aws/requests/iam/list_groups_for_user.rb +24 -0
  208. data/lib/fog/aws/requests/iam/list_user_policies.rb +18 -0
  209. data/lib/fog/aws/requests/iam/list_users.rb +17 -0
  210. data/lib/fog/aws/requests/iam/put_user_policy.rb +18 -0
  211. data/lib/fog/aws/requests/iam/remove_user_from_group.rb +19 -0
  212. data/lib/fog/aws/requests/iam/upload_server_certificate.rb +4 -1
  213. data/lib/fog/aws/requests/rds/authorize_db_security_group_ingress.rb +30 -1
  214. data/lib/fog/aws/requests/rds/create_db_instance.rb +73 -7
  215. data/lib/fog/aws/requests/rds/create_db_parameter_group.rb +19 -1
  216. data/lib/fog/aws/requests/rds/create_db_security_group.rb +19 -1
  217. data/lib/fog/aws/requests/rds/create_db_snapshot.rb +38 -2
  218. data/lib/fog/aws/requests/rds/delete_db_instance.rb +18 -3
  219. data/lib/fog/aws/requests/rds/delete_db_parameter_group.rb +11 -1
  220. data/lib/fog/aws/requests/rds/delete_db_security_group.rb +11 -1
  221. data/lib/fog/aws/requests/rds/delete_db_snapshot.rb +15 -4
  222. data/lib/fog/aws/requests/rds/describe_db_instances.rb +57 -2
  223. data/lib/fog/aws/requests/rds/describe_db_parameter_groups.rb +19 -1
  224. data/lib/fog/aws/requests/rds/describe_db_parameters.rb +0 -1
  225. data/lib/fog/aws/requests/rds/describe_db_reserved_instances.rb +1 -1
  226. data/lib/fog/aws/requests/rds/describe_db_security_groups.rb +49 -3
  227. data/lib/fog/aws/requests/rds/describe_db_snapshots.rb +28 -1
  228. data/lib/fog/aws/requests/rds/modify_db_instance.rb +26 -1
  229. data/lib/fog/aws/requests/rds/reboot_db_instance.rb +17 -1
  230. data/lib/fog/aws/requests/rds/revoke_db_security_group_ingress.rb +27 -1
  231. data/lib/fog/aws/requests/sns/confirm_subscription.rb +1 -1
  232. data/lib/fog/aws/requests/sns/delete_topic.rb +1 -1
  233. data/lib/fog/aws/requests/sns/get_topic_attributes.rb +1 -1
  234. data/lib/fog/aws/requests/sns/list_subscriptions_by_topic.rb +1 -1
  235. data/lib/fog/aws/requests/sns/publish.rb +1 -1
  236. data/lib/fog/aws/requests/sns/set_topic_attributes.rb +1 -1
  237. data/lib/fog/aws/requests/sns/subscribe.rb +1 -1
  238. data/lib/fog/aws/requests/sns/unsubscribe.rb +1 -1
  239. data/lib/fog/aws/requests/sqs/change_message_visibility.rb +1 -1
  240. data/lib/fog/aws/requests/sqs/delete_message.rb +1 -1
  241. data/lib/fog/aws/requests/sqs/receive_message.rb +13 -14
  242. data/lib/fog/aws/requests/storage/{hash_to_acl.rb → acl_utils.rb} +8 -0
  243. data/lib/fog/aws/requests/storage/copy_object.rb +11 -5
  244. data/lib/fog/aws/requests/storage/delete_bucket_lifecycle.rb +30 -0
  245. data/lib/fog/aws/requests/storage/delete_object.rb +73 -2
  246. data/lib/fog/aws/requests/storage/get_bucket.rb +3 -2
  247. data/lib/fog/aws/requests/storage/get_bucket_acl.rb +7 -1
  248. data/lib/fog/aws/requests/storage/get_bucket_lifecycle.rb +41 -0
  249. data/lib/fog/aws/requests/storage/get_bucket_object_versions.rb +95 -2
  250. data/lib/fog/aws/requests/storage/get_bucket_versioning.rb +32 -0
  251. data/lib/fog/aws/requests/storage/get_object.rb +42 -12
  252. data/lib/fog/aws/requests/storage/get_object_acl.rb +7 -1
  253. data/lib/fog/aws/requests/storage/get_object_http_url.rb +10 -4
  254. data/lib/fog/aws/requests/storage/get_object_https_url.rb +10 -4
  255. data/lib/fog/aws/requests/storage/head_object.rb +7 -6
  256. data/lib/fog/aws/requests/storage/put_bucket_acl.rb +2 -2
  257. data/lib/fog/aws/requests/storage/put_bucket_lifecycle.rb +48 -0
  258. data/lib/fog/aws/requests/storage/put_bucket_versioning.rb +41 -0
  259. data/lib/fog/aws/requests/storage/put_bucket_website.rb +17 -0
  260. data/lib/fog/aws/requests/storage/put_object.rb +26 -10
  261. data/lib/fog/aws/requests/storage/put_object_acl.rb +1 -1
  262. data/lib/fog/aws/requests/storage/sync_clock.rb +1 -1
  263. data/lib/fog/aws/requests/sts/get_federation_token.rb +21 -0
  264. data/lib/fog/aws/requests/sts/get_session_token.rb +19 -0
  265. data/lib/fog/aws/ses.rb +2 -7
  266. data/lib/fog/aws/simpledb.rb +4 -17
  267. data/lib/fog/aws/sns.rb +1 -14
  268. data/lib/fog/aws/sqs.rb +5 -11
  269. data/lib/fog/aws/storage.rb +7 -23
  270. data/lib/fog/aws/sts.rb +137 -0
  271. data/lib/fog/aws.rb +40 -5
  272. data/lib/fog/{new_servers → bare_metal_cloud}/compute.rb +14 -14
  273. data/lib/fog/{new_servers → bare_metal_cloud}/requests/compute/add_server.rb +1 -1
  274. data/lib/fog/{new_servers → bare_metal_cloud}/requests/compute/cancel_server.rb +1 -1
  275. data/lib/fog/{new_servers → bare_metal_cloud}/requests/compute/get_server.rb +1 -1
  276. data/lib/fog/{new_servers → bare_metal_cloud}/requests/compute/list_images.rb +1 -1
  277. data/lib/fog/{new_servers → bare_metal_cloud}/requests/compute/list_plans.rb +1 -1
  278. data/lib/fog/{new_servers → bare_metal_cloud}/requests/compute/list_servers.rb +1 -1
  279. data/lib/fog/{new_servers → bare_metal_cloud}/requests/compute/reboot_server.rb +1 -1
  280. data/lib/fog/{new_servers.rb → bare_metal_cloud.rb} +2 -2
  281. data/lib/fog/bin/aws.rb +11 -1
  282. data/lib/fog/bin/{new_servers.rb → bare_metal_cloud.rb} +5 -5
  283. data/lib/fog/bin/clodo.rb +31 -0
  284. data/lib/fog/bin/cloudstack.rb +30 -0
  285. data/lib/fog/bin/joyent.rb +31 -0
  286. data/lib/fog/bin/ovirt.rb +30 -0
  287. data/lib/fog/bin/voxel.rb +1 -1
  288. data/lib/fog/bin.rb +5 -1
  289. data/lib/fog/bluebox/compute.rb +4 -0
  290. data/lib/fog/bluebox/models/compute/location.rb +17 -0
  291. data/lib/fog/bluebox/models/compute/locations.rb +28 -0
  292. data/lib/fog/bluebox/models/compute/server.rb +12 -5
  293. data/lib/fog/bluebox/requests/compute/create_block.rb +2 -2
  294. data/lib/fog/bluebox/requests/compute/get_location.rb +26 -0
  295. data/lib/fog/bluebox/requests/compute/get_locations.rb +24 -0
  296. data/lib/fog/brightbox/compute.rb +8 -0
  297. data/lib/fog/brightbox/models/compute/cloud_ip.rb +10 -2
  298. data/lib/fog/brightbox/models/compute/firewall_policies.rb +29 -0
  299. data/lib/fog/brightbox/models/compute/firewall_policy.rb +65 -0
  300. data/lib/fog/brightbox/models/compute/firewall_rule.rb +54 -0
  301. data/lib/fog/brightbox/models/compute/firewall_rules.rb +24 -0
  302. data/lib/fog/brightbox/models/compute/image.rb +2 -0
  303. data/lib/fog/brightbox/models/compute/server.rb +41 -6
  304. data/lib/fog/brightbox/models/compute/server_group.rb +56 -17
  305. data/lib/fog/brightbox/requests/compute/remove_firewall_policy.rb +14 -0
  306. data/lib/fog/brightbox/requests/compute/update_firewall_rule.rb +13 -0
  307. data/lib/fog/clodo/compute.rb +152 -0
  308. data/lib/fog/clodo/models/compute/image.rb +31 -0
  309. data/lib/fog/clodo/models/compute/images.rb +28 -0
  310. data/lib/fog/clodo/models/compute/server.rb +163 -0
  311. data/lib/fog/clodo/models/compute/servers.rb +36 -0
  312. data/lib/fog/clodo/requests/compute/add_ip_address.rb +49 -0
  313. data/lib/fog/clodo/requests/compute/create_server.rb +112 -0
  314. data/lib/fog/clodo/requests/compute/delete_ip_address.rb +47 -0
  315. data/lib/fog/clodo/requests/compute/delete_server.rb +44 -0
  316. data/lib/fog/clodo/requests/compute/get_image_details.rb +20 -0
  317. data/lib/fog/clodo/requests/compute/get_server_details.rb +49 -0
  318. data/lib/fog/clodo/requests/compute/list_images.rb +48 -0
  319. data/lib/fog/clodo/requests/compute/list_images_detail.rb +61 -0
  320. data/lib/fog/clodo/requests/compute/list_servers.rb +50 -0
  321. data/lib/fog/clodo/requests/compute/list_servers_detail.rb +51 -0
  322. data/lib/fog/clodo/requests/compute/move_ip_address.rb +34 -0
  323. data/lib/fog/clodo/requests/compute/reboot_server.rb +19 -0
  324. data/lib/fog/clodo/requests/compute/rebuild_server.rb +21 -0
  325. data/lib/fog/clodo/requests/compute/server_action.rb +25 -0
  326. data/lib/fog/clodo/requests/compute/start_server.rb +19 -0
  327. data/lib/fog/clodo/requests/compute/stop_server.rb +19 -0
  328. data/lib/fog/clodo.rb +34 -0
  329. data/lib/fog/cloudstack/compute.rb +254 -0
  330. data/lib/fog/cloudstack/requests/compute/acquire_ip_address.rb +21 -0
  331. data/lib/fog/cloudstack/requests/compute/assign_to_load_balancer_rule.rb +25 -0
  332. data/lib/fog/cloudstack/requests/compute/attach_volume.rb +23 -0
  333. data/lib/fog/cloudstack/requests/compute/authorize_security_group_ingress.rb +22 -0
  334. data/lib/fog/cloudstack/requests/compute/change_service_for_virtual_machine.rb +20 -0
  335. data/lib/fog/cloudstack/requests/compute/create_account.rb +20 -0
  336. data/lib/fog/cloudstack/requests/compute/create_domain.rb +20 -0
  337. data/lib/fog/cloudstack/requests/compute/create_load_balancer_rule.rb +20 -0
  338. data/lib/fog/cloudstack/requests/compute/create_network.rb +20 -0
  339. data/lib/fog/cloudstack/requests/compute/create_port_forwarding_rule.rb +20 -0
  340. data/lib/fog/cloudstack/requests/compute/create_security_group.rb +20 -0
  341. data/lib/fog/cloudstack/requests/compute/create_snapshot.rb +20 -0
  342. data/lib/fog/cloudstack/requests/compute/create_snapshot_policy.rb +20 -0
  343. data/lib/fog/cloudstack/requests/compute/create_ssh_key_pair.rb +22 -0
  344. data/lib/fog/cloudstack/requests/compute/create_user.rb +20 -0
  345. data/lib/fog/cloudstack/requests/compute/create_volume.rb +20 -0
  346. data/lib/fog/cloudstack/requests/compute/delete_account.rb +20 -0
  347. data/lib/fog/cloudstack/requests/compute/delete_domain.rb +20 -0
  348. data/lib/fog/cloudstack/requests/compute/delete_load_balancer_rule.rb +20 -0
  349. data/lib/fog/cloudstack/requests/compute/delete_port_forwarding_rule.rb +20 -0
  350. data/lib/fog/cloudstack/requests/compute/delete_security_group.rb +20 -0
  351. data/lib/fog/cloudstack/requests/compute/delete_snapshot.rb +20 -0
  352. data/lib/fog/cloudstack/requests/compute/delete_snapshot_policies.rb +20 -0
  353. data/lib/fog/cloudstack/requests/compute/delete_ssh_key_pair.rb +21 -0
  354. data/lib/fog/cloudstack/requests/compute/delete_user.rb +20 -0
  355. data/lib/fog/cloudstack/requests/compute/delete_volume.rb +20 -0
  356. data/lib/fog/cloudstack/requests/compute/deploy_virtual_machine.rb +33 -0
  357. data/lib/fog/cloudstack/requests/compute/destroy_virtual_machine.rb +20 -0
  358. data/lib/fog/cloudstack/requests/compute/detach_volume.rb +21 -0
  359. data/lib/fog/cloudstack/requests/compute/disable_account.rb +20 -0
  360. data/lib/fog/cloudstack/requests/compute/disable_user.rb +20 -0
  361. data/lib/fog/cloudstack/requests/compute/enable_account.rb +20 -0
  362. data/lib/fog/cloudstack/requests/compute/enable_user.rb +20 -0
  363. data/lib/fog/cloudstack/requests/compute/generate_usage_records.rb +28 -0
  364. data/lib/fog/cloudstack/requests/compute/get_vm_password.rb +21 -0
  365. data/lib/fog/cloudstack/requests/compute/list_accounts.rb +20 -0
  366. data/lib/fog/cloudstack/requests/compute/list_alerts.rb +20 -0
  367. data/lib/fog/cloudstack/requests/compute/list_async_jobs.rb +20 -0
  368. data/lib/fog/cloudstack/requests/compute/list_capabilities.rb +20 -0
  369. data/lib/fog/cloudstack/requests/compute/list_capacity.rb +20 -0
  370. data/lib/fog/cloudstack/requests/compute/list_clusters.rb +20 -0
  371. data/lib/fog/cloudstack/requests/compute/list_configurations.rb +20 -0
  372. data/lib/fog/cloudstack/requests/compute/list_disk_offerings.rb +20 -0
  373. data/lib/fog/cloudstack/requests/compute/list_domain_children.rb +20 -0
  374. data/lib/fog/cloudstack/requests/compute/list_domains.rb +20 -0
  375. data/lib/fog/cloudstack/requests/compute/list_events.rb +20 -0
  376. data/lib/fog/cloudstack/requests/compute/list_external_firewalls.rb +20 -0
  377. data/lib/fog/cloudstack/requests/compute/list_external_load_balancers.rb +20 -0
  378. data/lib/fog/cloudstack/requests/compute/list_hosts.rb +20 -0
  379. data/lib/fog/cloudstack/requests/compute/list_hypervisors.rb +20 -0
  380. data/lib/fog/cloudstack/requests/compute/list_instance_groups.rb +20 -0
  381. data/lib/fog/cloudstack/requests/compute/list_isos.rb +20 -0
  382. data/lib/fog/cloudstack/requests/compute/list_load_balancer_rule_instances.rb +23 -0
  383. data/lib/fog/cloudstack/requests/compute/list_load_balancer_rules.rb +22 -0
  384. data/lib/fog/cloudstack/requests/compute/list_network_offerings.rb +20 -0
  385. data/lib/fog/cloudstack/requests/compute/list_networks.rb +20 -0
  386. data/lib/fog/cloudstack/requests/compute/list_os_categories.rb +22 -0
  387. data/lib/fog/cloudstack/requests/compute/list_os_types.rb +22 -0
  388. data/lib/fog/cloudstack/requests/compute/list_pods.rb +20 -0
  389. data/lib/fog/cloudstack/requests/compute/list_port_forwarding_rules.rb +22 -0
  390. data/lib/fog/cloudstack/requests/compute/list_public_ip_addresses.rb +22 -0
  391. data/lib/fog/cloudstack/requests/compute/list_resource_limits.rb +20 -0
  392. data/lib/fog/cloudstack/requests/compute/list_security_groups.rb +20 -0
  393. data/lib/fog/cloudstack/requests/compute/list_service_offerings.rb +20 -0
  394. data/lib/fog/cloudstack/requests/compute/list_snapshot_policies.rb +20 -0
  395. data/lib/fog/cloudstack/requests/compute/list_snapshots.rb +20 -0
  396. data/lib/fog/cloudstack/requests/compute/list_ssh_key_pairs.rb +20 -0
  397. data/lib/fog/cloudstack/requests/compute/list_storage_pools.rb +20 -0
  398. data/lib/fog/cloudstack/requests/compute/list_templates.rb +20 -0
  399. data/lib/fog/cloudstack/requests/compute/list_usage_records.rb +28 -0
  400. data/lib/fog/cloudstack/requests/compute/list_users.rb +20 -0
  401. data/lib/fog/cloudstack/requests/compute/list_virtual_machines.rb +20 -0
  402. data/lib/fog/cloudstack/requests/compute/list_volumes.rb +20 -0
  403. data/lib/fog/cloudstack/requests/compute/list_zones.rb +20 -0
  404. data/lib/fog/cloudstack/requests/compute/migrate_virtual_machine.rb +20 -0
  405. data/lib/fog/cloudstack/requests/compute/query_async_job_result.rb +20 -0
  406. data/lib/fog/cloudstack/requests/compute/reboot_virtual_machine.rb +20 -0
  407. data/lib/fog/cloudstack/requests/compute/recover_virtual_machine.rb +20 -0
  408. data/lib/fog/cloudstack/requests/compute/register_ssh_key_pair.rb +20 -0
  409. data/lib/fog/cloudstack/requests/compute/register_user_keys.rb +20 -0
  410. data/lib/fog/cloudstack/requests/compute/remove_from_load_balancer_rule.rb +25 -0
  411. data/lib/fog/cloudstack/requests/compute/reset_password_for_virtual_machine.rb +21 -0
  412. data/lib/fog/cloudstack/requests/compute/revoke_security_group_ingress.rb +21 -0
  413. data/lib/fog/cloudstack/requests/compute/start_virtual_machine.rb +20 -0
  414. data/lib/fog/cloudstack/requests/compute/stop_virtual_machine.rb +20 -0
  415. data/lib/fog/cloudstack/requests/compute/update_account.rb +20 -0
  416. data/lib/fog/cloudstack/requests/compute/update_domain.rb +20 -0
  417. data/lib/fog/cloudstack/requests/compute/update_resource_count.rb +20 -0
  418. data/lib/fog/cloudstack/requests/compute/update_user.rb +20 -0
  419. data/lib/fog/cloudstack/requests/compute/update_virtual_machine.rb +20 -0
  420. data/lib/fog/cloudstack.rb +28 -0
  421. data/lib/fog/compute/models/server.rb +11 -0
  422. data/lib/fog/compute.rb +20 -3
  423. data/lib/fog/core/connection.rb +2 -2
  424. data/lib/fog/core/credentials.rb +3 -3
  425. data/lib/fog/core/errors.rb +10 -2
  426. data/lib/fog/core/model.rb +8 -0
  427. data/lib/fog/core/scp.rb +18 -2
  428. data/lib/fog/core/wait_for.rb +1 -1
  429. data/lib/fog/core.rb +1 -3
  430. data/lib/fog/dns.rb +1 -0
  431. data/lib/fog/dnsimple/dns.rb +1 -1
  432. data/lib/fog/dnsmadeeasy/dns.rb +1 -1
  433. data/lib/fog/dynect/models/dns/records.rb +2 -2
  434. data/lib/fog/dynect/requests/dns/get_node_list.rb +2 -1
  435. data/lib/fog/ecloud/compute.rb +1 -1
  436. data/lib/fog/ecloud/requests/compute/add_backup_internet_service.rb +1 -1
  437. data/lib/fog/ecloud/requests/compute/add_internet_service.rb +2 -2
  438. data/lib/fog/ecloud/requests/compute/add_node.rb +1 -1
  439. data/lib/fog/ecloud/requests/compute/clone_vapp.rb +1 -1
  440. data/lib/fog/ecloud/requests/compute/configure_internet_service.rb +1 -1
  441. data/lib/fog/ecloud/requests/compute/configure_network.rb +1 -1
  442. data/lib/fog/ecloud/requests/compute/configure_network_ip.rb +1 -1
  443. data/lib/fog/ecloud/requests/compute/configure_vapp.rb +1 -1
  444. data/lib/fog/ecloud/requests/compute/instantiate_vapp_template.rb +1 -1
  445. data/lib/fog/glesys/compute.rb +4 -2
  446. data/lib/fog/glesys/models/compute/server.rb +14 -14
  447. data/lib/fog/google/requests/storage/get_object.rb +22 -14
  448. data/lib/fog/joyent/compute.rb +228 -0
  449. data/lib/fog/joyent/errors.rb +90 -0
  450. data/lib/fog/joyent/models/compute/flavor.rb +17 -0
  451. data/lib/fog/joyent/models/compute/flavors.rb +25 -0
  452. data/lib/fog/joyent/models/compute/image.rb +18 -0
  453. data/lib/fog/joyent/models/compute/images.rb +25 -0
  454. data/lib/fog/joyent/models/compute/key.rb +19 -0
  455. data/lib/fog/joyent/models/compute/keys.rb +34 -0
  456. data/lib/fog/joyent/models/compute/server.rb +117 -0
  457. data/lib/fog/joyent/models/compute/servers.rb +35 -0
  458. data/lib/fog/joyent/models/compute/snapshot.rb +45 -0
  459. data/lib/fog/joyent/models/compute/snapshots.rb +37 -0
  460. data/lib/fog/joyent/requests/compute/add_machine_tags.rb +20 -0
  461. data/lib/fog/joyent/requests/compute/create_key.rb +56 -0
  462. data/lib/fog/joyent/requests/compute/create_machine.rb +16 -0
  463. data/lib/fog/joyent/requests/compute/create_machine_snapshot.rb +18 -0
  464. data/lib/fog/joyent/requests/compute/delete_all_machine_metadata.rb +16 -0
  465. data/lib/fog/joyent/requests/compute/delete_all_machine_tags.rb +15 -0
  466. data/lib/fog/joyent/requests/compute/delete_key.rb +29 -0
  467. data/lib/fog/joyent/requests/compute/delete_machine.rb +15 -0
  468. data/lib/fog/joyent/requests/compute/delete_machine_metadata.rb +18 -0
  469. data/lib/fog/joyent/requests/compute/delete_machine_snapshot.rb +21 -0
  470. data/lib/fog/joyent/requests/compute/delete_machine_tag.rb +15 -0
  471. data/lib/fog/joyent/requests/compute/get_dataset.rb +28 -0
  472. data/lib/fog/joyent/requests/compute/get_key.rb +29 -0
  473. data/lib/fog/joyent/requests/compute/get_machine.rb +29 -0
  474. data/lib/fog/joyent/requests/compute/get_machine_metadata.rb +25 -0
  475. data/lib/fog/joyent/requests/compute/get_machine_snapshot.rb +14 -0
  476. data/lib/fog/joyent/requests/compute/get_machine_tag.rb +19 -0
  477. data/lib/fog/joyent/requests/compute/get_package.rb +33 -0
  478. data/lib/fog/joyent/requests/compute/list_datasets.rb +24 -0
  479. data/lib/fog/joyent/requests/compute/list_keys.rb +25 -0
  480. data/lib/fog/joyent/requests/compute/list_machine_snapshots.rb +14 -0
  481. data/lib/fog/joyent/requests/compute/list_machine_tags.rb +20 -0
  482. data/lib/fog/joyent/requests/compute/list_machines.rb +25 -0
  483. data/lib/fog/joyent/requests/compute/list_packages.rb +36 -0
  484. data/lib/fog/joyent/requests/compute/reboot_machine.rb +15 -0
  485. data/lib/fog/joyent/requests/compute/resize_machine.rb +13 -0
  486. data/lib/fog/joyent/requests/compute/start_machine.rb +16 -0
  487. data/lib/fog/joyent/requests/compute/start_machine_from_snapshot.rb +15 -0
  488. data/lib/fog/joyent/requests/compute/stop_machine.rb +16 -0
  489. data/lib/fog/joyent/requests/compute/update_machine_metadata.rb +15 -0
  490. data/lib/fog/joyent.rb +8 -0
  491. data/lib/fog/libvirt/compute.rb +7 -3
  492. data/lib/fog/libvirt/models/compute/nodes.rb +1 -3
  493. data/lib/fog/libvirt/models/compute/server.rb +93 -99
  494. data/lib/fog/libvirt/models/compute/servers.rb +2 -1
  495. data/lib/fog/libvirt/models/compute/util.rb +1 -2
  496. data/lib/fog/local/models/storage/file.rb +8 -1
  497. data/lib/fog/local/storage.rb +8 -0
  498. data/lib/fog/ninefold/models/storage/file.rb +8 -0
  499. data/lib/fog/openstack/compute.rb +0 -2
  500. data/lib/fog/openstack.rb +9 -7
  501. data/lib/fog/ovirt/compute.rb +106 -0
  502. data/lib/fog/ovirt/models/compute/cluster.rb +24 -0
  503. data/lib/fog/ovirt/models/compute/clusters.rb +23 -0
  504. data/lib/fog/ovirt/models/compute/interface.rb +22 -0
  505. data/lib/fog/ovirt/models/compute/interfaces.rb +32 -0
  506. data/lib/fog/ovirt/models/compute/server.rb +112 -0
  507. data/lib/fog/ovirt/models/compute/servers.rb +30 -0
  508. data/lib/fog/ovirt/models/compute/template.rb +53 -0
  509. data/lib/fog/ovirt/models/compute/templates.rb +23 -0
  510. data/lib/fog/ovirt/requests/compute/add_interface.rb +23 -0
  511. data/lib/fog/ovirt/requests/compute/create_vm.rb +20 -0
  512. data/lib/fog/ovirt/requests/compute/datacenters.rb +22 -0
  513. data/lib/fog/ovirt/requests/compute/destroy_interface.rb +25 -0
  514. data/lib/fog/ovirt/requests/compute/destroy_vm.rb +22 -0
  515. data/lib/fog/ovirt/requests/compute/get_cluster.rb +18 -0
  516. data/lib/fog/ovirt/requests/compute/get_template.rb +18 -0
  517. data/lib/fog/ovirt/requests/compute/get_virtual_machine.rb +18 -0
  518. data/lib/fog/ovirt/requests/compute/list_clusters.rb +20 -0
  519. data/lib/fog/ovirt/requests/compute/list_networks.rb +17 -0
  520. data/lib/fog/ovirt/requests/compute/list_template_interfaces.rb +20 -0
  521. data/lib/fog/ovirt/requests/compute/list_templates.rb +20 -0
  522. data/lib/fog/ovirt/requests/compute/list_virtual_machines.rb +20 -0
  523. data/lib/fog/ovirt/requests/compute/list_vm_interfaces.rb +20 -0
  524. data/lib/fog/ovirt/requests/compute/mock_files/cluster.xml +20 -0
  525. data/lib/fog/ovirt/requests/compute/mock_files/clusters.xml +39 -0
  526. data/lib/fog/ovirt/requests/compute/mock_files/data_centers.xml +17 -0
  527. data/lib/fog/ovirt/requests/compute/mock_files/nics.xml +10 -0
  528. data/lib/fog/ovirt/requests/compute/mock_files/storage_domains.xml +36 -0
  529. data/lib/fog/ovirt/requests/compute/mock_files/template.xml +39 -0
  530. data/lib/fog/ovirt/requests/compute/mock_files/templates.xml +110 -0
  531. data/lib/fog/ovirt/requests/compute/mock_files/vm.xml +54 -0
  532. data/lib/fog/ovirt/requests/compute/mock_files/vms.xml +152 -0
  533. data/lib/fog/ovirt/requests/compute/storage_domains.rb +22 -0
  534. data/lib/fog/ovirt/requests/compute/update_interface.rb +25 -0
  535. data/lib/fog/ovirt/requests/compute/update_vm.rb +20 -0
  536. data/lib/fog/ovirt/requests/compute/vm_action.rb +26 -0
  537. data/lib/fog/ovirt.rb +17 -0
  538. data/lib/fog/providers.rb +5 -1
  539. data/lib/fog/rackspace/dns.rb +10 -2
  540. data/lib/fog/rackspace/load_balancers.rb +3 -0
  541. data/lib/fog/rackspace/models/compute/flavor.rb +2 -0
  542. data/lib/fog/rackspace/models/compute/server.rb +2 -2
  543. data/lib/fog/rackspace/models/dns/callback.rb +3 -1
  544. data/lib/fog/rackspace/models/dns/record.rb +4 -0
  545. data/lib/fog/rackspace/models/load_balancers/load_balancer.rb +18 -8
  546. data/lib/fog/rackspace/models/storage/directory.rb +5 -1
  547. data/lib/fog/rackspace/models/storage/file.rb +7 -0
  548. data/lib/fog/rackspace/requests/compute/create_image.rb +1 -3
  549. data/lib/fog/rackspace/requests/load_balancers/delete_nodes.rb +1 -2
  550. data/lib/fog/rackspace/requests/load_balancers/get_error_page.rb +15 -0
  551. data/lib/fog/rackspace/requests/load_balancers/list_load_balancers.rb +8 -2
  552. data/lib/fog/rackspace/requests/load_balancers/remove_error_page.rb +15 -0
  553. data/lib/fog/rackspace/requests/load_balancers/set_error_page.rb +21 -0
  554. data/lib/fog/rackspace/requests/storage/copy_object.rb +27 -0
  555. data/lib/fog/rackspace/requests/storage/get_object.rb +8 -2
  556. data/lib/fog/rackspace/requests/storage/put_object.rb +6 -5
  557. data/lib/fog/rackspace/storage.rb +1 -0
  558. data/lib/fog/storm_on_demand/compute.rb +1 -1
  559. data/lib/fog/vcloud/compute.rb +91 -30
  560. data/lib/fog/vcloud/models/compute/catalog.rb +1 -1
  561. data/lib/fog/vcloud/models/compute/catalog_item.rb +1 -1
  562. data/lib/fog/vcloud/models/compute/catalogs.rb +5 -8
  563. data/lib/fog/vcloud/models/compute/helpers/status.rb +37 -0
  564. data/lib/fog/vcloud/models/compute/ip.rb +2 -2
  565. data/lib/fog/vcloud/models/compute/network.rb +9 -51
  566. data/lib/fog/vcloud/models/compute/networks.rb +21 -7
  567. data/lib/fog/vcloud/models/compute/organization.rb +43 -0
  568. data/lib/fog/vcloud/models/compute/organizations.rb +32 -0
  569. data/lib/fog/vcloud/models/compute/server.rb +38 -58
  570. data/lib/fog/vcloud/models/compute/servers.rb +12 -18
  571. data/lib/fog/vcloud/models/compute/task.rb +1 -1
  572. data/lib/fog/vcloud/models/compute/tasks.rb +1 -3
  573. data/lib/fog/vcloud/models/compute/vapp.rb +43 -0
  574. data/lib/fog/vcloud/models/compute/vapps.rb +28 -0
  575. data/lib/fog/vcloud/models/compute/vdc.rb +14 -29
  576. data/lib/fog/vcloud/models/compute/vdcs.rb +6 -11
  577. data/lib/fog/vcloud/requests/compute/clone_vapp.rb +1 -1
  578. data/lib/fog/vcloud/requests/compute/configure_network.rb +1 -1
  579. data/lib/fog/vcloud/requests/compute/configure_network_ip.rb +1 -1
  580. data/lib/fog/vcloud/requests/compute/configure_vapp.rb +1 -1
  581. data/lib/fog/vcloud/requests/compute/configure_vm.rb +1 -1
  582. data/lib/fog/vcloud/requests/compute/get_server.rb +10 -0
  583. data/lib/fog/vcloud/requests/compute/instantiate_vapp_template.rb +1 -1
  584. data/lib/fog/vcloud/requests/compute/login.rb +8 -4
  585. data/lib/fog/virtual_box/compute.rb +4 -0
  586. data/lib/fog/vmfusion/models/compute/server.rb +120 -52
  587. data/lib/fog/vmfusion/models/compute/servers.rb +11 -7
  588. data/lib/fog/voxel/compute.rb +1 -1
  589. data/lib/fog/vsphere/compute.rb +6 -0
  590. data/lib/fog/vsphere/models/compute/server.rb +43 -0
  591. data/lib/fog/vsphere/models/compute/servers.rb +8 -2
  592. data/lib/fog/vsphere/requests/compute/datacenters.rb +34 -0
  593. data/lib/fog/vsphere/requests/compute/list_virtual_machines.rb +132 -91
  594. data/lib/fog/vsphere/requests/compute/vm_clone.rb +115 -41
  595. data/lib/fog/vsphere/requests/compute/vm_create.rb +97 -0
  596. data/lib/fog/vsphere/requests/compute/vm_migrate.rb +37 -0
  597. data/lib/fog/vsphere/requests/compute/vm_reconfig_cpus.rb +23 -0
  598. data/lib/fog/vsphere/requests/compute/vm_reconfig_hardware.rb +25 -0
  599. data/lib/fog/vsphere/requests/compute/vm_reconfig_memory.rb +23 -0
  600. data/lib/fog/zerigo/models/dns/record.rb +7 -5
  601. data/lib/fog/zerigo/parsers/dns/create_host.rb +3 -1
  602. data/lib/fog/zerigo/parsers/dns/find_hosts.rb +3 -1
  603. data/lib/fog/zerigo/parsers/dns/get_host.rb +3 -1
  604. data/lib/fog/zerigo/parsers/dns/get_zone.rb +3 -1
  605. data/lib/fog/zerigo/parsers/dns/list_hosts.rb +3 -1
  606. data/lib/fog/zerigo/requests/dns/update_host.rb +2 -2
  607. data/lib/fog.rb +1 -1
  608. data/spec/ecloud/spec_helper.rb +1 -1
  609. data/spec/lib/fog/aws/parsers/sqs/receive_message_spec.rb +58 -0
  610. data/tests/aws/models/beanstalk/application_tests.rb +70 -0
  611. data/tests/aws/models/beanstalk/applications_tests.rb +7 -0
  612. data/tests/aws/models/beanstalk/environment_tests.rb +132 -0
  613. data/tests/aws/models/beanstalk/environments_tests.rb +34 -0
  614. data/tests/aws/models/beanstalk/template_tests.rb +47 -0
  615. data/tests/aws/models/beanstalk/templates_tests.rb +62 -0
  616. data/tests/aws/models/beanstalk/version_tests.rb +66 -0
  617. data/tests/aws/models/beanstalk/versions_tests.rb +61 -0
  618. data/tests/aws/models/compute/subnet_tests.rb +5 -0
  619. data/tests/aws/models/compute/subnets_tests.rb +6 -0
  620. data/tests/aws/models/compute/vpc_tests.rb +4 -0
  621. data/tests/aws/models/compute/vpcs_tests.rb +6 -0
  622. data/tests/aws/models/dns/record_tests.rb +23 -0
  623. data/tests/aws/models/dns/records_tests.rb +23 -0
  624. data/tests/aws/models/dns/zone_tests.rb +4 -0
  625. data/tests/aws/models/dns/zones_tests.rb +4 -0
  626. data/tests/aws/models/elb/model_tests.rb +15 -6
  627. data/tests/aws/models/rds/security_group_tests.rb +6 -3
  628. data/tests/aws/models/rds/security_groups_tests.rb +1 -2
  629. data/tests/aws/models/rds/server_tests.rb +5 -3
  630. data/tests/aws/models/rds/servers_tests.rb +1 -3
  631. data/tests/aws/models/rds/snapshot_tests.rb +1 -3
  632. data/tests/aws/models/rds/snapshots_tests.rb +1 -3
  633. data/tests/aws/models/storage/directory_tests.rb +51 -0
  634. data/tests/aws/models/storage/file_tests.rb +80 -0
  635. data/tests/aws/models/storage/files_tests.rb +56 -0
  636. data/tests/aws/models/storage/version_tests.rb +52 -0
  637. data/tests/aws/models/storage/versions_tests.rb +56 -0
  638. data/tests/aws/requests/auto_scaling/helper.rb +2 -2
  639. data/tests/aws/requests/beanstalk/application_tests.rb +140 -0
  640. data/tests/aws/requests/beanstalk/solution_stack_tests.rb +22 -0
  641. data/tests/aws/requests/compute/address_tests.rb +7 -5
  642. data/tests/aws/requests/compute/instance_tests.rb +37 -0
  643. data/tests/aws/requests/compute/security_group_tests.rb +78 -4
  644. data/tests/aws/requests/compute/subnet_tests.rb +36 -0
  645. data/tests/aws/requests/compute/volume_tests.rb +4 -0
  646. data/tests/aws/requests/compute/vpc_tests.rb +34 -0
  647. data/tests/aws/requests/dns/dns_tests.rb +106 -99
  648. data/tests/aws/requests/dns/helper.rb +21 -0
  649. data/tests/aws/requests/dynamodb/item_tests.rb +117 -0
  650. data/tests/aws/requests/dynamodb/table_tests.rb +99 -0
  651. data/tests/aws/requests/elb/helper.rb +33 -0
  652. data/tests/aws/requests/elb/listener_tests.rb +22 -4
  653. data/tests/aws/requests/elb/policy_tests.rb +13 -0
  654. data/tests/aws/requests/iam/access_key_tests.rb +2 -7
  655. data/tests/aws/requests/iam/group_tests.rb +1 -4
  656. data/tests/aws/requests/iam/helper.rb +19 -0
  657. data/tests/aws/requests/iam/server_certificate_tests.rb +5 -0
  658. data/tests/aws/requests/iam/user_policy_tests.rb +4 -11
  659. data/tests/aws/requests/iam/user_tests.rb +19 -12
  660. data/tests/aws/requests/rds/helper.rb +45 -11
  661. data/tests/aws/requests/rds/instance_tests.rb +2 -3
  662. data/tests/aws/requests/rds/parameter_group_tests.rb +1 -7
  663. data/tests/aws/requests/rds/security_group_tests.rb +101 -0
  664. data/tests/aws/requests/storage/{hash_to_acl_tests.rb → acl_utils_tests.rb} +38 -2
  665. data/tests/aws/requests/storage/bucket_tests.rb +66 -4
  666. data/tests/aws/requests/storage/object_tests.rb +2 -4
  667. data/tests/aws/requests/storage/versioning_tests.rb +188 -0
  668. data/tests/aws/requests/sts/get_federation_token_tests.rb +21 -0
  669. data/tests/aws/requests/sts/session_token_tests.rb +16 -0
  670. data/tests/bluebox/requests/compute/block_tests.rb +9 -8
  671. data/tests/bluebox/requests/compute/helper.rb +5 -0
  672. data/tests/bluebox/requests/compute/location_tests.rb +32 -0
  673. data/tests/bluebox/requests/compute/product_tests.rb +10 -4
  674. data/tests/bluebox/requests/compute/template_tests.rb +4 -2
  675. data/tests/brightbox/requests/compute/account_tests.rb +11 -6
  676. data/tests/brightbox/requests/compute/api_client_tests.rb +23 -12
  677. data/tests/brightbox/requests/compute/cloud_ip_tests.rb +32 -17
  678. data/tests/brightbox/requests/compute/helper.rb +62 -11
  679. data/tests/brightbox/requests/compute/image_tests.rb +17 -14
  680. data/tests/brightbox/requests/compute/interface_tests.rb +3 -2
  681. data/tests/brightbox/requests/compute/load_balancer_tests.rb +57 -11
  682. data/tests/brightbox/requests/compute/server_group_tests.rb +29 -22
  683. data/tests/brightbox/requests/compute/server_tests.rb +43 -22
  684. data/tests/brightbox/requests/compute/server_type_tests.rb +7 -6
  685. data/tests/brightbox/requests/compute/user_tests.rb +11 -16
  686. data/tests/brightbox/requests/compute/zone_tests.rb +7 -6
  687. data/tests/clodo/requests/compute/image_tests.rb +36 -0
  688. data/tests/clodo/requests/compute/server_tests.rb +152 -0
  689. data/tests/cloudstack/requests/disk_offering_tests.rb +29 -0
  690. data/tests/cloudstack/requests/os_type_tests.rb +38 -0
  691. data/tests/cloudstack/requests/security_group_tests.rb +29 -0
  692. data/tests/cloudstack/requests/service_offering_tests.rb +38 -0
  693. data/tests/cloudstack/requests/snapshot_tests.rb +32 -0
  694. data/tests/cloudstack/requests/ssh_key_pair_tests.rb +23 -0
  695. data/tests/cloudstack/requests/template_tests.rb +53 -0
  696. data/tests/cloudstack/requests/virtual_machine_tests.rb +71 -0
  697. data/tests/cloudstack/requests/volume_tests.rb +48 -0
  698. data/tests/cloudstack/requests/zone_tests.rb +33 -0
  699. data/tests/cloudstack/signed_params_tests.rb +12 -0
  700. data/tests/compute/helper.rb +8 -3
  701. data/tests/core/credential_tests.rb +2 -2
  702. data/tests/glesys/requests/compute/helper.rb +187 -139
  703. data/tests/glesys/requests/compute/ip_tests.rb +4 -4
  704. data/tests/glesys/requests/compute/server_tests.rb +55 -17
  705. data/tests/helper.rb +1 -1
  706. data/tests/helpers/formats_helper.rb +1 -1
  707. data/tests/helpers/mock_helper.rb +9 -2
  708. data/tests/joyent/requests/compute/datasets_tests.rb +49 -0
  709. data/tests/joyent/requests/compute/keys_tests.rb +47 -0
  710. data/tests/joyent/requests/compute/machines_tests.rb +67 -0
  711. data/tests/joyent/requests/compute/packages_tests.rb +68 -0
  712. data/tests/ovirt/compute_tests.rb +24 -0
  713. data/tests/ovirt/models/compute/cluster_tests.rb +31 -0
  714. data/tests/ovirt/models/compute/clusters_tests.rb +9 -0
  715. data/tests/ovirt/models/compute/interface_tests.rb +27 -0
  716. data/tests/ovirt/models/compute/interfaces_tests.rb +9 -0
  717. data/tests/ovirt/models/compute/server_tests.rb +51 -0
  718. data/tests/ovirt/models/compute/servers_tests.rb +14 -0
  719. data/tests/ovirt/models/compute/template_tests.rb +28 -0
  720. data/tests/ovirt/models/compute/templates_tests.rb +9 -0
  721. data/tests/ovirt/requests/compute/create_vm_tests.rb +26 -0
  722. data/tests/ovirt/requests/compute/destroy_vm_tests.rb +18 -0
  723. data/tests/ovirt/requests/compute/list_datacenters_tests.rb +13 -0
  724. data/tests/ovirt/requests/compute/list_storage_domains_tests.rb +13 -0
  725. data/tests/ovirt/requests/compute/update_vm_tests.rb +18 -0
  726. data/tests/rackspace/models/dns/zone_tests.rb +14 -0
  727. data/tests/rackspace/models/{load_balancer_tests.rb → load_balancers/load_balancer_tests.rb} +25 -0
  728. data/tests/rackspace/requests/dns/dns_tests.rb +4 -2
  729. data/tests/rackspace/requests/load_balancers/error_page_tests.rb +31 -0
  730. data/tests/rackspace/requests/load_balancers/helper.rb +27 -11
  731. data/tests/rackspace/requests/load_balancers/load_balancer_tests.rb +4 -1
  732. data/tests/rackspace/requests/load_balancers/node_tests.rb +24 -25
  733. data/tests/slicehost/requests/compute/slice_tests.rb +2 -2
  734. data/tests/storm_on_demand/requests/compute/server_tests.rb +3 -3
  735. data/tests/vcloud/data/api_+_admin_+_network_+_2 +110 -0
  736. data/tests/vcloud/data/api_+_network_+_1 +44 -0
  737. data/tests/vcloud/data/api_+_org_+_ +5 -0
  738. data/tests/vcloud/data/api_+_org_+_1 +17 -0
  739. data/tests/vcloud/data/api_+_sessions +8 -0
  740. data/tests/vcloud/data/api_+_v1.0_+_admin_+_network_+_2 +110 -0
  741. data/tests/vcloud/data/api_+_v1.0_+_login +5 -0
  742. data/tests/vcloud/data/api_+_v1.0_+_network_+_1 +44 -0
  743. data/tests/vcloud/data/api_+_v1.0_+_network_+_2 +31 -0
  744. data/tests/vcloud/data/api_+_v1.0_+_org_+_1 +17 -0
  745. data/tests/vcloud/data/api_+_v1.0_+_vApp_+_vapp-1 +369 -0
  746. data/tests/vcloud/data/api_+_v1.0_+_vApp_+_vm-1 +139 -0
  747. data/tests/vcloud/data/api_+_v1.0_+_vApp_+_vm-2 +155 -0
  748. data/tests/vcloud/data/api_+_v1.0_+_vdc_+_1 +61 -0
  749. data/tests/vcloud/data/api_+_vApp_+_vapp-1 +369 -0
  750. data/tests/vcloud/data/api_+_vApp_+_vm-2 +155 -0
  751. data/tests/vcloud/data/api_+_vdc_+_1 +61 -0
  752. data/tests/vcloud/models/compute/conn_helper.rb +20 -0
  753. data/tests/vcloud/models/compute/network_tests.rb +67 -0
  754. data/tests/vcloud/models/compute/networks_tests.rb +61 -0
  755. data/tests/vcloud/models/compute/organization_tests.rb +20 -0
  756. data/tests/vcloud/models/compute/organizations_tests.rb +16 -0
  757. data/tests/vcloud/models/compute/server_tests.rb +142 -0
  758. data/tests/vcloud/models/compute/servers_tests.rb +18 -90
  759. data/tests/vcloud/models/compute/vapp_tests.rb +32 -0
  760. data/tests/vcloud/models/compute/vapps_tests.rb +19 -0
  761. data/tests/vcloud/models/compute/vdc_tests.rb +48 -0
  762. data/tests/vcloud/models/compute/vdcs_tests.rb +24 -0
  763. data/tests/vsphere/requests/compute/vm_clone_tests.rb +16 -8
  764. data/tests/vsphere/requests/compute/vm_create_tests.rb +20 -0
  765. data/tests/vsphere/requests/compute/vm_migrate_tests.rb +16 -0
  766. data/tests/vsphere/requests/compute/vm_power_on_tests.rb +1 -1
  767. data/tests/vsphere/requests/compute/vm_reconfig_cpus_tests.rb +19 -0
  768. data/tests/vsphere/requests/compute/vm_reconfig_hardware_tests.rb +19 -0
  769. data/tests/vsphere/requests/compute/vm_reconfig_memory_tests.rb +19 -0
  770. metadata +635 -70
  771. data/examples/compute_tests.rb +0 -71
  772. data/examples/dns_tests.rb +0 -78
  773. data/examples/storage_tests.rb +0 -105
  774. /data/tests/rackspace/models/{access_list_tests.rb → load_balancers/access_list_tests.rb} +0 -0
  775. /data/tests/rackspace/models/{access_lists_tests.rb → load_balancers/access_lists_tests.rb} +0 -0
  776. /data/tests/rackspace/models/{load_balancers_tests.rb → load_balancers/load_balancers_tests.rb} +0 -0
  777. /data/tests/rackspace/models/{node_tests.rb → load_balancers/node_tests.rb} +0 -0
  778. /data/tests/rackspace/models/{nodes_tests.rb → load_balancers/nodes_tests.rb} +0 -0
  779. /data/tests/rackspace/models/{virtual_ip_tests.rb → load_balancers/virtual_ip_tests.rb} +0 -0
  780. /data/tests/rackspace/models/{virtual_ips_tests.rb → load_balancers/virtual_ips_tests.rb} +0 -0
@@ -29,6 +29,22 @@ module Fog
29
29
  end
30
30
 
31
31
  end
32
+
33
+ class Mock
34
+
35
+ def delete_user_policy(user_name, policy_name)
36
+ if data[:users].has_key?(user_name) && data[:users][user_name][:policies].has_key?(policy_name)
37
+ data[:users][user_name][:policies].delete policy_name
38
+ Excon::Response.new.tap do |response|
39
+ response.body = { 'RequestId' => Fog::AWS::Mock.request_id }
40
+ response.status = 200
41
+ end
42
+ else
43
+ raise Fog::AWS::IAM::NotFound.new("The user policy with name #{policy_name} cannot be found.")
44
+ end
45
+ end
46
+
47
+ end
32
48
  end
33
49
  end
34
50
  end
@@ -35,6 +35,27 @@ module Fog
35
35
  end
36
36
 
37
37
  end
38
+
39
+ class Mock
40
+
41
+ def list_access_keys(options = {})
42
+ #FIXME: Doesn't do anything with options, aside from UserName
43
+ user = options['UserName']
44
+
45
+ if data[:users].has_key? user
46
+ Excon::Response.new.tap do |response|
47
+ response.body = { 'AccessKeys' => data[:users][user][:access_keys].map do |akey|
48
+ {'Status' => akey['Status'], 'AccessKeyId' => akey['AccessKeyId']}
49
+ end,
50
+ 'IsTruncated' => false,
51
+ 'RequestId' => Fog::AWS::Mock.request_id }
52
+ response.status = 200
53
+ end
54
+ else
55
+ raise Fog::AWS::IAM::NotFound.new("The user with name #{user} cannot be found.")
56
+ end
57
+ end
58
+ end
38
59
  end
39
60
  end
40
61
  end
@@ -37,6 +37,24 @@ module Fog
37
37
  end
38
38
 
39
39
  end
40
+
41
+ class Mock
42
+
43
+ def list_groups(options = {} )
44
+ #FIXME: Doesn't observe options
45
+ Excon::Response.new.tap do |response|
46
+ response.status = 200
47
+ response.body = { 'Groups' => data[:groups].map do |name, group|
48
+ { 'GroupId' => group[:group_id],
49
+ 'GroupName' => name,
50
+ 'Path' => group[:path],
51
+ 'Arn' => (group[:arn]).strip }
52
+ end,
53
+ 'IsTruncated' => false,
54
+ 'RequestId' => Fog::AWS::Mock.request_id }
55
+ end
56
+ end
57
+ end
40
58
  end
41
59
  end
42
60
  end
@@ -38,6 +38,30 @@ module Fog
38
38
  end
39
39
 
40
40
  end
41
+
42
+ class Mock
43
+ def list_groups_for_user(user_name, options = {})
44
+ #FIXME: Does not consider options
45
+ if data[:users].has_key? user_name
46
+ Excon::Response.new.tap do |response|
47
+ response.status = 200
48
+ response.body = { 'GroupsForUser' => data[:groups].select do |name, group|
49
+ group[:members].include? user_name
50
+ end.map do |name, group|
51
+ { 'GroupId' => group[:group_id],
52
+ 'GroupName' => name,
53
+ 'Path' => group[:path],
54
+ 'Arn' => (group[:arn]).strip }
55
+ end,
56
+ 'IsTruncated' => false,
57
+ 'RequestId' => Fog::AWS::Mock.request_id
58
+ }
59
+ end
60
+ else
61
+ raise Fog::AWS::IAM::NotFound.new("The user with name #{user_name} cannot be found.")
62
+ end
63
+ end
64
+ end
41
65
  end
42
66
  end
43
67
  end
@@ -34,6 +34,24 @@ module Fog
34
34
  end
35
35
 
36
36
  end
37
+
38
+ class Mock
39
+
40
+ def list_user_policies(user_name, options = {})
41
+ #FIXME: doesn't use options atm
42
+ if data[:users].has_key? user_name
43
+ Excon::Response.new.tap do |response|
44
+ response.body = { 'PolicyNames' => data[:users][user_name][:policies].keys,
45
+ 'IsTruncated' => false,
46
+ 'RequestId' => Fog::AWS::Mock.request_id }
47
+ response.status = 200
48
+ end
49
+ else
50
+ raise Fog::AWS::IAM::NotFound.new("The user with name #{user_name} cannot be found.")
51
+ end
52
+ end
53
+
54
+ end
37
55
  end
38
56
  end
39
57
  end
@@ -37,6 +37,23 @@ module Fog
37
37
  end
38
38
 
39
39
  end
40
+
41
+ class Mock
42
+ def list_users(options = {})
43
+ #FIXME: none of the options are currently supported
44
+ Excon::Response.new.tap do |response|
45
+ response.body = {'Users' => data[:users].map do |user, data|
46
+ { 'UserId' => data[:user_id],
47
+ 'Path' => data[:path],
48
+ 'UserName' => user,
49
+ 'Arn' => (data[:arn]).strip }
50
+ end,
51
+ 'IsTruncated' => false,
52
+ 'RequestId' => Fog::AWS::Mock.request_id }
53
+ response.status = 200
54
+ end
55
+ end
56
+ end
40
57
  end
41
58
  end
42
59
  end
@@ -31,6 +31,24 @@ module Fog
31
31
  end
32
32
 
33
33
  end
34
+
35
+ class Mock
36
+
37
+ #FIXME: You can't actually use the credentials for anything elsewhere in Fog
38
+ #FIXME: Doesn't do any validation on the policy
39
+ def put_user_policy(user_name, policy_name, policy_document)
40
+ if data[:users].has_key? user_name
41
+ data[:users][user_name][:policies][policy_name] = policy_document
42
+
43
+ Excon::Response.new.tap do |response|
44
+ response.body = { 'RequestId' => Fog::AWS::Mock.request_id }
45
+ response.status = 200
46
+ end
47
+ else
48
+ raise Fog::AWS::IAM::NotFound.new("The user with name #{user_name} cannot be found.")
49
+ end
50
+ end
51
+ end
34
52
  end
35
53
  end
36
54
  end
@@ -29,6 +29,25 @@ module Fog
29
29
  end
30
30
 
31
31
  end
32
+
33
+ class Mock
34
+
35
+ def remove_user_from_group(group_name, user_name)
36
+ if data[:groups].has_key? group_name
37
+ if data[:users].has_key? user_name
38
+ data[:groups][group_name][:members].delete_if { |item| item == user_name }
39
+ Excon::Response.new.tap do |response|
40
+ response.status = 200
41
+ response.body = { 'RequestId' => Fog::AWS::Mock.request_id }
42
+ end
43
+ else
44
+ raise Fog::AWS::IAM::NotFound.new("The user with name #{user_name} cannot be found.")
45
+ end
46
+ else
47
+ raise Fog::AWS::IAM::NotFound.new("The group with name #{group_name} cannot be found.")
48
+ end
49
+ end
50
+ end
32
51
  end
33
52
  end
34
53
  end
@@ -51,6 +51,9 @@ module Fog
51
51
 
52
52
  # Validate cert and key
53
53
  begin
54
+ # must be an RSA private key
55
+ raise OpenSSL::PKey::RSAError unless private_key =~ /BEGIN RSA PRIVATE KEY/
56
+
54
57
  cert = OpenSSL::X509::Certificate.new(certificate)
55
58
  chain = OpenSSL::X509::Certificate.new(options['CertificateChain']) if options['CertificateChain']
56
59
  key = OpenSSL::PKey::RSA.new(private_key)
@@ -71,7 +74,7 @@ module Fog
71
74
  raise Fog::AWS::IAM::EntityAlreadyExists.new
72
75
  else
73
76
  response.status = 200
74
- path = options['path'] || "/"
77
+ path = options['Path'] || "/"
75
78
  data = {
76
79
  'Arn' => Fog::AWS::Mock.arn('iam', self.data[:owner_id], "server-certificate/#{name}"),
77
80
  'Path' => path,
@@ -33,7 +33,36 @@ module Fog
33
33
  class Mock
34
34
 
35
35
  def authorize_db_security_group_ingress(name, opts = {})
36
- Fog::Mock.not_implemented
36
+ unless opts.key?('CIDRIP') || (opts.key?('EC2SecurityGroupName') && opts.key?('EC2SecurityGroupOwnerId'))
37
+ raise ArgumentError, 'Must specify CIDRIP, or both EC2SecurityGroupName and EC2SecurityGroupOwnerId'
38
+ end
39
+
40
+ response = Excon::Response.new
41
+
42
+ if sec_group = self.data[:security_groups][name]
43
+ if opts.key?('CIDRIP')
44
+ if sec_group['IPRanges'].detect{|h| h['CIDRIP'] == opts['CIDRIP']}
45
+ raise Fog::AWS::RDS::AuthorizationAlreadyExists.new("AuthorizationAlreadyExists => #{opts['CIDRIP']} is alreay defined")
46
+ end
47
+ sec_group['IPRanges'] << opts.merge({"Status" => 'authorizing'})
48
+ else
49
+ if sec_group['EC2SecurityGroups'].detect{|h| h['EC2SecurityGroupName'] == opts['EC2SecurityGroupName']}
50
+ raise Fog::AWS::RDS::AuthorizationAlreadyExists.new("AuthorizationAlreadyExists => #{opts['EC2SecurityGroupName']} is alreay defined")
51
+ end
52
+ sec_group['EC2SecurityGroups'] << opts.merge({"Status" => 'authorizing'})
53
+ end
54
+ response.status = 200
55
+ response.body = {
56
+ "ResponseMetadata"=>{ "RequestId"=> Fog::AWS::Mock.request_id },
57
+ 'AuthorizeDBSecurityGroupIngressResult' => {
58
+ 'DBSecurityGroup' => sec_group
59
+ }
60
+ }
61
+ response
62
+ else
63
+ raise Fog::AWS::RDS::NotFound.new("DBSecurityGroupNotFound => #{name} not found")
64
+ end
65
+
37
66
  end
38
67
 
39
68
  end
@@ -9,15 +9,15 @@ module Fog
9
9
  # http://docs.amazonwebservices.com/AmazonRDS/latest/APIReference/API_CreateDBInstance.html
10
10
  # ==== Parameters
11
11
  # * DBInstanceIdentifier <~String> - name of the db instance to modify
12
- #
12
+ #
13
13
  # * AllocatedStorage <~Integer> Storage space, in GB
14
- # * AutoMinorVersionUpgrade <~Boolean> Indicates that minor version upgrades will be applied automatically to the DB Instance during the maintenance window
14
+ # * AutoMinorVersionUpgrade <~Boolean> Indicates that minor version upgrades will be applied automatically to the DB Instance during the maintenance window
15
15
  # * AvailabilityZone <~String> The availability zone to create the instance in
16
16
  # * BackupRetentionPeriod <~Integer> 0-8 The number of days to retain automated backups.
17
17
  # * DBInstanceClass <~String> The new compute and memory capacity of the DB Instance
18
18
  # * DBName <~String> The name of the database to create when the DB Instance is created
19
- # * DBParameterGroupName <~String> The name of the DB Parameter Group to apply to this DB Instance
20
- # * DBSecurityGroups <~Array> A list of DB Security Groups to authorize on this DB Instance
19
+ # * DBParameterGroupName <~String> The name of the DB Parameter Group to apply to this DB Instance
20
+ # * DBSecurityGroups <~Array> A list of DB Security Groups to authorize on this DB Instance
21
21
  # * Engine <~String> The name of the database engine to be used for this instance.
22
22
  # * EngineVersion <~String> The version number of the database engine to use.
23
23
  # * MasterUsername <~String> The db master user
@@ -30,11 +30,11 @@ module Fog
30
30
  # * response<~Excon::Response>:
31
31
  # * body<~Hash>:
32
32
  def create_db_instance(db_name, options={})
33
-
33
+
34
34
  if security_groups = options.delete('DBSecurityGroups')
35
35
  options.merge!(Fog::AWS.indexed_param('DBSecurityGroups.member.%d', [*security_groups]))
36
36
  end
37
-
37
+
38
38
  request({
39
39
  'Action' => 'CreateDBInstance',
40
40
  'DBInstanceIdentifier' => db_name,
@@ -47,7 +47,73 @@ module Fog
47
47
  class Mock
48
48
 
49
49
  def create_db_instance(db_name, options={})
50
- Fog::Mock.not_implemented
50
+ response = Excon::Response.new
51
+ if self.data[:servers] and self.data[:servers][db_name]
52
+ # I don't know how to raise an exception that contains the excon data
53
+ #response.status = 400
54
+ #response.body = {
55
+ # 'Code' => 'DBInstanceAlreadyExists',
56
+ # 'Message' => "DB Instance already exists"
57
+ #}
58
+ #return response
59
+ raise Fog::AWS::RDS::IdentifierTaken.new("DBInstanceAlreadyExists #{response.body.to_s}")
60
+ end
61
+
62
+ # These are the required parameters according to the API
63
+ required_params = %w{AllocatedStorage DBInstanceClass Engine MasterUserPassword MasterUsername }
64
+ required_params.each do |key|
65
+ unless options.has_key?(key) and options[key] and !options[key].to_s.empty?
66
+ #response.status = 400
67
+ #response.body = {
68
+ # 'Code' => 'MissingParameter',
69
+ # 'Message' => "The request must contain the parameter #{key}"
70
+ #}
71
+ #return response
72
+ raise Fog::AWS::RDS::NotFound.new("The request must contain the parameter #{key}")
73
+ end
74
+ end
75
+
76
+ data =
77
+ {
78
+ "DBInstanceIdentifier"=> db_name,
79
+ "DBName" => options["DBName"],
80
+ "InstanceCreateTime" => nil,
81
+ "AutoMinorVersionUpgrade"=>true,
82
+ "Endpoint"=>{},
83
+ "ReadReplicaDBInstanceIdentifiers"=>['bla'],
84
+ "PreferredMaintenanceWindow"=>"mon:04:30-mon:05:00",
85
+ "Engine"=> options["Engine"],
86
+ "EngineVersion"=> options["EngineVersion"] || "5.1.57",
87
+ "PendingModifiedValues"=>{"MasterUserPassword"=>"****"}, # This clears when is available
88
+ "MultiAZ"=>false,
89
+ "MasterUsername"=> options["MasterUsername"],
90
+ "DBInstanceClass"=> options["DBInstanceClass"],
91
+ "DBInstanceStatus"=>"creating",
92
+ "BackupRetentionPeriod"=> options["BackupRetentionPeriod"] || 1,
93
+ "AllocatedStorage"=> options["AllocatedStorage"],
94
+ "DBParameterGroups"=> # I think groups should be in the self.data method
95
+ [{"DBParameterGroupName"=>"default.mysql5.1",
96
+ "ParameterApplyStatus"=>"in-sync"}],
97
+ "DBSecurityGroups"=>
98
+ [{"Status"=>"active",
99
+ "DBSecurityGroupName"=>"default"}],
100
+ "LicenseModel"=>"general-public-license",
101
+ "PreferredBackupWindow"=>"08:00-08:30",
102
+ # "ReadReplicaSourceDBInstanceIdentifier" => nil,
103
+ # "LatestRestorableTime" => nil,
104
+ "AvailabilityZone" => options["AvailabilityZone"]
105
+ }
106
+
107
+
108
+ self.data[:servers][db_name] = data
109
+ response.body = {
110
+ "ResponseMetadata"=>{ "RequestId"=> Fog::AWS::Mock.request_id },
111
+ "CreateDBInstanceResult"=> {"DBInstance"=> data}
112
+ }
113
+ response.status = 200
114
+ # This values aren't showed at creating time but at available time
115
+ self.data[:servers][db_name]["InstanceCreateTime"] = Time.now
116
+ response
51
117
  end
52
118
 
53
119
  end
@@ -32,7 +32,25 @@ module Fog
32
32
  class Mock
33
33
 
34
34
  def create_db_parameter_group(group_name, group_family, description)
35
- Fog::Mock.not_implemented
35
+ response = Excon::Response.new
36
+ if self.data[:parameter_groups] and self.data[:parameter_groups][group_name]
37
+ raise Fog::AWS::RDS::IdentifierTaken.new("Parameter group #{group_name} already exists")
38
+ end
39
+
40
+ data = {
41
+ 'DBParameterGroupName' => group_name,
42
+ 'DBParameterGroupFamily' => group_family.downcase,
43
+ 'Description' => description
44
+ }
45
+ self.data[:parameter_groups][group_name] = data
46
+
47
+ response.body = {
48
+ "ResponseMetadata"=>{ "RequestId"=> Fog::AWS::Mock.request_id },
49
+ "CreateDBParameterGroupResult"=> {"DBParameterGroup"=> data}
50
+ }
51
+ response.status = 200
52
+ response
53
+
36
54
  end
37
55
 
38
56
  end
@@ -27,7 +27,25 @@ module Fog
27
27
  class Mock
28
28
 
29
29
  def create_db_security_group(name, description = name)
30
- Fog::Mock.not_implemented
30
+ response = Excon::Response.new
31
+ if self.data[:security_groups] and self.data[:security_groups][name]
32
+ raise Fog::AWS::RDS::IdentifierTaken.new("DBInstanceAlreadyExists => The security group '#{name}' already exists")
33
+ end
34
+
35
+ data = {
36
+ 'DBSecurityGroupName' => name,
37
+ 'DBSecurityGroupDescription' => description,
38
+ 'EC2SecurityGroups' => [],
39
+ 'IPRanges' => [],
40
+ 'OwnerId' => '0123456789'
41
+ }
42
+ self.data[:security_groups][name] = data
43
+ response.body = {
44
+ "ResponseMetadata"=>{ "RequestId"=> Fog::AWS::Mock.request_id },
45
+ 'CreateDBSecurityGroupResult' => { 'DBSecurityGroup' => data }
46
+ }
47
+ response
48
+
31
49
  end
32
50
 
33
51
  end
@@ -27,9 +27,45 @@ module Fog
27
27
  class Mock
28
28
 
29
29
  def create_db_snapshot(identifier, name)
30
- Fog::Mock.not_implemented
31
- end
30
+ response = Excon::Response.new
31
+ if data[:snapshots][name]
32
+ raise Fog::AWS::RDS::IndentifierTaken.new
33
+ end
34
+
35
+ server_data = data[:servers][identifier]
36
+ unless server_data
37
+ raise Fog::AWS::RDS::NotFound.new("DBInstance #{identifier} not found")
38
+ end
39
+
40
+ # TODO: raise an error if the server isn't in 'available' state
41
+
42
+ snapshot_data = {
43
+ 'Status' => 'creating',
44
+ #'SnapshotType' => 'manual', # In a newer RDS version
45
+ 'DBInstanceIdentifier' => identifier,
46
+ 'DBSnapshotIdentifier' => name,
47
+ 'InstanceCreateTime' => Time.now
48
+ }
49
+ # Copy attributes from server
50
+ %w(Engine EngineVersion AvailabilityZone AllocatedStorage MasterUsername InstanceCreateTime).each do |key|
51
+ snapshot_data[key] = server_data[key]
52
+ end
53
+ snapshot_data['Port'] = server_data['Endpoint']['Port']
54
+
55
+ self.data[:snapshots][name] = snapshot_data
56
+
57
+ # TODO: put the server in 'modifying' state
32
58
 
59
+ response.body = {
60
+ "ResponseMetadata"=>{ "RequestId"=> Fog::AWS::Mock.request_id },
61
+ "CreateDBSnapshotResult"=> {"DBSnapshot"=> snapshot_data.dup}
62
+ }
63
+ response.status = 200
64
+ # SnapshotCreateTime is not part of the response.
65
+ self.data[:snapshots][name]['SnapshotCreateTime'] = Time.now
66
+ response
67
+
68
+ end
33
69
  end
34
70
  end
35
71
  end
@@ -15,7 +15,7 @@ module Fog
15
15
  # ==== Returns
16
16
  # * response<~Excon::Response>:
17
17
  # * body<~Hash>:
18
- def delete_db_instance(identifier, snapshot_identifier, skip_snapshot = false)
18
+ def delete_db_instance(identifier, snapshot_identifier, skip_snapshot = false)
19
19
  params = {}
20
20
  params['FinalDBSnapshotIdentifier'] = snapshot_identifier if snapshot_identifier
21
21
  request({
@@ -30,8 +30,23 @@ module Fog
30
30
 
31
31
  class Mock
32
32
 
33
- def delete_db_snapshot(identifier, snapshot_identifier, skip_snapshot = false)
34
- Fog::Mock.not_implemented
33
+ def delete_db_instance(identifier, snapshot_identifier, skip_snapshot = false)
34
+ response = Excon::Response.new
35
+
36
+ unless skip_snapshot
37
+ create_db_snapshot(identifier, snapshot_identifier)
38
+ end
39
+
40
+ if server_set = self.data[:servers].delete(identifier)
41
+ response.status = 200
42
+ response.body = {
43
+ "ResponseMetadata"=>{ "RequestId"=> Fog::AWS::Mock.request_id },
44
+ "DeleteDBInstanceResult" => { "DBInstance" => server_set }
45
+ }
46
+ response
47
+ else
48
+ raise Fog::AWS::RDS::NotFound.new("DBInstance #{identifier} not found")
49
+ end
35
50
  end
36
51
 
37
52
  end
@@ -27,7 +27,17 @@ module Fog
27
27
  class Mock
28
28
 
29
29
  def delete_db_parameter_group(group_name)
30
- Fog::Mock.not_implemented
30
+ response = Excon::Response.new
31
+
32
+ if self.data[:parameter_groups].delete(group_name)
33
+ response.status = 200
34
+ response.body = {
35
+ "ResponseMetadata"=>{ "RequestId"=> Fog::AWS::Mock.request_id },
36
+ }
37
+ response
38
+ else
39
+ raise Fog::AWS::RDS::NotFound.new("DBParameterGroup not found: #{group_name}")
40
+ end
31
41
  end
32
42
 
33
43
  end
@@ -25,7 +25,17 @@ module Fog
25
25
  class Mock
26
26
 
27
27
  def delete_db_security_group(name, description = name)
28
- Fog::Mock.not_implemented
28
+ response = Excon::Response.new
29
+
30
+ if self.data[:security_groups].delete(name)
31
+ response.status = 200
32
+ response.body = {
33
+ "ResponseMetadata"=>{ "RequestId"=> Fog::AWS::Mock.request_id },
34
+ }
35
+ response
36
+ else
37
+ raise Fog::AWS::RDS::NotFound.new("DBSecurityGroupNotFound => #{name} not found")
38
+ end
29
39
  end
30
40
 
31
41
  end
@@ -12,11 +12,11 @@ module Fog
12
12
  # ==== Returns
13
13
  # * response<~Excon::Response>:
14
14
  # * body<~Hash>:
15
- def delete_db_snapshot(group_name)
15
+ def delete_db_snapshot(name)
16
16
 
17
17
  request({
18
18
  'Action' => 'DeleteDBSnapshot',
19
- 'DBSnapshotIdentifier' => group_name,
19
+ 'DBSnapshotIdentifier' => name,
20
20
 
21
21
  :parser => Fog::Parsers::AWS::RDS::DeleteDBSnapshot.new
22
22
  })
@@ -26,8 +26,19 @@ module Fog
26
26
 
27
27
  class Mock
28
28
 
29
- def delete_db_snapshot(group_name)
30
- Fog::Mock.not_implemented
29
+ def delete_db_snapshot(name)
30
+ # TODO: raise error if snapshot isn't 'available'
31
+ response = Excon::Response.new
32
+ snapshot_data = self.data[:snapshots].delete(name)
33
+
34
+ raise Fog::AWS::RDS::NotFound.new("DBSnapshtoNotFound => #{name} not found") unless snapshot_data
35
+
36
+ response.status = 200
37
+ response.body = {
38
+ "ResponseMetadata"=> { "RequestId"=> Fog::AWS::Mock.request_id },
39
+ "DeleteDBSnapshotResult"=> {"DBSnapshot"=> snapshot_data}
40
+ }
41
+ response
31
42
  end
32
43
 
33
44
  end
@@ -21,7 +21,7 @@ module Fog
21
21
  if opts[:max_records]
22
22
  params['MaxRecords'] = opts[:max_records]
23
23
  end
24
-
24
+
25
25
  request({
26
26
  'Action' => 'DescribeDBInstances',
27
27
  :parser => Fog::Parsers::AWS::RDS::DescribeDBInstances.new
@@ -33,9 +33,64 @@ module Fog
33
33
  class Mock
34
34
 
35
35
  def describe_db_instances(identifier=nil, opts={})
36
- Fog::Mock.not_implemented
36
+ response = Excon::Response.new
37
+ server_set = []
38
+ if identifier
39
+ if server = self.data[:servers][identifier]
40
+ server_set << server
41
+ else
42
+ raise Fog::AWS::RDS::NotFound.new("DBInstance #{identifier} not found")
43
+ end
44
+ else
45
+ server_set = self.data[:servers].values
46
+ end
47
+
48
+ server_set.each do |server|
49
+ case server["DBInstanceStatus"]
50
+ when "creating"
51
+ if Time.now - server['InstanceCreateTime'] >= Fog::Mock.delay * 2
52
+ region = "us-east-1"
53
+ server["DBInstanceStatus"] = "available"
54
+ server["AvailabilityZone"] = region + 'a'
55
+ server["Endpoint"] = {"Port"=>3306,
56
+ "Address"=> Fog::AWS::Mock.rds_address(server["DBInstanceIdentifier"],region) }
57
+ server["PendingModifiedValues"] = {}
58
+ end
59
+ when "rebooting" # I don't know how to show rebooting just once before it changes to available
60
+ # it applies pending modified values
61
+ if server["PendingModifiedValues"]
62
+ server.merge!(server["PendingModifiedValues"])
63
+ server["PendingModifiedValues"] = {}
64
+ self.data[:tmp] ||= Time.now + Fog::Mock.delay * 2
65
+ if self.data[:tmp] <= Time.now
66
+ server["DBInstanceStatus"] = 'available'
67
+ self.data.delete(:tmp)
68
+ end
69
+ end
70
+ when "modifying"
71
+ # TODO there are some fields that only applied after rebooting
72
+ if server["PendingModifiedValues"]
73
+ server.merge!(server["PendingModifiedValues"])
74
+ server["PendingModifiedValues"] = {}
75
+ server["DBInstanceStatus"] = 'available'
76
+ end
77
+ when "available" # I'm not sure if amazon does this
78
+ if server["PendingModifiedValues"]
79
+ server["DBInstanceStatus"] = 'modifying'
80
+ end
81
+
82
+ end
83
+ end
84
+
85
+ response.status = 200
86
+ response.body = {
87
+ "ResponseMetadata"=>{ "RequestId"=> Fog::AWS::Mock.request_id },
88
+ "DescribeDBInstancesResult" => { "DBInstances" => server_set }
89
+ }
90
+ response
37
91
  end
38
92
 
93
+
39
94
  end
40
95
  end
41
96
  end