fog 0.9.0 → 0.10.0

Sign up to get free protection for your applications and to get access to all the features.
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
@@ -17,10 +17,10 @@ With a rapidly expanding community and codebase the advantages of fog just keep
17
17
 
18
18
  Now type 'fog' to try stuff, confident that fog will let you know what to do. Here is an example of wading through server creation for Amazon Elastic Compute Cloud:
19
19
 
20
- >> server = AWS.servers.create
20
+ >> server = Compute[:aws].servers.create
21
21
  ArgumentError: image_id is required for this operation
22
22
 
23
- >> server = AWS.servers.create(:image_id => 'ami-5ee70037')
23
+ >> server = Compute[:aws].servers.create(:image_id => 'ami-5ee70037')
24
24
  <Fog::AWS::EC2::Server [...]>
25
25
 
26
26
  >> server.destroy # cleanup after yourself or regret it, trust me
@@ -6,8 +6,8 @@ Gem::Specification.new do |s|
6
6
  ## If your rubyforge_project name is different, then edit it and comment out
7
7
  ## the sub! line in the Rakefile
8
8
  s.name = 'fog'
9
- s.version = '0.9.0'
10
- s.date = '2011-06-24'
9
+ s.version = '0.10.0'
10
+ s.date = '2011-07-25'
11
11
  s.rubyforge_project = 'fog'
12
12
 
13
13
  ## Make sure your summary is short. The description may be as long
@@ -37,13 +37,13 @@ Gem::Specification.new do |s|
37
37
  ## List your runtime dependencies here. Runtime dependencies are those
38
38
  ## that are needed for an end user to actually USE your code.
39
39
  s.add_dependency('builder')
40
- s.add_dependency('excon', '~>0.6.1')
41
- s.add_dependency('formatador', '>=0.1.3')
42
- s.add_dependency('json')
40
+ s.add_dependency('excon', '~>0.6.5')
41
+ s.add_dependency('formatador', '~>0.2.0')
42
+ s.add_dependency('multi_json', '~>1.0.3')
43
43
  s.add_dependency('mime-types')
44
- s.add_dependency('net-scp', '>=1.0.4')
45
- s.add_dependency('net-ssh', '>=2.1.4')
46
- s.add_dependency('nokogiri', '>=1.4.4')
44
+ s.add_dependency('net-scp', '~>1.0.4')
45
+ s.add_dependency('net-ssh', '~>2.1.4')
46
+ s.add_dependency('nokogiri', '~>1.5.0')
47
47
  s.add_dependency('ruby-hmac')
48
48
 
49
49
  ## List your development dependencies here. Development dependencies are
@@ -51,9 +51,9 @@ Gem::Specification.new do |s|
51
51
  s.add_development_dependency('jekyll')
52
52
  s.add_development_dependency('rake')
53
53
  s.add_development_dependency('rdoc')
54
- s.add_development_dependency('rspec', '1.3.1')
55
- s.add_development_dependency('shindo', '0.3.4')
56
- s.add_development_dependency('virtualbox', '0.8.3')
54
+ s.add_development_dependency('rspec', '~>1.3.1')
55
+ s.add_development_dependency('shindo', '~>0.3.4')
56
+ s.add_development_dependency('virtualbox', '~>0.8.3')
57
57
 
58
58
  s.files = `git ls-files`.split("\n")
59
59
  s.test_files = `git ls-files -- {spec,tests}/*`.split("\n")
data/lib/fog.rb CHANGED
@@ -3,7 +3,7 @@ require File.join(File.dirname(__FILE__), 'fog', 'core')
3
3
  module Fog
4
4
 
5
5
  unless const_defined?(:VERSION)
6
- VERSION = '0.9.0'
6
+ VERSION = '0.10.0'
7
7
  end
8
8
 
9
9
  end
