fog 0.9.0 → 0.10.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 (428) hide show
  1. data/Rakefile +7 -4
  2. data/bin/fog +4 -1
  3. data/changelog.txt +464 -0
  4. data/docs/index.markdown +2 -2
  5. data/fog.gemspec +11 -11
  6. data/lib/fog.rb +1 -1
  7. data/lib/fog/aws/auto_scaling.rb +221 -0
  8. data/lib/fog/aws/cloud_formation.rb +1 -1
  9. data/lib/fog/aws/cloud_watch.rb +110 -0
  10. data/lib/fog/aws/elb.rb +58 -26
  11. data/lib/fog/aws/iam.rb +65 -13
  12. data/lib/fog/aws/models/auto_scaling/activities.rb +30 -0
  13. data/lib/fog/aws/models/auto_scaling/activity.rb +29 -0
  14. data/lib/fog/aws/models/auto_scaling/configuration.rb +63 -0
  15. data/lib/fog/aws/models/auto_scaling/configurations.rb +35 -0
  16. data/lib/fog/aws/models/auto_scaling/group.rb +140 -0
  17. data/lib/fog/aws/models/auto_scaling/groups.rb +35 -0
  18. data/lib/fog/aws/models/auto_scaling/instance.rb +60 -0
  19. data/lib/fog/aws/models/auto_scaling/instances.rb +30 -0
  20. data/lib/fog/aws/models/cloud_watch/metric.rb +14 -0
  21. data/lib/fog/aws/models/cloud_watch/metric_statistic.rb +46 -0
  22. data/lib/fog/aws/models/cloud_watch/metric_statistics.rb +23 -0
  23. data/lib/fog/aws/models/cloud_watch/metrics.rb +32 -0
  24. data/lib/fog/aws/models/elb/listener.rb +6 -0
  25. data/lib/fog/aws/models/elb/listeners.rb +2 -2
  26. data/lib/fog/aws/models/elb/load_balancer.rb +8 -5
  27. data/lib/fog/aws/models/rds/server.rb +3 -1
  28. data/lib/fog/aws/parsers/auto_scaling/basic.rb +28 -0
  29. data/lib/fog/aws/parsers/auto_scaling/describe_adjustment_types.rb +39 -0
  30. data/lib/fog/aws/parsers/auto_scaling/describe_auto_scaling_groups.rb +126 -0
  31. data/lib/fog/aws/parsers/auto_scaling/describe_auto_scaling_instances.rb +43 -0
  32. data/lib/fog/aws/parsers/auto_scaling/describe_launch_configurations.rb +94 -0
  33. data/lib/fog/aws/parsers/auto_scaling/describe_metric_collection_types.rb +66 -0
  34. data/lib/fog/aws/parsers/auto_scaling/describe_policies.rb +66 -0
  35. data/lib/fog/aws/parsers/auto_scaling/describe_scaling_activities.rb +47 -0
  36. data/lib/fog/aws/parsers/auto_scaling/describe_scaling_process_types.rb +39 -0
  37. data/lib/fog/aws/parsers/auto_scaling/describe_scheduled_actions.rb +46 -0
  38. data/lib/fog/aws/parsers/auto_scaling/put_scaling_policy.rb +30 -0
  39. data/lib/fog/aws/parsers/auto_scaling/terminate_instance_in_auto_scaling_group.rb +35 -0
  40. data/lib/fog/aws/parsers/cloud_watch/get_metric_statistics.rb +42 -0
  41. data/lib/fog/aws/parsers/cloud_watch/list_metrics.rb +58 -0
  42. data/lib/fog/aws/parsers/cloud_watch/put_metric_data.rb +26 -0
  43. data/lib/fog/aws/parsers/elb/describe_load_balancers.rb +1 -1
  44. data/lib/fog/aws/parsers/iam/get_group_policy.rb +27 -0
  45. data/lib/fog/aws/parsers/iam/list_account_aliases.rb +28 -0
  46. data/lib/fog/aws/parsers/rds/db_engine_version_parser.rb +35 -0
  47. data/lib/fog/aws/parsers/rds/db_parser.rb +1 -1
  48. data/lib/fog/aws/parsers/rds/describe_db_engine_versions.rb +39 -0
  49. data/lib/fog/aws/parsers/rds/describe_db_reserved_instances.rb +43 -0
  50. data/lib/fog/aws/parsers/sns/add_permission.rb +24 -0
  51. data/lib/fog/aws/parsers/sns/confirm_subscription.rb +24 -0
  52. data/lib/fog/aws/parsers/sns/create_topic.rb +24 -0
  53. data/lib/fog/aws/parsers/sns/delete_topic.rb +24 -0
  54. data/lib/fog/aws/parsers/sns/get_topic_attributes.rb +32 -0
  55. data/lib/fog/aws/parsers/sns/list_subscriptions.rb +29 -0
  56. data/lib/fog/aws/parsers/sns/list_topics.rb +26 -0
  57. data/lib/fog/aws/parsers/sns/publish.rb +24 -0
  58. data/lib/fog/aws/parsers/sns/remove_permission.rb +24 -0
  59. data/lib/fog/aws/parsers/sns/set_topic_attributes.rb +24 -0
  60. data/lib/fog/aws/parsers/sns/subscribe.rb +24 -0
  61. data/lib/fog/aws/parsers/sns/unsubscribe.rb +24 -0
  62. data/lib/fog/aws/parsers/sqs/basic.rb +23 -0
  63. data/lib/fog/aws/parsers/sqs/create_queue.rb +26 -0
  64. data/lib/fog/aws/parsers/sqs/get_queue_attributes.rb +35 -0
  65. data/lib/fog/aws/parsers/sqs/list_queues.rb +25 -0
  66. data/lib/fog/aws/parsers/sqs/receive_message.rb +41 -0
  67. data/lib/fog/aws/parsers/sqs/send_message.rb +28 -0
  68. data/lib/fog/aws/rds.rb +3 -1
  69. data/lib/fog/aws/requests/auto_scaling/create_auto_scaling_group.rb +108 -0
  70. data/lib/fog/aws/requests/auto_scaling/create_launch_configuration.rb +105 -0
  71. data/lib/fog/aws/requests/auto_scaling/delete_auto_scaling_group.rb +45 -0
  72. data/lib/fog/aws/requests/auto_scaling/delete_launch_configuration.rb +48 -0
  73. data/lib/fog/aws/requests/auto_scaling/delete_policy.rb +47 -0
  74. data/lib/fog/aws/requests/auto_scaling/delete_scheduled_action.rb +48 -0
  75. data/lib/fog/aws/requests/auto_scaling/describe_adjustment_types.rb +52 -0
  76. data/lib/fog/aws/requests/auto_scaling/describe_auto_scaling_groups.rb +128 -0
  77. data/lib/fog/aws/requests/auto_scaling/describe_auto_scaling_instances.rb +96 -0
  78. data/lib/fog/aws/requests/auto_scaling/describe_launch_configurations.rb +108 -0
  79. data/lib/fog/aws/requests/auto_scaling/describe_metric_collection_types.rb +60 -0
  80. data/lib/fog/aws/requests/auto_scaling/describe_policies.rb +85 -0
  81. data/lib/fog/aws/requests/auto_scaling/describe_scaling_activities.rb +88 -0
  82. data/lib/fog/aws/requests/auto_scaling/describe_scaling_process_types.rb +54 -0
  83. data/lib/fog/aws/requests/auto_scaling/describe_scheduled_actions.rb +83 -0
  84. data/lib/fog/aws/requests/auto_scaling/disable_metrics_collection.rb +56 -0
  85. data/lib/fog/aws/requests/auto_scaling/enable_metrics_collection.rb +66 -0
  86. data/lib/fog/aws/requests/auto_scaling/execute_policy.rb +50 -0
  87. data/lib/fog/aws/requests/auto_scaling/put_scaling_policy.rb +66 -0
  88. data/lib/fog/aws/requests/auto_scaling/put_scheduled_update_group_action.rb +57 -0
  89. data/lib/fog/aws/requests/auto_scaling/resume_processes.rb +50 -0
  90. data/lib/fog/aws/requests/auto_scaling/set_desired_capacity.rb +87 -0
  91. data/lib/fog/aws/requests/auto_scaling/set_instance_health.rb +55 -0
  92. data/lib/fog/aws/requests/auto_scaling/suspend_processes.rb +57 -0
  93. data/lib/fog/aws/requests/auto_scaling/terminate_instance_in_auto_scaling_group.rb +65 -0
  94. data/lib/fog/aws/requests/auto_scaling/update_auto_scaling_group.rb +79 -0
  95. data/lib/fog/aws/requests/cloud_watch/get_metric_statistics.rb +48 -0
  96. data/lib/fog/aws/requests/cloud_watch/list_metrics.rb +38 -0
  97. data/lib/fog/aws/requests/cloud_watch/put_metric_data.rb +73 -0
  98. data/lib/fog/aws/requests/elb/configure_health_check.rb +24 -0
  99. data/lib/fog/aws/requests/elb/create_app_cookie_stickiness_policy.rb +21 -0
  100. data/lib/fog/aws/requests/elb/create_lb_cookie_stickiness_policy.rb +21 -0
  101. data/lib/fog/aws/requests/elb/create_load_balancer.rb +55 -0
  102. data/lib/fog/aws/requests/elb/create_load_balancer_listeners.rb +28 -0
  103. data/lib/fog/aws/requests/elb/delete_load_balancer.rb +18 -0
  104. data/lib/fog/aws/requests/elb/delete_load_balancer_listeners.rb +20 -1
  105. data/lib/fog/aws/requests/elb/delete_load_balancer_policy.rb +23 -0
  106. data/lib/fog/aws/requests/elb/deregister_instances_from_load_balancer.rb +21 -5
  107. data/lib/fog/aws/requests/elb/describe_instance_health.rb +35 -0
  108. data/lib/fog/aws/requests/elb/describe_load_balancers.rb +29 -0
  109. data/lib/fog/aws/requests/elb/disable_availability_zones_for_load_balancer.rb +18 -5
  110. data/lib/fog/aws/requests/elb/enable_availability_zones_for_load_balancer.rb +18 -3
  111. data/lib/fog/aws/requests/elb/register_instances_with_load_balancer.rb +22 -5
  112. data/lib/fog/aws/requests/elb/set_load_balancer_listener_ssl_certificate.rb +40 -0
  113. data/lib/fog/aws/requests/elb/set_load_balancer_policies_of_listener.rb +37 -0
  114. data/lib/fog/aws/requests/iam/create_account_alias.rb +19 -0
  115. data/lib/fog/aws/requests/iam/delete_account_alias.rb +19 -0
  116. data/lib/fog/aws/requests/iam/delete_server_certificate.rb +14 -0
  117. data/lib/fog/aws/requests/iam/get_group_policy.rb +36 -0
  118. data/lib/fog/aws/requests/iam/get_server_certificate.rb +50 -0
  119. data/lib/fog/aws/requests/iam/list_account_aliases.rb +18 -0
  120. data/lib/fog/aws/requests/iam/list_server_certificates.rb +12 -0
  121. data/lib/fog/aws/requests/iam/put_group_policy.rb +1 -1
  122. data/lib/fog/aws/requests/iam/put_user_policy.rb +1 -1
  123. data/lib/fog/aws/requests/iam/upload_server_certificate.rb +53 -5
  124. data/lib/fog/aws/requests/rds/describe_db_engine_versions.rb +34 -0
  125. data/lib/fog/aws/requests/rds/describe_db_reserved_instances.rb +42 -0
  126. data/lib/fog/aws/requests/simpledb/get_attributes.rb +29 -17
  127. data/lib/fog/aws/requests/simpledb/select.rb +11 -3
  128. data/lib/fog/aws/requests/sns/add_permission.rb +26 -0
  129. data/lib/fog/aws/requests/sns/confirm_subscription.rb +33 -0
  130. data/lib/fog/aws/requests/sns/create_topic.rb +29 -0
  131. data/lib/fog/aws/requests/sns/delete_topic.rb +29 -0
  132. data/lib/fog/aws/requests/sns/get_topic_attributes.rb +29 -0
  133. data/lib/fog/aws/requests/sns/list_subscriptions.rb +29 -0
  134. data/lib/fog/aws/requests/sns/list_subscriptions_by_topic.rb +31 -0
  135. data/lib/fog/aws/requests/sns/list_topics.rb +29 -0
  136. data/lib/fog/aws/requests/sns/publish.rb +34 -0
  137. data/lib/fog/aws/requests/sns/remove_permission.rb +26 -0
  138. data/lib/fog/aws/requests/sns/set_topic_attributes.rb +33 -0
  139. data/lib/fog/aws/requests/sns/subscribe.rb +33 -0
  140. data/lib/fog/aws/requests/sns/unsubscribe.rb +29 -0
  141. data/lib/fog/aws/requests/sqs/change_message_visibility.rb +33 -0
  142. data/lib/fog/aws/requests/sqs/create_queue.rb +31 -0
  143. data/lib/fog/aws/requests/sqs/delete_message.rb +31 -0
  144. data/lib/fog/aws/requests/sqs/delete_queue.rb +29 -0
  145. data/lib/fog/aws/requests/sqs/get_queue_attributes.rb +31 -0
  146. data/lib/fog/aws/requests/sqs/list_queues.rb +28 -0
  147. data/lib/fog/aws/requests/sqs/receive_message.rb +34 -0
  148. data/lib/fog/aws/requests/sqs/send_message.rb +31 -0
  149. data/lib/fog/aws/requests/sqs/set_queue_attributes.rb +33 -0
  150. data/lib/fog/aws/sns.rb +112 -0
  151. data/lib/fog/aws/sqs.rb +115 -0
  152. data/lib/fog/bin.rb +1 -0
  153. data/lib/fog/bin/aws.rb +16 -0
  154. data/lib/fog/bin/brightbox.rb +1 -1
  155. data/lib/fog/bin/ninefold.rb +5 -0
  156. data/lib/fog/bin/vcloud.rb +30 -0
  157. data/lib/fog/bin/virtual_box.rb +5 -1
  158. data/lib/fog/cdn/rackspace.rb +16 -8
  159. data/lib/fog/compute.rb +4 -1
  160. data/lib/fog/compute/aws.rb +16 -4
  161. data/lib/fog/compute/bluebox.rb +2 -2
  162. data/lib/fog/compute/brightbox.rb +4 -4
  163. data/lib/fog/compute/go_grid.rb +2 -2
  164. data/lib/fog/compute/linode.rb +2 -2
  165. data/lib/fog/compute/models/aws/server.rb +17 -3
  166. data/lib/fog/compute/models/aws/spot_request.rb +93 -0
  167. data/lib/fog/compute/models/aws/spot_requests.rb +48 -0
  168. data/lib/fog/compute/models/aws/volume.rb +13 -13
  169. data/lib/fog/compute/models/bluebox/server.rb +4 -4
  170. data/lib/fog/compute/models/go_grid/server.rb +2 -2
  171. data/lib/fog/compute/models/ninefold/server.rb +18 -14
  172. data/lib/fog/compute/models/rackspace/flavor.rb +3 -2
  173. data/lib/fog/compute/models/rackspace/server.rb +2 -2
  174. data/lib/fog/compute/models/slicehost/server.rb +1 -1
  175. data/lib/fog/compute/models/vcloud/catalog.rb +22 -0
  176. data/lib/fog/compute/models/vcloud/catalog_item.rb +29 -0
  177. data/lib/fog/compute/models/vcloud/catalog_items.rb +32 -0
  178. data/lib/fog/compute/models/vcloud/catalogs.rb +39 -0
  179. data/lib/fog/compute/models/vcloud/ip.rb +42 -0
  180. data/lib/fog/compute/models/vcloud/ips.rb +33 -0
  181. data/lib/fog/compute/models/vcloud/network.rb +65 -0
  182. data/lib/fog/compute/models/vcloud/networks.rb +34 -0
  183. data/lib/fog/compute/models/vcloud/server.rb +291 -0
  184. data/lib/fog/compute/models/vcloud/servers.rb +58 -0
  185. data/lib/fog/compute/models/vcloud/task.rb +21 -0
  186. data/lib/fog/compute/models/vcloud/tasks.rb +32 -0
  187. data/lib/fog/compute/models/vcloud/vdc.rb +56 -0
  188. data/lib/fog/compute/models/vcloud/vdcs.rb +40 -0
  189. data/lib/fog/compute/models/virtual_box/server.rb +2 -2
  190. data/lib/fog/compute/ninefold.rb +3 -3
  191. data/lib/fog/compute/parsers/aws/cancel_spot_instance_requests.rb +30 -0
  192. data/lib/fog/compute/parsers/aws/describe_instances.rb +9 -4
  193. data/lib/fog/compute/parsers/aws/describe_placement_groups.rb +30 -0
  194. data/lib/fog/compute/parsers/aws/describe_reserved_instances.rb +1 -1
  195. data/lib/fog/compute/parsers/aws/describe_reserved_instances_offerings.rb +2 -2
  196. data/lib/fog/compute/parsers/aws/describe_spot_price_history.rb +34 -0
  197. data/lib/fog/compute/parsers/aws/purchase_reserved_instances_offering.rb +24 -0
  198. data/lib/fog/compute/parsers/aws/run_instances.rb +17 -16
  199. data/lib/fog/compute/parsers/aws/spot_datafeed_subscription.rb +29 -0
  200. data/lib/fog/compute/parsers/aws/spot_instance_requests.rb +67 -0
  201. data/lib/fog/compute/rackspace.rb +6 -5
  202. data/lib/fog/compute/requests/aws/cancel_spot_instance_requests.rb +34 -0
  203. data/lib/fog/compute/requests/aws/create_placement_group.rb +34 -0
  204. data/lib/fog/compute/requests/aws/create_spot_datafeed_subscription.rb +41 -0
  205. data/lib/fog/compute/requests/aws/delete_placement_group.rb +32 -0
  206. data/lib/fog/compute/requests/aws/delete_spot_datafeed_subscription.rb +28 -0
  207. data/lib/fog/compute/requests/aws/describe_placement_groups.rb +35 -0
  208. data/lib/fog/compute/requests/aws/describe_reserved_instances.rb +14 -0
  209. data/lib/fog/compute/requests/aws/describe_reserved_instances_offerings.rb +25 -0
  210. data/lib/fog/compute/requests/aws/describe_spot_datafeed_subscription.rb +35 -0
  211. data/lib/fog/compute/requests/aws/describe_spot_instance_requests.rb +47 -0
  212. data/lib/fog/compute/requests/aws/describe_spot_price_history.rb +37 -0
  213. data/lib/fog/compute/requests/aws/describe_volumes.rb +1 -1
  214. data/lib/fog/compute/requests/aws/purchase_reserved_instances_offering.rb +63 -0
  215. data/lib/fog/compute/requests/aws/request_spot_instances.rb +83 -0
  216. data/lib/fog/compute/requests/aws/run_instances.rb +2 -3
  217. data/lib/fog/compute/requests/brightbox/activate_console_server.rb +1 -1
  218. data/lib/fog/compute/requests/brightbox/add_listeners_load_balancer.rb +1 -1
  219. data/lib/fog/compute/requests/brightbox/add_nodes_load_balancer.rb +1 -1
  220. data/lib/fog/compute/requests/brightbox/create_api_client.rb +1 -1
  221. data/lib/fog/compute/requests/brightbox/create_cloud_ip.rb +1 -1
  222. data/lib/fog/compute/requests/brightbox/create_image.rb +1 -1
  223. data/lib/fog/compute/requests/brightbox/create_load_balancer.rb +1 -1
  224. data/lib/fog/compute/requests/brightbox/create_server.rb +1 -1
  225. data/lib/fog/compute/requests/brightbox/destroy_api_client.rb +1 -1
  226. data/lib/fog/compute/requests/brightbox/destroy_cloud_ip.rb +1 -1
  227. data/lib/fog/compute/requests/brightbox/destroy_image.rb +1 -1
  228. data/lib/fog/compute/requests/brightbox/destroy_load_balancer.rb +1 -1
  229. data/lib/fog/compute/requests/brightbox/destroy_server.rb +1 -1
  230. data/lib/fog/compute/requests/brightbox/get_account.rb +1 -1
  231. data/lib/fog/compute/requests/brightbox/get_api_client.rb +1 -1
  232. data/lib/fog/compute/requests/brightbox/get_cloud_ip.rb +1 -1
  233. data/lib/fog/compute/requests/brightbox/get_image.rb +1 -1
  234. data/lib/fog/compute/requests/brightbox/get_interface.rb +1 -1
  235. data/lib/fog/compute/requests/brightbox/get_load_balancer.rb +1 -1
  236. data/lib/fog/compute/requests/brightbox/get_server.rb +1 -1
  237. data/lib/fog/compute/requests/brightbox/get_server_type.rb +1 -1
  238. data/lib/fog/compute/requests/brightbox/get_user.rb +1 -1
  239. data/lib/fog/compute/requests/brightbox/get_zone.rb +1 -1
  240. data/lib/fog/compute/requests/brightbox/list_api_clients.rb +1 -1
  241. data/lib/fog/compute/requests/brightbox/list_cloud_ips.rb +1 -1
  242. data/lib/fog/compute/requests/brightbox/list_images.rb +1 -1
  243. data/lib/fog/compute/requests/brightbox/list_load_balancers.rb +1 -1
  244. data/lib/fog/compute/requests/brightbox/list_server_types.rb +1 -1
  245. data/lib/fog/compute/requests/brightbox/list_servers.rb +1 -1
  246. data/lib/fog/compute/requests/brightbox/list_users.rb +1 -1
  247. data/lib/fog/compute/requests/brightbox/list_zones.rb +1 -1
  248. data/lib/fog/compute/requests/brightbox/map_cloud_ip.rb +1 -1
  249. data/lib/fog/compute/requests/brightbox/remove_listeners_load_balancer.rb +1 -1
  250. data/lib/fog/compute/requests/brightbox/remove_nodes_load_balancer.rb +1 -1
  251. data/lib/fog/compute/requests/brightbox/reset_ftp_password_account.rb +1 -1
  252. data/lib/fog/compute/requests/brightbox/resize_server.rb +1 -1
  253. data/lib/fog/compute/requests/brightbox/shutdown_server.rb +1 -1
  254. data/lib/fog/compute/requests/brightbox/snapshot_server.rb +1 -1
  255. data/lib/fog/compute/requests/brightbox/start_server.rb +1 -1
  256. data/lib/fog/compute/requests/brightbox/stop_server.rb +1 -1
  257. data/lib/fog/compute/requests/brightbox/unmap_cloud_ip.rb +1 -1
  258. data/lib/fog/compute/requests/brightbox/update_account.rb +1 -1
  259. data/lib/fog/compute/requests/brightbox/update_api_client.rb +1 -1
  260. data/lib/fog/compute/requests/brightbox/update_image.rb +1 -1
  261. data/lib/fog/compute/requests/brightbox/update_load_balancer.rb +1 -1
  262. data/lib/fog/compute/requests/brightbox/update_server.rb +1 -1
  263. data/lib/fog/compute/requests/brightbox/update_user.rb +1 -1
  264. data/lib/fog/compute/requests/linode/linode_disk_createfromstackscript.rb +1 -1
  265. data/lib/fog/compute/requests/rackspace/create_image.rb +1 -1
  266. data/lib/fog/compute/requests/rackspace/create_server.rb +1 -1
  267. data/lib/fog/compute/requests/rackspace/server_action.rb +2 -2
  268. data/lib/fog/compute/requests/rackspace/update_server.rb +1 -1
  269. data/lib/fog/compute/requests/storm_on_demand/add_balancer_node.rb +1 -1
  270. data/lib/fog/compute/requests/storm_on_demand/clone_server.rb +1 -1
  271. data/lib/fog/compute/requests/storm_on_demand/create_server.rb +1 -1
  272. data/lib/fog/compute/requests/storm_on_demand/delete_server.rb +1 -1
  273. data/lib/fog/compute/requests/storm_on_demand/get_server.rb +1 -1
  274. data/lib/fog/compute/requests/storm_on_demand/get_stats.rb +1 -1
  275. data/lib/fog/compute/requests/storm_on_demand/list_balancers.rb +1 -1
  276. data/lib/fog/compute/requests/storm_on_demand/list_configs.rb +1 -1
  277. data/lib/fog/compute/requests/storm_on_demand/list_images.rb +1 -1
  278. data/lib/fog/compute/requests/storm_on_demand/list_private_ips.rb +1 -1
  279. data/lib/fog/compute/requests/storm_on_demand/list_servers.rb +1 -1
  280. data/lib/fog/compute/requests/storm_on_demand/list_templates.rb +1 -1
  281. data/lib/fog/compute/requests/storm_on_demand/reboot_server.rb +1 -1
  282. data/lib/fog/compute/requests/storm_on_demand/remove_balancer_node.rb +1 -1
  283. data/lib/fog/compute/requests/storm_on_demand/resize_server.rb +1 -1
  284. data/lib/fog/compute/requests/vcloud/clone_vapp.rb +40 -0
  285. data/lib/fog/compute/requests/vcloud/configure_network.rb +43 -0
  286. data/lib/fog/compute/requests/vcloud/configure_network_ip.rb +46 -0
  287. data/lib/fog/compute/requests/vcloud/configure_node.rb +38 -0
  288. data/lib/fog/compute/requests/vcloud/configure_vapp.rb +112 -0
  289. data/lib/fog/compute/requests/vcloud/configure_vm.rb +247 -0
  290. data/lib/fog/compute/requests/vcloud/configure_vm_disks.rb +100 -0
  291. data/lib/fog/compute/requests/vcloud/configure_vm_memory.rb +40 -0
  292. data/lib/fog/compute/requests/vcloud/configure_vm_name_description.rb +30 -0
  293. data/lib/fog/compute/requests/vcloud/delete_node.rb +10 -0
  294. data/lib/fog/compute/requests/vcloud/delete_vapp.rb +10 -0
  295. data/lib/fog/compute/requests/vcloud/get_catalog.rb +10 -0
  296. data/lib/fog/compute/requests/vcloud/get_catalog_item.rb +10 -0
  297. data/lib/fog/compute/requests/vcloud/get_customization_options.rb +10 -0
  298. data/lib/fog/compute/requests/vcloud/get_network.rb +10 -0
  299. data/lib/fog/compute/requests/vcloud/get_network_extensions.rb +11 -0
  300. data/lib/fog/compute/requests/vcloud/get_network_ip.rb +15 -0
  301. data/lib/fog/compute/requests/vcloud/get_network_ips.rb +15 -0
  302. data/lib/fog/compute/requests/vcloud/get_organization.rb +11 -0
  303. data/lib/fog/compute/requests/vcloud/get_task.rb +11 -0
  304. data/lib/fog/compute/requests/vcloud/get_task_list.rb +11 -0
  305. data/lib/fog/compute/requests/vcloud/get_vapp.rb +10 -0
  306. data/lib/fog/compute/requests/vcloud/get_vapp_template.rb +11 -0
  307. data/lib/fog/compute/requests/vcloud/get_vdc.rb +10 -0
  308. data/lib/fog/compute/requests/vcloud/get_vm_disks.rb +16 -0
  309. data/lib/fog/compute/requests/vcloud/get_vm_memory.rb +16 -0
  310. data/lib/fog/compute/requests/vcloud/instantiate_vapp_template.rb +83 -0
  311. data/lib/fog/compute/requests/vcloud/login.rb +23 -0
  312. data/lib/fog/compute/requests/vcloud/power_off.rb +10 -0
  313. data/lib/fog/compute/requests/vcloud/power_on.rb +11 -0
  314. data/lib/fog/compute/requests/vcloud/power_reset.rb +11 -0
  315. data/lib/fog/compute/requests/vcloud/power_shutdown.rb +11 -0
  316. data/lib/fog/compute/requests/vcloud/undeploy.rb +23 -0
  317. data/lib/fog/compute/storm_on_demand.rb +2 -2
  318. data/lib/fog/compute/vcloud.rb +310 -0
  319. data/lib/fog/core.rb +2 -1
  320. data/lib/fog/core/attributes.rb +23 -11
  321. data/lib/fog/core/collection.rb +7 -7
  322. data/lib/fog/core/credentials.rb +4 -2
  323. data/lib/fog/core/model.rb +4 -4
  324. data/lib/fog/core/time.rb +1 -2
  325. data/lib/fog/core/timeout.rb +11 -0
  326. data/lib/fog/core/wait_for.rb +2 -2
  327. data/lib/fog/dns/dnsimple.rb +2 -2
  328. data/lib/fog/dns/dnsmadeeasy.rb +2 -2
  329. data/lib/fog/dns/linode.rb +2 -2
  330. data/lib/fog/dns/requests/dnsimple/create_domain.rb +1 -1
  331. data/lib/fog/dns/requests/dnsimple/create_record.rb +1 -1
  332. data/lib/fog/dns/requests/dnsimple/update_record.rb +1 -1
  333. data/lib/fog/dns/requests/dnsmadeeasy/create_record.rb +1 -1
  334. data/lib/fog/dns/requests/dnsmadeeasy/create_secondary.rb +1 -1
  335. data/lib/fog/dns/requests/dnsmadeeasy/update_record.rb +1 -1
  336. data/lib/fog/dns/requests/dnsmadeeasy/update_secondary.rb +1 -1
  337. data/lib/fog/providers.rb +1 -0
  338. data/lib/fog/providers/aws.rb +15 -2
  339. data/lib/fog/providers/ninefold.rb +1 -0
  340. data/lib/fog/providers/rackspace.rb +4 -3
  341. data/lib/fog/providers/vcloud.rb +11 -0
  342. data/lib/fog/storage.rb +9 -6
  343. data/lib/fog/storage/aws.rb +18 -1
  344. data/lib/fog/storage/google.rb +19 -1
  345. data/lib/fog/storage/models/aws/file.rb +3 -3
  346. data/lib/fog/storage/models/aws/files.rb +9 -2
  347. data/lib/fog/storage/models/google/files.rb +9 -2
  348. data/lib/fog/storage/models/ninefold/directories.rb +48 -0
  349. data/lib/fog/storage/models/ninefold/directory.rb +53 -0
  350. data/lib/fog/storage/models/ninefold/file.rb +99 -0
  351. data/lib/fog/storage/models/ninefold/files.rb +72 -0
  352. data/lib/fog/storage/models/rackspace/directory.rb +7 -2
  353. data/lib/fog/storage/ninefold.rb +149 -0
  354. data/lib/fog/storage/rackspace.rb +8 -2
  355. data/lib/fog/storage/requests/aws/get_bucket_policy.rb +1 -1
  356. data/lib/fog/storage/requests/aws/get_object.rb +6 -2
  357. data/lib/fog/storage/requests/aws/get_object_http_url.rb +51 -0
  358. data/lib/fog/storage/requests/aws/get_object_https_url.rb +51 -0
  359. data/lib/fog/storage/requests/aws/get_object_url.rb +4 -24
  360. data/lib/fog/storage/requests/aws/post_object_hidden_fields.rb +1 -1
  361. data/lib/fog/storage/requests/aws/put_bucket_policy.rb +1 -1
  362. data/lib/fog/storage/requests/google/get_object_http_url.rb +51 -0
  363. data/lib/fog/storage/requests/google/get_object_https_url.rb +51 -0
  364. data/lib/fog/storage/requests/google/get_object_url.rb +8 -25
  365. data/lib/fog/storage/requests/ninefold/delete_namespace.rb +19 -0
  366. data/lib/fog/storage/requests/ninefold/get_namespace.rb +20 -0
  367. data/lib/fog/storage/requests/ninefold/post_namespace.rb +20 -0
  368. data/lib/fog/storage/requests/ninefold/put_namespace.rb +20 -0
  369. data/lib/fog/storage/requests/rackspace/put_object.rb +3 -0
  370. data/lib/fog/storage/requests/rackspace/put_object_manifest.rb +25 -0
  371. data/tests/aws/models/auto_scaling/activities_tests.rb +6 -0
  372. data/tests/aws/models/auto_scaling/configuration_test.rb +13 -0
  373. data/tests/aws/models/auto_scaling/configurations_tests.rb +11 -0
  374. data/tests/aws/models/auto_scaling/helper.rb +0 -0
  375. data/tests/aws/models/auto_scaling/instances_tests.rb +6 -0
  376. data/tests/aws/models/cloud_watch/metric_statistics_tests.rb +51 -0
  377. data/tests/aws/models/cloud_watch/metrics_tests.rb +17 -0
  378. data/tests/aws/{requests → models}/elb/model_tests.rb +82 -18
  379. data/tests/aws/models/rds/security_group_tests.rb +1 -1
  380. data/tests/aws/requests/auto_scaling/auto_scaling_tests.rb +80 -0
  381. data/tests/aws/requests/auto_scaling/helper.rb +185 -0
  382. data/tests/aws/requests/auto_scaling/model_tests.rb +235 -0
  383. data/tests/aws/requests/cloud_formation/stack_tests.rb +1 -1
  384. data/tests/aws/requests/cloud_watch/get_metric_statistics_tests.rb +28 -0
  385. data/tests/aws/requests/cloud_watch/list_metrics_test.rb +64 -0
  386. data/tests/aws/requests/cloud_watch/put_metric_data_tests.rb +36 -0
  387. data/tests/aws/requests/elb/listener_tests.rb +50 -0
  388. data/tests/aws/requests/elb/load_balancer_tests.rb +23 -44
  389. data/tests/aws/requests/elb/policy_tests.rb +41 -0
  390. data/tests/aws/requests/iam/helper.rb +29 -0
  391. data/tests/aws/requests/iam/login_profile_tests.rb +2 -2
  392. data/tests/aws/requests/iam/server_certificate_tests.rb +39 -6
  393. data/tests/aws/requests/rds/helper.rb +1 -0
  394. data/tests/aws/requests/simpledb/attributes_tests.rb +10 -15
  395. data/tests/aws/requests/sns/helper.rb +9 -0
  396. data/tests/aws/requests/sns/subscription_tests.rb +86 -0
  397. data/tests/aws/requests/sns/topic_tests.rb +50 -0
  398. data/tests/aws/requests/sqs/helper.rb +15 -0
  399. data/tests/aws/requests/sqs/message_tests.rb +57 -0
  400. data/tests/aws/requests/sqs/queue_tests.rb +55 -0
  401. data/tests/aws/signed_params_tests.rb +3 -1
  402. data/tests/compute/models/aws/volume_tests.rb +13 -0
  403. data/tests/compute/models/vcloud/helper.rb +25 -0
  404. data/tests/compute/models/vcloud/servers_tests.rb +95 -0
  405. data/tests/compute/requests/aws/address_tests.rb +1 -1
  406. data/tests/compute/requests/aws/instance_tests.rb +65 -4
  407. data/tests/compute/requests/aws/placement_group_tests.rb +48 -0
  408. data/tests/compute/requests/aws/spot_datafeed_subscription_tests.rb +47 -0
  409. data/tests/compute/requests/aws/spot_instance_tests.rb +53 -0
  410. data/tests/compute/requests/aws/spot_price_history_tests.rb +24 -0
  411. data/tests/compute/requests/aws/volume_tests.rb +4 -0
  412. data/tests/compute/requests/brightbox/helper.rb +2 -1
  413. data/tests/compute/requests/brightbox/interface_tests.rb +4 -4
  414. data/tests/compute/requests/ninefold/helper.rb +1 -1
  415. data/tests/compute/requests/vcloud/disk_configure_tests.rb +114 -0
  416. data/tests/compute/requests/voxel/server_tests.rb +2 -2
  417. data/tests/core/attribute_tests.rb +10 -1
  418. data/tests/core/credential_tests.rb +6 -0
  419. data/tests/core/timeout_tests.rb +10 -0
  420. data/tests/helpers/collection_helper.rb +4 -1
  421. data/tests/helpers/formats_helper.rb +1 -1
  422. data/tests/helpers/mock_helper.rb +5 -0
  423. data/tests/storage/helper.rb +4 -1
  424. data/tests/storage/models/ninefold/file_update_tests.rb +19 -0
  425. data/tests/storage/models/ninefold/nested_directories_tests.rb +23 -0
  426. data/tests/storage/requests/aws/multipart_upload_tests.rb +2 -5
  427. data/tests/storage/requests/rackspace/large_object_tests.rb +47 -0
  428. metadata +366 -105
