fog 0.7.2 → 0.8.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 (320) hide show
  1. data/README.rdoc +3 -12
  2. data/Rakefile +3 -2
  3. data/benchs/parse_vs_push.rb +17 -8
  4. data/bin/fog +2 -2
  5. data/changelog.txt +123 -0
  6. data/docs/_layouts/default.html +21 -8
  7. data/docs/{_posts/2011-01-01-contributing.markdown → about/contributing.markdown} +0 -0
  8. data/docs/about/getting_started.markdown +83 -0
  9. data/docs/{_posts/2011-01-01-press.markdown → about/press.markdown} +6 -1
  10. data/docs/{_posts/2011-01-01-structure.markdown → about/structure.markdown} +0 -0
  11. data/docs/{_posts/2011-01-01-users.markdown → about/users.markdown} +0 -0
  12. data/docs/{_posts/2011-01-01-cdn.markdown → cdn/index.markdown} +12 -12
  13. data/docs/{_posts/2011-01-01-dns.markdown → dns/index.markdown} +18 -18
  14. data/docs/index.markdown +5 -4
  15. data/docs/{_posts/2011-01-01-storage.markdown → storage/index.markdown} +59 -21
  16. data/fog.gemspec +3 -9
  17. data/lib/fog.rb +1 -1
  18. data/lib/fog/aws/elb.rb +46 -12
  19. data/lib/fog/aws/iam.rb +1 -0
  20. data/lib/fog/aws/models/elb/listener.rb +51 -0
  21. data/lib/fog/aws/models/elb/listeners.rb +32 -0
  22. data/lib/fog/aws/models/elb/load_balancer.rb +129 -0
  23. data/lib/fog/aws/models/elb/load_balancers.rb +28 -0
  24. data/lib/fog/aws/models/elb/policies.rb +40 -0
  25. data/lib/fog/aws/models/elb/policy.rb +52 -0
  26. data/lib/fog/aws/{rds/models → models/rds}/parameter.rb +0 -0
  27. data/lib/fog/aws/{rds/models → models/rds}/parameter_group.rb +0 -0
  28. data/lib/fog/aws/{rds/models → models/rds}/parameter_groups.rb +1 -1
  29. data/lib/fog/aws/{rds/models → models/rds}/parameters.rb +1 -1
  30. data/lib/fog/aws/{rds/models → models/rds}/security_group.rb +0 -0
  31. data/lib/fog/aws/{rds/models → models/rds}/security_groups.rb +1 -1
  32. data/lib/fog/aws/{rds/models → models/rds}/server.rb +0 -0
  33. data/lib/fog/aws/{rds/models → models/rds}/servers.rb +1 -1
  34. data/lib/fog/aws/{rds/models → models/rds}/snapshot.rb +0 -0
  35. data/lib/fog/aws/{rds/models → models/rds}/snapshots.rb +1 -1
  36. data/lib/fog/aws/parsers/cloud_formation/create_stack.rb +1 -1
  37. data/lib/fog/aws/parsers/cloud_formation/describe_stack_events.rb +3 -3
  38. data/lib/fog/aws/parsers/cloud_formation/describe_stack_resources.rb +3 -3
  39. data/lib/fog/aws/parsers/cloud_formation/describe_stacks.rb +6 -6
  40. data/lib/fog/aws/parsers/cloud_formation/get_template.rb +1 -1
  41. data/lib/fog/aws/parsers/cloud_formation/validate_template.rb +5 -5
  42. data/lib/fog/aws/parsers/elb/configure_health_check.rb +37 -0
  43. data/lib/fog/aws/parsers/elb/create_load_balancer.rb +2 -2
  44. data/lib/fog/aws/parsers/elb/delete_load_balancer.rb +1 -1
  45. data/lib/fog/aws/parsers/elb/deregister_instances_from_load_balancer.rb +2 -2
  46. data/lib/fog/aws/parsers/elb/describe_instance_health.rb +2 -2
  47. data/lib/fog/aws/parsers/elb/describe_load_balancers.rb +36 -16
  48. data/lib/fog/aws/parsers/elb/disable_availability_zones_for_load_balancer.rb +2 -2
  49. data/lib/fog/aws/parsers/elb/empty.rb +28 -0
  50. data/lib/fog/aws/parsers/elb/enable_availability_zones_for_load_balancer.rb +2 -2
  51. data/lib/fog/aws/parsers/elb/register_instances_with_load_balancer.rb +2 -2
  52. data/lib/fog/aws/parsers/iam/basic.rb +1 -1
  53. data/lib/fog/aws/parsers/iam/create_access_key.rb +2 -2
  54. data/lib/fog/aws/parsers/iam/create_group.rb +2 -2
  55. data/lib/fog/aws/parsers/iam/create_user.rb +2 -2
  56. data/lib/fog/aws/parsers/iam/get_group.rb +6 -6
  57. data/lib/fog/aws/parsers/iam/get_user.rb +2 -2
  58. data/lib/fog/aws/parsers/iam/get_user_policy.rb +2 -2
  59. data/lib/fog/aws/parsers/iam/list_access_keys.rb +3 -3
  60. data/lib/fog/aws/parsers/iam/list_groups.rb +3 -3
  61. data/lib/fog/aws/parsers/iam/list_groups_for_user.rb +3 -3
  62. data/lib/fog/aws/parsers/iam/list_policies.rb +3 -3
  63. data/lib/fog/aws/parsers/iam/list_server_certificates.rb +38 -0
  64. data/lib/fog/aws/parsers/iam/list_signing_certificates.rb +3 -3
  65. data/lib/fog/aws/parsers/iam/list_users.rb +3 -3
  66. data/lib/fog/aws/parsers/iam/login_profile.rb +3 -3
  67. data/lib/fog/aws/parsers/iam/update_group.rb +2 -2
  68. data/lib/fog/aws/parsers/iam/update_user.rb +2 -2
  69. data/lib/fog/aws/parsers/iam/upload_server_certificate.rb +5 -3
  70. data/lib/fog/aws/parsers/iam/upload_signing_certificate.rb +2 -2
  71. data/lib/fog/aws/parsers/rds/authorize_db_security_group_ingress.rb +1 -1
  72. data/lib/fog/aws/parsers/rds/create_db_instance.rb +1 -1
  73. data/lib/fog/aws/parsers/rds/create_db_instance_read_replica.rb +1 -1
  74. data/lib/fog/aws/parsers/rds/create_db_parameter_group.rb +4 -4
  75. data/lib/fog/aws/parsers/rds/create_db_security_group.rb +1 -1
  76. data/lib/fog/aws/parsers/rds/create_db_snapshot.rb +1 -1
  77. data/lib/fog/aws/parsers/rds/db_parser.rb +16 -16
  78. data/lib/fog/aws/parsers/rds/delete_db_instance.rb +1 -1
  79. data/lib/fog/aws/parsers/rds/delete_db_parameter_group.rb +1 -1
  80. data/lib/fog/aws/parsers/rds/delete_db_security_group.rb +1 -1
  81. data/lib/fog/aws/parsers/rds/delete_db_snapshot.rb +1 -1
  82. data/lib/fog/aws/parsers/rds/describe_db_instances.rb +2 -2
  83. data/lib/fog/aws/parsers/rds/describe_db_parameter_groups.rb +5 -5
  84. data/lib/fog/aws/parsers/rds/describe_db_parameters.rb +10 -10
  85. data/lib/fog/aws/parsers/rds/describe_db_security_groups.rb +2 -2
  86. data/lib/fog/aws/parsers/rds/describe_db_snapshots.rb +2 -2
  87. data/lib/fog/aws/parsers/rds/modify_db_instance.rb +1 -1
  88. data/lib/fog/aws/parsers/rds/modify_db_parameter_group.rb +2 -2
  89. data/lib/fog/aws/parsers/rds/reboot_db_instance.rb +1 -1
  90. data/lib/fog/aws/parsers/rds/restore_db_instance_from_db_snapshot.rb +1 -1
  91. data/lib/fog/aws/parsers/rds/restore_db_instance_to_point_in_time.rb +1 -1
  92. data/lib/fog/aws/parsers/rds/revoke_db_security_group_ingress.rb +1 -1
  93. data/lib/fog/aws/parsers/rds/security_group_parser.rb +4 -4
  94. data/lib/fog/aws/parsers/rds/snapshot_parser.rb +11 -11
  95. data/lib/fog/aws/parsers/ses/delete_verified_email_address.rb +1 -1
  96. data/lib/fog/aws/parsers/ses/get_send_quota.rb +2 -2
  97. data/lib/fog/aws/parsers/ses/get_send_statistics.rb +2 -2
  98. data/lib/fog/aws/parsers/ses/list_verified_email_addresses.rb +2 -2
  99. data/lib/fog/aws/parsers/ses/send_email.rb +2 -2
  100. data/lib/fog/aws/parsers/ses/send_raw_email.rb +2 -2
  101. data/lib/fog/aws/parsers/ses/verify_email_address.rb +1 -1
  102. data/lib/fog/aws/parsers/simpledb/basic.rb +2 -2
  103. data/lib/fog/aws/parsers/simpledb/domain_metadata.rb +4 -4
  104. data/lib/fog/aws/parsers/simpledb/get_attributes.rb +4 -4
  105. data/lib/fog/aws/parsers/simpledb/list_domains.rb +3 -3
  106. data/lib/fog/aws/parsers/simpledb/select.rb +5 -5
  107. data/lib/fog/aws/rds.rb +2 -3
  108. data/lib/fog/aws/requests/elb/configure_health_check.rb +41 -0
  109. data/lib/fog/aws/requests/elb/create_app_cookie_stickiness_policy.rb +33 -0
  110. data/lib/fog/aws/requests/elb/create_lb_cookie_stickiness_policy.rb +35 -0
  111. data/lib/fog/aws/requests/elb/create_load_balancer_listeners.rb +51 -0
  112. data/lib/fog/aws/requests/elb/delete_load_balancer_listeners.rb +31 -0
  113. data/lib/fog/aws/requests/elb/delete_load_balancer_policy.rb +31 -0
  114. data/lib/fog/aws/requests/elb/set_load_balancer_policies_of_listener.rb +43 -0
  115. data/lib/fog/aws/requests/iam/list_server_certificates.rb +42 -0
  116. data/lib/fog/aws/requests/ses/send_raw_email.rb +4 -4
  117. data/lib/fog/aws/simpledb.rb +2 -2
  118. data/lib/fog/bin.rb +1 -0
  119. data/lib/fog/bin/stormondemand.rb +30 -0
  120. data/lib/fog/cdn/parsers/aws/distribution.rb +11 -11
  121. data/lib/fog/cdn/parsers/aws/get_distribution_list.rb +9 -9
  122. data/lib/fog/cdn/parsers/aws/post_invalidation.rb +3 -3
  123. data/lib/fog/compute.rb +3 -0
  124. data/lib/fog/compute/aws.rb +4 -2
  125. data/lib/fog/compute/models/aws/server.rb +16 -2
  126. data/lib/fog/compute/models/bluebox/server.rb +11 -2
  127. data/lib/fog/compute/models/brightbox/server.rb +6 -0
  128. data/lib/fog/compute/models/ecloud/servers.rb +3 -1
  129. data/lib/fog/compute/models/go_grid/server.rb +1 -0
  130. data/lib/fog/compute/models/rackspace/server.rb +2 -1
  131. data/lib/fog/compute/models/slicehost/server.rb +2 -1
  132. data/lib/fog/compute/models/storm_on_demand/balancer.rb +38 -0
  133. data/lib/fog/compute/models/storm_on_demand/balancers.rb +21 -0
  134. data/lib/fog/compute/models/storm_on_demand/config.rb +25 -0
  135. data/lib/fog/compute/models/storm_on_demand/configs.rb +22 -0
  136. data/lib/fog/compute/models/storm_on_demand/image.rb +20 -0
  137. data/lib/fog/compute/models/storm_on_demand/images.rb +21 -0
  138. data/lib/fog/compute/models/storm_on_demand/private_ip.rb +19 -0
  139. data/lib/fog/compute/models/storm_on_demand/private_ips.rb +31 -0
  140. data/lib/fog/compute/models/storm_on_demand/server.rb +74 -0
  141. data/lib/fog/compute/models/storm_on_demand/servers.rb +26 -0
  142. data/lib/fog/compute/models/storm_on_demand/stat.rb +23 -0
  143. data/lib/fog/compute/models/storm_on_demand/stats.rb +22 -0
  144. data/lib/fog/compute/models/storm_on_demand/template.rb +22 -0
  145. data/lib/fog/compute/models/storm_on_demand/templates.rb +21 -0
  146. data/lib/fog/compute/models/voxel/image.rb +4 -1
  147. data/lib/fog/compute/models/voxel/server.rb +1 -0
  148. data/lib/fog/compute/parsers/aws/allocate_address.rb +1 -1
  149. data/lib/fog/compute/parsers/aws/attach_volume.rb +2 -2
  150. data/lib/fog/compute/parsers/aws/basic.rb +2 -2
  151. data/lib/fog/compute/parsers/aws/create_image.rb +1 -1
  152. data/lib/fog/compute/parsers/aws/create_key_pair.rb +1 -1
  153. data/lib/fog/compute/parsers/aws/create_snapshot.rb +4 -4
  154. data/lib/fog/compute/parsers/aws/create_volume.rb +3 -3
  155. data/lib/fog/compute/parsers/aws/deregister_image.rb +1 -1
  156. data/lib/fog/compute/parsers/aws/describe_addresses.rb +2 -2
  157. data/lib/fog/compute/parsers/aws/describe_availability_zones.rb +3 -3
  158. data/lib/fog/compute/parsers/aws/describe_images.rb +7 -7
  159. data/lib/fog/compute/parsers/aws/describe_instances.rb +17 -17
  160. data/lib/fog/compute/parsers/aws/describe_key_pairs.rb +2 -2
  161. data/lib/fog/compute/parsers/aws/describe_regions.rb +2 -2
  162. data/lib/fog/compute/parsers/aws/describe_reserved_instances.rb +5 -5
  163. data/lib/fog/compute/parsers/aws/describe_reserved_instances_offerings.rb +4 -4
  164. data/lib/fog/compute/parsers/aws/describe_security_groups.rb +8 -8
  165. data/lib/fog/compute/parsers/aws/describe_snapshots.rb +5 -5
  166. data/lib/fog/compute/parsers/aws/describe_tags.rb +2 -2
  167. data/lib/fog/compute/parsers/aws/describe_volumes.rb +8 -8
  168. data/lib/fog/compute/parsers/aws/detach_volume.rb +2 -2
  169. data/lib/fog/compute/parsers/aws/get_console_output.rb +3 -7
  170. data/lib/fog/compute/parsers/aws/import_key_pair.rb +1 -1
  171. data/lib/fog/compute/parsers/aws/monitor_unmonitor_instances.rb +3 -3
  172. data/lib/fog/compute/parsers/aws/register_image.rb +1 -1
  173. data/lib/fog/compute/parsers/aws/run_instances.rb +14 -22
  174. data/lib/fog/compute/parsers/aws/start_stop_instances.rb +3 -3
  175. data/lib/fog/compute/parsers/aws/terminate_instances.rb +6 -6
  176. data/lib/fog/compute/parsers/slicehost/create_slice.rb +4 -4
  177. data/lib/fog/compute/parsers/slicehost/get_backups.rb +3 -3
  178. data/lib/fog/compute/parsers/slicehost/get_flavor.rb +2 -2
  179. data/lib/fog/compute/parsers/slicehost/get_flavors.rb +2 -2
  180. data/lib/fog/compute/parsers/slicehost/get_image.rb +2 -2
  181. data/lib/fog/compute/parsers/slicehost/get_images.rb +2 -2
  182. data/lib/fog/compute/parsers/slicehost/get_slice.rb +4 -4
  183. data/lib/fog/compute/parsers/slicehost/get_slices.rb +4 -4
  184. data/lib/fog/compute/parsers/voxel/devices_list.rb +12 -12
  185. data/lib/fog/compute/parsers/voxel/images_list.rb +5 -5
  186. data/lib/fog/compute/parsers/voxel/voxcloud_create.rb +2 -2
  187. data/lib/fog/compute/parsers/voxel/voxcloud_status.rb +2 -2
  188. data/lib/fog/compute/requests/aws/describe_availability_zones.rb +17 -1
  189. data/lib/fog/compute/requests/aws/describe_instances.rb +6 -1
  190. data/lib/fog/compute/requests/storm_on_demand/add_balancer_node.rb +16 -0
  191. data/lib/fog/compute/requests/storm_on_demand/clone_server.rb +16 -0
  192. data/lib/fog/compute/requests/storm_on_demand/create_server.rb +16 -0
  193. data/lib/fog/compute/requests/storm_on_demand/delete_server.rb +16 -0
  194. data/lib/fog/compute/requests/storm_on_demand/get_server.rb +16 -0
  195. data/lib/fog/compute/requests/storm_on_demand/get_stats.rb +16 -0
  196. data/lib/fog/compute/requests/storm_on_demand/list_balancers.rb +16 -0
  197. data/lib/fog/compute/requests/storm_on_demand/list_configs.rb +16 -0
  198. data/lib/fog/compute/requests/storm_on_demand/list_images.rb +16 -0
  199. data/lib/fog/compute/requests/storm_on_demand/list_private_ips.rb +16 -0
  200. data/lib/fog/compute/requests/storm_on_demand/list_servers.rb +16 -0
  201. data/lib/fog/compute/requests/storm_on_demand/list_templates.rb +16 -0
  202. data/lib/fog/compute/requests/storm_on_demand/reboot_server.rb +16 -0
  203. data/lib/fog/compute/requests/storm_on_demand/remove_balancer_node.rb +16 -0
  204. data/lib/fog/compute/requests/storm_on_demand/resize_server.rb +16 -0
  205. data/lib/fog/compute/requests/voxel/images_list.rb +3 -3
  206. data/lib/fog/compute/storm_on_demand.rb +122 -0
  207. data/lib/fog/core/attributes.rb +12 -0
  208. data/lib/fog/core/credentials.rb +1 -52
  209. data/lib/fog/core/errors.rb +53 -0
  210. data/lib/fog/core/model.rb +10 -5
  211. data/lib/fog/core/parser.rb +8 -3
  212. data/lib/fog/dns/models/aws/records.rb +1 -1
  213. data/lib/fog/dns/models/aws/zones.rb +1 -1
  214. data/lib/fog/dns/parsers/aws/change_resource_record_sets.rb +2 -2
  215. data/lib/fog/dns/parsers/aws/create_hosted_zone.rb +5 -5
  216. data/lib/fog/dns/parsers/aws/delete_hosted_zone.rb +1 -1
  217. data/lib/fog/dns/parsers/aws/get_change.rb +2 -2
  218. data/lib/fog/dns/parsers/aws/get_hosted_zone.rb +3 -3
  219. data/lib/fog/dns/parsers/aws/list_hosted_zones.rb +4 -4
  220. data/lib/fog/dns/parsers/aws/list_resource_record_sets.rb +4 -4
  221. data/lib/fog/dns/parsers/bluebox/create_record.rb +2 -2
  222. data/lib/fog/dns/parsers/bluebox/create_zone.rb +2 -2
  223. data/lib/fog/dns/parsers/bluebox/get_record.rb +1 -1
  224. data/lib/fog/dns/parsers/bluebox/get_records.rb +1 -1
  225. data/lib/fog/dns/parsers/bluebox/get_zone.rb +2 -2
  226. data/lib/fog/dns/parsers/bluebox/get_zones.rb +2 -2
  227. data/lib/fog/dns/parsers/slicehost/create_record.rb +2 -2
  228. data/lib/fog/dns/parsers/slicehost/create_zone.rb +2 -2
  229. data/lib/fog/dns/parsers/slicehost/get_record.rb +2 -2
  230. data/lib/fog/dns/parsers/slicehost/get_records.rb +2 -2
  231. data/lib/fog/dns/parsers/slicehost/get_zone.rb +2 -2
  232. data/lib/fog/dns/parsers/slicehost/get_zones.rb +2 -2
  233. data/lib/fog/dns/parsers/zerigo/count_hosts.rb +1 -1
  234. data/lib/fog/dns/parsers/zerigo/count_zones.rb +1 -1
  235. data/lib/fog/dns/parsers/zerigo/create_host.rb +2 -2
  236. data/lib/fog/dns/parsers/zerigo/create_zone.rb +2 -2
  237. data/lib/fog/dns/parsers/zerigo/find_hosts.rb +2 -2
  238. data/lib/fog/dns/parsers/zerigo/get_host.rb +2 -2
  239. data/lib/fog/dns/parsers/zerigo/get_zone.rb +4 -4
  240. data/lib/fog/dns/parsers/zerigo/get_zone_stats.rb +2 -2
  241. data/lib/fog/dns/parsers/zerigo/list_hosts.rb +2 -2
  242. data/lib/fog/dns/parsers/zerigo/list_zones.rb +2 -2
  243. data/lib/fog/providers.rb +1 -0
  244. data/lib/fog/providers/aws.rb +5 -1
  245. data/lib/fog/providers/storm_on_demand.rb +12 -0
  246. data/lib/fog/storage/models/aws/files.rb +17 -0
  247. data/lib/fog/storage/models/google/files.rb +17 -0
  248. data/lib/fog/storage/models/rackspace/files.rb +17 -0
  249. data/lib/fog/storage/parsers/aws/access_control_list.rb +4 -4
  250. data/lib/fog/storage/parsers/aws/complete_multipart_upload.rb +1 -1
  251. data/lib/fog/storage/parsers/aws/copy_object.rb +2 -2
  252. data/lib/fog/storage/parsers/aws/get_bucket.rb +10 -10
  253. data/lib/fog/storage/parsers/aws/get_bucket_location.rb +1 -1
  254. data/lib/fog/storage/parsers/aws/get_bucket_logging.rb +5 -5
  255. data/lib/fog/storage/parsers/aws/get_bucket_object_versions.rb +8 -8
  256. data/lib/fog/storage/parsers/aws/get_bucket_versioning.rb +1 -1
  257. data/lib/fog/storage/parsers/aws/get_bucket_website.rb +2 -2
  258. data/lib/fog/storage/parsers/aws/get_request_payment.rb +1 -1
  259. data/lib/fog/storage/parsers/aws/get_service.rb +3 -3
  260. data/lib/fog/storage/parsers/aws/initiate_multipart_upload.rb +1 -1
  261. data/lib/fog/storage/parsers/aws/list_multipart_uploads.rb +7 -7
  262. data/lib/fog/storage/parsers/aws/list_parts.rb +7 -7
  263. data/lib/fog/storage/parsers/google/access_control_list.rb +3 -3
  264. data/lib/fog/storage/parsers/google/copy_object.rb +2 -2
  265. data/lib/fog/storage/parsers/google/get_bucket.rb +10 -10
  266. data/lib/fog/storage/parsers/google/get_bucket_logging.rb +5 -5
  267. data/lib/fog/storage/parsers/google/get_bucket_object_versions.rb +9 -9
  268. data/lib/fog/storage/parsers/google/get_bucket_versioning.rb +1 -1
  269. data/lib/fog/storage/parsers/google/get_request_payment.rb +1 -1
  270. data/lib/fog/storage/parsers/google/get_service.rb +3 -3
  271. data/lib/fog/storage/requests/aws/get_object.rb +1 -1
  272. data/lib/fog/terremark/parsers/shared/get_catalog.rb +1 -1
  273. data/lib/fog/terremark/parsers/shared/get_catalog_item.rb +1 -1
  274. data/lib/fog/terremark/parsers/shared/get_internet_services.rb +7 -7
  275. data/lib/fog/terremark/parsers/shared/get_network_ips.rb +1 -1
  276. data/lib/fog/terremark/parsers/shared/get_node_services.rb +3 -3
  277. data/lib/fog/terremark/parsers/shared/get_organization.rb +1 -1
  278. data/lib/fog/terremark/parsers/shared/get_public_ips.rb +2 -2
  279. data/lib/fog/terremark/parsers/shared/get_vapp_template.rb +1 -1
  280. data/lib/fog/terremark/parsers/shared/get_vdc.rb +6 -6
  281. data/lib/fog/terremark/parsers/shared/internet_service.rb +7 -7
  282. data/lib/fog/terremark/parsers/shared/network.rb +1 -1
  283. data/lib/fog/terremark/parsers/shared/node_service.rb +3 -3
  284. data/lib/fog/terremark/parsers/shared/public_ip.rb +2 -2
  285. data/lib/fog/terremark/parsers/shared/vapp.rb +7 -7
  286. data/spec/ecloud/spec_helper.rb +1 -1
  287. data/tests/aws/requests/cloud_formation/stack_tests.rb +2 -0
  288. data/tests/aws/requests/elb/helper.rb +44 -0
  289. data/tests/aws/requests/elb/load_balancer_tests.rb +82 -0
  290. data/tests/aws/requests/elb/model_tests.rb +187 -0
  291. data/tests/aws/requests/iam/helper.rb +41 -0
  292. data/tests/aws/requests/iam/login_profile_tests.rb +1 -1
  293. data/tests/aws/requests/iam/server_certificate_tests.rb +36 -0
  294. data/tests/aws/requests/rds/instance_tests.rb +63 -66
  295. data/tests/aws/requests/simpledb/attributes_tests.rb +4 -4
  296. data/tests/aws/signed_params_tests.rb +3 -0
  297. data/tests/compute/helper.rb +2 -2
  298. data/tests/compute/models/aws/address_tests.rb +2 -2
  299. data/tests/compute/models/aws/security_group_tests.rb +12 -0
  300. data/tests/compute/models/aws/server_tests.rb +8 -1
  301. data/tests/compute/models/aws/snapshot_tests.rb +2 -2
  302. data/tests/compute/models/aws/volume_tests.rb +3 -3
  303. data/tests/compute/requests/aws/address_tests.rb +1 -1
  304. data/tests/compute/requests/aws/instance_tests.rb +1 -1
  305. data/tests/compute/requests/aws/key_pair_tests.rb +5 -1
  306. data/tests/compute/requests/aws/snapshot_tests.rb +1 -1
  307. data/tests/compute/requests/aws/tag_tests.rb +1 -1
  308. data/tests/compute/requests/aws/volume_tests.rb +3 -3
  309. data/tests/compute/requests/bluebox/block_tests.rb +14 -13
  310. data/tests/compute/requests/brightbox/helper.rb +1 -2
  311. data/tests/compute/requests/storm_on_demand/server_tests.rb +64 -0
  312. data/tests/compute/requests/voxel/image_tests.rb +30 -24
  313. data/tests/compute/requests/voxel/server_tests.rb +1 -1
  314. data/tests/dns/requests/aws/dns_tests.rb +1 -1
  315. data/tests/helper.rb +1 -1
  316. data/tests/storage/requests/aws/multipart_upload_tests.rb +1 -1
  317. data/tests/storage/requests/google/bucket_tests.rb +0 -1
  318. data/tests/storage/requests/rackspace/object_tests.rb +1 -0
  319. metadata +125 -66
  320. data/docs/_posts/2011-01-01-start.markdown +0 -21