@@ -0,0 +1,221 @@
1
+ module Fog
2
+ module AWS
3
+ class AutoScaling < Fog::Service
4
+
5
+ class IdentifierTaken < Fog::Errors::Error; end
6
+ class ResourceInUse < Fog::Errors::Error; end
7
+ class ValidationError < Fog::Errors::Error; end
8
+
9
+ requires :aws_access_key_id, :aws_secret_access_key
10
+ recognizes :host, :path, :port, :scheme, :persistent, :region
11
+
12
+ request_path 'fog/aws/requests/auto_scaling'
13
+ request :create_auto_scaling_group
14
+ request :create_launch_configuration
15
+ request :delete_auto_scaling_group
16
+ request :delete_launch_configuration
17
+ request :delete_policy
18
+ request :delete_scheduled_action
19
+ request :describe_adjustment_types
20
+ request :describe_auto_scaling_groups
21
+ request :describe_auto_scaling_instances
22
+ request :describe_launch_configurations
23
+ request :describe_metric_collection_types
24
+ request :describe_policies
25
+ request :describe_scaling_activities
26
+ request :describe_scaling_process_types
27
+ request :describe_scheduled_actions
28
+ request :disable_metrics_collection
29
+ request :enable_metrics_collection
30
+ request :execute_policy
31
+ request :put_scaling_policy
32
+ request :put_scheduled_update_group_action
33
+ request :resume_processes
34
+ request :set_desired_capacity
35
+ request :set_instance_health
36
+ request :suspend_processes
37
+ request :terminate_instance_in_auto_scaling_group
38
+ request :update_auto_scaling_group
39
+
40
+ model_path 'fog/aws/models/auto_scaling'
41
+ model :activity
42
+ collection :activities
43
+ model :configuration
44
+ collection :configurations
45
+ model :group
46
+ collection :groups
47
+ model :instance
48
+ collection :instances
49
+
50
+ class Real
51
+
52
+ # Initialize connection to AutoScaling
53
+ #
54
+ # ==== Notes
55
+ # options parameter must include values for :aws_access_key_id and
56
+ # :aws_secret_access_key in order to create a connection
57
+ #
58
+ # ==== Examples
59
+ # as = AutoScaling.new(
60
+ # :aws_access_key_id => your_aws_access_key_id,
61
+ # :aws_secret_access_key => your_aws_secret_access_key
62
+ # )
63
+ #
64
+ # ==== Parameters
65
+ # * options<~Hash> - config arguments for connection. Defaults to {}.
66
+ #
67
+ # ==== Returns
68
+ # * AutoScaling object with connection to AWS.
69
+ def initialize(options={})
70
+ require 'fog/core/parser'
71
+
72
+ @aws_access_key_id = options[:aws_access_key_id]
73
+ @aws_secret_access_key = options[:aws_secret_access_key]
74
+ @hmac = Fog::HMAC.new('sha256', @aws_secret_access_key)
75
+
76
+ options[:region] ||= 'us-east-1'
77
+ @host = options[:host] || case options[:region]
78
+ when 'ap-northeast-1'
79
+ 'autoscaling.ap-northeast-1.amazonaws.com'
80
+ when 'ap-southeast-1'
81
+ 'autoscaling.ap-southeast-1.amazonaws.com'
82
+ when 'eu-west-1'
83
+ 'autoscaling.eu-west-1.amazonaws.com'
84
+ when 'us-east-1'
85
+ 'autoscaling.us-east-1.amazonaws.com'
86
+ when 'us-west-1'
87
+ 'autoscaling.us-west-1.amazonaws.com'
88
+ else
89
+ raise ArgumentError, "Unknown region: #{options[:region].inspect}"
90
+ end
91
+ @path = options[:path] || '/'
92
+ @port = options[:port] || 443
93
+ @scheme = options[:scheme] || 'https'
94
+ @connection = Fog::Connection.new("#{@scheme}://#{@host}:#{@port}#{@path}", options[:persistent])
95
+ end
96
+
97
+ def reload
98
+ @connection.reset
99
+ end
100
+
101
+ private
102
+
103
+ def request(params)
104
+ idempotent = params.delete(:idempotent)
105
+ parser = params.delete(:parser)
106
+
107
+ body = AWS.signed_params(
108
+ params,
109
+ {
110
+ :aws_access_key_id => @aws_access_key_id,
111
+ :hmac => @hmac,
112
+ :host => @host,
113
+ :path => @path,
114
+ :port => @port,
115
+ :version => '2010-08-01'
116
+ }
117
+ )
118
+
119
+ begin
120
+ response = @connection.request({
121
+ :body => body,
122
+ :expects => 200,
123
+ :idempotent => idempotent,
124
+ :headers => { 'Content-Type' => 'application/x-www-form-urlencoded' },
125
+ :host => @host,
126
+ :method => 'POST',
127
+ :parser => parser
128
+ })
129
+ rescue Excon::Errors::HTTPStatusError => error
130
+ if match = error.message.match(/<Code>(.*)<\/Code>.*<Message>(.*)<\/Message>/)
131
+ case match[1]
132
+ when 'AlreadyExists'
133
+ #raise Fog::AWS::AutoScaling::IdentifierTaken.new(match[2])
134
+ raise Fog::AWS::AutoScaling::IdentifierTaken.slurp(error, match[2])
135
+ when 'ResourceInUse'
136
+ raise Fog::AWS::AutoScaling::ResourceInUse.slurp(error, match[2])
137
+ when 'ValidationError'
138
+ raise Fog::AWS::AutoScaling::ValidationError.slurp(error, match[2])
139
+ else
140
+ raise Fog::AWS::Compute::Error.slurp(error, "#{match[1]} => #{match[2]}")
141
+ end
142
+ else
143
+ raise
144
+ end
145
+ end
146
+
147
+ response
148
+ end
149
+
150
+ end
151
+
152
+ class Mock
153
+
154
+ def self.data
155
+ @data ||= Hash.new do |hash, region|
156
+ owner_id = Fog::AWS::Mock.owner_id
157
+ hash[region] = Hash.new do |region_hash, key|
158
+ region_hash[key] = {
159
+ :adjustment_types => [
160
+ 'ChangeInCapacity',
161
+ 'ExactCapacity',
162
+ 'PercentChangeInCapacity'
163
+ ],
164
+ :auto_scaling_groups => {},
165
+ :health_states => ['Healthy', 'Unhealthy'],
166
+ :launch_configurations => {},
167
+ :metric_collection_types => {
168
+ :granularities => [ '1Minute' ],
169
+ :metrics => [
170
+ 'GroupMinSize',
171
+ 'GroupMaxSize',
172
+ 'GroupDesiredCapacity',
173
+ 'GroupInServiceInstances',
174
+ 'GroupPendingInstances',
175
+ 'GroupTerminatingInstances',
176
+ 'GroupTotalInstances'
177
+ ],
178
+ },
179
+ :process_types => [
180
+ 'AZRebalance',
181
+ 'AlarmNotification',
182
+ 'HealthCheck',
183
+ 'Launch',
184
+ 'ReplaceUnhealthy',
185
+ 'ScheduledActions',
186
+ 'Terminate'
187
+ ]
188
+ }
189
+ end
190
+ end
191
+ end
192
+
193
+ def self.reset
194
+ @data = nil
195
+ end
196
+
197
+ def initialize(options={})
198
+
199
+ @aws_access_key_id = options[:aws_access_key_id]
200
+
201
+ @region = options[:region] || 'us-east-1'
202
+
203
+ unless ['ap-northeast-1', 'ap-southeast-1', 'eu-west-1', 'us-east-1', 'us-west-1'].include?(@region)
204
+ raise ArgumentError, "Unknown region: #{@region.inspect}"
205
+ end
206
+
207
+ end
208
+
209
+ def data
210
+ self.class.data[@region][@aws_access_key_id]
211
+ end
212
+
213
+ def reset_data
214
+ self.class.data[@region].delete(@aws_access_key_id)
215
+ end
216
+
217
+ end
218
+
219
+ end
220
+ end
221
+ end
@@ -43,7 +43,7 @@ module Fog
43
43
  # * CloudFormation object with connection to AWS.
