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
@@ -90,15 +90,15 @@ module Fog
90
90
  case name
91
91
  when 'Allocated', 'Limit', 'Units', 'Used'
92
92
  if @in_cpu
93
- @response['ComputeCapacity']['Cpu'][name] = @value
93
+ @response['ComputeCapacity']['Cpu'][name] = value
94
94
  elsif @in_deployed_vms_quota
95
- @response['ComputeCapacity']['DeployedVmsQuota'][name] = @value
95
+ @response['ComputeCapacity']['DeployedVmsQuota'][name] = value
96
96
  elsif @in_instantiated_vms_quota
97
- @response['ComputeCapacity']['InstantiatedVmsQuota'][name] = @value
97
+ @response['ComputeCapacity']['InstantiatedVmsQuota'][name] = value
98
98
  elsif @in_memory
99
- @response['ComputeCapacity']['Memory'][name] = @value
99
+ @response['ComputeCapacity']['Memory'][name] = value
100
100
  elsif @in_storage_capacity
101
- @response['StorageCapacity'][name] = @value
101
+ @response['StorageCapacity'][name] = value
102
102
  end
103
103
  when 'Cpu'
104
104
  @in_cpu = false
@@ -111,7 +111,7 @@ module Fog
111
111
  when 'StorageCapacity'
112
112
  @in_storage_capacity = false
113
113
  when 'Type'
114
- @response[name] = @value
114
+ @response[name] = value
115
115
  end
116
116
  end
117
117
 
@@ -31,27 +31,27 @@ module Fog
31
31
  def end_element(name)
32
32
  case name
33
33
  when 'Description', 'Protocol'
34
- @response[name] = @value
34
+ @response[name] = value
35
35
  when 'Enabled'
36
- if @value == 'false'
36
+ if value == 'false'
37
37
  @response[name] = false
38
38
  else
39
39
  @response[name] = true
40
40
  end
41
41
  when 'Id'
42
42
  if @in_public_ip_address
43
- @response['PublicIpAddress'][name] = @value.to_i
43
+ @response['PublicIpAddress'][name] = value.to_i
44
44
  else
45
- @response[name] = @value.to_i
45
+ @response[name] = value.to_i
46
46
  end
47
47
  when 'Name'
48
48
  if @in_public_ip_address
49
- @response['PublicIpAddress'][name] = @value
49
+ @response['PublicIpAddress'][name] = value
50
50
  else
51
- @response[name] = @value
51
+ @response[name] = value
52
52
  end
53
53
  when 'Port', 'Timeout'
54
- @response[name] = @value.to_i
54
+ @response[name] = value.to_i
55
55
  when 'PublicIpAddress'
56
56
  @in_public_ip_address = false
57
57
  end
@@ -39,7 +39,7 @@ module Fog
39
39
  def end_element(name)
40
40
  case name
41
41
  when "Gateway", "Netmask", "FenceMode"
42
- @response[name.downcase] = @value
42
+ @response[name.downcase] = value
43
43
  end
44
44
  end
45
45
 
@@ -12,15 +12,15 @@ module Fog
12
12
  def end_element(name)
13
13
  case name
14
14
  when 'Description', 'Href', 'IpAddress', 'Name', 'Protocol'
15
- @response[name] = @value
15
+ @response[name] = value
16
16
  when 'Enabled'
17
- if @value == 'false'
17
+ if value == 'false'
18
18
  @response[name] = false
19
19
  else
20
20
  @response[name] = true
21
21
  end
22
22
  when 'Id', 'Port'
23
- @response[name] = @value.to_i
23
+ @response[name] = value.to_i
24
24
  end
25
25
  end
26
26
 
@@ -12,9 +12,9 @@ module Fog
12
12
  def end_element(name)
13
13
  case name
14
14
  when 'Href', 'Name'
15
- @response[name.downcase] = @value
15
+ @response[name.downcase] = value
16
16
  when 'Id'
17
- @response['id'] = @value.to_i
17
+ @response['id'] = value.to_i
18
18
  end
19
19
  end
20
20
 
@@ -39,15 +39,15 @@ module Fog
39
39
  def end_element(name)