@@ -0,0 +1,31 @@
1
+ module Fog
2
+ module AWS
3
+ class ELB
4
+ class Real
5
+
6
+ require 'fog/aws/parsers/elb/empty'
7
+
8
+ # Delete a Load Balancer Stickiness Policy
9
+ #
10
+ # ==== Parameters
11
+ # * lb_name<~String> - Name of the ELB
12
+ # * policy_name<~String> - The name of the policy to delete
13
+ # ==== Returns
14
+ # * response<~Excon::Response>:
15
+ # * body<~Hash>:
16
+ # * 'ResponseMetadata'<~Hash>:
17
+ # * 'RequestId'<~String> - Id of request
18
+ def delete_load_balancer_policy(lb_name, policy_name)
19
+ params = {'PolicyName' => policy_name}
20
+
21
+ request({
22
+ 'Action' => 'DeleteLoadBalancerPolicy',
23
+ 'LoadBalancerName' => lb_name,
24
+ :parser => Fog::Parsers::AWS::ELB::Empty.new
25
+ }.merge!(params))
26
+ end
27
+
28
+ end
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,43 @@
1
+ module Fog
2
+ module AWS
3
+ class ELB
4
+ class Real
5
+
6
+ require 'fog/aws/parsers/elb/empty'
7
+
8
+ # Associates, updates, or disables a policy with a listener on the
9
+ # load balancer. Currently only zero (0) or one (1) policy can be
10
+ # associated with a listener.
11
+ #
12
+ # ==== Parameters
13
+ # * lb_name<~String> - Name of the ELB
14
+ # * load_balancer_port<~Integer> - The external port of the LoadBalancer
15
+ # with which this policy has to be associated.
16
+
17
+ # * policy_names<~Array> - List of policies to be associated with the
18
+ # listener. Currently this list can have at most one policy. If the
19
+ # list is empty, the current policy is removed from the listener.
20
+ # ==== Returns
21
+ # * response<~Excon::Response>:
22
+ # * body<~Hash>:
23
+ # * 'ResponseMetadata'<~Hash>:
24
+ # * 'RequestId'<~String> - Id of request
25
+ def set_load_balancer_policies_of_listener(lb_name, load_balancer_port, policy_names)
26
+ params = {'LoadBalancerPort' => load_balancer_port}
27
+ if policy_names.any?
28
+ params.merge!(AWS.indexed_param('PolicyNames.member', policy_names))
29
+ else
30
+ params['PolicyNames'] = ''
31
+ end
32
+
33
+ request({
34
+ 'Action' => 'SetLoadBalancerPoliciesOfListener',
35
+ 'LoadBalancerName' => lb_name,
36
+ :parser => Fog::Parsers::AWS::ELB::Empty.new
37
+ }.merge!(params))
38
+ end
39
+
40
+ end
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,42 @@
1
+ module Fog
2
+ module AWS
3
+ class IAM
4
+ class Real
5
+
6
+ require 'fog/aws/parsers/iam/list_server_certificates'
7
+
8
+ # List server certificates
9
+ #
10
+ # ==== Parameters
11
+ # * options<~Hash>:
12
+ # * 'Marker'<~String> - The marker from the previous result (for pagination)
13
+ # * 'MaxItems'<~String> - The maximum number of server certificates you want in the response
14
+ # * 'PathPrefix'<~String> - The path prefix for filtering the results
15
+ #
16
+ # ==== Returns
17
+ # * response<~Excon::Response>:
18
+ # * body<~Hash>:
19
+ # * 'Certificates'<~Array> - Matching server certificates
20
+ # * server_certificate<~Hash>:
21
+ # * Arn<~String> -
22
+ # * Path<~String> -
23
+ # * ServerCertificateId<~String> -
24
+ # * ServerCertificateName<~String> -
25
+ # * UploadDate<~Time> -
26
+ # * 'IsTruncated'<~Boolean> - Whether or not the results were truncated
27
+ # * 'Marker'<~String> - appears when IsTruncated is true as the next marker to use
28
+ #
29
+ # ==== See Also
30
+ # http://docs.amazonwebservices.com/IAM/latest/APIReference/index.html?API_ListServerCertificates.html
31
+ #
32
+ def list_server_certificates(options = {})
33
+ request({
34
+ 'Action' => 'ListServerCertificates',
35
+ :parser => Fog::Parsers::AWS::IAM::ListServerCertificates.new
36
+ }.merge!(options))
37
+ end
38
+
39
+ end
40
+ end
41
+ end
42
+ end
@@ -5,13 +5,13 @@ module Fog
5
5
 