44
44
  def initialize(options={})
45
45
  require 'fog/core/parser'
46
- require 'json'
46
+ require 'multi_json'
47
47
 
48
48
  @aws_access_key_id = options[:aws_access_key_id]
49
49
  @aws_secret_access_key = options[:aws_secret_access_key]
@@ -0,0 +1,110 @@
1
+ module Fog
2
+ module AWS
3
+ class CloudWatch < Fog::Service
4
+
5
+
6
+ requires :aws_access_key_id, :aws_secret_access_key
7
+ recognizes :region, :host, :path, :port, :scheme, :persistent
8
+
9
+ request_path 'fog/aws/requests/cloud_watch'
10
+
11
+ request :list_metrics
12
+ request :get_metric_statistics
13
+ request :put_metric_data
14
+
15
+ model_path 'fog/aws/models/cloud_watch'
16
+ model :metric
17
+ collection :metrics
18
+ model :metric_statistic
19
+ collection :metric_statistics
20
+
21
+ class Mock
22
+
23
+ def initialize(options={})
24
+ end
25
+
26
+ end
27
+
28
+ class Real
29
+
30
+ # Initialize connection to Cloudwatch
31
+ #
32
+ # ==== Notes
33
+ # options parameter must include values for :aws_access_key_id and
34
+ # :aws_secret_access_key in order to create a connection
35
+ #
36
+ # ==== Examples
37
+ # elb = CloudWatch.new(
38
+ # :aws_access_key_id => your_aws_access_key_id,
39
+ # :aws_secret_access_key => your_aws_secret_access_key
40
+ # )
41
+ #
42
+ # ==== Parameters
43
+ # * options<~Hash> - config arguments for connection. Defaults to {}.
44
+ # * region<~String> - optional region to use, in ['eu-west-1', 'us-east-1', 'us-west-1', 'ap-southeast-1', 'ap-northeast-1']
45
+ #
46
+ # ==== Returns
47
+ # * CloudWatch object with connection to AWS.
48
+ def initialize(options={})
49
+ @aws_access_key_id = options[:aws_access_key_id]
50
+ @aws_secret_access_key = options[:aws_secret_access_key]
51
+ @hmac = Fog::HMAC.new('sha256', @aws_secret_access_key)
52
+
53
+ options[:region] ||= 'us-east-1'
54
+ @host = options[:host] || case options[:region]
55
+ when 'ap-northeast-1'
56
+ 'monitoring.ap-northeast-1.amazonaws.com'
57
+ when 'ap-southeast-1'
58
+ 'monitoring.ap-southeast-1.amazonaws.com'
59
+ when 'eu-west-1'
60
+ 'monitoring.eu-west-1.amazonaws.com'
61
+ when 'us-east-1'
62
+ 'monitoring.us-east-1.amazonaws.com'
63
+ when 'us-west-1'
64
+ 'monitoring.us-west-1.amazonaws.com'
65
+ else
66
+ raise ArgumentError, "Unknown region: #{options[:region].inspect}"
67
+ end
68
+ @path = options[:path] || '/'
69
+ @port = options[:port] || 443
70
+ @scheme = options[:scheme] || 'https'
71
+ @connection = Fog::Connection.new("#{@scheme}://#{@host}:#{@port}#{@path}", options[:persistent])
72
+ end
73
+
74
+ def reload
75
+ @connection.reset
76
+ end
77
+
78
+ private
79
+
80
+ def request(params)
81
+ idempotent = params.delete(:idempotent)
82
+ parser = params.delete(:parser)
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,
91
+ :port => @port,
92
+ :version => '2010-08-01'
93
+ }
94
+ )
95
+
96
+ response = @connection.request({
97
+ :body => body,
98
+ :expects => 200,
99
+ :headers => { 'Content-Type' => 'application/x-www-form-urlencoded' },
100
+ :idempotent => idempotent,
101
+ :host => @host,
102
+ :method => 'POST',
103
+ :parser => parser
104
+ })
105
+ end
106
+
107
+ end
108
+ end
109
+ end
110
+ end
@@ -23,7 +23,7 @@ module Fog
23
23
  request :disable_availability_zones_for_load_balancer