40
40
  case name
41
41
  when 'IpAddress'
42
- @response['IpAddress'] = @value
42
+ @response['IpAddress'] = value
43
43
  when 'Description'
44
44
  if @in_operating_system
45
- @response['OperatingSystem'][name] = @value
45
+ @response['OperatingSystem'][name] = value
46
46
  @in_operating_system = false
47
47
  end
48
48
  when 'ResourceType'
49
- @resource_type = @value
50
- case @value
49
+ @resource_type = value
50
+ case value
51
51
  when '3'
52
52
  @get_cpu = true # cpu
53
53
  when '4' # memory
@@ -58,12 +58,12 @@ module Fog
58
58
  when 'VirtualQuantity'
59
59
  case @resource_type
60
60
  when '3'
61
- @response['VirtualHardware']['cpu'] = @value
61
+ @response['VirtualHardware']['cpu'] = value
62
62
  when '4'
63
- @response['VirtualHardware']['ram'] = @value
63
+ @response['VirtualHardware']['ram'] = value
64
64
  when '17'
65
65
  @response['VirtualHardware']['disks'] ||= []
66
- @response['VirtualHardware']['disks'] << @value
66
+ @response['VirtualHardware']['disks'] << value
67
67
  end
68
68
  end
69
69
  end
@@ -313,7 +313,7 @@ Spec::Matchers.define :have_key_with_array do |expected_key, expected_array|
313
313
  end
314
314
  failure_message_for_should do |actual|
315
315
  "Items not found in array:\n#{expected_array.select { |expected_item| !actual[expected_key].include?(expected_item) }.map { |item| item.inspect }.join("\n")}\n" +
316
- "Orignal items:\n#{actual[expected_key].map { |item| item.inspect }.join("\n") }\n"+
316
+ "Original items:\n#{actual[expected_key].map { |item| item.inspect }.join("\n") }\n"+
317
317
  "Length Difference: #{expected_array.length - actual[expected_key].length}"
318
318
  end
319
319
  end
@@ -113,6 +113,8 @@ Shindo.tests('AWS::CloudFormation | stack requests', ['aws', 'cloudformation'])
113
113
  AWS[:cloud_formation].describe_stacks.body
114
114
  end
115
115
 
116
+ sleep(1) # avoid throttling
117
+
116
118
  tests("describe_stack_events('#{@stack_name}')").formats(@describe_stack_events_format) do
117
119
  pending if Fog.mocking?
118
120
  AWS[:cloud_formation].describe_stack_events(@stack_name).body