6
6
  require 'fog/aws/parsers/ses/send_raw_email'
7
7
 
8
- # Delete an existing verified email address
8
+ # Send a raw email
9
9
  #
10
10
  # ==== Parameters
11
11
  # * RawMessage <~String> - The message to be sent.
12
12
  # * Options <~Hash>
13
- # * Source <~String> - The sender's email address
14
- # * Destinations <~Array> - The destination for this email, composed of To:, From:, and CC: fields.
13
+ # * Source <~String> - The sender's email address. Takes precenence over Return-Path if specified in RawMessage
14
+ # * Destinations <~Array> - All destinations for this email.
15
15
  #
16
16
  # ==== Returns
17
17
  # * response<~Excon::Response>:
@@ -22,7 +22,7 @@ module Fog
22
22
  def send_raw_email(raw_message, options = {})
23
23
  params = {}
24
24
  if options.has_key?('Destinations')
25
- params['Destinations'] = AWS.indexed_param('Destinations.member', [*options['Destinations']])
25
+ params.merge!(AWS.indexed_param('Destinations.member', [*options['Destinations']]))
26
26
  end
27
27
  if options.has_key?('Source')
28
28
  params['Source'] = options['Source']
@@ -124,8 +124,8 @@ module Fog
124
124
  item_index = 0