24
24
  request :enable_availability_zones_for_load_balancer
25
25
  request :register_instances_with_load_balancer
26
- #request :set_load_balancer_listener_ssl_certificate
26
+ request :set_load_balancer_listener_ssl_certificate
27
27
  request :set_load_balancer_policies_of_listener
28
28
 
29
29
  model_path 'fog/aws/models/elb'
@@ -36,10 +36,43 @@ module Fog
36
36
 
37
37
  class Mock
38
38
 
39
+ def self.data
40
+ @data ||= Hash.new do |hash, region|
41
+ owner_id = Fog::AWS::Mock.owner_id
42
+ hash[region] = Hash.new do |region_hash, key|
43
+ region_hash[key] = {
44
+ :owner_id => owner_id,
45
+ :load_balancers => {}
46
+ }
47
+ end
48
+ end
49
+ end
50
+
51
+ def self.dns_name(name, region)
52
+ "#{name}-#{Fog::Mock.random_hex(8)}.#{region}.elb.amazonaws.com"
53
+ end
54
+
55
+ def self.reset
56
+ @data = nil
57
+ end
58
+
39
59
  def initialize(options={})
40
- Fog::Mock.not_implemented
60
+ @aws_access_key_id = options[:aws_access_key_id]
61
+
62
+ @region = options[:region] || 'us-east-1'
63
+
64
+ unless ['ap-northeast-1', 'ap-southeast-1', 'eu-west-1', 'us-east-1', 'us-west-1'].include?(@region)
65
+ raise ArgumentError, "Unknown region: #{@region.inspect}"
66
+ end
67
+ end
68
+
69
+ def data
70
+ self.class.data[@region][@aws_access_key_id]
41
71
  end