@@ -0,0 +1,29 @@
1
+ module Fog
2
+ module AWS
3
+ class SNS
4
+ class Real
5
+
6
+ require 'fog/aws/parsers/sns/unsubscribe'
7
+
8
+ # Delete a subscription
9
+ #
10
+ # ==== Parameters
11
+ # * arn<~String> - Arn of subscription to delete
12
+ #
13
+ # ==== See Also
14
+ # http://docs.amazonwebservices.com/sns/latest/api/API_Unsubscribe.html
15
+ #
16
+
17
+ def unsubscribe(arn)
18
+ request({
19
+ 'Action' => 'Unsubscribe',
20
+ 'SubscriptionArn' => arn,
21
+ :parser => Fog::Parsers::AWS::SNS::Unsubscribe.new
22
+ })
23
+ end
24
+
25
+ end
26
+
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,33 @@
1
+ module Fog
2
+ module AWS
3
+ class SQS
4
+ class Real
5
+
6
+ require 'fog/aws/parsers/sqs/basic'
7
+
8
+ # Change visibility timeout for a message
9
+ #
10
+ # ==== Parameters
11
+ # * queue_url<~String> - Url of queue for message to update
12
+ # * receipt_handle<~String> - Token from previous recieve message
13
+ # * visibility_timeout<~Integer> - New visibility timeout in 0..43200
14
+ #
15
+ # ==== See Also
16
+ # http://docs.amazonwebservices.com/AWSSimpleQueueService/latest/APIReference/Query_QueryChangeMessageVisibility.html
17
+ #
18
+
19
+ def change_message_visibility(queue_url, receipt_handle, visibility_timeout)
20
+ request({
21
+ 'Action' => 'ChangeMessageVisibility',
22
+ 'ReceiptHandle' => receipt_handle,
23
+ 'VisibilityTimeout' => visibility_timeout,
24
+ :parser => Fog::Parsers::AWS::SQS::Basic.new,
25
+ :path => path_from_queue_url(queue_url)
26
+ })
27
+ end
28
+
29
+ end
30
+
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,31 @@
1
+ module Fog
2
+ module AWS
3
+ class SQS
4
+ class Real
5
+
6
+ require 'fog/aws/parsers/sqs/create_queue'
7
+
8
+ # Create a queue
9
+ #
10
+ # ==== Parameters
11
+ # * name<~String> - Name of queue to create
12
+ # * options<~Hash>:
13
+ # * DefaultVisibilityTimeout<~String> - Time, in seconds, to hide a message after it has been received, in 0..43200, defaults to 30
14
+ #
15
+ # ==== See Also
16
+ # http://docs.amazonwebservices.com/AWSSimpleQueueService/latest/APIReference/Query_QueryCreateQueue.html
17
+ #
18
+
19
+ def create_queue(name, options = {})
20
+ request({
21
+ 'Action' => 'CreateQueue',
22
+ 'QueueName' => name,
23
+ :parser => Fog::Parsers::AWS::SQS::CreateQueue.new
24
+ }.merge!(options))
25
+ end
26
+
27
+ end
28
+
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,31 @@
1
+ module Fog
2
+ module AWS
3
+ class SQS
4
+ class Real
5
+
6
+ require 'fog/aws/parsers/sqs/basic'
7
+
8
+ # Delete a message from a queue
9
+ #
10
+ # ==== Parameters
11
+ # * queue_url<~String> - Url of queue to delete message from
12
+ # * receipt_handle<~String> - Token from previous recieve message
13
+ #
14
+ # ==== See Also
15
+ # http://docs.amazonwebservices.com/AWSSimpleQueueService/latest/APIReference/Query_QueryDeleteMessage.html
16
+ #
17
+
18
+ def delete_message(queue_url, receipt_handle)
19
+ request({
20
+ 'Action' => 'DeleteMessage',
21
+ 'ReceiptHandle' => receipt_handle,
22
+ :parser => Fog::Parsers::AWS::SQS::Basic.new,
23
+ :path => path_from_queue_url(queue_url),
24
+ })
25
+ end
26
+
27
+ end
28
+
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,29 @@
1
+ module Fog
2
+ module AWS
3
+ class SQS
4
+ class Real
5
+
6
+ require 'fog/aws/parsers/sqs/basic'
7
+
8
+ # Delete a queue
9
+ #
10
+ # ==== Parameters
11
+ # * queue_url<~String> - Url of queue to delete
12
+ #
13
+ # ==== See Also
14
+ # http://docs.amazonwebservices.com/AWSSimpleQueueService/latest/APIReference/Query_QueryDeleteQueue.html
15
+ #
16
+
17
+ def delete_queue(queue_url)
18
+ request({
19
+ 'Action' => 'DeleteQueue',
20
+ :parser => Fog::Parsers::AWS::SQS::Basic.new,
21
+ :path => path_from_queue_url(queue_url),
22
+ })
23
+ end
24
+
25
+ end
26
+
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,31 @@
1
+ module Fog
2
+ module AWS
3
+ class SQS
4
+ class Real
5
+
6
+ require 'fog/aws/parsers/sqs/get_queue_attributes'
7
+
8
+ # Get attributes of a queue
9
+ #
10
+ # ==== Parameters
11
+ # * queue_url<~String> - Url of queue to get attributes for
12
+ # * attribute_name<~Array> - Name of attribute to return, in ['All', 'ApproximateNumberOfMessages', 'ApproximateNumberOfMessagesNotVisible', 'CreatedTimestamp', 'LastModifiedTimestamp', 'MaximumMessageSize', 'MessageRetentionPeriod', 'Policy', 'QueueArn', 'VisibilityTimeout']
13
+ #
14
+ # ==== See Also
15
+ # http://docs.amazonwebservices.com/AWSSimpleQueueService/latest/APIReference/Query_QueryGetQueueAttributes.html
16
+ #
17
+
18
+ def get_queue_attributes(queue_url, attribute_name)
19
+ request({
20
+ 'Action' => 'GetQueueAttributes',
21
+ 'AttributeName' => attribute_name,
22
+ :path => path_from_queue_url(queue_url),
23
+ :parser => Fog::Parsers::AWS::SQS::GetQueueAttributes.new
24
+ })
25
+ end
26
+
27
+ end
28
+
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,28 @@
1
+ module Fog
2
+ module AWS
3
+ class SQS
4
+ class Real
5
+
6
+ require 'fog/aws/parsers/sqs/list_queues'
7
+
8
+ # List queues
9
+ #
10
+ # ==== Parameters
11
+ # * options<~Hash>:
12
+ # * QueueNamePrefix<~String> - String used to filter results to only those with matching prefixes
13
+ #
14
+ # ==== See Also
15
+ # http://docs.amazonwebservices.com/AWSSimpleQueueService/latest/APIReference/Query_QueryListQueues.html
16
+ #
17
+
18
+ def list_queues(options = {})
19
+ request({
20
+ 'Action' => 'ListQueues',
21
+ :parser => Fog::Parsers::AWS::SQS::ListQueues.new
22
+ }.merge!(options))
23
+ end
24
+ end
25
+
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,34 @@
1
+ module Fog
2
+ module AWS
3
+ class SQS
4
+ class Real
5
+
6
+ require 'fog/aws/parsers/sqs/receive_message'
7
+
8
+ # Get a message from a queue (marks it as unavailable temporarily, but does not remove from queue, see delete_message)
9
+ #
10
+ # ==== Parameters
11
+ # * queue_url<~String> - Url of queue to get message from
12
+ # * options<~Hash>:
13
+ # * Attributes<~Array> - List of attributes to return, in ['All', 'ApproximateFirstReceiveTimestamp', 'ApproximateReceiveCount', 'SenderId', 'SentTimestamp'], defaults to 'All'
14
+ # * MaxNumberOfMessages<~Integer> - Maximum number of messages to return, defaults to 1
15
+ # * VisibilityTimeout<~Integer> - Duration, in seconds, to hide message from other receives. In 0..43200, defaults to visibility timeout for queue
16
+ #
17
+ # ==== See Also
18
+ # http://docs.amazonwebservices.com/AWSSimpleQueueService/latest/APIReference/Query_QueryReceiveMessage.html
19
+ #
20
+
21
+ def receive_message(queue_url, options = {})
22
+ request({
23
+ 'Action' => 'ReceiveMessage',
24
+ 'AttributeName' => 'All',
25
+ :path => path_from_queue_url(queue_url),
26
+ :parser => Fog::Parsers::AWS::SQS::ReceiveMessage.new
27
+ }.merge!(options))
28
+ end
29
+
30
+ end
31
+
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,31 @@
1
+ module Fog
2
+ module AWS
3
+ class SQS
4
+ class Real
5
+
6
+ require 'fog/aws/parsers/sqs/send_message'
7
+
8
+ # Add a message to a queue
9
+ #
10
+ # ==== Parameters
11
+ # * queue_url<~String> - Url of queue to add message to
12
+ # * message<~String> - Message to add to queue
13
+ #
14
+ # ==== See Also
15
+ # http://docs.amazonwebservices.com/AWSSimpleQueueService/latest/APIReference/Query_QuerySendMessage.html
16
+ #
17
+
18
+ def send_message(queue_url, message)
19
+ request({
20
+ 'Action' => 'SendMessage',
21
+ 'MessageBody' => message,
22
+ :path => path_from_queue_url(queue_url),
23
+ :parser => Fog::Parsers::AWS::SQS::SendMessage.new
24
+ })
25
+ end
26
+
27
+ end
28
+
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,33 @@
1
+ module Fog
2
+ module AWS
3
+ class SQS
4
+ class Real
5
+
6
+ require 'fog/aws/parsers/sqs/basic'
7
+
8
+ # Get attributes of a queue
9
+ #
10
+ # ==== Parameters
11
+ # * queue_url<~String> - Url of queue to get attributes for
12
+ # * attribute_name<~String> - Name of attribute to set, keys in ['MaximumMessageSize', 'MessageRetentionPeriod', 'Policy', 'VisibilityTimeout']
13
+ # * attribute_value<~String> - Value to set for attribute
14
+ #
15
+ # ==== See Also
16
+ # http://docs.amazonwebservices.com/AWSSimpleQueueService/latest/APIReference/Query_QuerySetQueueAttributes.html
17
+ #
18
+
19
+ def set_queue_attributes(queue_url, attribute_name, attribute_value)
20
+ request({
21
+ 'Action' => 'SetQueueAttributes',
22
+ 'Attribute.Name' => attribute_name,
23
+ 'Attribute.Value' => attribute_value,
24
+ :path => path_from_queue_url(queue_url),
25
+ :parser => Fog::Parsers::AWS::SQS::Basic.new
26
+ })
27
+ end
28
+
29
+ end
30
+
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,112 @@
1
+ module Fog
2
+ module AWS
3
+ class SNS < Fog::Service
4
+
5
+ requires :aws_access_key_id, :aws_secret_access_key
6
+ recognizes :host, :path, :port, :scheme, :persistent
7
+
8
+ request_path 'fog/aws/requests/sns'
9
+ request :add_permission
10
+ request :confirm_subscription
11
+ request :create_topic
12
+ request :delete_topic
13
+ request :get_topic_attributes
14
+ request :list_subscriptions
15
+ request :list_subscriptions_by_topic
16
+ request :list_topics
17
+ request :publish
18
+ request :remove_permission
19
+ request :set_topic_attributes
20
+ request :subscribe
21
+ request :unsubscribe
22
+
23
+ class Mock
24
+
25
+ def initialize(options={})
26
+ end
27
+
28
+ end
29
+
30
+ class Real
31
+
32
+ # Initialize connection to SNS
33
+ #
34
+ # ==== Notes
35
+ # options parameter must include values for :aws_access_key_id and
36
+ # :aws_secret_access_key in order to create a connection
37
+ #
38
+ # ==== Examples
39
+ # sns = SNS.new(
40
+ # :aws_access_key_id => your_aws_access_key_id,
41
+ # :aws_secret_access_key => your_aws_secret_access_key
42
+ # )
43
+ #
44
+ # ==== Parameters
45
+ # * options<~Hash> - config arguments for connection. Defaults to {}.
46
+ #
47
+ # ==== Returns
48
+ # * SNS object with connection to AWS.
49
+ def initialize(options={})
50
+ require 'multi_json'
51
+ @aws_access_key_id = options[:aws_access_key_id]
52
+ @aws_secret_access_key = options[:aws_secret_access_key]
53
+ @hmac = Fog::HMAC.new('sha256', @aws_secret_access_key)
54
+
55
+ options[:region] ||= 'us-east-1'
56
+ @host = options[:host] || case options[:region]
57
+ when 'ap-southeast-1'
58
+ 'sns.ap-southeast-1.amazonaws.com'
59
+ when 'eu-west-1'
60
+ 'sns.eu-west-1.amazonaws.com'
61
+ when 'us-east-1'
62
+ 'sns.us-east-1.amazonaws.com'
63
+ when 'us-west-1'
64
+ 'sns.us-west-1.amazonaws.com'
65
+ else
66
+ raise ArgumentError, "Unknown region: #{options[:region].inspect}"
67
+ end
68
+
69
+ @path = options[:path] || '/'
70
+ @port = options[:port] || 443
71
+ @scheme = options[:scheme] || 'https'
72
+ @connection = Fog::Connection.new("#{@scheme}://#{@host}:#{@port}#{@path}", options[:persistent])
73
+ end
74
+
75
+ def reload
76
+ @connection.reset
77
+ end
78
+
79
+ private
80
+
81
+ def request(params)
82
+ idempotent = params.delete(:idempotent)
83
+ parser = params.delete(:parser)
84
+
85
+ body = AWS.signed_params(
86
+ params,
87
+ {
88
+ :aws_access_key_id => @aws_access_key_id,
89
+ :hmac => @hmac,
90
+ :host => @host,
91
+ :path => @path,
92
+ :port => @port
93
+ }
94
+ )
95
+
96
+ response = @connection.request({
97
+ :body => body,
98
+ :expects => 200,
99
+ :idempotent => idempotent,
100
+ :headers => { 'Content-Type' => 'application/x-www-form-urlencoded' },
101
+ :host => @host,
102
+ :method => 'POST',
103
+ :parser => parser
104
+ })
105
+
106
+ response
107
+ end
108
+
109
+ end
110
+ end
111
+ end
112
+ end
@@ -0,0 +1,115 @@
1
+ module Fog
2
+ module AWS
3
+ class SQS < Fog::Service
4
+
5
+ requires :aws_access_key_id, :aws_secret_access_key
6
+ recognizes :region, :host, :path, :port, :scheme, :persistent
7
+
8
+ request_path 'fog/aws/requests/sqs'
9
+ request :change_message_visibility
10
+ request :create_queue
11
+ request :delete_message
12
+ request :delete_queue
13
+ request :get_queue_attributes
14
+ request :list_queues
15
+ request :receive_message
16
+ request :send_message
17
+ request :set_queue_attributes
18
+
19
+ class Mock
20
+
21
+ def initialize(options={})
22
+ end
23
+
24
+ end
25
+
26
+ class Real
27
+
28
+ # Initialize connection to SQS
29
+ #
30
+ # ==== Notes
31
+ # options parameter must include values for :aws_access_key_id and
32
+ # :aws_secret_access_key in order to create a connection
33
+ #
34
+ # ==== Examples
35
+ # sqs = SQS.new(
36
+ # :aws_access_key_id => your_aws_access_key_id,
37
+ # :aws_secret_access_key => your_aws_secret_access_key
38
+ # )
39
+ #
40
+ # ==== Parameters
41
+ # * options<~Hash> - config arguments for connection. Defaults to {}.
42
+ # * region<~String> - optional region to use, in ['eu-west-1', 'us-east-1', 'us-west-1', 'ap-southeast-1']
43
+ #
44
+ # ==== Returns
45
+ # * SQS object with connection to AWS.
46
+ def initialize(options={})
47
+ @aws_access_key_id = options[:aws_access_key_id]
48
+ @aws_secret_access_key = options[:aws_secret_access_key]
49
+ @hmac = Fog::HMAC.new('sha256', @aws_secret_access_key)
50
+ options[:region] ||= 'us-east-1'
51
+ @host = options[:host] || case options[:region]
52
+ when 'ap-southeast-1'
53
+ 'ap-southeast-1.queue.amazonaws.com'
54
+ when 'eu-west-1'
55
+ 'eu-west-1.queue.amazonaws.com'
56
+ when 'us-east-1'
57
+ 'queue.amazonaws.com'
58
+ when 'us-west-1'
59
+ 'us-west-1.queue.amazonaws.com'
60
+ else
61
+ raise ArgumentError, "Unknown region: #{options[:region].inspect}"
62
+ end
63
+ @path = options[:path] || '/'
64
+ @port = options[:port] || 443
65
+ @scheme = options[:scheme] || 'https'
66
+ @connection = Fog::Connection.new("#{@scheme}://#{@host}:#{@port}#{@path}", options[:persistent])
67
+ end
68
+
69
+ def reload
70
+ @connection.reset
71
+ end
72
+
73
+ private
74
+
75
+ def path_from_queue_url(queue_url)
76
+ queue_url.split('.com', 2).last
77
+ end
78
+
79
+ def request(params)
80
+ idempotent = params.delete(:idempotent)
81
+ parser = params.delete(:parser)
82
+ path = params.delete(:path)
83
+
84
+ body = AWS.signed_params(
85
+ params,
86
+ {
87
+ :aws_access_key_id => @aws_access_key_id,
88
+ :hmac => @hmac,
89
+ :host => @host,
90
+ :path => path || @path,
91
+ :port => @port,
92
+ :version => '2009-02-01'
93
+ }
94
+ )
95
+
96
+ args = {
97
+ :body => body,
98
+ :expects => 200,
99
+ :idempotent => idempotent,
100
+ :headers => { 'Content-Type' => 'application/x-www-form-urlencoded' },
101
+ :host => @host,
102
+ :method => 'POST',
103
+ :parser => parser
104
+ }
105
+ args.merge!(:path => path) if path
106
+
107
+ response = @connection.request(args)
108
+
109
+ response
110
+ end
111
+
112
+ end
113
+ end
114
+ end
115
+ end