125
125
  for item_key in items.keys
126
126
  encoded_attributes["Item.#{item_index}.ItemName"] = item_key.to_s
127
+ attribute_index = 0
127
128
  for attribute_key in items[item_key].keys
128
- attribute_index = 0
129
129
  for value in Array(items[item_key][attribute_key])
130
130
  encoded_attributes["Item.#{item_index}.Attribute.#{attribute_index}.Name"] = attribute_key.to_s
131
131
  if replace_attributes[item_key].include?(attribute_key)
@@ -134,8 +134,8 @@ module Fog
134
134
  encoded_attributes["Item.#{item_index}.Attribute.#{attribute_index}.Value"] = sdb_encode(value)
135
135
  attribute_index += 1
136
136
  end
137
- item_index += 1
138
137
  end
138
+ item_index += 1
139
139
  end
140
140
  end
141
141
  encoded_attributes
data/lib/fog/bin.rb CHANGED
@@ -65,6 +65,7 @@ require 'fog/bin/local'
65
65
  require 'fog/bin/new_servers'
66
66
  require 'fog/bin/rackspace'
67
67
  require 'fog/bin/slicehost'
68
+ require 'fog/bin/stormondemand'
68
69
  require 'fog/bin/terremark'
69
70
  require 'fog/bin/virtual_box'