42
72
 
73
+ def reset_data
74
+ self.class.data[@region].delete(@aws_access_key_id)
75
+ end
43
76
  end
44
77
 
45
78
  class Real
@@ -111,34 +144,33 @@ module Fog
111
144
  :version => '2011-04-05'
112
145
  }
113
146
  )
114
- begin
115
- response = @connection.request({
116
- :body => body,
117
- :expects => 200,
118
- :headers => { 'Content-Type' => 'application/x-www-form-urlencoded' },
119
- :idempotent => idempotent,
120
- :host => @host,
121
- :method => 'POST',
122
- :parser => parser
123
- })
124
- rescue Excon::Errors::HTTPStatusError => error
125
- if match = error.message.match(/<Code>(.*)<\/Code>/m)
126
- case match[1]
127
- when 'LoadBalancerNotFound'
128
- raise Fog::AWS::ELB::NotFound
129
- when 'DuplicateLoadBalancerName'
130
- raise Fog::AWS::ELB::IdentifierTaken
131
- when 'InvalidInstance'
132
- raise Fog::AWS::ELB::InvalidInstance
133
- else
134
- raise
135
- end
147
+
148
+ response = @connection.request({
149
+ :body => body,
150
+ :expects => 200,
151
+ :headers => { 'Content-Type' => 'application/x-www-form-urlencoded' },
152
+ :idempotent => idempotent,
153
+ :host => @host,
154
+ :method => 'POST',
155
+ :parser => parser
156
+ })
157
+ rescue Excon::Errors::HTTPStatusError => error
158
+ if match = error.message.match(/<Code>(.*)<\/Code>(?:.*<Message>(.*)<\/Message>)?/m)
159
+ case match[1]
160
+ when 'CertificateNotFound'
161
+ raise Fog::AWS::IAM::NotFound.slurp(error, match[2])
162
+ when 'LoadBalancerNotFound'
163
+ raise Fog::AWS::ELB::NotFound.slurp(error, match[2])
164
+ when 'DuplicateLoadBalancerName'
165
+ raise Fog::AWS::ELB::IdentifierTaken.slurp(error, match[2])
166
+ when 'InvalidInstance'
167
+ raise Fog::AWS::ELB::InvalidInstance.slurp(error, match[2])
136
168
  else
137
169
  raise
138
170
  end
171
+ else
172
+ raise
139
173
  end
140
-
141
- response
142
174
  end
143
175
  end
144
176
  end