@@ -0,0 +1,44 @@
1
+ class AWS
2
+ module ELB
3
+ module Formats
4
+
5
+ BASIC = {
6
+ 'ResponseMetadata' => {'RequestId' => String}
7
+ }
8
+
9
+ LOAD_BALANCER = {
10
+ "CreatedTime" => Time,
11
+ "ListenerDescriptions" => Array,
12
+ "HealthCheck" => {"HealthyThreshold" => Integer, "Timeout" => Integer, "UnhealthyThreshold" => Integer, "Interval" => Integer, "Target" => String},
13
+ "Policies" => {"LBCookieStickinessPolicies" => Array, "AppCookieStickinessPolicies" => Array},
14
+ "AvailabilityZones" => Array,
15
+ "DNSName" => String,
16
+ "LoadBalancerName"=> String,
17
+ "Instances"=> Array
18
+ }
19
+
20
+ CREATE_LOAD_BALANCER = BASIC.merge({
21
+ 'CreateLoadBalancerResult' => { 'DNSName' => String }
22
+ })
23
+
24
+ DESCRIBE_LOAD_BALANCERS = BASIC.merge({
25
+ 'DescribeLoadBalancersResult' => {'LoadBalancerDescriptions' => [LOAD_BALANCER]}
26
+ })
27
+
28
+ CONFIGURE_HEALTH_CHECK = BASIC.merge({
29
+ 'ConfigureHealthCheckResult' => {'HealthCheck' => {
30
+ 'Target' => String,
31
+ 'Interval' => Integer,
32
+ 'Timeout' => Integer,
33
+ 'UnhealthyThreshold' => Integer,
34
+ 'HealthyThreshold' => Integer
35
+ }}
36
+ })
37
+
38
+ DELETE_LOAD_BALANCER = BASIC.merge({
39
+ 'DeleteLoadBalancerResult' => NilClass
40
+ })
41
+
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,82 @@
1
+ Shindo.tests('AWS::ELB | load_balancer_tests', ['aws', 'elb']) do
2
+ @load_balancer_id = 'fog-test-elb'
3
+
4
+ tests('success') do
5
+ pending if Fog.mocking?
6
+
7
+ tests("#create_load_balancer").formats(AWS::ELB::Formats::CREATE_LOAD_BALANCER) do
8
+ zones = ['us-east-1a']
9
+ listeners = [{'LoadBalancerPort' => 80, 'InstancePort' => 80, 'Protocol' => 'http'}]
10
+ AWS[:elb].create_load_balancer(zones, @load_balancer_id, listeners).body
11
+ end
12
+
13
+ tests("#describe_load_balancers").formats(AWS::ELB::Formats::DESCRIBE_LOAD_BALANCERS) do
14
+ AWS[:elb].describe_load_balancers.body
15
+ end
16
+
17
+ tests('#describe_load_balancers with bad lb') do
18
+ raises(Fog::AWS::ELB::NotFound) { AWS[:elb].describe_load_balancers('none-such-lb') }
19
+ end
20
+
21
+ tests("#configure_health_check").formats(AWS::ELB::Formats::CONFIGURE_HEALTH_CHECK) do
22
+ health_check = {
23
+ 'Target' => 'HTTP:80/index.html',
24
+ 'Interval' => 10,
25
+ 'Timeout' => 5,
26
+ 'UnhealthyThreshold' => 2,
27
+ 'HealthyThreshold' => 3
28
+ }
29
+
30
+ AWS[:elb].configure_health_check(@load_balancer_id, health_check).body
31
+ end
32
+
33
+ tests("#create_app_cookie_stickiness_policy").formats(AWS::ELB::Formats::BASIC) do
34
+ cookie, policy = 'fog-app-cookie', 'fog-app-policy'
35
+ AWS[:elb].create_app_cookie_stickiness_policy(@load_balancer_id, policy, cookie).body
36
+ end
37
+
38
+ tests("#create_lb_cookie_stickiness_policy with expiry").formats(AWS::ELB::Formats::BASIC) do
39
+ policy = 'fog-lb-expiry'
40
+ expiry = 300
41
+ AWS[:elb].create_lb_cookie_stickiness_policy(@load_balancer_id, policy, expiry).body
42
+ end
43
+
44
+ tests("#create_lb_cookie_stickiness_policy without expiry").formats(AWS::ELB::Formats::BASIC) do
45
+ policy = 'fog-lb-no-expiry'
46
+ AWS[:elb].create_lb_cookie_stickiness_policy(@load_balancer_id, policy).body
47
+ end
48
+
49
+ tests("#delete_load_balancer_policy").formats(AWS::ELB::Formats::BASIC) do
50
+ policy = 'fog-lb-no-expiry'
51
+ AWS[:elb].delete_load_balancer_policy(@load_balancer_id, policy).body
52
+ end
53
+
54
+ tests("#create_load_balancer_listeners").formats(AWS::ELB::Formats::BASIC) do
55
+ listeners = [
56
+ {'Protocol' => 'tcp', 'LoadBalancerPort' => 443, 'InstancePort' => 443},
57
+ {'Protocol' => 'HTTP', 'LoadBalancerPort' => 80, 'InstancePort' => 80}
58
+ ]
59
+ AWS[:elb].create_load_balancer_listeners(@load_balancer_id, listeners).body
60
+ end
61
+
62
+ tests("#set_load_balancer_policies_of_listener adds policy").formats(AWS::ELB::Formats::BASIC) do
63
+ port, policies = 80, ['fog-lb-expiry']
64
+ body = AWS[:elb].set_load_balancer_policies_of_listener(@load_balancer_id, port, policies).body
65
+ end
66
+
67
+ tests("#set_load_balancer_policies_of_listener removes policy").formats(AWS::ELB::Formats::BASIC) do
68
+ port = 80
69
+ body = AWS[:elb].set_load_balancer_policies_of_listener(@load_balancer_id, port, []).body
70
+ end
71
+
72
+
73
+ tests("#delete_load_balancer_listeners").formats(AWS::ELB::Formats::BASIC) do
74
+ ports = [80, 443]
75
+ AWS[:elb].delete_load_balancer_listeners(@load_balancer_id, ports).body
76
+ end
77
+
78
+ tests("#delete_load_balancer").formats(AWS::ELB::Formats::DELETE_LOAD_BALANCER) do
79
+ AWS[:elb].delete_load_balancer(@load_balancer_id).body
80
+ end
81
+ end
82
+ end
@@ -0,0 +1,187 @@
1
+ Shindo.tests('AWS::ELB | models', ['aws', 'elb']) do
2
+
3
+
4
+ tests('success') do
5
+ pending if Fog.mocking?
6
+
7
+ tests('load_balancers') do
8
+ tests('getting a missing elb') do
9
+ returns(nil) { AWS[:elb].load_balancers.get('no-such-elb') }
10
+ end
11
+ end
12
+
13
+ elb = nil
14
+ elb_id = 'fog-test'
15
+
16
+ tests('create') do
17
+ elb = AWS[:elb].load_balancers.create(:id => elb_id)
18
+ tests("dns names is set").returns(true) { elb.dns_name.is_a?(String) }
19
+ tests("created_at is set").returns(true) { (Time.now-10..Time.now).include? elb.created_at }
20
+ tests("policies is empty").returns([]) { elb.policies }
21
+ end
22
+
23
+ tests('all') do
24
+ elb_ids = AWS[:elb].load_balancers.all.map{|e| e.id}
25
+ tests("contains elb").returns(true) { elb_ids.include? elb_id }
26
+ end
27
+
28
+ tests('get') do
29
+ elb2 = AWS[:elb].load_balancers.get(elb_id)
30
+ tests('ids match').returns(elb_id) { elb2.id }
31
+ end
32
+
33
+ tests('createing a duplicate elb') do
34
+ raises(Fog::AWS::ELB::IdentifierTaken) do
35
+ AWS[:elb].load_balancers.create(:id => elb_id, :availability_zones => ['us-east-1d'])
36
+ end
37
+ end
38
+
39
+ tests('registering an invalid instance') do
40
+ raises(Fog::AWS::ELB::InvalidInstance) { elb.register_instances('i-00000000') }
41
+ end
42
+
43
+ tests('deregistering an invalid instance') do
44
+ raises(Fog::AWS::ELB::InvalidInstance) { elb.deregister_instances('i-00000000') }
45
+ end
46
+
47
+ server = AWS[:compute].servers.create
48
+ tests('register instance') do
49
+ begin
50
+ elb.register_instances(server.id)
51
+ rescue Fog::AWS::ELB::InvalidInstance
52
+ # It may take a moment for a newly created instances to be visible to ELB requests
53
+ raise if @retried_registered_instance
54
+ @retried_registered_instance = true
55
+ sleep 1
56
+ retry
57
+ end
58
+
59
+ returns([server.id]) { elb.instances }
60
+ end
61
+
62
+ tests('instance_health') do
63
+ returns('OutOfService') do
64
+ elb.instance_health.detect{|hash| hash['InstanceId'] == server.id}['State']
65
+ end
66
+
67
+ returns([server.id]) { elb.instances_out_of_service }
68
+ end
69
+
70
+ tests('deregister instance') do
71
+ elb.deregister_instances(server.id)
72
+ returns([]) { elb.instances }
73
+ end
74
+ server.destroy
75
+
76
+ tests('disable_availability_zones') do
77
+ elb.disable_availability_zones(%w{us-east-1c us-east-1d})
78
+ returns(%w{us-east-1a us-east-1b}) { elb.availability_zones.sort }
79
+ end
80
+
81
+ tests('enable_availability_zones') do
82
+ elb.enable_availability_zones(%w{us-east-1c us-east-1d})
83
+ returns(%w{us-east-1a us-east-1b us-east-1c us-east-1d}) { elb.availability_zones.sort }
84
+ end
85
+
86
+ tests('default health check') do
87
+ default_health_check = {
88
+ "HealthyThreshold"=>10,
89
+ "Timeout"=>5,
90
+ "UnhealthyThreshold"=>2,
91
+ "Interval"=>30,
92
+ "Target"=>"TCP:80"
93
+ }
94
+ returns(default_health_check) { elb.health_check }
95
+ end
96
+
97
+ tests('configure_health_check') do
98
+ new_health_check = {
99
+ "HealthyThreshold"=>5,
100
+ "Timeout"=>10,
101
+ "UnhealthyThreshold"=>3,
102
+ "Interval"=>15,
103
+ "Target"=>"HTTP:80/index.html"
104
+ }
105
+ elb.configure_health_check(new_health_check)
106
+ returns(new_health_check) { elb.health_check }
107
+ end
108
+
109
+ tests('listeners') do
110
+ default_listener_description = [{"Listener"=>{"InstancePort"=>80, "Protocol"=>"HTTP", "LoadBalancerPort"=>80}, "PolicyNames"=>[]}]
111
+ tests('default') do
112
+ returns(1) { elb.listeners.size }
113
+
114
+ listener = elb.listeners.first
115
+ returns([80,80,'HTTP', []]) { [listener.instance_port, listener.lb_port, listener.protocol, listener.policy_names] }
116
+
117
+ end
118
+
119
+ tests('#get') do
120
+ returns(80) { elb.listeners.get(80).lb_port }
121
+ end
122
+
123
+ tests('create') do
124
+ new_listener = { 'InstancePort' => 443, 'LoadBalancerPort' => 443, 'Protocol' => 'TCP'}
125
+ elb.listeners.create(:instance_port => 443, :lb_port => 443, :protocol => 'TCP')
126
+ returns(2) { elb.listeners.size }
127
+ returns(443) { elb.listeners.get(443).lb_port }
128
+ end
129
+
130
+ tests('destroy') do
131
+ elb.listeners.get(443).destroy
132
+ returns(nil) { elb.listeners.get(443) }
133
+ end
134
+ end
135
+
136
+ tests('policies') do
137
+ app_policy_id = 'my-app-policy'
138
+
139
+ tests 'are empty' do
140
+ returns([]) { elb.policies.to_a }
141
+ end
142
+
143
+ tests('#all') do
144
+ returns([]) { elb.policies.all.to_a }
145
+ end
146
+
147
+ tests('create app policy') do
148
+ elb.policies.create(:id => app_policy_id, :cookie => 'my-app-cookie', :cookie_stickiness => :app)
149
+ returns(app_policy_id) { elb.policies.first.id }
150
+ end
151
+
152
+ tests('get policy') do
153
+ returns(app_policy_id) { elb.policies.get(app_policy_id).id }
154
+ end
155
+
156
+ tests('destroy app policy') do
157
+ elb.policies.first.destroy
158
+ returns([]) { elb.policies.to_a }
159
+ end
160
+
161
+ lb_policy_id = 'my-lb-policy'
162
+ tests('create lb policy') do
163
+ elb.policies.create(:id => lb_policy_id, :expiration => 600, :cookie_stickiness => :lb)
164
+ returns(lb_policy_id) { elb.policies.first.id }
165
+ end
166
+
167
+ tests('setting a listener policy') do
168
+ elb.set_listener_policy(80, lb_policy_id)
169
+ returns([lb_policy_id]) { elb.listeners.get(80).policy_names }
170
+ end
171
+
172
+ tests('unsetting a listener policy') do
173
+ elb.unset_listener_policy(80)
174
+ returns([]) { elb.listeners.get(80).policy_names }
175
+ end
176
+
177
+ tests('a malformed policy') do
178
+ raises(ArgumentError) { elb.policies.create(:id => 'foo', :cookie_stickiness => 'invalid stickiness') }
179
+ end
180
+ end
181
+
182
+ tests('destroy') do
183
+ elb.destroy
184
+ end
185
+ end
186
+
187
+ end