70
71
  require 'fog/bin/voxel'
@@ -0,0 +1,30 @@
1
+ class StormOnDemand < Fog::Bin
2
+ class << self
3
+
4
+ def class_for(key)
5
+ case key
6
+ when :compute
7
+ Fog::StormOnDemand::Compute
8
+ else
9
+ raise ArgumentError, "Unsupported #{self} service: #{key}"
10
+ end
11
+ end
12
+
13
+ def [](service)
14
+ @@connections ||= Hash.new do |hash, key|
15
+ hash[key] = case key
16
+ when :compute
17
+ Fog::Compute.new(:provider => 'StormOnDemand')
18
+ else
19
+ raise ArgumentError, "Unrecognized service: #{key.inspect}"
20
+ end
21
+ end
22
+ @@connections[service]
23
+ end
24
+
25
+ def services
26
+ Fog::StormOnDemand.services
27
+ end
28
+
29
+ end
30
+ end
@@ -21,31 +21,31 @@ module Fog
21
21
  def end_element(name)
22
22
  case name
23
23
  when 'AwsAccountNumber'
24
- @response['DistributionConfig']['TrustedSigners'] << @value
24
+ @response['DistributionConfig']['TrustedSigners'] << value
25
25
  when 'Bucket', 'Prefix'
26
- @response['DistributionConfig']['Logging'][name] = @value
26
+ @response['DistributionConfig']['Logging'][name] = value
27
27
  when 'CNAME'
28
- @response['DistributionConfig']['CNAME'] << @value
28
+ @response['DistributionConfig']['CNAME'] << value
29
29
  when 'DNSName', 'OriginAccessIdentity', 'OriginProtocolPolicy'
30
- @response['DistributionConfig'][@origin][name] = @value
30
+ @response['DistributionConfig'][@origin][name] = value
31
31
  when 'DomainName', 'Id', 'Status'
32
- @response[name] = @value
32
+ @response[name] = value
33
33
  when 'CallerReference', 'Comment', 'DefaultRootObject', 'Origin', 'OriginAccessIdentity'
34
- @response['DistributionConfig'][name] = @value
34
+ @response['DistributionConfig'][name] = value
35
35
  when 'Enabled'
36
- if @value == 'true'
36
+ if value == 'true'
37
37
  @response['DistributionConfig'][name] = true
38
38
  else
39
39
  @response['DistributionConfig'][name] = false
40
40
  end
41
41
  when 'HTTPPort', 'HTTPSPort'
42
- @response['DistributionConfig'][@origin][name] = @value.to_i
42
+ @response['DistributionConfig'][@origin][name] = value.to_i
43
43
  when 'InProgressInvalidationBatches'
44
- @response[name] = @value.to_i
44
+ @response[name] = value.to_i
45
45
  when 'LastModifiedTime'
46
- @response[name] = Time.parse(@value)
46
+ @response[name] = Time.parse(value)
47
47
  when 'Protocol'
48
- @response['DistributionConfig']['RequireProtocols'] = @value
48
+ @response['DistributionConfig']['RequireProtocols'] = value
49
49
  when 'Self'
50
50
  @response['DistributionConfig']['TrustedSigners'] << 'Self'
51
51
  end
@@ -25,31 +25,31 @@ module Fog
25
25
  @response['DistributionSummary'] << @distribution_summary
26
26
  @distribution_summary = { 'CNAME' => [], 'TrustedSigners' => [] }
27
27
  when 'Comment', 'DomainName', 'Id', 'Origin', 'Status'
28
- @distribution_summary[name] = @value
28
+ @distribution_summary[name] = value
29
29
  when 'CNAME'
30
- @distribution_summary[name] << @value
30
+ @distribution_summary[name] << value
31
31
  when 'DNSName', 'OriginAccessIdentity', 'OriginProtocolPolicy'
32
- @distribution_summary[@origin][name] = @value
32
+ @distribution_summary[@origin][name] = value
33
33
  when 'Enabled'
34
- if @value == 'true'
34
+ if value == 'true'
35
35
  @distribution_summary[name] = true
36
36
  else
37
37
  @distribution_summary[name] = false
38
38
  end
39
39
  when 'HTTPPort', 'HTTPSPort'
40
- @distribution_summary[@origin][name] = @value.to_i
40
+ @distribution_summary[@origin][name] = value.to_i
41
41
  when 'LastModifiedTime'
42
- @distribution_summary[name] = Time.parse(@value)
42
+ @distribution_summary[name] = Time.parse(value)
43
43
  when 'IsTruncated'
44
- if @value == 'true'
44
+ if value == 'true'
45
45
  @response[name] = true
46
46
  else
47
47
  @response[name] = false
48
48
  end
49
49
  when 'Marker', 'NextMarker'
50
- @response[name] = @value
50
+ @response[name] = value
51
51
  when 'MaxItems'
52
- @response[name] = @value.to_i
52
+ @response[name] = value.to_i
53
53
  end
54
54
  end
55
55
 
@@ -12,11 +12,11 @@ module Fog
12
12
  def end_element(name)
13
13
  case name
14
14
  when 'CallerReference'
15
- @response['InvalidationBatch'][name] = @value
15
+ @response['InvalidationBatch'][name] = value
16
16
  when 'CreateTime', 'Id', 'Status'
17
- @response[name] = @value
17
+ @response[name] = value
18
18
  when 'Path'
19
- @response['InvalidationBatch'][name] << @value
19
+ @response['InvalidationBatch'][name] << value
20
20
  end
21
21
  end
22
22
 
data/lib/fog/compute.rb CHANGED
@@ -31,6 +31,9 @@ module Fog
31
31
  when 'Slicehost'
32
32
  require 'fog/compute/slicehost'
33
33
  Fog::Slicehost::Compute.new(attributes)
34
+ when 'StormOnDemand'
35
+ require 'fog/compute/storm_on_demand'
36
+ Fog::StormOnDemand::Compute.new(attributes)
34
37
  when 'VirtualBox'
35
38
  require 'fog/compute/virtual_box'
36
39
  Fog::VirtualBox::Compute.new(attributes)
@@ -188,7 +188,8 @@ module Fog
188
188
  #
189
189
  # ==== Parameters
190
190
  # * options<~Hash> - config arguments for connection. Defaults to {}.
191
- # * region<~String> - optional region to use, in ['eu-west-1', 'us-east-1', 'us-west-1']
191
+ # * region<~String> - optional region to use, in
192
+ # ['eu-west-1', 'us-east-1', 'us-west-1', 'ap-northeast-1', 'ap-southeast-1']
192
193
  #
193
194
  # ==== Returns
194
195
  # * EC2 object with connection to aws.
@@ -205,6 +206,8 @@ module Fog
205
206
  @aws_access_key_id = options[:aws_access_key_id]
206
207
  @aws_secret_access_key = options[:aws_secret_access_key]
207
208
  @hmac = Fog::HMAC.new('sha256', @aws_secret_access_key)
209
+ @region = options[:region] ||= 'us-east-1'
210
+
208
211
  if @endpoint = options[:endpoint]
209
212
  endpoint = URI.parse(@endpoint)
210
213
  @host = endpoint.host
@@ -212,7 +215,6 @@ module Fog
212
215
  @port = endpoint.port
213
216
  @scheme = endpoint.scheme
214
217
  else
215
- options[:region] ||= 'us-east-1'
216
218
  @host = options[:host] || case options[:region]
217
219
  when 'ap-northeast-1'
218
220
  'ec2.ap-northeast-1.amazonaws.com'
@@ -42,8 +42,22 @@ module Fog
42
42
  attr_writer :private_key, :private_key_path, :public_key, :public_key_path, :username
43
43
 
44
44
  def initialize(attributes={})
45
- self.groups ||= ["default"] unless attributes[:subnet_id]
46
- self.flavor_id ||= 'm1.small'
45
+ self.groups ||= ["default"] unless attributes[:subnet_id]
46
+ self.flavor_id ||= 't1.micro'
47
+ self.image_id ||= begin
48
+ case attributes[:connection].instance_variable_get(:@region) # Ubuntu 10.04 LTS 64bit (EBS)
49
+ when 'ap-northeast-1'
50
+ 'ami-5e0fa45f'
51
+ when 'ap-southeast-1'
52
+ 'ami-f092eca2'
53
+ when 'eu-west-1'
54
+ 'ami-3d1f2b49'
55
+ when 'us-east-1'
56
+ 'ami-3202f25b'
57
+ when 'us-west-1'
58
+ 'ami-f5bfefb0'
59
+ end
60
+ end
47
61
  super
48
62
  end
49
63
 
@@ -21,11 +21,12 @@ module Fog
21
21
  attribute :storage
22
22
  attribute :template
23
23
 
24
- attr_accessor :password
24
+ attr_accessor :password, :lb_applications, :lb_services, :lb_backends
25
25
  attr_writer :private_key, :private_key_path, :public_key, :public_key_path, :username
26
26
 
27
27
  def initialize(attributes={})
28
- self.flavor_id ||= '94fd37a7-2606-47f7-84d5-9000deda52ae'
28
+ self.flavor_id ||= '94fd37a7-2606-47f7-84d5-9000deda52ae' # Block 1GB Virtual Server
29
+ self.image_id ||= '03807e08-a13d-44e4-b011-ebec7ef2c928' # Ubuntu LTS 10.04 64bit
29
30
  super
30
31
  end
31
32
 
@@ -92,6 +93,14 @@ module Fog
92
93
  options['password'] = password if @password
93
94
  end
94
95
 
96
+ if @lb_backends
97
+ options['lb_backends'] = lb_backends
98
+ elsif @lb_services
99
+ options['lb_services'] = lb_services
100
+ elsif @lb_applications
101
+ options['lb_applications'] = lb_applications
102
+ end
103
+
95
104
  options['username'] = username
96
105
  data = connection.create_block(flavor_id, image_id, options)
97
106
  merge_attributes(data.body)
@@ -28,6 +28,12 @@ module Fog
28
28
  attribute :cloud_ips
29
29
  attribute :interfaces
30
30
 
31
+ def initialize(attributes={})
32
+ self.flavor_id ||= 'typ-4nssg' # Nano
33
+ self.image_id ||= 'img-2ab98' # Ubuntu Lucid 10.04 server (i686)
34
+ super
35
+ end
36
+
31
37
  def snapshot
32
38
  requires :identity
33
39
  connection.snapshot_server(identity)
@@ -37,7 +37,9 @@ module Fog
37
37
  private
38
38
 
39
39
  def _resource_entities
40
- connection.get_vdc(href).body[:ResourceEntities][:ResourceEntity]
40
+ if Hash === resource_entities = connection.get_vdc(href).body[:ResourceEntities]
41
+ resource_entities[:ResourceEntity]
42
+ end
41
43
  end
42
44
 
43
45
  def _vapps
@@ -21,6 +21,7 @@ module Fog
21
21
  attribute :sandbox # Optional. Default: False
22
22
 
23
23
  def initialize(attributes={})
24
+ image_id ||= 'ubuntu_10_04_LTS_64_base' # Ubuntu 10.04 LTS 64bit
24
25
  super
25
26
  end
26
27
 
@@ -22,7 +22,8 @@ module Fog
22
22
  attr_writer :private_key, :private_key_path, :public_key, :public_key_path, :username
23
23
 
24
24
  def initialize(attributes={})
25
- self.flavor_id ||= 1
25
+ self.flavor_id ||= 1 # 256 server
26
+ self.image_id ||= 49 # Ubuntu 10.04 LTS 64bit
26
27
  super
27
28
  end
28
29