fog4encbs 0.9.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 (1259) hide show
  1. data/.document +3 -0
  2. data/.gitignore +13 -0
  3. data/Gemfile +3 -0
  4. data/README.rdoc +154 -0
  5. data/Rakefile +348 -0
  6. data/benchs/fog_vs.rb +106 -0
  7. data/benchs/params.rb +43 -0
  8. data/benchs/parse_vs_push.rb +69 -0
  9. data/bin/fog +47 -0
  10. data/changelog.txt +621 -0
  11. data/docs/_config.yml +39 -0
  12. data/docs/_layouts/default.html +110 -0
  13. data/docs/about/contributing.markdown +228 -0
  14. data/docs/about/getting_started.markdown +83 -0
  15. data/docs/about/press.markdown +44 -0
  16. data/docs/about/structure.markdown +78 -0
  17. data/docs/about/users.markdown +33 -0
  18. data/docs/cdn/index.markdown +82 -0
  19. data/docs/compute/index.markdown +104 -0
  20. data/docs/dns/index.markdown +79 -0
  21. data/docs/index.markdown +96 -0
  22. data/docs/public/crossdomain.xml +25 -0
  23. data/docs/public/css/fog.css +129 -0
  24. data/docs/public/css/handheld.css +8 -0
  25. data/docs/public/css/style.css +129 -0
  26. data/docs/public/images/.gitignore +3 -0
  27. data/docs/public/js/libs/dd_belatedpng.js +13 -0
  28. data/docs/public/js/libs/jquery-1.4.2.js +6240 -0
  29. data/docs/public/js/libs/jquery-1.4.2.min.js +154 -0
  30. data/docs/public/js/libs/modernizr-1.6.min.js +30 -0
  31. data/docs/public/js/mylibs/.gitignore +3 -0
  32. data/docs/public/js/plugins.js +34 -0
  33. data/docs/public/js/profiling/config.js +59 -0
  34. data/docs/public/js/profiling/yahoo-profiling.css +7 -0
  35. data/docs/public/js/profiling/yahoo-profiling.min.js +39 -0
  36. data/docs/public/js/script.js +26 -0
  37. data/docs/public/robots.txt +5 -0
  38. data/docs/storage/index.markdown +200 -0
  39. data/examples/compute_tests.rb +71 -0
  40. data/examples/dns_tests.rb +78 -0
  41. data/examples/storage_tests.rb +105 -0
  42. data/fog.gemspec +60 -0
  43. data/lib/fog.rb +18 -0
  44. data/lib/fog/aws/cloud_formation.rb +124 -0
  45. data/lib/fog/aws/elb.rb +146 -0
  46. data/lib/fog/aws/iam.rb +124 -0
  47. data/lib/fog/aws/models/elb/listener.rb +51 -0
  48. data/lib/fog/aws/models/elb/listeners.rb +32 -0
  49. data/lib/fog/aws/models/elb/load_balancer.rb +130 -0
  50. data/lib/fog/aws/models/elb/load_balancers.rb +28 -0
  51. data/lib/fog/aws/models/elb/policies.rb +40 -0
  52. data/lib/fog/aws/models/elb/policy.rb +52 -0
  53. data/lib/fog/aws/models/rds/parameter.rb +21 -0
  54. data/lib/fog/aws/models/rds/parameter_group.rb +36 -0
  55. data/lib/fog/aws/models/rds/parameter_groups.rb +27 -0
  56. data/lib/fog/aws/models/rds/parameters.rb +37 -0
  57. data/lib/fog/aws/models/rds/security_group.rb +71 -0
  58. data/lib/fog/aws/models/rds/security_groups.rb +43 -0
  59. data/lib/fog/aws/models/rds/server.rb +105 -0
  60. data/lib/fog/aws/models/rds/servers.rb +27 -0
  61. data/lib/fog/aws/models/rds/snapshot.rb +49 -0
  62. data/lib/fog/aws/models/rds/snapshots.rb +45 -0
  63. data/lib/fog/aws/parsers/cloud_formation/basic.rb +12 -0
  64. data/lib/fog/aws/parsers/cloud_formation/create_stack.rb +19 -0
  65. data/lib/fog/aws/parsers/cloud_formation/describe_stack_events.rb +31 -0
  66. data/lib/fog/aws/parsers/cloud_formation/describe_stack_resources.rb +31 -0
  67. data/lib/fog/aws/parsers/cloud_formation/describe_stacks.rb +72 -0
  68. data/lib/fog/aws/parsers/cloud_formation/get_template.rb +19 -0
  69. data/lib/fog/aws/parsers/cloud_formation/validate_template.rb +52 -0
  70. data/lib/fog/aws/parsers/elb/configure_health_check.rb +37 -0
  71. data/lib/fog/aws/parsers/elb/create_load_balancer.rb +26 -0
  72. data/lib/fog/aws/parsers/elb/delete_load_balancer.rb +24 -0
  73. data/lib/fog/aws/parsers/elb/deregister_instances_from_load_balancer.rb +26 -0
  74. data/lib/fog/aws/parsers/elb/describe_instance_health.rb +30 -0
  75. data/lib/fog/aws/parsers/elb/describe_load_balancers.rb +124 -0
  76. data/lib/fog/aws/parsers/elb/disable_availability_zones_for_load_balancer.rb +26 -0
  77. data/lib/fog/aws/parsers/elb/empty.rb +28 -0
  78. data/lib/fog/aws/parsers/elb/enable_availability_zones_for_load_balancer.rb +26 -0
  79. data/lib/fog/aws/parsers/elb/register_instances_with_load_balancer.rb +26 -0
  80. data/lib/fog/aws/parsers/iam/basic.rb +19 -0
  81. data/lib/fog/aws/parsers/iam/create_access_key.rb +26 -0
  82. data/lib/fog/aws/parsers/iam/create_group.rb +26 -0
  83. data/lib/fog/aws/parsers/iam/create_user.rb +26 -0
  84. data/lib/fog/aws/parsers/iam/get_group.rb +55 -0
  85. data/lib/fog/aws/parsers/iam/get_user.rb +27 -0
  86. data/lib/fog/aws/parsers/iam/get_user_policy.rb +27 -0
  87. data/lib/fog/aws/parsers/iam/list_access_keys.rb +32 -0
  88. data/lib/fog/aws/parsers/iam/list_groups.rb +32 -0
  89. data/lib/fog/aws/parsers/iam/list_groups_for_user.rb +32 -0
  90. data/lib/fog/aws/parsers/iam/list_policies.rb +28 -0
  91. data/lib/fog/aws/parsers/iam/list_server_certificates.rb +38 -0
  92. data/lib/fog/aws/parsers/iam/list_signing_certificates.rb +32 -0
  93. data/lib/fog/aws/parsers/iam/list_users.rb +32 -0
  94. data/lib/fog/aws/parsers/iam/login_profile.rb +27 -0
  95. data/lib/fog/aws/parsers/iam/update_group.rb +26 -0
  96. data/lib/fog/aws/parsers/iam/update_user.rb +27 -0
  97. data/lib/fog/aws/parsers/iam/upload_server_certificate.rb +28 -0
  98. data/lib/fog/aws/parsers/iam/upload_signing_certificate.rb +26 -0
  99. data/lib/fog/aws/parsers/rds/authorize_db_security_group_ingress.rb +38 -0
  100. data/lib/fog/aws/parsers/rds/create_db_instance.rb +34 -0
  101. data/lib/fog/aws/parsers/rds/create_db_instance_read_replica.rb +34 -0
  102. data/lib/fog/aws/parsers/rds/create_db_parameter_group.rb +35 -0
  103. data/lib/fog/aws/parsers/rds/create_db_security_group.rb +38 -0
  104. data/lib/fog/aws/parsers/rds/create_db_snapshot.rb +35 -0
  105. data/lib/fog/aws/parsers/rds/db_parser.rb +123 -0
  106. data/lib/fog/aws/parsers/rds/delete_db_instance.rb +35 -0
  107. data/lib/fog/aws/parsers/rds/delete_db_parameter_group.rb +27 -0
  108. data/lib/fog/aws/parsers/rds/delete_db_security_group.rb +33 -0
  109. data/lib/fog/aws/parsers/rds/delete_db_snapshot.rb +34 -0
  110. data/lib/fog/aws/parsers/rds/describe_db_instances.rb +36 -0
  111. data/lib/fog/aws/parsers/rds/describe_db_parameter_groups.rb +38 -0
  112. data/lib/fog/aws/parsers/rds/describe_db_parameters.rb +44 -0
  113. data/lib/fog/aws/parsers/rds/describe_db_security_groups.rb +39 -0
  114. data/lib/fog/aws/parsers/rds/describe_db_snapshots.rb +39 -0
  115. data/lib/fog/aws/parsers/rds/modify_db_instance.rb +34 -0
  116. data/lib/fog/aws/parsers/rds/modify_db_parameter_group.rb +28 -0
  117. data/lib/fog/aws/parsers/rds/reboot_db_instance.rb +35 -0
  118. data/lib/fog/aws/parsers/rds/restore_db_instance_from_db_snapshot.rb +34 -0
  119. data/lib/fog/aws/parsers/rds/restore_db_instance_to_point_in_time.rb +35 -0
  120. data/lib/fog/aws/parsers/rds/revoke_db_security_group_ingress.rb +39 -0
  121. data/lib/fog/aws/parsers/rds/security_group_parser.rb +39 -0
  122. data/lib/fog/aws/parsers/rds/snapshot_parser.rb +40 -0
  123. data/lib/fog/aws/parsers/ses/delete_verified_email_address.rb +24 -0
  124. data/lib/fog/aws/parsers/ses/get_send_quota.rb +26 -0
  125. data/lib/fog/aws/parsers/ses/get_send_statistics.rb +29 -0
  126. data/lib/fog/aws/parsers/ses/list_verified_email_addresses.rb +25 -0
  127. data/lib/fog/aws/parsers/ses/send_email.rb +26 -0
  128. data/lib/fog/aws/parsers/ses/send_raw_email.rb +26 -0
  129. data/lib/fog/aws/parsers/ses/verify_email_address.rb +24 -0
  130. data/lib/fog/aws/parsers/simpledb/basic.rb +31 -0
  131. data/lib/fog/aws/parsers/simpledb/domain_metadata.rb +32 -0
  132. data/lib/fog/aws/parsers/simpledb/get_attributes.rb +36 -0
  133. data/lib/fog/aws/parsers/simpledb/list_domains.rb +30 -0
  134. data/lib/fog/aws/parsers/simpledb/select.rb +41 -0
  135. data/lib/fog/aws/rds.rb +161 -0
  136. data/lib/fog/aws/requests/cloud_formation/create_stack.rb +71 -0
  137. data/lib/fog/aws/requests/cloud_formation/delete_stack.rb +30 -0
  138. data/lib/fog/aws/requests/cloud_formation/describe_stack_events.rb +44 -0
  139. data/lib/fog/aws/requests/cloud_formation/describe_stack_resources.rb +43 -0
  140. data/lib/fog/aws/requests/cloud_formation/describe_stacks.rb +42 -0
  141. data/lib/fog/aws/requests/cloud_formation/get_template.rb +32 -0
  142. data/lib/fog/aws/requests/cloud_formation/validate_template.rb +34 -0
  143. data/lib/fog/aws/requests/elb/configure_health_check.rb +41 -0
  144. data/lib/fog/aws/requests/elb/create_app_cookie_stickiness_policy.rb +33 -0
  145. data/lib/fog/aws/requests/elb/create_lb_cookie_stickiness_policy.rb +35 -0
  146. data/lib/fog/aws/requests/elb/create_load_balancer.rb +54 -0
  147. data/lib/fog/aws/requests/elb/create_load_balancer_listeners.rb +51 -0
  148. data/lib/fog/aws/requests/elb/delete_load_balancer.rb +33 -0
  149. data/lib/fog/aws/requests/elb/delete_load_balancer_listeners.rb +31 -0
  150. data/lib/fog/aws/requests/elb/delete_load_balancer_policy.rb +31 -0
  151. data/lib/fog/aws/requests/elb/deregister_instances_from_load_balancer.rb +47 -0
  152. data/lib/fog/aws/requests/elb/describe_instance_health.rb +37 -0
  153. data/lib/fog/aws/requests/elb/describe_load_balancers.rb +56 -0
  154. data/lib/fog/aws/requests/elb/disable_availability_zones_for_load_balancer.rb +46 -0
  155. data/lib/fog/aws/requests/elb/enable_availability_zones_for_load_balancer.rb +46 -0
  156. data/lib/fog/aws/requests/elb/register_instances_with_load_balancer.rb +47 -0
  157. data/lib/fog/aws/requests/elb/set_load_balancer_policies_of_listener.rb +43 -0
  158. data/lib/fog/aws/requests/iam/add_user_to_group.rb +34 -0
  159. data/lib/fog/aws/requests/iam/create_access_key.rb +37 -0
  160. data/lib/fog/aws/requests/iam/create_group.rb +39 -0
  161. data/lib/fog/aws/requests/iam/create_login_profile.rb +36 -0
  162. data/lib/fog/aws/requests/iam/create_user.rb +39 -0
  163. data/lib/fog/aws/requests/iam/delete_access_key.rb +34 -0
  164. data/lib/fog/aws/requests/iam/delete_group.rb +32 -0
  165. data/lib/fog/aws/requests/iam/delete_group_policy.rb +34 -0
  166. data/lib/fog/aws/requests/iam/delete_login_profile.rb +31 -0
  167. data/lib/fog/aws/requests/iam/delete_server_certificate.rb +32 -0
  168. data/lib/fog/aws/requests/iam/delete_signing_certificate.rb +33 -0
  169. data/lib/fog/aws/requests/iam/delete_user.rb +32 -0
  170. data/lib/fog/aws/requests/iam/delete_user_policy.rb +34 -0
  171. data/lib/fog/aws/requests/iam/get_group.rb +44 -0
  172. data/lib/fog/aws/requests/iam/get_login_profile.rb +35 -0
  173. data/lib/fog/aws/requests/iam/get_user.rb +36 -0
  174. data/lib/fog/aws/requests/iam/get_user_policy.rb +36 -0
  175. data/lib/fog/aws/requests/iam/list_access_keys.rb +40 -0
  176. data/lib/fog/aws/requests/iam/list_group_policies.rb +39 -0
  177. data/lib/fog/aws/requests/iam/list_groups.rb +42 -0
  178. data/lib/fog/aws/requests/iam/list_groups_for_user.rb +43 -0
  179. data/lib/fog/aws/requests/iam/list_server_certificates.rb +42 -0
  180. data/lib/fog/aws/requests/iam/list_signing_certificates.rb +38 -0
  181. data/lib/fog/aws/requests/iam/list_user_policies.rb +39 -0
  182. data/lib/fog/aws/requests/iam/list_users.rb +42 -0
  183. data/lib/fog/aws/requests/iam/put_group_policy.rb +36 -0
  184. data/lib/fog/aws/requests/iam/put_user_policy.rb +36 -0
  185. data/lib/fog/aws/requests/iam/remove_user_from_group.rb +34 -0
  186. data/lib/fog/aws/requests/iam/update_access_key.rb +36 -0
  187. data/lib/fog/aws/requests/iam/update_group.rb +39 -0
  188. data/lib/fog/aws/requests/iam/update_login_profile.rb +33 -0
  189. data/lib/fog/aws/requests/iam/update_signing_certificate.rb +32 -0
  190. data/lib/fog/aws/requests/iam/update_user.rb +39 -0
  191. data/lib/fog/aws/requests/iam/upload_server_certificate.rb +45 -0
  192. data/lib/fog/aws/requests/iam/upload_signing_certificate.rb +38 -0
  193. data/lib/fog/aws/requests/rds/authorize_db_security_group_ingress.rb +43 -0
  194. data/lib/fog/aws/requests/rds/create_db_instance.rb +56 -0
  195. data/lib/fog/aws/requests/rds/create_db_instance_read_replica.rb +42 -0
  196. data/lib/fog/aws/requests/rds/create_db_parameter_group.rb +41 -0
  197. data/lib/fog/aws/requests/rds/create_db_security_group.rb +37 -0
  198. data/lib/fog/aws/requests/rds/create_db_snapshot.rb +36 -0
  199. data/lib/fog/aws/requests/rds/delete_db_instance.rb +40 -0
  200. data/lib/fog/aws/requests/rds/delete_db_parameter_group.rb +36 -0
  201. data/lib/fog/aws/requests/rds/delete_db_security_group.rb +36 -0
  202. data/lib/fog/aws/requests/rds/delete_db_snapshot.rb +36 -0
  203. data/lib/fog/aws/requests/rds/describe_db_instances.rb +42 -0
  204. data/lib/fog/aws/requests/rds/describe_db_parameter_groups.rb +45 -0
  205. data/lib/fog/aws/requests/rds/describe_db_parameters.rb +46 -0
  206. data/lib/fog/aws/requests/rds/describe_db_security_groups.rb +39 -0
  207. data/lib/fog/aws/requests/rds/describe_db_snapshots.rb +42 -0
  208. data/lib/fog/aws/requests/rds/modify_db_instance.rb +54 -0
  209. data/lib/fog/aws/requests/rds/modify_db_parameter_group.rb +55 -0
  210. data/lib/fog/aws/requests/rds/reboot_db_instance.rb +34 -0
  211. data/lib/fog/aws/requests/rds/restore_db_instance_from_db_snapshot.rb +34 -0
  212. data/lib/fog/aws/requests/rds/restore_db_instance_to_point_in_time.rb +35 -0
  213. data/lib/fog/aws/requests/rds/revoke_db_security_group_ingress.rb +44 -0
  214. data/lib/fog/aws/requests/ses/delete_verified_email_address.rb +28 -0
  215. data/lib/fog/aws/requests/ses/get_send_quota.rb +31 -0
  216. data/lib/fog/aws/requests/ses/get_send_statistics.rb +34 -0
  217. data/lib/fog/aws/requests/ses/list_verified_email_addresses.rb +28 -0
  218. data/lib/fog/aws/requests/ses/send_email.rb +73 -0
  219. data/lib/fog/aws/requests/ses/send_raw_email.rb +41 -0
  220. data/lib/fog/aws/requests/ses/verify_email_address.rb +28 -0
  221. data/lib/fog/aws/requests/simpledb/batch_put_attributes.rb +64 -0
  222. data/lib/fog/aws/requests/simpledb/create_domain.rb +44 -0
  223. data/lib/fog/aws/requests/simpledb/delete_attributes.rb +73 -0
  224. data/lib/fog/aws/requests/simpledb/delete_domain.rb +45 -0
  225. data/lib/fog/aws/requests/simpledb/domain_metadata.rb +76 -0
  226. data/lib/fog/aws/requests/simpledb/get_attributes.rb +72 -0
  227. data/lib/fog/aws/requests/simpledb/list_domains.rb +59 -0
  228. data/lib/fog/aws/requests/simpledb/put_attributes.rb +78 -0
  229. data/lib/fog/aws/requests/simpledb/select.rb +35 -0
  230. data/lib/fog/aws/ses.rb +109 -0
  231. data/lib/fog/aws/simpledb.rb +194 -0
  232. data/lib/fog/bin.rb +74 -0
  233. data/lib/fog/bin/aws.rb +75 -0
  234. data/lib/fog/bin/bluebox.rb +36 -0
  235. data/lib/fog/bin/brightbox.rb +35 -0
  236. data/lib/fog/bin/dnsimple.rb +31 -0
  237. data/lib/fog/bin/dnsmadeeasy.rb +31 -0
  238. data/lib/fog/bin/ecloud.rb +31 -0
  239. data/lib/fog/bin/go_grid.rb +31 -0
  240. data/lib/fog/bin/google.rb +31 -0
  241. data/lib/fog/bin/linode.rb +36 -0
  242. data/lib/fog/bin/local.rb +31 -0
  243. data/lib/fog/bin/new_servers.rb +31 -0
  244. data/lib/fog/bin/ninefold.rb +31 -0
  245. data/lib/fog/bin/rackspace.rb +43 -0
  246. data/lib/fog/bin/slicehost.rb +36 -0
  247. data/lib/fog/bin/stormondemand.rb +31 -0
  248. data/lib/fog/bin/terremark.rb +31 -0
  249. data/lib/fog/bin/virtual_box.rb +53 -0
  250. data/lib/fog/bin/voxel.rb +31 -0
  251. data/lib/fog/bin/zerigo.rb +31 -0
  252. data/lib/fog/cdn.rb +23 -0
  253. data/lib/fog/cdn/aws.rb +112 -0
  254. data/lib/fog/cdn/parsers/aws/distribution.rb +59 -0
  255. data/lib/fog/cdn/parsers/aws/get_distribution_list.rb +61 -0
  256. data/lib/fog/cdn/parsers/aws/post_invalidation.rb +28 -0
  257. data/lib/fog/cdn/rackspace.rb +88 -0
  258. data/lib/fog/cdn/requests/aws/delete_distribution.rb +28 -0
  259. data/lib/fog/cdn/requests/aws/get_distribution.rb +57 -0
  260. data/lib/fog/cdn/requests/aws/get_distribution_list.rb +59 -0
  261. data/lib/fog/cdn/requests/aws/post_distribution.rb +91 -0
  262. data/lib/fog/cdn/requests/aws/post_invalidation.rb +51 -0
  263. data/lib/fog/cdn/requests/aws/put_distribution_config.rb +94 -0
  264. data/lib/fog/cdn/requests/rackspace/get_containers.rb +31 -0
  265. data/lib/fog/cdn/requests/rackspace/head_container.rb +33 -0
  266. data/lib/fog/cdn/requests/rackspace/post_container.rb +30 -0
  267. data/lib/fog/cdn/requests/rackspace/put_container.rb +30 -0
  268. data/lib/fog/compute.rb +67 -0
  269. data/lib/fog/compute/aws.rb +288 -0
  270. data/lib/fog/compute/bluebox.rb +94 -0
  271. data/lib/fog/compute/brightbox.rb +147 -0
  272. data/lib/fog/compute/ecloud.rb +1310 -0
  273. data/lib/fog/compute/go_grid.rb +112 -0
  274. data/lib/fog/compute/linode.rb +116 -0
  275. data/lib/fog/compute/models/aws/address.rb +69 -0
  276. data/lib/fog/compute/models/aws/addresses.rb +100 -0
  277. data/lib/fog/compute/models/aws/flavor.rb +21 -0
  278. data/lib/fog/compute/models/aws/flavors.rb +167 -0
  279. data/lib/fog/compute/models/aws/image.rb +43 -0
  280. data/lib/fog/compute/models/aws/images.rb +62 -0
  281. data/lib/fog/compute/models/aws/key_pair.rb +59 -0
  282. data/lib/fog/compute/models/aws/key_pairs.rb +88 -0
  283. data/lib/fog/compute/models/aws/security_group.rb +205 -0
  284. data/lib/fog/compute/models/aws/security_groups.rb +95 -0
  285. data/lib/fog/compute/models/aws/server.rb +270 -0
  286. data/lib/fog/compute/models/aws/servers.rb +158 -0
  287. data/lib/fog/compute/models/aws/snapshot.rb +56 -0
  288. data/lib/fog/compute/models/aws/snapshots.rb +52 -0
  289. data/lib/fog/compute/models/aws/tag.rb +34 -0
  290. data/lib/fog/compute/models/aws/tags.rb +34 -0
  291. data/lib/fog/compute/models/aws/volume.rb +107 -0
  292. data/lib/fog/compute/models/aws/volumes.rb +121 -0
  293. data/lib/fog/compute/models/bluebox/flavor.rb +45 -0
  294. data/lib/fog/compute/models/bluebox/flavors.rb +28 -0
  295. data/lib/fog/compute/models/bluebox/image.rb +19 -0
  296. data/lib/fog/compute/models/bluebox/images.rb +28 -0
  297. data/lib/fog/compute/models/bluebox/server.rb +147 -0
  298. data/lib/fog/compute/models/bluebox/servers.rb +36 -0
  299. data/lib/fog/compute/models/brightbox/account.rb +51 -0
  300. data/lib/fog/compute/models/brightbox/cloud_ip.rb +47 -0
  301. data/lib/fog/compute/models/brightbox/cloud_ips.rb +34 -0
  302. data/lib/fog/compute/models/brightbox/flavor.rb +33 -0
  303. data/lib/fog/compute/models/brightbox/flavors.rb +28 -0
  304. data/lib/fog/compute/models/brightbox/image.rb +57 -0
  305. data/lib/fog/compute/models/brightbox/images.rb +28 -0
  306. data/lib/fog/compute/models/brightbox/load_balancer.rb +50 -0
  307. data/lib/fog/compute/models/brightbox/load_balancers.rb +28 -0
  308. data/lib/fog/compute/models/brightbox/server.rb +114 -0
  309. data/lib/fog/compute/models/brightbox/servers.rb +29 -0
  310. data/lib/fog/compute/models/brightbox/user.rb +39 -0
  311. data/lib/fog/compute/models/brightbox/users.rb +29 -0
  312. data/lib/fog/compute/models/brightbox/zone.rb +21 -0
  313. data/lib/fog/compute/models/brightbox/zones.rb +29 -0
  314. data/lib/fog/compute/models/ecloud/backup_internet_service.rb +56 -0
  315. data/lib/fog/compute/models/ecloud/backup_internet_services.rb +33 -0
  316. data/lib/fog/compute/models/ecloud/catalog.rb +28 -0
  317. data/lib/fog/compute/models/ecloud/catalog_item.rb +29 -0
  318. data/lib/fog/compute/models/ecloud/firewall_acl.rb +24 -0
  319. data/lib/fog/compute/models/ecloud/firewall_acls.rb +31 -0
  320. data/lib/fog/compute/models/ecloud/internet_service.rb +117 -0
  321. data/lib/fog/compute/models/ecloud/internet_services.rb +33 -0
  322. data/lib/fog/compute/models/ecloud/ip.rb +49 -0
  323. data/lib/fog/compute/models/ecloud/ips.rb +32 -0
  324. data/lib/fog/compute/models/ecloud/network.rb +75 -0
  325. data/lib/fog/compute/models/ecloud/networks.rb +33 -0
  326. data/lib/fog/compute/models/ecloud/node.rb +43 -0
  327. data/lib/fog/compute/models/ecloud/nodes.rb +31 -0
  328. data/lib/fog/compute/models/ecloud/public_ip.rb +22 -0
  329. data/lib/fog/compute/models/ecloud/public_ips.rb +36 -0
  330. data/lib/fog/compute/models/ecloud/server.rb +209 -0
  331. data/lib/fog/compute/models/ecloud/servers.rb +57 -0
  332. data/lib/fog/compute/models/ecloud/task.rb +21 -0
  333. data/lib/fog/compute/models/ecloud/tasks.rb +31 -0
  334. data/lib/fog/compute/models/ecloud/vdc.rb +81 -0
  335. data/lib/fog/compute/models/ecloud/vdcs.rb +40 -0
  336. data/lib/fog/compute/models/go_grid/image.rb +60 -0
  337. data/lib/fog/compute/models/go_grid/images.rb +33 -0
  338. data/lib/fog/compute/models/go_grid/password.rb +50 -0
  339. data/lib/fog/compute/models/go_grid/passwords.rb +36 -0
  340. data/lib/fog/compute/models/go_grid/server.rb +118 -0
  341. data/lib/fog/compute/models/go_grid/servers.rb +36 -0
  342. data/lib/fog/compute/models/linode/data_center.rb +12 -0
  343. data/lib/fog/compute/models/linode/data_centers.rb +26 -0
  344. data/lib/fog/compute/models/linode/disk.rb +62 -0
  345. data/lib/fog/compute/models/linode/disks.rb +40 -0
  346. data/lib/fog/compute/models/linode/flavor.rb +23 -0
  347. data/lib/fog/compute/models/linode/flavors.rb +32 -0
  348. data/lib/fog/compute/models/linode/image.rb +14 -0
  349. data/lib/fog/compute/models/linode/images.rb +33 -0
  350. data/lib/fog/compute/models/linode/ip.rb +30 -0
  351. data/lib/fog/compute/models/linode/ips.rb +40 -0
  352. data/lib/fog/compute/models/linode/kernel.rb +12 -0
  353. data/lib/fog/compute/models/linode/kernels.rb +32 -0
  354. data/lib/fog/compute/models/linode/server.rb +88 -0
  355. data/lib/fog/compute/models/linode/servers.rb +32 -0
  356. data/lib/fog/compute/models/linode/stack_script.rb +13 -0
  357. data/lib/fog/compute/models/linode/stack_scripts.rb +32 -0
  358. data/lib/fog/compute/models/ninefold/address.rb +103 -0
  359. data/lib/fog/compute/models/ninefold/addresses.rb +31 -0
  360. data/lib/fog/compute/models/ninefold/flavor.rb +29 -0
  361. data/lib/fog/compute/models/ninefold/flavors.rb +30 -0
  362. data/lib/fog/compute/models/ninefold/image.rb +42 -0
  363. data/lib/fog/compute/models/ninefold/images.rb +30 -0
  364. data/lib/fog/compute/models/ninefold/ip_forwarding_rule.rb +79 -0
  365. data/lib/fog/compute/models/ninefold/ip_forwarding_rules.rb +31 -0
  366. data/lib/fog/compute/models/ninefold/server.rb +180 -0
  367. data/lib/fog/compute/models/ninefold/servers.rb +31 -0
  368. data/lib/fog/compute/models/rackspace/flavor.rb +43 -0
  369. data/lib/fog/compute/models/rackspace/flavors.rb +28 -0
  370. data/lib/fog/compute/models/rackspace/image.rb +48 -0
  371. data/lib/fog/compute/models/rackspace/images.rb +33 -0
  372. data/lib/fog/compute/models/rackspace/server.rb +146 -0
  373. data/lib/fog/compute/models/rackspace/servers.rb +36 -0
  374. data/lib/fog/compute/models/slicehost/flavor.rb +45 -0
  375. data/lib/fog/compute/models/slicehost/flavors.rb +28 -0
  376. data/lib/fog/compute/models/slicehost/image.rb +17 -0
  377. data/lib/fog/compute/models/slicehost/images.rb +27 -0
  378. data/lib/fog/compute/models/slicehost/server.rb +129 -0
  379. data/lib/fog/compute/models/slicehost/servers.rb +38 -0
  380. data/lib/fog/compute/models/storm_on_demand/balancer.rb +38 -0
  381. data/lib/fog/compute/models/storm_on_demand/balancers.rb +21 -0
  382. data/lib/fog/compute/models/storm_on_demand/config.rb +25 -0
  383. data/lib/fog/compute/models/storm_on_demand/configs.rb +22 -0
  384. data/lib/fog/compute/models/storm_on_demand/image.rb +20 -0
  385. data/lib/fog/compute/models/storm_on_demand/images.rb +21 -0
  386. data/lib/fog/compute/models/storm_on_demand/private_ip.rb +19 -0
  387. data/lib/fog/compute/models/storm_on_demand/private_ips.rb +31 -0
  388. data/lib/fog/compute/models/storm_on_demand/server.rb +74 -0
  389. data/lib/fog/compute/models/storm_on_demand/servers.rb +26 -0
  390. data/lib/fog/compute/models/storm_on_demand/stat.rb +23 -0
  391. data/lib/fog/compute/models/storm_on_demand/stats.rb +22 -0
  392. data/lib/fog/compute/models/storm_on_demand/template.rb +22 -0
  393. data/lib/fog/compute/models/storm_on_demand/templates.rb +21 -0
  394. data/lib/fog/compute/models/virtual_box/medium.rb +87 -0
  395. data/lib/fog/compute/models/virtual_box/medium_format.rb +34 -0
  396. data/lib/fog/compute/models/virtual_box/mediums.rb +32 -0
  397. data/lib/fog/compute/models/virtual_box/nat_engine.rb +65 -0
  398. data/lib/fog/compute/models/virtual_box/nat_redirect.rb +91 -0
  399. data/lib/fog/compute/models/virtual_box/nat_redirects.rb +41 -0
  400. data/lib/fog/compute/models/virtual_box/network_adapter.rb +82 -0
  401. data/lib/fog/compute/models/virtual_box/network_adapters.rb +42 -0
  402. data/lib/fog/compute/models/virtual_box/server.rb +241 -0
  403. data/lib/fog/compute/models/virtual_box/servers.rb +41 -0
  404. data/lib/fog/compute/models/virtual_box/storage_controller.rb +83 -0
  405. data/lib/fog/compute/models/virtual_box/storage_controllers.rb +38 -0
  406. data/lib/fog/compute/models/voxel/image.rb +15 -0
  407. data/lib/fog/compute/models/voxel/images.rb +30 -0
  408. data/lib/fog/compute/models/voxel/server.rb +78 -0
  409. data/lib/fog/compute/models/voxel/servers.rb +32 -0
  410. data/lib/fog/compute/new_servers.rb +93 -0
  411. data/lib/fog/compute/ninefold.rb +139 -0
  412. data/lib/fog/compute/parsers/aws/allocate_address.rb +19 -0
  413. data/lib/fog/compute/parsers/aws/attach_volume.rb +22 -0
  414. data/lib/fog/compute/parsers/aws/basic.rb +25 -0
  415. data/lib/fog/compute/parsers/aws/create_image.rb +20 -0
  416. data/lib/fog/compute/parsers/aws/create_key_pair.rb +20 -0
  417. data/lib/fog/compute/parsers/aws/create_snapshot.rb +26 -0
  418. data/lib/fog/compute/parsers/aws/create_volume.rb +24 -0
  419. data/lib/fog/compute/parsers/aws/deregister_image.rb +20 -0
  420. data/lib/fog/compute/parsers/aws/describe_addresses.rb +30 -0
  421. data/lib/fog/compute/parsers/aws/describe_availability_zones.rb +32 -0
  422. data/lib/fog/compute/parsers/aws/describe_images.rb +72 -0
  423. data/lib/fog/compute/parsers/aws/describe_instances.rb +90 -0
  424. data/lib/fog/compute/parsers/aws/describe_key_pairs.rb +30 -0
  425. data/lib/fog/compute/parsers/aws/describe_placement_groups.rb +30 -0
  426. data/lib/fog/compute/parsers/aws/describe_regions.rb +30 -0
  427. data/lib/fog/compute/parsers/aws/describe_reserved_instances.rb +36 -0
  428. data/lib/fog/compute/parsers/aws/describe_reserved_instances_offerings.rb +34 -0
  429. data/lib/fog/compute/parsers/aws/describe_security_groups.rb +76 -0
  430. data/lib/fog/compute/parsers/aws/describe_snapshots.rb +54 -0
  431. data/lib/fog/compute/parsers/aws/describe_tags.rb +30 -0
  432. data/lib/fog/compute/parsers/aws/describe_volumes.rb +73 -0
  433. data/lib/fog/compute/parsers/aws/detach_volume.rb +22 -0
  434. data/lib/fog/compute/parsers/aws/get_console_output.rb +28 -0
  435. data/lib/fog/compute/parsers/aws/get_password_data.rb +26 -0
  436. data/lib/fog/compute/parsers/aws/import_key_pair.rb +20 -0
  437. data/lib/fog/compute/parsers/aws/monitor_unmonitor_instances.rb +35 -0
  438. data/lib/fog/compute/parsers/aws/register_image.rb +20 -0
  439. data/lib/fog/compute/parsers/aws/run_instances.rb +82 -0
  440. data/lib/fog/compute/parsers/aws/start_stop_instances.rb +41 -0
  441. data/lib/fog/compute/parsers/aws/terminate_instances.rb +55 -0
  442. data/lib/fog/compute/parsers/slicehost/create_slice.rb +31 -0
  443. data/lib/fog/compute/parsers/slicehost/get_backups.rb +32 -0
  444. data/lib/fog/compute/parsers/slicehost/get_flavor.rb +26 -0
  445. data/lib/fog/compute/parsers/slicehost/get_flavors.rb +30 -0
  446. data/lib/fog/compute/parsers/slicehost/get_image.rb +26 -0
  447. data/lib/fog/compute/parsers/slicehost/get_images.rb +30 -0
  448. data/lib/fog/compute/parsers/slicehost/get_slice.rb +31 -0
  449. data/lib/fog/compute/parsers/slicehost/get_slices.rb +35 -0
  450. data/lib/fog/compute/parsers/voxel/basic.rb +31 -0
  451. data/lib/fog/compute/parsers/voxel/devices_list.rb +111 -0
  452. data/lib/fog/compute/parsers/voxel/images_list.rb +59 -0
  453. data/lib/fog/compute/parsers/voxel/voxcloud_create.rb +40 -0
  454. data/lib/fog/compute/parsers/voxel/voxcloud_delete.rb +31 -0
  455. data/lib/fog/compute/parsers/voxel/voxcloud_status.rb +42 -0
  456. data/lib/fog/compute/rackspace.rb +152 -0
  457. data/lib/fog/compute/requests/aws/allocate_address.rb +53 -0
  458. data/lib/fog/compute/requests/aws/associate_address.rb +65 -0
  459. data/lib/fog/compute/requests/aws/attach_volume.rb +87 -0
  460. data/lib/fog/compute/requests/aws/authorize_security_group_ingress.rb +108 -0
  461. data/lib/fog/compute/requests/aws/create_image.rb +65 -0
  462. data/lib/fog/compute/requests/aws/create_key_pair.rb +56 -0
  463. data/lib/fog/compute/requests/aws/create_placement_group.rb +34 -0
  464. data/lib/fog/compute/requests/aws/create_security_group.rb +57 -0
  465. data/lib/fog/compute/requests/aws/create_snapshot.rb +73 -0
  466. data/lib/fog/compute/requests/aws/create_tags.rb +84 -0
  467. data/lib/fog/compute/requests/aws/create_volume.rb +87 -0
  468. data/lib/fog/compute/requests/aws/delete_key_pair.rb +47 -0
  469. data/lib/fog/compute/requests/aws/delete_placement_group.rb +32 -0
  470. data/lib/fog/compute/requests/aws/delete_security_group.rb +49 -0
  471. data/lib/fog/compute/requests/aws/delete_snapshot.rb +50 -0
  472. data/lib/fog/compute/requests/aws/delete_tags.rb +87 -0
  473. data/lib/fog/compute/requests/aws/delete_volume.rb +56 -0
  474. data/lib/fog/compute/requests/aws/deregister_image.rb +53 -0
  475. data/lib/fog/compute/requests/aws/describe_addresses.rb +66 -0
  476. data/lib/fog/compute/requests/aws/describe_availability_zones.rb +88 -0
  477. data/lib/fog/compute/requests/aws/describe_images.rb +114 -0
  478. data/lib/fog/compute/requests/aws/describe_instances.rb +204 -0
  479. data/lib/fog/compute/requests/aws/describe_key_pairs.rb +68 -0
  480. data/lib/fog/compute/requests/aws/describe_placement_groups.rb +35 -0
  481. data/lib/fog/compute/requests/aws/describe_regions.rb +68 -0
  482. data/lib/fog/compute/requests/aws/describe_reserved_instances.rb +46 -0
  483. data/lib/fog/compute/requests/aws/describe_reserved_instances_offerings.rb +39 -0
  484. data/lib/fog/compute/requests/aws/describe_security_groups.rb +97 -0
  485. data/lib/fog/compute/requests/aws/describe_snapshots.rb +120 -0
  486. data/lib/fog/compute/requests/aws/describe_tags.rb +36 -0
  487. data/lib/fog/compute/requests/aws/describe_volumes.rb +116 -0
  488. data/lib/fog/compute/requests/aws/detach_volume.rb +60 -0
  489. data/lib/fog/compute/requests/aws/disassociate_address.rb +56 -0
  490. data/lib/fog/compute/requests/aws/get_console_output.rb +54 -0
  491. data/lib/fog/compute/requests/aws/get_password_data.rb +56 -0
  492. data/lib/fog/compute/requests/aws/import_key_pair.rb +56 -0
  493. data/lib/fog/compute/requests/aws/modify_image_attributes.rb +37 -0
  494. data/lib/fog/compute/requests/aws/modify_snapshot_attribute.rb +36 -0
  495. data/lib/fog/compute/requests/aws/monitor_instances.rb +54 -0
  496. data/lib/fog/compute/requests/aws/reboot_instances.rb +54 -0
  497. data/lib/fog/compute/requests/aws/register_image.rb +93 -0
  498. data/lib/fog/compute/requests/aws/release_address.rb +47 -0
  499. data/lib/fog/compute/requests/aws/revoke_security_group_ingress.rb +94 -0
  500. data/lib/fog/compute/requests/aws/run_instances.rb +173 -0
  501. data/lib/fog/compute/requests/aws/start_instances.rb +32 -0
  502. data/lib/fog/compute/requests/aws/stop_instances.rb +32 -0
  503. data/lib/fog/compute/requests/aws/terminate_instances.rb +96 -0
  504. data/lib/fog/compute/requests/aws/unmonitor_instances.rb +55 -0
  505. data/lib/fog/compute/requests/bluebox/create_block.rb +33 -0
  506. data/lib/fog/compute/requests/bluebox/destroy_block.rb +26 -0
  507. data/lib/fog/compute/requests/bluebox/get_block.rb +26 -0
  508. data/lib/fog/compute/requests/bluebox/get_blocks.rb +28 -0
  509. data/lib/fog/compute/requests/bluebox/get_product.rb +26 -0
  510. data/lib/fog/compute/requests/bluebox/get_products.rb +25 -0
  511. data/lib/fog/compute/requests/bluebox/get_template.rb +26 -0
  512. data/lib/fog/compute/requests/bluebox/get_templates.rb +26 -0
  513. data/lib/fog/compute/requests/bluebox/reboot_block.rb +27 -0
  514. data/lib/fog/compute/requests/brightbox/activate_console_server.rb +20 -0
  515. data/lib/fog/compute/requests/brightbox/add_listeners_load_balancer.rb +20 -0
  516. data/lib/fog/compute/requests/brightbox/add_nodes_load_balancer.rb +20 -0
  517. data/lib/fog/compute/requests/brightbox/create_api_client.rb +19 -0
  518. data/lib/fog/compute/requests/brightbox/create_cloud_ip.rb +19 -0
  519. data/lib/fog/compute/requests/brightbox/create_image.rb +19 -0
  520. data/lib/fog/compute/requests/brightbox/create_load_balancer.rb +19 -0
  521. data/lib/fog/compute/requests/brightbox/create_server.rb +19 -0
  522. data/lib/fog/compute/requests/brightbox/destroy_api_client.rb +20 -0
  523. data/lib/fog/compute/requests/brightbox/destroy_cloud_ip.rb +20 -0
  524. data/lib/fog/compute/requests/brightbox/destroy_image.rb +20 -0
  525. data/lib/fog/compute/requests/brightbox/destroy_load_balancer.rb +20 -0
  526. data/lib/fog/compute/requests/brightbox/destroy_server.rb +20 -0
  527. data/lib/fog/compute/requests/brightbox/get_account.rb +19 -0
  528. data/lib/fog/compute/requests/brightbox/get_api_client.rb +20 -0
  529. data/lib/fog/compute/requests/brightbox/get_cloud_ip.rb +20 -0
  530. data/lib/fog/compute/requests/brightbox/get_image.rb +20 -0
  531. data/lib/fog/compute/requests/brightbox/get_interface.rb +20 -0
  532. data/lib/fog/compute/requests/brightbox/get_load_balancer.rb +20 -0
  533. data/lib/fog/compute/requests/brightbox/get_server.rb +20 -0
  534. data/lib/fog/compute/requests/brightbox/get_server_type.rb +20 -0
  535. data/lib/fog/compute/requests/brightbox/get_user.rb +20 -0
  536. data/lib/fog/compute/requests/brightbox/get_zone.rb +20 -0
  537. data/lib/fog/compute/requests/brightbox/list_api_clients.rb +19 -0
  538. data/lib/fog/compute/requests/brightbox/list_cloud_ips.rb +19 -0
  539. data/lib/fog/compute/requests/brightbox/list_images.rb +19 -0
  540. data/lib/fog/compute/requests/brightbox/list_load_balancers.rb +19 -0
  541. data/lib/fog/compute/requests/brightbox/list_server_types.rb +19 -0
  542. data/lib/fog/compute/requests/brightbox/list_servers.rb +19 -0
  543. data/lib/fog/compute/requests/brightbox/list_users.rb +19 -0
  544. data/lib/fog/compute/requests/brightbox/list_zones.rb +19 -0
  545. data/lib/fog/compute/requests/brightbox/map_cloud_ip.rb +20 -0
  546. data/lib/fog/compute/requests/brightbox/remove_listeners_load_balancer.rb +20 -0
  547. data/lib/fog/compute/requests/brightbox/remove_nodes_load_balancer.rb +20 -0
  548. data/lib/fog/compute/requests/brightbox/reset_ftp_password_account.rb +19 -0
  549. data/lib/fog/compute/requests/brightbox/resize_server.rb +19 -0
  550. data/lib/fog/compute/requests/brightbox/shutdown_server.rb +20 -0
  551. data/lib/fog/compute/requests/brightbox/snapshot_server.rb +20 -0
  552. data/lib/fog/compute/requests/brightbox/start_server.rb +20 -0
  553. data/lib/fog/compute/requests/brightbox/stop_server.rb +20 -0
  554. data/lib/fog/compute/requests/brightbox/unmap_cloud_ip.rb +20 -0
  555. data/lib/fog/compute/requests/brightbox/update_account.rb +20 -0
  556. data/lib/fog/compute/requests/brightbox/update_api_client.rb +21 -0
  557. data/lib/fog/compute/requests/brightbox/update_image.rb +21 -0
  558. data/lib/fog/compute/requests/brightbox/update_load_balancer.rb +21 -0
  559. data/lib/fog/compute/requests/brightbox/update_server.rb +21 -0
  560. data/lib/fog/compute/requests/brightbox/update_user.rb +21 -0
  561. data/lib/fog/compute/requests/ecloud/add_backup_internet_service.rb +109 -0
  562. data/lib/fog/compute/requests/ecloud/add_internet_service.rb +149 -0
  563. data/lib/fog/compute/requests/ecloud/add_node.rb +62 -0
  564. data/lib/fog/compute/requests/ecloud/clone_vapp.rb +40 -0
  565. data/lib/fog/compute/requests/ecloud/configure_internet_service.rb +112 -0
  566. data/lib/fog/compute/requests/ecloud/configure_network.rb +44 -0
  567. data/lib/fog/compute/requests/ecloud/configure_network_ip.rb +66 -0
  568. data/lib/fog/compute/requests/ecloud/configure_node.rb +56 -0
  569. data/lib/fog/compute/requests/ecloud/configure_vapp.rb +144 -0
  570. data/lib/fog/compute/requests/ecloud/delete_internet_service.rb +22 -0
  571. data/lib/fog/compute/requests/ecloud/delete_node.rb +22 -0
  572. data/lib/fog/compute/requests/ecloud/delete_vapp.rb +29 -0
  573. data/lib/fog/compute/requests/ecloud/get_catalog.rb +44 -0
  574. data/lib/fog/compute/requests/ecloud/get_catalog_item.rb +47 -0
  575. data/lib/fog/compute/requests/ecloud/get_customization_options.rb +22 -0
  576. data/lib/fog/compute/requests/ecloud/get_firewall_acl.rb +11 -0
  577. data/lib/fog/compute/requests/ecloud/get_firewall_acls.rb +11 -0
  578. data/lib/fog/compute/requests/ecloud/get_internet_services.rb +82 -0
  579. data/lib/fog/compute/requests/ecloud/get_network.rb +44 -0
  580. data/lib/fog/compute/requests/ecloud/get_network_extensions.rb +33 -0
  581. data/lib/fog/compute/requests/ecloud/get_network_ip.rb +43 -0
  582. data/lib/fog/compute/requests/ecloud/get_network_ips.rb +35 -0
  583. data/lib/fog/compute/requests/ecloud/get_node.rb +40 -0
  584. data/lib/fog/compute/requests/ecloud/get_nodes.rb +41 -0
  585. data/lib/fog/compute/requests/ecloud/get_organization.rb +49 -0
  586. data/lib/fog/compute/requests/ecloud/get_public_ip.rb +34 -0
  587. data/lib/fog/compute/requests/ecloud/get_public_ips.rb +38 -0
  588. data/lib/fog/compute/requests/ecloud/get_task.rb +11 -0
  589. data/lib/fog/compute/requests/ecloud/get_task_list.rb +11 -0
  590. data/lib/fog/compute/requests/ecloud/get_vapp.rb +99 -0
  591. data/lib/fog/compute/requests/ecloud/get_vapp_template.rb +11 -0
  592. data/lib/fog/compute/requests/ecloud/get_vdc.rb +84 -0
  593. data/lib/fog/compute/requests/ecloud/get_versions.rb +37 -0
  594. data/lib/fog/compute/requests/ecloud/instantiate_vapp_template.rb +142 -0
  595. data/lib/fog/compute/requests/ecloud/login.rb +48 -0
  596. data/lib/fog/compute/requests/ecloud/power_off.rb +23 -0
  597. data/lib/fog/compute/requests/ecloud/power_on.rb +23 -0
  598. data/lib/fog/compute/requests/ecloud/power_reset.rb +11 -0
  599. data/lib/fog/compute/requests/ecloud/power_shutdown.rb +11 -0
  600. data/lib/fog/compute/requests/go_grid/common_lookup_list.rb +28 -0
  601. data/lib/fog/compute/requests/go_grid/grid_image_get.rb +41 -0
  602. data/lib/fog/compute/requests/go_grid/grid_image_list.rb +44 -0
  603. data/lib/fog/compute/requests/go_grid/grid_ip_list.rb +30 -0
  604. data/lib/fog/compute/requests/go_grid/grid_loadbalancer_list.rb +28 -0
  605. data/lib/fog/compute/requests/go_grid/grid_server_add.rb +36 -0
  606. data/lib/fog/compute/requests/go_grid/grid_server_delete.rb +25 -0
  607. data/lib/fog/compute/requests/go_grid/grid_server_get.rb +25 -0
  608. data/lib/fog/compute/requests/go_grid/grid_server_list.rb +30 -0
  609. data/lib/fog/compute/requests/go_grid/grid_server_power.rb +26 -0
  610. data/lib/fog/compute/requests/go_grid/support_password_get.rb +28 -0
  611. data/lib/fog/compute/requests/go_grid/support_password_list.rb +30 -0
  612. data/lib/fog/compute/requests/linode/avail_datacenters.rb +23 -0
  613. data/lib/fog/compute/requests/linode/avail_distributions.rb +30 -0
  614. data/lib/fog/compute/requests/linode/avail_kernels.rb +30 -0
  615. data/lib/fog/compute/requests/linode/avail_linodeplans.rb +34 -0
  616. data/lib/fog/compute/requests/linode/avail_stackscripts.rb +19 -0
  617. data/lib/fog/compute/requests/linode/linode_boot.rb +17 -0
  618. data/lib/fog/compute/requests/linode/linode_config_create.rb +23 -0
  619. data/lib/fog/compute/requests/linode/linode_config_list.rb +20 -0
  620. data/lib/fog/compute/requests/linode/linode_create.rb +33 -0
  621. data/lib/fog/compute/requests/linode/linode_delete.rb +28 -0
  622. data/lib/fog/compute/requests/linode/linode_disk_create.rb +23 -0
  623. data/lib/fog/compute/requests/linode/linode_disk_createfromdistribution.rb +24 -0
  624. data/lib/fog/compute/requests/linode/linode_disk_createfromstackscript.rb +26 -0
  625. data/lib/fog/compute/requests/linode/linode_disk_delete.rb +21 -0
  626. data/lib/fog/compute/requests/linode/linode_disk_list.rb +21 -0
  627. data/lib/fog/compute/requests/linode/linode_ip_addprivate.rb +17 -0
  628. data/lib/fog/compute/requests/linode/linode_ip_list.rb +21 -0
  629. data/lib/fog/compute/requests/linode/linode_list.rb +30 -0
  630. data/lib/fog/compute/requests/linode/linode_reboot.rb +28 -0
  631. data/lib/fog/compute/requests/linode/linode_shutdown.rb +17 -0
  632. data/lib/fog/compute/requests/linode/linode_update.rb +17 -0
  633. data/lib/fog/compute/requests/linode/stackscript_list.rb +32 -0
  634. data/lib/fog/compute/requests/new_servers/add_server.rb +33 -0
  635. data/lib/fog/compute/requests/new_servers/cancel_server.rb +30 -0
  636. data/lib/fog/compute/requests/new_servers/get_server.rb +36 -0
  637. data/lib/fog/compute/requests/new_servers/list_images.rb +27 -0
  638. data/lib/fog/compute/requests/new_servers/list_plans.rb +30 -0
  639. data/lib/fog/compute/requests/new_servers/list_servers.rb +36 -0
  640. data/lib/fog/compute/requests/new_servers/reboot_server.rb +24 -0
  641. data/lib/fog/compute/requests/ninefold/associate_ip_address.rb +14 -0
  642. data/lib/fog/compute/requests/ninefold/change_service_for_virtual_machine.rb +14 -0
  643. data/lib/fog/compute/requests/ninefold/create_ip_forwarding_rule.rb +14 -0
  644. data/lib/fog/compute/requests/ninefold/delete_ip_forwarding_rule.rb +14 -0
  645. data/lib/fog/compute/requests/ninefold/deploy_virtual_machine.rb +14 -0
  646. data/lib/fog/compute/requests/ninefold/destroy_virtual_machine.rb +14 -0
  647. data/lib/fog/compute/requests/ninefold/disable_static_nat.rb +14 -0
  648. data/lib/fog/compute/requests/ninefold/disassociate_ip_address.rb +14 -0
  649. data/lib/fog/compute/requests/ninefold/enable_static_nat.rb +14 -0
  650. data/lib/fog/compute/requests/ninefold/list_accounts.rb +14 -0
  651. data/lib/fog/compute/requests/ninefold/list_async_jobs.rb +14 -0
  652. data/lib/fog/compute/requests/ninefold/list_capabilities.rb +14 -0
  653. data/lib/fog/compute/requests/ninefold/list_disk_offerings.rb +14 -0
  654. data/lib/fog/compute/requests/ninefold/list_events.rb +14 -0
  655. data/lib/fog/compute/requests/ninefold/list_hypervisors.rb +14 -0
  656. data/lib/fog/compute/requests/ninefold/list_ip_forwarding_rules.rb +14 -0
  657. data/lib/fog/compute/requests/ninefold/list_network_offerings.rb +14 -0
  658. data/lib/fog/compute/requests/ninefold/list_networks.rb +14 -0
  659. data/lib/fog/compute/requests/ninefold/list_public_ip_addresses.rb +14 -0
  660. data/lib/fog/compute/requests/ninefold/list_resource_limits.rb +14 -0
  661. data/lib/fog/compute/requests/ninefold/list_service_offerings.rb +14 -0
  662. data/lib/fog/compute/requests/ninefold/list_templates.rb +14 -0
  663. data/lib/fog/compute/requests/ninefold/list_virtual_machines.rb +14 -0
  664. data/lib/fog/compute/requests/ninefold/list_zones.rb +14 -0
  665. data/lib/fog/compute/requests/ninefold/query_async_job_result.rb +14 -0
  666. data/lib/fog/compute/requests/ninefold/reboot_virtual_machine.rb +14 -0
  667. data/lib/fog/compute/requests/ninefold/reset_password_for_virtual_machine.rb +14 -0
  668. data/lib/fog/compute/requests/ninefold/start_virtual_machine.rb +14 -0
  669. data/lib/fog/compute/requests/ninefold/stop_virtual_machine.rb +14 -0
  670. data/lib/fog/compute/requests/ninefold/update_virtual_machine.rb +14 -0
  671. data/lib/fog/compute/requests/rackspace/confirm_resized_server.rb +34 -0
  672. data/lib/fog/compute/requests/rackspace/create_image.rb +62 -0
  673. data/lib/fog/compute/requests/rackspace/create_server.rb +94 -0
  674. data/lib/fog/compute/requests/rackspace/delete_image.rb +45 -0
  675. data/lib/fog/compute/requests/rackspace/delete_server.rb +43 -0
  676. data/lib/fog/compute/requests/rackspace/get_flavor_details.rb +52 -0
  677. data/lib/fog/compute/requests/rackspace/get_image_details.rb +27 -0
  678. data/lib/fog/compute/requests/rackspace/get_server_details.rb +52 -0
  679. data/lib/fog/compute/requests/rackspace/list_addresses.rb +43 -0
  680. data/lib/fog/compute/requests/rackspace/list_flavors.rb +45 -0
  681. data/lib/fog/compute/requests/rackspace/list_flavors_detail.rb +47 -0
  682. data/lib/fog/compute/requests/rackspace/list_images.rb +40 -0
  683. data/lib/fog/compute/requests/rackspace/list_images_detail.rb +49 -0
  684. data/lib/fog/compute/requests/rackspace/list_private_addresses.rb +41 -0
  685. data/lib/fog/compute/requests/rackspace/list_public_addresses.rb +41 -0
  686. data/lib/fog/compute/requests/rackspace/list_servers.rb +41 -0
  687. data/lib/fog/compute/requests/rackspace/list_servers_detail.rb +56 -0
  688. data/lib/fog/compute/requests/rackspace/reboot_server.rb +30 -0
  689. data/lib/fog/compute/requests/rackspace/resize_server.rb +39 -0
  690. data/lib/fog/compute/requests/rackspace/revert_resized_server.rb +35 -0
  691. data/lib/fog/compute/requests/rackspace/server_action.rb +25 -0
  692. data/lib/fog/compute/requests/rackspace/update_server.rb +45 -0
  693. data/lib/fog/compute/requests/slicehost/create_slice.rb +41 -0
  694. data/lib/fog/compute/requests/slicehost/delete_slice.rb +23 -0
  695. data/lib/fog/compute/requests/slicehost/get_backups.rb +29 -0
  696. data/lib/fog/compute/requests/slicehost/get_flavor.rb +32 -0
  697. data/lib/fog/compute/requests/slicehost/get_flavors.rb +29 -0
  698. data/lib/fog/compute/requests/slicehost/get_image.rb +30 -0
  699. data/lib/fog/compute/requests/slicehost/get_images.rb +27 -0
  700. data/lib/fog/compute/requests/slicehost/get_slice.rb +38 -0
  701. data/lib/fog/compute/requests/slicehost/get_slices.rb +35 -0
  702. data/lib/fog/compute/requests/slicehost/reboot_slice.rb +36 -0
  703. data/lib/fog/compute/requests/storm_on_demand/add_balancer_node.rb +16 -0
  704. data/lib/fog/compute/requests/storm_on_demand/clone_server.rb +16 -0
  705. data/lib/fog/compute/requests/storm_on_demand/create_server.rb +16 -0
  706. data/lib/fog/compute/requests/storm_on_demand/delete_server.rb +16 -0
  707. data/lib/fog/compute/requests/storm_on_demand/get_server.rb +16 -0
  708. data/lib/fog/compute/requests/storm_on_demand/get_stats.rb +16 -0
  709. data/lib/fog/compute/requests/storm_on_demand/list_balancers.rb +16 -0
  710. data/lib/fog/compute/requests/storm_on_demand/list_configs.rb +16 -0
  711. data/lib/fog/compute/requests/storm_on_demand/list_images.rb +16 -0
  712. data/lib/fog/compute/requests/storm_on_demand/list_private_ips.rb +16 -0
  713. data/lib/fog/compute/requests/storm_on_demand/list_servers.rb +16 -0
  714. data/lib/fog/compute/requests/storm_on_demand/list_templates.rb +16 -0
  715. data/lib/fog/compute/requests/storm_on_demand/reboot_server.rb +16 -0
  716. data/lib/fog/compute/requests/storm_on_demand/remove_balancer_node.rb +16 -0
  717. data/lib/fog/compute/requests/storm_on_demand/resize_server.rb +16 -0
  718. data/lib/fog/compute/requests/voxel/devices_list.rb +24 -0
  719. data/lib/fog/compute/requests/voxel/devices_power.rb +22 -0
  720. data/lib/fog/compute/requests/voxel/images_list.rb +31 -0
  721. data/lib/fog/compute/requests/voxel/voxcloud_create.rb +22 -0
  722. data/lib/fog/compute/requests/voxel/voxcloud_delete.rb +20 -0
  723. data/lib/fog/compute/requests/voxel/voxcloud_status.rb +24 -0
  724. data/lib/fog/compute/slicehost.rb +99 -0
  725. data/lib/fog/compute/storm_on_demand.rb +132 -0
  726. data/lib/fog/compute/virtual_box.rb +46 -0
  727. data/lib/fog/compute/voxel.rb +121 -0
  728. data/lib/fog/core.rb +34 -0
  729. data/lib/fog/core/attributes.rb +192 -0
  730. data/lib/fog/core/collection.rb +130 -0
  731. data/lib/fog/core/connection.rb +35 -0
  732. data/lib/fog/core/credentials.rb +56 -0
  733. data/lib/fog/core/deprecation.rb +23 -0
  734. data/lib/fog/core/errors.rb +75 -0
  735. data/lib/fog/core/hmac.rb +48 -0
  736. data/lib/fog/core/mock.rb +88 -0
  737. data/lib/fog/core/model.rb +62 -0
  738. data/lib/fog/core/parser.rb +103 -0
  739. data/lib/fog/core/provider.rb +18 -0
  740. data/lib/fog/core/scp.rb +63 -0
  741. data/lib/fog/core/service.rb +170 -0
  742. data/lib/fog/core/ssh.rb +115 -0
  743. data/lib/fog/core/time.rb +27 -0
  744. data/lib/fog/core/wait_for.rb +17 -0
  745. data/lib/fog/dns.rb +49 -0
  746. data/lib/fog/dns/aws.rb +116 -0
  747. data/lib/fog/dns/bluebox.rb +100 -0
  748. data/lib/fog/dns/dnsimple.rb +92 -0
  749. data/lib/fog/dns/dnsmadeeasy.rb +134 -0
  750. data/lib/fog/dns/linode.rb +89 -0
  751. data/lib/fog/dns/models/aws/record.rb +67 -0
  752. data/lib/fog/dns/models/aws/records.rb +49 -0
  753. data/lib/fog/dns/models/aws/zone.rb +53 -0
  754. data/lib/fog/dns/models/aws/zones.rb +33 -0
  755. data/lib/fog/dns/models/bluebox/record.rb +55 -0
  756. data/lib/fog/dns/models/bluebox/records.rb +36 -0
  757. data/lib/fog/dns/models/bluebox/zone.rb +64 -0
  758. data/lib/fog/dns/models/bluebox/zones.rb +28 -0
  759. data/lib/fog/dns/models/dnsimple/record.rb +67 -0
  760. data/lib/fog/dns/models/dnsimple/records.rb +38 -0
  761. data/lib/fog/dns/models/dnsimple/zone.rb +50 -0
  762. data/lib/fog/dns/models/dnsimple/zones.rb +29 -0
  763. data/lib/fog/dns/models/dnsmadeeasy/record.rb +79 -0
  764. data/lib/fog/dns/models/dnsmadeeasy/records.rb +36 -0
  765. data/lib/fog/dns/models/dnsmadeeasy/zone.rb +42 -0
  766. data/lib/fog/dns/models/dnsmadeeasy/zones.rb +30 -0
  767. data/lib/fog/dns/models/linode/record.rb +72 -0
  768. data/lib/fog/dns/models/linode/records.rb +37 -0
  769. data/lib/fog/dns/models/linode/zone.rb +84 -0
  770. data/lib/fog/dns/models/linode/zones.rb +29 -0
  771. data/lib/fog/dns/models/slicehost/record.rb +69 -0
  772. data/lib/fog/dns/models/slicehost/records.rb +36 -0
  773. data/lib/fog/dns/models/slicehost/zone.rb +69 -0
  774. data/lib/fog/dns/models/slicehost/zones.rb +28 -0
  775. data/lib/fog/dns/models/zerigo/record.rb +68 -0
  776. data/lib/fog/dns/models/zerigo/records.rb +41 -0
  777. data/lib/fog/dns/models/zerigo/zone.rb +88 -0
  778. data/lib/fog/dns/models/zerigo/zones.rb +30 -0
  779. data/lib/fog/dns/parsers/aws/change_resource_record_sets.rb +26 -0
  780. data/lib/fog/dns/parsers/aws/create_hosted_zone.rb +55 -0
  781. data/lib/fog/dns/parsers/aws/delete_hosted_zone.rb +25 -0
  782. data/lib/fog/dns/parsers/aws/get_change.rb +26 -0
  783. data/lib/fog/dns/parsers/aws/get_hosted_zone.rb +43 -0
  784. data/lib/fog/dns/parsers/aws/list_hosted_zones.rb +37 -0
  785. data/lib/fog/dns/parsers/aws/list_resource_record_sets.rb +46 -0
  786. data/lib/fog/dns/parsers/bluebox/create_record.rb +26 -0
  787. data/lib/fog/dns/parsers/bluebox/create_zone.rb +26 -0
  788. data/lib/fog/dns/parsers/bluebox/get_record.rb +21 -0
  789. data/lib/fog/dns/parsers/bluebox/get_records.rb +28 -0
  790. data/lib/fog/dns/parsers/bluebox/get_zone.rb +26 -0
  791. data/lib/fog/dns/parsers/bluebox/get_zones.rb +30 -0
  792. data/lib/fog/dns/parsers/slicehost/create_record.rb +26 -0
  793. data/lib/fog/dns/parsers/slicehost/create_zone.rb +26 -0
  794. data/lib/fog/dns/parsers/slicehost/get_record.rb +26 -0
  795. data/lib/fog/dns/parsers/slicehost/get_records.rb +30 -0
  796. data/lib/fog/dns/parsers/slicehost/get_zone.rb +26 -0
  797. data/lib/fog/dns/parsers/slicehost/get_zones.rb +30 -0
  798. data/lib/fog/dns/parsers/zerigo/count_hosts.rb +24 -0
  799. data/lib/fog/dns/parsers/zerigo/count_zones.rb +24 -0
  800. data/lib/fog/dns/parsers/zerigo/create_host.rb +26 -0
  801. data/lib/fog/dns/parsers/zerigo/create_zone.rb +26 -0
  802. data/lib/fog/dns/parsers/zerigo/find_hosts.rb +30 -0
  803. data/lib/fog/dns/parsers/zerigo/get_host.rb +26 -0
  804. data/lib/fog/dns/parsers/zerigo/get_zone.rb +56 -0
  805. data/lib/fog/dns/parsers/zerigo/get_zone_stats.rb +26 -0
  806. data/lib/fog/dns/parsers/zerigo/list_hosts.rb +30 -0
  807. data/lib/fog/dns/parsers/zerigo/list_zones.rb +30 -0
  808. data/lib/fog/dns/requests/aws/change_resource_record_sets.rb +82 -0
  809. data/lib/fog/dns/requests/aws/create_hosted_zone.rb +59 -0
  810. data/lib/fog/dns/requests/aws/delete_hosted_zone.rb +39 -0
  811. data/lib/fog/dns/requests/aws/get_change.rb +38 -0
  812. data/lib/fog/dns/requests/aws/get_hosted_zone.rb +42 -0
  813. data/lib/fog/dns/requests/aws/list_hosted_zones.rb +54 -0
  814. data/lib/fog/dns/requests/aws/list_resource_record_sets.rb +60 -0
  815. data/lib/fog/dns/requests/bluebox/create_record.rb +48 -0
  816. data/lib/fog/dns/requests/bluebox/create_zone.rb +52 -0
  817. data/lib/fog/dns/requests/bluebox/delete_record.rb +31 -0
  818. data/lib/fog/dns/requests/bluebox/delete_zone.rb +31 -0
  819. data/lib/fog/dns/requests/bluebox/get_record.rb +40 -0
  820. data/lib/fog/dns/requests/bluebox/get_records.rb +41 -0
  821. data/lib/fog/dns/requests/bluebox/get_zone.rb +44 -0
  822. data/lib/fog/dns/requests/bluebox/get_zones.rb +43 -0
  823. data/lib/fog/dns/requests/bluebox/update_record.rb +34 -0
  824. data/lib/fog/dns/requests/bluebox/update_zone.rb +30 -0
  825. data/lib/fog/dns/requests/dnsimple/create_domain.rb +27 -0
  826. data/lib/fog/dns/requests/dnsimple/create_record.rb +48 -0
  827. data/lib/fog/dns/requests/dnsimple/delete_domain.rb +26 -0
  828. data/lib/fog/dns/requests/dnsimple/delete_record.rb +21 -0
  829. data/lib/fog/dns/requests/dnsimple/get_domain.rb +37 -0
  830. data/lib/fog/dns/requests/dnsimple/get_record.rb +34 -0
  831. data/lib/fog/dns/requests/dnsimple/list_domains.rb +35 -0
  832. data/lib/fog/dns/requests/dnsimple/list_records.rb +32 -0
  833. data/lib/fog/dns/requests/dnsimple/update_record.rb +42 -0
  834. data/lib/fog/dns/requests/dnsmadeeasy/create_domain.rb +29 -0
  835. data/lib/fog/dns/requests/dnsmadeeasy/create_record.rb +62 -0
  836. data/lib/fog/dns/requests/dnsmadeeasy/create_secondary.rb +36 -0
  837. data/lib/fog/dns/requests/dnsmadeeasy/delete_all_domains.rb +23 -0
  838. data/lib/fog/dns/requests/dnsmadeeasy/delete_all_secondary.rb +22 -0
  839. data/lib/fog/dns/requests/dnsmadeeasy/delete_domain.rb +25 -0
  840. data/lib/fog/dns/requests/dnsmadeeasy/delete_record.rb +26 -0
  841. data/lib/fog/dns/requests/dnsmadeeasy/delete_secondary.rb +25 -0
  842. data/lib/fog/dns/requests/dnsmadeeasy/get_domain.rb +29 -0
  843. data/lib/fog/dns/requests/dnsmadeeasy/get_record.rb +38 -0
  844. data/lib/fog/dns/requests/dnsmadeeasy/get_secondary.rb +29 -0
  845. data/lib/fog/dns/requests/dnsmadeeasy/list_domains.rb +24 -0
  846. data/lib/fog/dns/requests/dnsmadeeasy/list_records.rb +42 -0
  847. data/lib/fog/dns/requests/dnsmadeeasy/list_secondary.rb +24 -0
  848. data/lib/fog/dns/requests/dnsmadeeasy/update_record.rb +56 -0
  849. data/lib/fog/dns/requests/dnsmadeeasy/update_secondary.rb +36 -0
  850. data/lib/fog/dns/requests/linode/domain_create.rb +43 -0
  851. data/lib/fog/dns/requests/linode/domain_delete.rb +27 -0
  852. data/lib/fog/dns/requests/linode/domain_list.rb +42 -0
  853. data/lib/fog/dns/requests/linode/domain_resource_create.rb +44 -0
  854. data/lib/fog/dns/requests/linode/domain_resource_delete.rb +28 -0
  855. data/lib/fog/dns/requests/linode/domain_resource_list.rb +43 -0
  856. data/lib/fog/dns/requests/linode/domain_resource_update.rb +46 -0
  857. data/lib/fog/dns/requests/linode/domain_update.rb +40 -0
  858. data/lib/fog/dns/requests/slicehost/create_record.rb +52 -0
  859. data/lib/fog/dns/requests/slicehost/create_zone.rb +46 -0
  860. data/lib/fog/dns/requests/slicehost/delete_record.rb +23 -0
  861. data/lib/fog/dns/requests/slicehost/delete_zone.rb +23 -0
  862. data/lib/fog/dns/requests/slicehost/get_record.rb +32 -0
  863. data/lib/fog/dns/requests/slicehost/get_records.rb +33 -0
  864. data/lib/fog/dns/requests/slicehost/get_zone.rb +32 -0
  865. data/lib/fog/dns/requests/slicehost/get_zones.rb +30 -0
  866. data/lib/fog/dns/requests/zerigo/count_hosts.rb +28 -0
  867. data/lib/fog/dns/requests/zerigo/count_zones.rb +28 -0
  868. data/lib/fog/dns/requests/zerigo/create_host.rb +62 -0
  869. data/lib/fog/dns/requests/zerigo/create_zone.rb +89 -0
  870. data/lib/fog/dns/requests/zerigo/delete_host.rb +24 -0
  871. data/lib/fog/dns/requests/zerigo/delete_zone.rb +25 -0
  872. data/lib/fog/dns/requests/zerigo/find_hosts.rb +55 -0
  873. data/lib/fog/dns/requests/zerigo/get_host.rb +39 -0
  874. data/lib/fog/dns/requests/zerigo/get_zone.rb +49 -0
  875. data/lib/fog/dns/requests/zerigo/get_zone_stats.rb +36 -0
  876. data/lib/fog/dns/requests/zerigo/list_hosts.rb +40 -0
  877. data/lib/fog/dns/requests/zerigo/list_zones.rb +45 -0
  878. data/lib/fog/dns/requests/zerigo/update_host.rb +52 -0
  879. data/lib/fog/dns/requests/zerigo/update_zone.rb +70 -0
  880. data/lib/fog/dns/slicehost.rb +95 -0
  881. data/lib/fog/dns/zerigo.rb +104 -0
  882. data/lib/fog/providers.rb +26 -0
  883. data/lib/fog/providers/aws.rb +184 -0
  884. data/lib/fog/providers/bluebox.rb +12 -0
  885. data/lib/fog/providers/brightbox.rb +9 -0
  886. data/lib/fog/providers/dnsimple.rb +11 -0
  887. data/lib/fog/providers/dnsmadeeasy.rb +11 -0
  888. data/lib/fog/providers/ecloud.rb +11 -0
  889. data/lib/fog/providers/go_grid.rb +11 -0
  890. data/lib/fog/providers/google.rb +23 -0
  891. data/lib/fog/providers/linode.rb +10 -0
  892. data/lib/fog/providers/local.rb +11 -0
  893. data/lib/fog/providers/new_servers.rb +11 -0
  894. data/lib/fog/providers/ninefold.rb +11 -0
  895. data/lib/fog/providers/rackspace.rb +35 -0
  896. data/lib/fog/providers/slicehost.rb +12 -0
  897. data/lib/fog/providers/storm_on_demand.rb +12 -0
  898. data/lib/fog/providers/virtual_box.rb +11 -0
  899. data/lib/fog/providers/voxel.rb +16 -0
  900. data/lib/fog/providers/zerigo.rb +11 -0
  901. data/lib/fog/storage.rb +74 -0
  902. data/lib/fog/storage/aws.rb +356 -0
  903. data/lib/fog/storage/google.rb +251 -0
  904. data/lib/fog/storage/local.rb +68 -0
  905. data/lib/fog/storage/models/aws/directories.rb +43 -0
  906. data/lib/fog/storage/models/aws/directory.rb +100 -0
  907. data/lib/fog/storage/models/aws/file.rb +141 -0
  908. data/lib/fog/storage/models/aws/files.rb +110 -0
  909. data/lib/fog/storage/models/google/directories.rb +43 -0
  910. data/lib/fog/storage/models/google/directory.rb +78 -0
  911. data/lib/fog/storage/models/google/file.rb +141 -0
  912. data/lib/fog/storage/models/google/files.rb +96 -0
  913. data/lib/fog/storage/models/local/directories.rb +33 -0
  914. data/lib/fog/storage/models/local/directory.rb +57 -0
  915. data/lib/fog/storage/models/local/file.rb +111 -0
  916. data/lib/fog/storage/models/local/files.rb +87 -0
  917. data/lib/fog/storage/models/rackspace/directories.rb +43 -0
  918. data/lib/fog/storage/models/rackspace/directory.rb +71 -0
  919. data/lib/fog/storage/models/rackspace/file.rb +75 -0
  920. data/lib/fog/storage/models/rackspace/files.rb +94 -0
  921. data/lib/fog/storage/parsers/aws/access_control_list.rb +46 -0
  922. data/lib/fog/storage/parsers/aws/complete_multipart_upload.rb +24 -0
  923. data/lib/fog/storage/parsers/aws/copy_object.rb +22 -0
  924. data/lib/fog/storage/parsers/aws/get_bucket.rb +62 -0
  925. data/lib/fog/storage/parsers/aws/get_bucket_location.rb +20 -0
  926. data/lib/fog/storage/parsers/aws/get_bucket_logging.rb +40 -0
  927. data/lib/fog/storage/parsers/aws/get_bucket_object_versions.rb +88 -0
  928. data/lib/fog/storage/parsers/aws/get_bucket_versioning.rb +24 -0
  929. data/lib/fog/storage/parsers/aws/get_bucket_website.rb +26 -0
  930. data/lib/fog/storage/parsers/aws/get_request_payment.rb +20 -0
  931. data/lib/fog/storage/parsers/aws/get_service.rb +32 -0
  932. data/lib/fog/storage/parsers/aws/initiate_multipart_upload.rb +24 -0
  933. data/lib/fog/storage/parsers/aws/list_multipart_uploads.rb +56 -0
  934. data/lib/fog/storage/parsers/aws/list_parts.rb +40 -0
  935. data/lib/fog/storage/parsers/google/access_control_list.rb +48 -0
  936. data/lib/fog/storage/parsers/google/copy_object.rb +22 -0
  937. data/lib/fog/storage/parsers/google/get_bucket.rb +62 -0
  938. data/lib/fog/storage/parsers/google/get_bucket_logging.rb +40 -0
  939. data/lib/fog/storage/parsers/google/get_bucket_object_versions.rb +88 -0
  940. data/lib/fog/storage/parsers/google/get_bucket_versioning.rb +24 -0
  941. data/lib/fog/storage/parsers/google/get_request_payment.rb +20 -0
  942. data/lib/fog/storage/parsers/google/get_service.rb +32 -0
  943. data/lib/fog/storage/rackspace.rb +121 -0
  944. data/lib/fog/storage/requests/aws/abort_multipart_upload.rb +30 -0
  945. data/lib/fog/storage/requests/aws/complete_multipart_upload.rb +52 -0
  946. data/lib/fog/storage/requests/aws/copy_object.rb +76 -0
  947. data/lib/fog/storage/requests/aws/delete_bucket.rb +50 -0
  948. data/lib/fog/storage/requests/aws/delete_bucket_policy.rb +32 -0
  949. data/lib/fog/storage/requests/aws/delete_bucket_website.rb +32 -0
  950. data/lib/fog/storage/requests/aws/delete_object.rb +50 -0
  951. data/lib/fog/storage/requests/aws/get_bucket.rb +111 -0
  952. data/lib/fog/storage/requests/aws/get_bucket_acl.rb +66 -0
  953. data/lib/fog/storage/requests/aws/get_bucket_location.rb +52 -0
  954. data/lib/fog/storage/requests/aws/get_bucket_logging.rb +50 -0
  955. data/lib/fog/storage/requests/aws/get_bucket_object_versions.rb +75 -0
  956. data/lib/fog/storage/requests/aws/get_bucket_policy.rb +37 -0
  957. data/lib/fog/storage/requests/aws/get_bucket_versioning.rb +40 -0
  958. data/lib/fog/storage/requests/aws/get_bucket_website.rb +42 -0
  959. data/lib/fog/storage/requests/aws/get_object.rb +114 -0
  960. data/lib/fog/storage/requests/aws/get_object_acl.rb +77 -0
  961. data/lib/fog/storage/requests/aws/get_object_torrent.rb +50 -0
  962. data/lib/fog/storage/requests/aws/get_object_url.rb +57 -0
  963. data/lib/fog/storage/requests/aws/get_request_payment.rb +52 -0
  964. data/lib/fog/storage/requests/aws/get_service.rb +57 -0
  965. data/lib/fog/storage/requests/aws/head_object.rb +68 -0
  966. data/lib/fog/storage/requests/aws/initiate_multipart_upload.rb +47 -0
  967. data/lib/fog/storage/requests/aws/list_multipart_uploads.rb +60 -0
  968. data/lib/fog/storage/requests/aws/list_parts.rb +59 -0
  969. data/lib/fog/storage/requests/aws/post_object_hidden_fields.rb +42 -0
  970. data/lib/fog/storage/requests/aws/put_bucket.rb +77 -0
  971. data/lib/fog/storage/requests/aws/put_bucket_acl.rb +76 -0
  972. data/lib/fog/storage/requests/aws/put_bucket_logging.rb +83 -0
  973. data/lib/fog/storage/requests/aws/put_bucket_policy.rb +30 -0
  974. data/lib/fog/storage/requests/aws/put_bucket_versioning.rb +36 -0
  975. data/lib/fog/storage/requests/aws/put_bucket_website.rb +49 -0
  976. data/lib/fog/storage/requests/aws/put_object.rb +100 -0
  977. data/lib/fog/storage/requests/aws/put_object_acl.rb +85 -0
  978. data/lib/fog/storage/requests/aws/put_object_url.rb +57 -0
  979. data/lib/fog/storage/requests/aws/put_request_payment.rb +51 -0
  980. data/lib/fog/storage/requests/aws/sync_clock.rb +28 -0
  981. data/lib/fog/storage/requests/aws/upload_part.rb +43 -0
  982. data/lib/fog/storage/requests/google/copy_object.rb +72 -0
  983. data/lib/fog/storage/requests/google/delete_bucket.rb +46 -0
  984. data/lib/fog/storage/requests/google/delete_object.rb +50 -0
  985. data/lib/fog/storage/requests/google/get_bucket.rb +111 -0
  986. data/lib/fog/storage/requests/google/get_bucket_acl.rb +63 -0
  987. data/lib/fog/storage/requests/google/get_object.rb +104 -0
  988. data/lib/fog/storage/requests/google/get_object_acl.rb +74 -0
  989. data/lib/fog/storage/requests/google/get_object_torrent.rb +47 -0
  990. data/lib/fog/storage/requests/google/get_object_url.rb +54 -0
  991. data/lib/fog/storage/requests/google/get_service.rb +53 -0
  992. data/lib/fog/storage/requests/google/head_object.rb +64 -0
  993. data/lib/fog/storage/requests/google/put_bucket.rb +75 -0
  994. data/lib/fog/storage/requests/google/put_bucket_acl.rb +73 -0
  995. data/lib/fog/storage/requests/google/put_object.rb +94 -0
  996. data/lib/fog/storage/requests/google/put_object_url.rb +54 -0
  997. data/lib/fog/storage/requests/rackspace/delete_container.rb +22 -0
  998. data/lib/fog/storage/requests/rackspace/delete_object.rb +23 -0
  999. data/lib/fog/storage/requests/rackspace/get_container.rb +44 -0
  1000. data/lib/fog/storage/requests/rackspace/get_containers.rb +33 -0
  1001. data/lib/fog/storage/requests/rackspace/get_object.rb +24 -0
  1002. data/lib/fog/storage/requests/rackspace/head_container.rb +28 -0
  1003. data/lib/fog/storage/requests/rackspace/head_containers.rb +25 -0
  1004. data/lib/fog/storage/requests/rackspace/head_object.rb +23 -0
  1005. data/lib/fog/storage/requests/rackspace/put_container.rb +22 -0
  1006. data/lib/fog/storage/requests/rackspace/put_object.rb +29 -0
  1007. data/lib/fog/storage/requests/rackspace/put_object_manifest.rb +25 -0
  1008. data/lib/fog/terremark.rb +11 -0
  1009. data/lib/fog/terremark/models/shared/address.rb +29 -0
  1010. data/lib/fog/terremark/models/shared/addresses.rb +49 -0
  1011. data/lib/fog/terremark/models/shared/network.rb +35 -0
  1012. data/lib/fog/terremark/models/shared/networks.rb +52 -0
  1013. data/lib/fog/terremark/models/shared/server.rb +110 -0
  1014. data/lib/fog/terremark/models/shared/servers.rb +55 -0
  1015. data/lib/fog/terremark/models/shared/task.rb +50 -0
  1016. data/lib/fog/terremark/models/shared/tasks.rb +58 -0
  1017. data/lib/fog/terremark/models/shared/vdc.rb +39 -0
  1018. data/lib/fog/terremark/models/shared/vdcs.rb +52 -0
  1019. data/lib/fog/terremark/parser.rb +19 -0
  1020. data/lib/fog/terremark/parsers/shared/get_catalog.rb +46 -0
  1021. data/lib/fog/terremark/parsers/shared/get_catalog_item.rb +46 -0
  1022. data/lib/fog/terremark/parsers/shared/get_internet_services.rb +60 -0
  1023. data/lib/fog/terremark/parsers/shared/get_network_ips.rb +29 -0
  1024. data/lib/fog/terremark/parsers/shared/get_node_services.rb +36 -0
  1025. data/lib/fog/terremark/parsers/shared/get_organization.rb +52 -0
  1026. data/lib/fog/terremark/parsers/shared/get_organizations.rb +32 -0
  1027. data/lib/fog/terremark/parsers/shared/get_public_ips.rb +30 -0
  1028. data/lib/fog/terremark/parsers/shared/get_tasks_list.rb +52 -0
  1029. data/lib/fog/terremark/parsers/shared/get_vapp_template.rb +46 -0
  1030. data/lib/fog/terremark/parsers/shared/get_vdc.rb +123 -0
  1031. data/lib/fog/terremark/parsers/shared/instantiate_vapp_template.rb +41 -0
  1032. data/lib/fog/terremark/parsers/shared/internet_service.rb +65 -0
  1033. data/lib/fog/terremark/parsers/shared/network.rb +51 -0
  1034. data/lib/fog/terremark/parsers/shared/node_service.rb +32 -0
  1035. data/lib/fog/terremark/parsers/shared/public_ip.rb +26 -0
  1036. data/lib/fog/terremark/parsers/shared/task.rb +40 -0
  1037. data/lib/fog/terremark/parsers/shared/vapp.rb +77 -0
  1038. data/lib/fog/terremark/requests/shared/add_internet_service.rb +55 -0
  1039. data/lib/fog/terremark/requests/shared/add_node_service.rb +55 -0
  1040. data/lib/fog/terremark/requests/shared/create_internet_service.rb +55 -0
  1041. data/lib/fog/terremark/requests/shared/delete_internet_service.rb +22 -0
  1042. data/lib/fog/terremark/requests/shared/delete_node_service.rb +22 -0
  1043. data/lib/fog/terremark/requests/shared/delete_public_ip.rb +22 -0
  1044. data/lib/fog/terremark/requests/shared/delete_vapp.rb +22 -0
  1045. data/lib/fog/terremark/requests/shared/deploy_vapp.rb +35 -0
  1046. data/lib/fog/terremark/requests/shared/get_catalog.rb +32 -0
  1047. data/lib/fog/terremark/requests/shared/get_catalog_item.rb +35 -0
  1048. data/lib/fog/terremark/requests/shared/get_internet_services.rb +35 -0
  1049. data/lib/fog/terremark/requests/shared/get_network.rb +73 -0
  1050. data/lib/fog/terremark/requests/shared/get_network_ips.rb +32 -0
  1051. data/lib/fog/terremark/requests/shared/get_node_services.rb +30 -0
  1052. data/lib/fog/terremark/requests/shared/get_organization.rb +86 -0
  1053. data/lib/fog/terremark/requests/shared/get_organizations.rb +49 -0
  1054. data/lib/fog/terremark/requests/shared/get_public_ip.rb +33 -0
  1055. data/lib/fog/terremark/requests/shared/get_public_ips.rb +72 -0
  1056. data/lib/fog/terremark/requests/shared/get_task.rb +39 -0
  1057. data/lib/fog/terremark/requests/shared/get_tasks_list.rb +33 -0
  1058. data/lib/fog/terremark/requests/shared/get_vapp.rb +42 -0
  1059. data/lib/fog/terremark/requests/shared/get_vapp_template.rb +35 -0
  1060. data/lib/fog/terremark/requests/shared/get_vdc.rb +125 -0
  1061. data/lib/fog/terremark/requests/shared/instantiate_vapp_template.rb +71 -0
  1062. data/lib/fog/terremark/requests/shared/power_off.rb +35 -0
  1063. data/lib/fog/terremark/requests/shared/power_on.rb +35 -0
  1064. data/lib/fog/terremark/requests/shared/power_reset.rb +35 -0
  1065. data/lib/fog/terremark/requests/shared/power_shutdown.rb +24 -0
  1066. data/lib/fog/terremark/shared.rb +293 -0
  1067. data/lib/fog/terremark/vcloud.rb +127 -0
  1068. data/spec/ecloud/bin_spec.rb +28 -0
  1069. data/spec/ecloud/models/backup_internet_service_spec.rb +48 -0
  1070. data/spec/ecloud/models/backup_internet_services_spec.rb +28 -0
  1071. data/spec/ecloud/models/internet_service_spec.rb +104 -0
  1072. data/spec/ecloud/models/internet_services_spec.rb +29 -0
  1073. data/spec/ecloud/models/ip_spec.rb +33 -0
  1074. data/spec/ecloud/models/ips_spec.rb +28 -0
  1075. data/spec/ecloud/models/network_spec.rb +71 -0
  1076. data/spec/ecloud/models/networks_spec.rb +27 -0
  1077. data/spec/ecloud/models/node_spec.rb +38 -0
  1078. data/spec/ecloud/models/nodes_spec.rb +28 -0
  1079. data/spec/ecloud/models/public_ip_spec.rb +36 -0
  1080. data/spec/ecloud/models/public_ips_spec.rb +27 -0
  1081. data/spec/ecloud/models/server_spec.rb +62 -0
  1082. data/spec/ecloud/models/vdc_spec.rb +63 -0
  1083. data/spec/ecloud/models/vdcs_spec.rb +28 -0
  1084. data/spec/ecloud/requests/add_backup_internet_service_spec.rb +60 -0
  1085. data/spec/ecloud/requests/add_internet_service_spec.rb +65 -0
  1086. data/spec/ecloud/requests/add_node_spec.rb +56 -0
  1087. data/spec/ecloud/requests/configure_internet_service_spec.rb +61 -0
  1088. data/spec/ecloud/requests/configure_network_ip_spec.rb +55 -0
  1089. data/spec/ecloud/requests/configure_node_spec.rb +52 -0
  1090. data/spec/ecloud/requests/configure_vapp_spec.rb +71 -0
  1091. data/spec/ecloud/requests/delete_internet_service_spec.rb +34 -0
  1092. data/spec/ecloud/requests/delete_node_spec.rb +30 -0
  1093. data/spec/ecloud/requests/delete_vapp_spec.rb +92 -0
  1094. data/spec/ecloud/requests/get_catalog_item_spec.rb +62 -0
  1095. data/spec/ecloud/requests/get_catalog_spec.rb +44 -0
  1096. data/spec/ecloud/requests/get_customization_options_spec.rb +39 -0
  1097. data/spec/ecloud/requests/get_internet_services_spec.rb +150 -0
  1098. data/spec/ecloud/requests/get_network_ip_spec.rb +40 -0
  1099. data/spec/ecloud/requests/get_network_ips_spec.rb +58 -0
  1100. data/spec/ecloud/requests/get_network_spec.rb +49 -0
  1101. data/spec/ecloud/requests/get_node_spec.rb +41 -0
  1102. data/spec/ecloud/requests/get_nodes_spec.rb +58 -0
  1103. data/spec/ecloud/requests/get_organization_spec.rb +52 -0
  1104. data/spec/ecloud/requests/get_public_ip_spec.rb +38 -0
  1105. data/spec/ecloud/requests/get_public_ips_spec.rb +52 -0
  1106. data/spec/ecloud/requests/get_vapp_spec.rb +125 -0
  1107. data/spec/ecloud/requests/get_vdc_spec.rb +112 -0
  1108. data/spec/ecloud/requests/get_versions_spec.rb +57 -0
  1109. data/spec/ecloud/requests/instantiate_vapp_template_spec.rb +95 -0
  1110. data/spec/ecloud/requests/login_spec.rb +10 -0
  1111. data/spec/ecloud/requests/power_off_spec.rb +34 -0
  1112. data/spec/ecloud/requests/power_on_spec.rb +34 -0
  1113. data/spec/ecloud/spec_helper.rb +387 -0
  1114. data/spec/ecloud/vcloud_spec.rb +18 -0
  1115. data/spec/spec_helper.rb +8 -0
  1116. data/tests/aws/models/rds/helper.rb +5 -0
  1117. data/tests/aws/models/rds/parameter_group_tests.rb +24 -0
  1118. data/tests/aws/models/rds/parameter_groups_tests.rb +8 -0
  1119. data/tests/aws/models/rds/security_group_tests.rb +50 -0
  1120. data/tests/aws/models/rds/security_groups_tests.rb +6 -0
  1121. data/tests/aws/models/rds/server_tests.rb +104 -0
  1122. data/tests/aws/models/rds/servers_tests.rb +8 -0
  1123. data/tests/aws/models/rds/snapshot_tests.rb +15 -0
  1124. data/tests/aws/models/rds/snapshots_tests.rb +15 -0
  1125. data/tests/aws/requests/cloud_formation/stack_tests.rb +143 -0
  1126. data/tests/aws/requests/elb/helper.rb +47 -0
  1127. data/tests/aws/requests/elb/load_balancer_tests.rb +82 -0
  1128. data/tests/aws/requests/elb/model_tests.rb +187 -0
  1129. data/tests/aws/requests/iam/access_key_tests.rb +60 -0
  1130. data/tests/aws/requests/iam/group_policy_tests.rb +42 -0
  1131. data/tests/aws/requests/iam/group_tests.rb +47 -0
  1132. data/tests/aws/requests/iam/helper.rb +56 -0
  1133. data/tests/aws/requests/iam/login_profile_tests.rb +64 -0
  1134. data/tests/aws/requests/iam/server_certificate_tests.rb +36 -0
  1135. data/tests/aws/requests/iam/user_policy_tests.rb +42 -0
  1136. data/tests/aws/requests/iam/user_tests.rb +65 -0
  1137. data/tests/aws/requests/rds/helper.rb +169 -0
  1138. data/tests/aws/requests/rds/instance_tests.rb +128 -0
  1139. data/tests/aws/requests/rds/parameter_group_tests.rb +68 -0
  1140. data/tests/aws/requests/rds/parameter_request_tests.rb +35 -0
  1141. data/tests/aws/requests/ses/helper.rb +15 -0
  1142. data/tests/aws/requests/ses/verified_email_address_tests.rb +27 -0
  1143. data/tests/aws/requests/simpledb/attributes_tests.rb +91 -0
  1144. data/tests/aws/requests/simpledb/domain_tests.rb +51 -0
  1145. data/tests/aws/requests/simpledb/helper.rb +16 -0
  1146. data/tests/aws/signed_params_tests.rb +3 -0
  1147. data/tests/compute/helper.rb +48 -0
  1148. data/tests/compute/models/aws/address_tests.rb +16 -0
  1149. data/tests/compute/models/aws/addresses_tests.rb +5 -0
  1150. data/tests/compute/models/aws/key_pair_tests.rb +27 -0
  1151. data/tests/compute/models/aws/key_pairs_tests.rb +5 -0
  1152. data/tests/compute/models/aws/security_group_tests.rb +17 -0
  1153. data/tests/compute/models/aws/security_groups.rb +5 -0
  1154. data/tests/compute/models/aws/server_tests.rb +47 -0
  1155. data/tests/compute/models/aws/snapshot_tests.rb +10 -0
  1156. data/tests/compute/models/aws/snapshots_tests.rb +10 -0
  1157. data/tests/compute/models/aws/volume_tests.rb +26 -0
  1158. data/tests/compute/models/aws/volumes_tests.rb +5 -0
  1159. data/tests/compute/models/flavors_tests.rb +11 -0
  1160. data/tests/compute/models/server_tests.rb +20 -0
  1161. data/tests/compute/models/servers_tests.rb +9 -0
  1162. data/tests/compute/parsers/aws/monitor_unmonitor_instances_tests.rb +49 -0
  1163. data/tests/compute/requests/aws/address_tests.rb +76 -0
  1164. data/tests/compute/requests/aws/availability_zone_tests.rb +25 -0
  1165. data/tests/compute/requests/aws/helper.rb +20 -0
  1166. data/tests/compute/requests/aws/image_tests.rb +37 -0
  1167. data/tests/compute/requests/aws/instance_tests.rb +172 -0
  1168. data/tests/compute/requests/aws/key_pair_tests.rb +67 -0
  1169. data/tests/compute/requests/aws/placement_group_tests.rb +54 -0
  1170. data/tests/compute/requests/aws/region_tests.rb +23 -0
  1171. data/tests/compute/requests/aws/security_group_tests.rb +141 -0
  1172. data/tests/compute/requests/aws/snapshot_tests.rb +57 -0
  1173. data/tests/compute/requests/aws/tag_tests.rb +49 -0
  1174. data/tests/compute/requests/aws/volume_tests.rb +118 -0
  1175. data/tests/compute/requests/bluebox/block_tests.rb +81 -0
  1176. data/tests/compute/requests/bluebox/helper.rb +17 -0
  1177. data/tests/compute/requests/bluebox/product_tests.rb +28 -0
  1178. data/tests/compute/requests/bluebox/template_tests.rb +35 -0
  1179. data/tests/compute/requests/brightbox/account_tests.rb +40 -0
  1180. data/tests/compute/requests/brightbox/api_client_tests.rb +49 -0
  1181. data/tests/compute/requests/brightbox/cloud_ip_tests.rb +71 -0
  1182. data/tests/compute/requests/brightbox/helper.rb +430 -0
  1183. data/tests/compute/requests/brightbox/image_tests.rb +57 -0
  1184. data/tests/compute/requests/brightbox/interface_tests.rb +30 -0
  1185. data/tests/compute/requests/brightbox/load_balancer_tests.rb +74 -0
  1186. data/tests/compute/requests/brightbox/server_tests.rb +75 -0
  1187. data/tests/compute/requests/brightbox/server_type_tests.rb +33 -0
  1188. data/tests/compute/requests/brightbox/user_tests.rb +41 -0
  1189. data/tests/compute/requests/brightbox/zone_tests.rb +33 -0
  1190. data/tests/compute/requests/go_grid/image_tests.rb +0 -0
  1191. data/tests/compute/requests/linode/datacenter_tests.rb +19 -0
  1192. data/tests/compute/requests/linode/distribution_tests.rb +32 -0
  1193. data/tests/compute/requests/linode/helper.rb +16 -0
  1194. data/tests/compute/requests/linode/kernel_tests.rb +27 -0
  1195. data/tests/compute/requests/linode/linode_tests.rb +143 -0
  1196. data/tests/compute/requests/linode/linodeplans_tests.rb +39 -0
  1197. data/tests/compute/requests/linode/stackscripts_tests.rb +36 -0
  1198. data/tests/compute/requests/ninefold/address_tests.rb +42 -0
  1199. data/tests/compute/requests/ninefold/async_job_tests.rb +33 -0
  1200. data/tests/compute/requests/ninefold/helper.rb +320 -0
  1201. data/tests/compute/requests/ninefold/list_tests.rb +56 -0
  1202. data/tests/compute/requests/ninefold/nat_tests.rb +92 -0
  1203. data/tests/compute/requests/ninefold/network_tests.rb +21 -0
  1204. data/tests/compute/requests/ninefold/template_tests.rb +21 -0
  1205. data/tests/compute/requests/ninefold/virtual_machine_tests.rb +69 -0
  1206. data/tests/compute/requests/rackspace/address_tests.rb +40 -0
  1207. data/tests/compute/requests/rackspace/flavor_tests.rb +38 -0
  1208. data/tests/compute/requests/rackspace/helper.rb +16 -0
  1209. data/tests/compute/requests/rackspace/image_tests.rb +68 -0
  1210. data/tests/compute/requests/rackspace/resize_tests.rb +33 -0
  1211. data/tests/compute/requests/rackspace/server_tests.rb +92 -0
  1212. data/tests/compute/requests/slicehost/backup_tests.rb +18 -0
  1213. data/tests/compute/requests/slicehost/flavor_tests.rb +33 -0
  1214. data/tests/compute/requests/slicehost/image_tests.rb +31 -0
  1215. data/tests/compute/requests/slicehost/slice_tests.rb +75 -0
  1216. data/tests/compute/requests/storm_on_demand/server_tests.rb +64 -0
  1217. data/tests/compute/requests/voxel/image_tests.rb +52 -0
  1218. data/tests/compute/requests/voxel/server_tests.rb +123 -0
  1219. data/tests/core/attribute_tests.rb +45 -0
  1220. data/tests/core/credential_tests.rb +41 -0
  1221. data/tests/core/parser_tests.rb +67 -0
  1222. data/tests/dns/helper.rb +31 -0
  1223. data/tests/dns/models/record_tests.rb +27 -0
  1224. data/tests/dns/models/records_tests.rb +28 -0
  1225. data/tests/dns/models/zone_tests.rb +16 -0
  1226. data/tests/dns/models/zones_tests.rb +16 -0
  1227. data/tests/dns/requests/aws/dns_tests.rb +276 -0
  1228. data/tests/dns/requests/bluebox/dns_tests.rb +271 -0
  1229. data/tests/dns/requests/dnsimple/dns_tests.rb +130 -0
  1230. data/tests/dns/requests/dnsmadeeasy/dns_tests.rb +150 -0
  1231. data/tests/dns/requests/linode/dns_tests.rb +262 -0
  1232. data/tests/dns/requests/slicehost/dns_tests.rb +279 -0
  1233. data/tests/dns/requests/zerigo/dns_tests.rb +373 -0
  1234. data/tests/helper.rb +16 -0
  1235. data/tests/helpers/collection_helper.rb +51 -0
  1236. data/tests/helpers/compute/flavors_helper.rb +34 -0
  1237. data/tests/helpers/compute/server_helper.rb +25 -0
  1238. data/tests/helpers/compute/servers_helper.rb +11 -0
  1239. data/tests/helpers/formats_helper.rb +74 -0
  1240. data/tests/helpers/formats_helper_tests.rb +43 -0
  1241. data/tests/helpers/mock_helper.rb +47 -0
  1242. data/tests/helpers/model_helper.rb +38 -0
  1243. data/tests/helpers/responds_to_helper.rb +13 -0
  1244. data/tests/helpers/succeeds_helper.rb +12 -0
  1245. data/tests/lorem.txt +1 -0
  1246. data/tests/storage/helper.rb +16 -0
  1247. data/tests/storage/models/directories_tests.rb +17 -0
  1248. data/tests/storage/models/directory_test.rb +29 -0
  1249. data/tests/storage/models/file_tests.rb +41 -0
  1250. data/tests/storage/models/files_tests.rb +26 -0
  1251. data/tests/storage/requests/aws/bucket_tests.rb +114 -0
  1252. data/tests/storage/requests/aws/multipart_upload_tests.rb +132 -0
  1253. data/tests/storage/requests/aws/object_tests.rb +81 -0
  1254. data/tests/storage/requests/google/bucket_tests.rb +78 -0
  1255. data/tests/storage/requests/google/object_tests.rb +81 -0
  1256. data/tests/storage/requests/rackspace/container_tests.rb +64 -0
  1257. data/tests/storage/requests/rackspace/large_object_tests.rb +43 -0
  1258. data/tests/storage/requests/rackspace/object_tests.rb +78 -0
  1259. metadata +1663 -0
@@ -0,0 +1,94 @@
1
+ module Fog
2
+ module Compute
3
+ class Bluebox < Fog::Service
4
+
5
+ requires :bluebox_api_key, :bluebox_customer_id
6
+ recognizes :bluebox_host, :bluebox_port, :bluebox_scheme, :persistent
7
+
8
+ model_path 'fog/compute/models/bluebox'
9
+ model :flavor
10
+ collection :flavors
11
+ model :image
12
+ collection :images
13
+ model :server
14
+ collection :servers
15
+
16
+ request_path 'fog/compute/requests/bluebox'
17
+ request :create_block
18
+ request :destroy_block
19
+ request :get_block
20
+ request :get_blocks
21
+ request :get_product
22
+ request :get_products
23
+ request :get_template
24
+ request :get_templates
25
+ request :reboot_block
26
+
27
+ class Mock
28
+
29
+ def self.data
30
+ @data ||= Hash.new do |hash, key|
31
+ hash[key] = {}
32
+ end
33
+ end
34
+
35
+ def self.reset
36
+ @data = nil
37
+ end
38
+
39
+ def initialize(options={})
40
+ @bluebox_api_key = options[:bluebox_api_key]
41
+ end
42
+
43
+ def data
44
+ self.class.data[@bluebox_api_key]
45
+ end
46
+
47
+ def reset_data
48
+ self.class.data.delete(@bluebox_api_key)
49
+ end
50
+
51
+ end
52
+
53
+ class Real
54
+
55
+ def initialize(options={})
56
+ require 'json'
57
+ @bluebox_api_key = options[:bluebox_api_key]
58
+ @bluebox_customer_id = options[:bluebox_customer_id]
59
+ @host = options[:bluebox_host] || "boxpanel.bluebox.net"
60
+ @port = options[:bluebox_port] || 443
61
+ @scheme = options[:bluebox_scheme] || 'https'
62
+ @connection = Fog::Connection.new("#{@scheme}://#{@host}:#{@port}", options[:persistent])
63
+ end
64
+
65
+ def reload
66
+ @connection.reset
67
+ end
68
+
69
+ def request(params)
70
+ params[:headers] ||= {}
71
+ params[:headers].merge!({
72
+ 'Authorization' => "Basic #{Base64.encode64([@bluebox_customer_id, @bluebox_api_key].join(':')).delete("\r\n")}"
73
+ })
74
+
75
+ begin
76
+ response = @connection.request(params.merge!({:host => @host}))
77
+ rescue Excon::Errors::HTTPStatusError => error
78
+ raise case error
79
+ when Excon::Errors::NotFound
80
+ Fog::Compute::Bluebox::NotFound.slurp(error)
81
+ else
82
+ error
83
+ end
84
+ end
85
+ unless response.body.empty?
86
+ response.body = JSON.parse(response.body)
87
+ end
88
+ response
89
+ end
90
+
91
+ end
92
+ end
93
+ end
94
+ end
@@ -0,0 +1,147 @@
1
+ module Fog
2
+ module Compute
3
+ class Brightbox < Fog::Service
4
+
5
+ API_URL = "https://api.gb1.brightbox.com/"
6
+
7
+ requires :brightbox_client_id, :brightbox_secret
8
+ recognizes :brightbox_auth_url, :brightbox_api_url
9
+
10
+ model_path 'fog/compute/models/brightbox'
11
+ model :account # Singular resource, no collection
12
+ collection :servers
13
+ model :server
14
+ collection :flavors
15
+ model :flavor
16
+ collection :images
17
+ model :image
18
+ collection :load_balancers
19
+ model :load_balancer
20
+ collection :zones
21
+ model :zone
22
+ collection :cloud_ips
23
+ model :cloud_ip
24
+ collection :users
25
+ model :user
26
+
27
+ request_path 'fog/compute/requests/brightbox'
28
+ request :activate_console_server
29
+ request :add_listeners_load_balancer
30
+ request :add_nodes_load_balancer
31
+ request :create_api_client
32
+ request :create_cloud_ip
33
+ request :create_image
34
+ request :create_load_balancer
35
+ request :create_server
36
+ request :destroy_api_client
37
+ request :destroy_cloud_ip
38
+ request :destroy_image
39
+ request :destroy_load_balancer
40
+ request :destroy_server
41
+ request :get_account
42
+ request :get_api_client
43
+ request :get_cloud_ip
44
+ request :get_image
45
+ request :get_interface
46
+ request :get_load_balancer
47
+ request :get_server
48
+ request :get_server_type
49
+ request :get_user
50
+ request :get_zone
51
+ request :list_api_clients
52
+ request :list_cloud_ips
53
+ request :list_images
54
+ request :list_load_balancers
55
+ request :list_server_types
56
+ request :list_servers
57
+ request :list_users
58
+ request :list_zones
59
+ request :map_cloud_ip
60
+ request :remove_listeners_load_balancer
61
+ request :remove_nodes_load_balancer
62
+ request :reset_ftp_password_account
63
+ request :resize_server
64
+ request :shutdown_server
65
+ request :snapshot_server
66
+ request :start_server
67
+ request :stop_server
68
+ request :unmap_cloud_ip
69
+ request :update_account
70
+ request :update_api_client
71
+ request :update_image
72
+ request :update_load_balancer
73
+ request :update_server
74
+ request :update_user
75
+
76
+ class Mock
77
+
78
+ def initialize(options)
79
+ @brightbox_client_id = options[:brightbox_client_id] || Fog.credentials[:brightbox_client_id]
80
+ @brightbox_secret = options[:brightbox_secret] || Fog.credentials[:brightbox_secret]
81
+ end
82
+
83
+ def request(options)
84
+ raise "Not implemented"
85
+ end
86
+ end
87
+
88
+ class Real
89
+
90
+ def initialize(options)
91
+ require "json"
92
+ # Currently authentication and api endpoints are the same but may change
93
+ @auth_url = options[:brightbox_auth_url] || Fog.credentials[:brightbox_auth_url] || API_URL
94
+ @api_url = options[:brightbox_api_url] || Fog.credentials[:brightbox_api_url] || API_URL
95
+ @brightbox_client_id = options[:brightbox_client_id] || Fog.credentials[:brightbox_client_id]
96
+ @brightbox_secret = options[:brightbox_secret] || Fog.credentials[:brightbox_secret]
97
+ @connection = Fog::Connection.new(@api_url)
98
+ end
99
+
100
+ def request(params)
101
+ begin
102
+ get_oauth_token if @oauth_token.nil?
103
+ response = authenticated_request(params)
104
+ rescue Excon::Errors::Unauthorized => e
105
+ get_oauth_token
106
+ response = authenticated_request(params)
107
+ end
108
+ unless response.body.empty?
109
+ response = JSON.parse(response.body)
110
+ end
111
+ end
112
+
113
+ def account
114
+ Fog::Compute::Brightbox::Account.new(get_account)
115
+ end
116
+
117
+ private
118
+ def get_oauth_token(options = {})
119
+ auth_url = options[:brightbox_auth_url] || @auth_url
120
+
121
+ connection = Fog::Connection.new(auth_url)
122
+ @authentication_body = {'client_id' => @brightbox_client_id, 'grant_type' => 'none'}.to_json
123
+
124
+ response = connection.request({
125
+ :path => "/token",
126
+ :expects => 200,
127
+ :headers => {
128
+ 'Authorization' => "Basic " + Base64.encode64("#{@brightbox_client_id}:#{@brightbox_secret}").chomp,
129
+ 'Content-Type' => 'application/json'
130
+ },
131
+ :method => 'POST',
132
+ :body => @authentication_body
133
+ })
134
+ @oauth_token = JSON.parse(response.body)["access_token"]
135
+ return @oauth_token
136
+ end
137
+
138
+ def authenticated_request(options)
139
+ headers = options[:headers] || {}
140
+ headers.merge!("Authorization" => "OAuth #{@oauth_token}")
141
+ options[:headers] = headers
142
+ @connection.request(options)
143
+ end
144
+ end
145
+ end
146
+ end
147
+ end
@@ -0,0 +1,1310 @@
1
+ require 'fog/core'
2
+ require 'ipaddr'
3
+
4
+ class IPAddr
5
+ def mask
6
+ _to_string(@mask_addr)
7
+ end
8
+ end
9
+
10
+ module Fog
11
+ module Ecloud
12
+ class Collection < Fog::Collection
13
+
14
+ def load(objects)
15
+ objects = [ objects ] if objects.is_a?(Hash)
16
+ super
17
+ end
18
+
19
+ def check_href!(opts = {})
20
+ unless href
21
+ if opts.is_a?(String)
22
+ t = Hash.new
23
+ t[:parent] = opts
24
+ opts = t
25
+ end
26
+ msg = ":href missing, call with a :href pointing to #{if opts[:message]
27
+ opts[:message]
28
+ elsif opts[:parent]
29
+ "the #{opts[:parent]} whos #{self.class.to_s.split('::').last.downcase} you want to enumerate"
30
+ else
31
+ "the resource"
32
+ end}"
33
+ raise Fog::Errors::Error.new(msg)
34
+ end
35
+ end
36
+
37
+ end
38
+ end
39
+ end
40
+
41
+ module Fog
42
+ module Ecloud
43
+ module MockDataClasses
44
+ class Base < Hash
45
+ def self.base_url=(url)
46
+ @base_url = url
47
+ end
48
+
49
+ self.base_url = "http://vcloud.example.com"
50
+
51
+ def self.base_url
52
+ @base_url
53
+ end
54
+
55
+ def first
56
+ raise "Don't do this"
57
+ end
58
+
59
+ def last
60
+ raise "Don't do this"
61
+ end
62
+
63
+ def initialize(data = {}, parent = nil)
64
+ @parent = parent
65
+
66
+ replace(data)
67
+ end
68
+
69
+ def _parent
70
+ @parent
71
+ end
72
+
73
+ def base_url
74
+ Base.base_url
75
+ end
76
+
77
+ def href
78
+ [base_url, self.class.name.split("::").last, object_id].join("/")
79
+ end
80
+
81
+ def inspect
82
+ "<#{self.class.name} #{object_id} data=#{super}>"
83
+ end
84
+ end
85
+
86
+ class MockData < Base
87
+ def versions
88
+ @versions ||= []
89
+ end
90
+
91
+ def organizations
92
+ @organizations ||= []
93
+ end
94
+
95
+ def organization_from_href(href)
96
+ find_href_in(href, organizations)
97
+ end
98
+
99
+ def all_vdcs
100
+ organizations.map(&:vdcs).flatten
101
+ end
102
+
103
+ def vdc_from_href(href)
104
+ find_href_in(href, all_vdcs)
105
+ end
106
+
107
+ def all_catalogs
108
+ all_vdcs.map(&:catalog).flatten
109
+ end
110
+
111
+ def catalog_from_href(href)
112
+ find_href_in(href, all_catalogs)
113
+ end
114
+
115
+ def all_catalog_items
116
+ all_catalogs.map(&:items).flatten
117
+ end
118
+
119
+ def catalog_item_from_href(href)
120
+ find_href_in(href, all_catalog_items)
121
+ end
122
+
123
+ def all_virtual_machines
124
+ all_vdcs.map(&:virtual_machines).flatten
125
+ end
126
+
127
+ def virtual_machine_from_href(href)
128
+ find_href_prefixed_in(href, all_virtual_machines)
129
+ end
130
+
131
+
132
+ def all_networks
133
+ all_vdcs.map(&:networks).flatten
134
+ end
135
+
136
+ def network_from_href(href)
137
+ find_href_in(href, all_networks)
138
+ end
139
+
140
+ def all_network_extensions
141
+ all_networks.map(&:extensions).flatten
142
+ end
143
+
144
+ def network_extension_from_href(href)
145
+ find_href_in(href, all_network_extensions)
146
+ end
147
+
148
+ def all_vdc_internet_service_collections
149
+ all_vdcs.map(&:internet_service_collection).flatten
150
+ end
151
+
152
+ def vdc_internet_service_collection_from_href(href)
153
+ find_href_in(href, all_vdc_internet_service_collections)
154
+ end
155
+
156
+ def all_backup_internet_services
157
+ all_vdc_internet_service_collections.map(&:backup_internet_services).flatten
158
+ end
159
+
160
+ def backup_internet_service_from_href(href)
161
+ find_href_in(href, all_backup_internet_services)
162
+ end
163
+
164
+ def all_public_ip_collections
165
+ all_vdcs.map {|v| v.public_ip_collection }.flatten
166
+ end
167
+
168
+ def public_ip_collection_from_href(href)
169
+ find_href_in(href, all_public_ip_collections)
170
+ end
171
+
172
+ def all_public_ips
173
+ all_public_ip_collections.map(&:items).flatten
174
+ end
175
+
176
+ def public_ip_from_href(href)
177
+ find_href_in(href, all_public_ips)
178
+ end
179
+
180
+ def all_public_ip_internet_service_collections
181
+ all_public_ips.map(&:internet_service_collection).flatten
182
+ end
183
+
184
+ def public_ip_internet_service_collection_from_href(href)
185
+ find_href_in(href, all_public_ip_internet_service_collections)
186
+ end
187
+
188
+ def all_public_ip_internet_services
189
+ all_public_ip_internet_service_collections.map(&:items).flatten
190
+ end
191
+
192
+ def public_ip_internet_service_from_href(href)
193
+ find_href_in(href, all_public_ip_internet_services)
194
+ end
195
+
196
+ def all_public_ip_internet_service_node_collections
197
+ all_public_ip_internet_services.map(&:node_collection).flatten
198
+ end
199
+
200
+ def public_ip_internet_service_node_collection_from_href(href)
201
+ find_href_in(href, all_public_ip_internet_service_node_collections)
202
+ end
203
+
204
+ def all_public_ip_internet_service_nodes
205
+ all_public_ip_internet_service_node_collections.map(&:items).flatten
206
+ end
207
+
208
+ def public_ip_internet_service_node_from_href(href)
209
+ find_href_in(href, all_public_ip_internet_service_nodes)
210
+ end
211
+
212
+ def all_network_ip_collections
213
+ all_networks.map(&:ip_collection)
214
+ end
215
+
216
+ def network_ip_collection_from_href(href)
217
+ find_href_in(href, all_network_ip_collections)
218
+ end
219
+
220
+ def all_network_ips
221
+ all_network_ip_collections.map {|c| c.items.values }.flatten
222
+ end
223
+
224
+ def network_ip_from_href(href)
225
+ find_href_in(href, all_network_ips)
226
+ end
227
+
228
+ private
229
+
230
+ def find_href_in(href, objects)
231
+ objects.detect {|o| o.href == href }
232
+ end
233
+
234
+ def find_href_prefixed_in(href, objects)
235
+ objects.detect {|o| href =~ %r{^#{o.href}($|/)} }
236
+ end
237
+ end
238
+
239
+ class MockVersion < Base
240
+ def version
241
+ self[:version]
242
+ end
243
+
244
+ def supported
245
+ !!self[:supported]
246
+ end
247
+
248
+ def login_url
249
+ href
250
+ end
251
+ end
252
+
253
+ class MockOrganization < Base
254
+ def name
255
+ self[:name]
256
+ end
257
+
258
+ def vdcs
259
+ @vdcs ||= []
260
+ end
261
+ end
262
+
263
+ class MockVdc < Base
264
+ def name
265
+ self[:name]
266
+ end
267
+
268
+ def storage_allocated
269
+ self[:storage_allocated] || 200
270
+ end
271
+
272
+ def storage_used
273
+ self[:storage_used] || 105
274
+ end
275
+
276
+ def cpu_allocated
277
+ self[:cpu_allocated] || 10000
278
+ end
279
+
280
+ def memory_allocated
281
+ self[:memory_allocated] || 20480
282
+ end
283
+
284
+ def catalog
285
+ @catalog ||= MockCatalog.new({}, self)
286
+ end
287
+
288
+ def networks
289
+ @networks ||= []
290
+ end
291
+
292
+ def virtual_machines
293
+ @virtual_machines ||= []
294
+ end
295
+
296
+ def task_list
297
+ @task_list ||= MockTaskList.new({}, self)
298
+ end
299
+
300
+ # for TM eCloud, should probably be subclassed
301
+ def public_ip_collection
302
+ @public_ip_collection ||= MockPublicIps.new({}, self)
303
+ end
304
+
305
+ def internet_service_collection
306
+ @internet_service_collection ||= MockVdcInternetServices.new({}, self)
307
+ end
308
+
309
+ def firewall_acls
310
+ @firewall_acls ||= MockFirewallAcls.new({}, self)
311
+ end
312
+ end
313
+
314
+ class MockTaskList < Base
315
+ def name
316
+ self[:name] || "Tasks List"
317
+ end
318
+ end
319
+
320
+ class MockCatalog < Base
321
+ def name
322
+ self[:name] || "Catalog"
323
+ end
324
+
325
+ def items
326
+ @items ||= []
327
+ end
328
+ end
329
+
330
+ class MockCatalogItem < Base
331
+ def name
332
+ self[:name]
333
+ end
334
+
335
+ def disks
336
+ @disks ||= MockVirtualMachineDisks.new(self)
337
+ end
338
+
339
+ def customization
340
+ @customization ||= MockCatalogItemCustomization.new({}, self)
341
+ end
342
+
343
+ def vapp_template
344
+ @vapp_template ||= MockCatalogItemVappTemplate.new({ :name => name }, self)
345
+ end
346
+ end
347
+
348
+ class MockCatalogItemCustomization < Base
349
+ def name
350
+ self[:name] || "Customization Options"
351
+ end
352
+ end
353
+
354
+ class MockCatalogItemVappTemplate < Base
355
+ def name
356
+ self[:name]
357
+ end
358
+ end
359
+
360
+ class MockNetwork < Base
361
+ def name
362
+ self[:name] || subnet
363
+ end
364
+
365
+ def subnet
366
+ self[:subnet]
367
+ end
368
+
369
+ def gateway
370
+ self[:gateway] || subnet_ips[1]
371
+ end
372
+
373
+ def netmask
374
+ self[:netmask] || subnet_ipaddr.mask
375
+ end
376
+
377
+ def dns
378
+ "8.8.8.8"
379
+ end
380
+
381
+ def features
382
+ [
383
+ { :type => :FenceMode, :value => "isolated" }
384
+ ]
385
+ end
386
+
387
+ def ip_collection
388
+ @ip_collection ||= MockNetworkIps.new({}, self)
389
+ end
390
+
391
+ def extensions
392
+ @extensions ||= MockNetworkExtensions.new({}, self)
393
+ end
394
+
395
+ def random_ip
396
+ usable_subnet_ips[rand(usable_subnet_ips.length)]
397
+ end
398
+
399
+ # for TM eCloud. should probably be a subclass
400
+ def rnat
401
+ self[:rnat]
402
+ end
403
+
404
+ def usable_subnet_ips
405
+ subnet_ips[3..-2]
406
+ end
407
+
408
+ def address
409
+ subnet_ips.first
410
+ end
411
+
412
+ def broadcast
413
+ subnet_ips.last
414
+ end
415
+
416
+ private
417
+
418
+ def subnet_ipaddr
419
+ @ipaddr ||= IPAddr.new(subnet)
420
+ end
421
+
422
+ def subnet_ips
423
+ subnet_ipaddr.to_range.to_a.map(&:to_s)
424
+ end
425
+ end
426
+
427
+ class MockNetworkIps < Base
428
+ def items
429
+ @items ||= _parent.usable_subnet_ips.inject({}) do |out, subnet_ip|
430
+ out.update(subnet_ip => MockNetworkIp.new({ :ip => subnet_ip }, self))
431
+ end
432
+ end
433
+
434
+ def ordered_ips
435
+ items.values.sort_by {|i| i.ip.split(".").map(&:to_i) }
436
+ end
437
+
438
+ def name
439
+ "IP Addresses"
440
+ end
441
+ end
442
+
443
+ class MockNetworkIp < Base
444
+ def name
445
+ self[:name] || ip
446
+ end
447
+
448
+ def ip
449
+ self[:ip]
450
+ end
451
+
452
+ def used_by
453
+ self[:used_by] || _parent._parent._parent.virtual_machines.detect {|v| v.ip == ip }
454
+ end
455
+
456
+ def status
457
+ if used_by
458
+ "Assigned"
459
+ else
460
+ "Available"
461
+ end
462
+ end
463
+
464
+ def rnat
465
+ self[:rnat] || _parent._parent.rnat
466
+ end
467
+
468
+ def rnat_set?
469
+ !!self[:rnat]
470
+ end
471
+ end
472
+
473
+ class MockNetworkExtensions < Base
474
+ def name
475
+ _parent.name
476
+ end
477
+
478
+ def gateway
479
+ _parent.gateway
480
+ end
481
+
482
+ def broadcast
483
+ _parent.broadcast
484
+ end
485
+
486
+ def address
487
+ _parent.address
488
+ end
489
+
490
+ def rnat
491
+ _parent.rnat
492
+ end
493
+
494
+ def type
495
+ self[:type] || "DMZ"
496
+ end
497
+
498
+ def vlan
499
+ object_id.to_s
500
+ end
501
+
502
+ def friendly_name
503
+ "#{name} (#{type}_#{object_id})"
504
+ end
505
+ end
506
+
507
+ class MockVirtualMachine < Base
508
+ def name
509
+ self[:name]
510
+ end
511
+
512
+ def ip
513
+ self[:ip]
514
+ end
515
+
516
+ def cpus
517
+ self[:cpus] || 1
518
+ end
519
+
520
+ def memory
521
+ self[:memory] || 1024
522
+ end
523
+
524
+ def disks
525
+ @disks ||= MockVirtualMachineDisks.new(self)
526
+ end
527
+
528
+ def status
529
+ self[:status] || 2
530
+ end
531
+
532
+ def power_off!
533
+ self[:status] = 2
534
+ end
535
+
536
+ def power_on!
537
+ self[:status] = 4
538
+ end
539
+
540
+ def size
541
+ disks.inject(0) {|s, d| s + d.vcloud_size }
542
+ end
543
+
544
+ def network_ip
545
+ if network = _parent.networks.detect {|n| n.ip_collection.items[ip] }
546
+ network.ip_collection.items[ip]
547
+ end
548
+ end
549
+
550
+ # from fog ecloud server's _compose_vapp_data
551
+ def to_configure_vapp_hash
552
+ {
553
+ :name => name,
554
+ :cpus => cpus,
555
+ :memory => memory,
556
+ :disks => disks.map {|d| { :number => d.address.to_s, :size => d.vcloud_size, :resource => d.vcloud_size.to_s } }
557
+ }
558
+ end
559
+
560
+ def href(purpose = :base)
561
+ case purpose
562
+ when :base
563
+ super()
564
+ when :power_on
565
+ super() + "/power/action/powerOn"
566
+ when :power_off
567
+ super() + "/power/action/powerOff"
568
+ end
569
+ end
570
+ end
571
+
572
+ class MockVirtualMachineDisks < Array
573
+ def initialize(parent = nil)
574
+ @parent = parent
575
+ end
576
+
577
+ def _parent
578
+ @parent
579
+ end
580
+
581
+ def <<(disk)
582
+ next_address = 0
583
+ disk_with_max_address = max {|a, b| a[:address] <=> b[:address] }
584
+ disk_with_max_address && next_address = disk_with_max_address.address + 1
585
+ disk[:address] ||= next_address
586
+
587
+ super(disk)
588
+
589
+ if (addresses = map {|d| d.address }).uniq.size != size
590
+ raise "Duplicate disk address in: #{addresses.inspect} (#{size})"
591
+ end
592
+
593
+ sort! {|a, b| a.address <=> b.address }
594
+ self
595
+ end
596
+
597
+ def at_address(address)
598
+ detect {|d| d.address == address }
599
+ end
600
+ end
601
+
602
+ class MockVirtualMachineDisk < Base
603
+ def size
604
+ self[:size].to_i
605
+ end
606
+
607
+ def vcloud_size
608
+ # kilobytes
609
+ size * 1024
610
+ end
611
+
612
+ def address
613
+ self[:address].to_i
614
+ end
615
+ end
616
+
617
+ # for Terremark eCloud
618
+
619
+ class MockVdcInternetServices < Base
620
+ def href
621
+ _parent.href + "/internetServices"
622
+ end
623
+
624
+ def name
625
+ "Internet Services"
626
+ end
627
+
628
+ def items
629
+ public_ip_internet_services + backup_internet_services
630
+ end
631
+
632
+ def public_ip_internet_services
633
+ _parent.public_ip_collection.items.inject([]) do |services, public_ip|
634
+ services + public_ip.internet_service_collection.items
635
+ end
636
+ end
637
+
638
+ def backup_internet_services
639
+ @backup_internet_services ||= []
640
+ end
641
+ end
642
+
643
+ class MockBackupInternetService < Base
644
+ def name
645
+ self[:name] || "Backup Internet Service #{object_id}"
646
+ end
647
+
648
+ def protocol
649
+ self[:protocol]
650
+ end
651
+
652
+ def port
653
+ 0
654
+ end
655
+
656
+ def enabled
657
+ self[:enabled].to_s.downcase != "false"
658
+ end
659
+
660
+ def timeout
661
+ self[:timeout] || 2
662
+ end
663
+
664
+ def description
665
+ self[:description] || "Description for Backup Service #{name}"
666
+ end
667
+
668
+ def redirect_url
669
+ nil
670
+ end
671
+
672
+ def node_collection
673
+ @node_collection ||= MockPublicIpInternetServiceNodes.new({}, self)
674
+ end
675
+ end
676
+
677
+ class MockFirewallAcls < Base
678
+ def name
679
+ "Firewall Access List"
680
+ end
681
+ end
682
+
683
+ class MockPublicIps < Base
684
+ def name
685
+ self[:name] || "Public IPs"
686
+ end
687
+
688
+ def items
689
+ @items ||= []
690
+ end
691
+ end
692
+
693
+ class MockPublicIp < Base
694
+ def name
695
+ self[:name]
696
+ end
697
+
698
+ def internet_service_collection
699
+ @internet_service_collection ||= MockPublicIpInternetServices.new({}, self)
700
+ end
701
+ end
702
+
703
+ class MockPublicIpInternetServices < Base
704
+ def href
705
+ _parent.href + "/internetServices"
706
+ end
707
+
708
+ def items
709
+ @items ||= []
710
+ end
711
+ end
712
+
713
+ class MockPublicIpInternetService < Base
714
+ def name
715
+ self[:name] || "Public IP Service #{object_id}"
716
+ end
717
+
718
+ def description
719
+ self[:description] || "Description for Public IP Service #{name}"
720
+ end
721
+
722
+ def protocol
723
+ self[:protocol]
724
+ end
725
+
726
+ def port
727
+ self[:port]
728
+ end
729
+
730
+ def enabled
731
+ !!self[:enabled]
732
+ end
733
+
734
+ def redirect_url
735
+ self[:redirect_url]
736
+ end
737
+
738
+ def timeout
739
+ self[:timeout] || 2
740
+ end
741
+
742
+ def node_collection
743
+ @node_collection ||= MockPublicIpInternetServiceNodes.new({}, self)
744
+ end
745
+
746
+ def monitor
747
+ nil
748
+ end
749
+
750
+ def backup_service
751
+ self[:backup_service]
752
+ end
753
+ end
754
+
755
+ class MockPublicIpInternetServiceNodes < Base
756
+ def href
757
+ _parent.href + "/nodeServices"
758
+ end
759
+
760
+ def items
761
+ @items ||= [].tap do |node_array|
762
+ node_array.instance_variable_set("@default_port", _parent.port)
763
+
764
+ def node_array.<<(node)
765
+ node[:port] ||= @default_port
766
+ super
767
+ end
768
+ end
769
+ end
770
+ end
771
+
772
+ class MockPublicIpInternetServiceNode < Base
773
+ def ip_address
774
+ self[:ip_address]
775
+ end
776
+
777
+ def name
778
+ self[:name] || "Public IP Service Node #{object_id}"
779
+ end
780
+
781
+ def description
782
+ self[:description] || "Description for Public IP Service Node #{name}"
783
+ end
784
+
785
+ def port
786
+ self[:port]
787
+ end
788
+
789
+ def enabled
790
+ self[:enabled].to_s.downcase != "false"
791
+ end
792
+
793
+ def enabled=(new_value)
794
+ self[:enabled] = new_value
795
+ end
796
+ end
797
+ end
798
+ end
799
+ end
800
+
801
+
802
+ module Fog
803
+ module Ecloud
804
+ class Model < Fog::Model
805
+
806
+ attr_accessor :loaded
807
+ alias_method :loaded?, :loaded
808
+
809
+ def reload
810
+ instance = super
811
+ @loaded = true
812
+ instance
813
+ end
814
+
815
+ def load_unless_loaded!
816
+ unless @loaded
817
+ reload
818
+ end
819
+ end
820
+
821
+ end
822
+ end
823
+ end
824
+
825
+ module Fog
826
+ module Compute
827
+ class Ecloud < Fog::Service
828
+
829
+ class UnsupportedVersion < Exception ; end
830
+
831
+ requires :ecloud_username, :ecloud_password, :ecloud_versions_uri
832
+ recognizes :ecloud_version
833
+
834
+ model_path 'fog/compute/models/ecloud'
835
+ model :catalog_item
836
+ model :catalog
837
+ model :firewall_acl
838
+ collection :firewall_acls
839
+ model :internet_service
840
+ collection :internet_services
841
+ model :backup_internet_service
842
+ collection :backup_internet_services
843
+ model :ip
844
+ collection :ips
845
+ model :network
846
+ collection :networks
847
+ model :node
848
+ collection :nodes
849
+ model :public_ip
850
+ collection :public_ips
851
+ model :server
852
+ collection :servers
853
+ model :task
854
+ collection :tasks
855
+ model :vdc
856
+ collection :vdcs
857
+
858
+ request_path 'fog/compute/requests/ecloud'
859
+ request :add_internet_service
860
+ request :add_backup_internet_service
861
+ request :add_node
862
+ request :clone_vapp
863
+ request :configure_internet_service
864
+ request :configure_network
865
+ request :configure_network_ip
866
+ request :configure_node
867
+ request :configure_vapp
868
+ request :delete_internet_service
869
+ request :delete_node
870
+ request :delete_vapp
871
+ request :get_catalog
872
+ request :get_catalog_item
873
+ request :get_customization_options
874
+ request :get_firewall_acls
875
+ request :get_firewall_acl
876
+ request :get_internet_services
877
+ request :get_network
878
+ request :get_network_ip
879
+ request :get_network_ips
880
+ request :get_network_extensions
881
+ request :get_organization
882
+ request :get_node
883
+ request :get_nodes
884
+ request :get_public_ip
885
+ request :get_public_ips
886
+ request :get_task
887
+ request :get_task_list
888
+ request :get_vapp
889
+ request :get_vapp_template
890
+ request :get_vdc
891
+ request :get_versions
892
+ request :instantiate_vapp_template
893
+ request :login
894
+ request :power_off
895
+ request :power_on
896
+ request :power_reset
897
+ request :power_shutdown
898
+
899
+ module Shared
900
+
901
+ attr_reader :versions_uri
902
+
903
+ def default_organization_uri
904
+ @default_organization_uri ||= begin
905
+ unless @login_results
906
+ do_login
907
+ end
908
+ case @login_results.body[:Org]
909
+ when Array
910
+ @login_results.body[:Org].first[:href]
911
+ when Hash
912
+ @login_results.body[:Org][:href]
913
+ else
914
+ nil
915
+ end
916
+ end
917
+ end
918
+
919
+ # login handles the auth, but we just need the Set-Cookie
920
+ # header from that call.
921
+ def do_login
922
+ @login_results = login
923
+ @cookie = @login_results.headers['Set-Cookie']
924
+ end
925
+
926
+ def ecloud_xmlns
927
+ {
928
+ "xmlns" => "urn:tmrk:eCloudExtensions-2.6",
929
+ "xmlns:i" => "http://www.w3.org/2001/XMLSchema-instance"
930
+ }
931
+ end
932
+
933
+ def ensure_unparsed(uri)
934
+ if uri.is_a?(String)
935
+ uri
936
+ else
937
+ uri.to_s
938
+ end
939
+ end
940
+
941
+ def supported_versions
942
+ @supported_versions ||= get_versions(@versions_uri).body[:VersionInfo]
943
+ end
944
+
945
+ def xmlns
946
+ { "xmlns" => "http://www.vmware.com/vcloud/v0.8",
947
+ "xmlns:xsi" => "http://www.w3.org/2001/XMLSchema-instance",
948
+ "xmlns:xsd" => "http://www.w3.org/2001/XMLSchema" }
949
+ end
950
+
951
+ end
952
+
953
+ class Mock
954
+ include Shared
955
+ include Fog::Ecloud::MockDataClasses
956
+
957
+ def self.base_url
958
+ "https://fakey.com/api/v0.8b-ext2.6"
959
+ end
960
+
961
+ def self.data( base_url = self.base_url )
962
+ @mock_data ||= MockData.new.tap do |vcloud_mock_data|
963
+ vcloud_mock_data.versions.clear
964
+ vcloud_mock_data.versions << MockVersion.new(:version => "v0.8b-ext2.6", :supported => true)
965
+
966
+ vcloud_mock_data.organizations << MockOrganization.new(:name => "Boom Inc.").tap do |mock_organization|
967
+ mock_organization.vdcs << MockVdc.new(:name => "Boomstick").tap do |mock_vdc|
968
+ mock_vdc.catalog.items << MockCatalogItem.new(:name => "Item 0").tap do |mock_catalog_item|
969
+ mock_catalog_item.disks << MockVirtualMachineDisk.new(:size => 25 * 1024)
970
+ end
971
+ mock_vdc.catalog.items << MockCatalogItem.new(:name => "Item 1").tap do |mock_catalog_item|
972
+ mock_catalog_item.disks << MockVirtualMachineDisk.new(:size => 25 * 1024)
973
+ end
974
+ mock_vdc.catalog.items << MockCatalogItem.new(:name => "Item 2").tap do |mock_catalog_item|
975
+ mock_catalog_item.disks << MockVirtualMachineDisk.new(:size => 25 * 1024)
976
+ end
977
+
978
+ mock_vdc.networks << MockNetwork.new({ :subnet => "1.2.3.0/24" }, mock_vdc)
979
+ mock_vdc.networks << MockNetwork.new({ :subnet => "4.5.6.0/24" }, mock_vdc)
980
+
981
+ mock_vdc.virtual_machines << MockVirtualMachine.new({ :name => "Broom 1", :ip => "1.2.3.3" }, mock_vdc)
982
+ mock_vdc.virtual_machines << MockVirtualMachine.new({ :name => "Broom 2", :ip => "1.2.3.4" }, mock_vdc)
983
+ mock_vdc.virtual_machines << MockVirtualMachine.new({ :name => "Email!", :ip => "1.2.3.10" }, mock_vdc)
984
+ end
985
+
986
+ mock_organization.vdcs << MockVdc.new(:name => "Rock-n-Roll", :storage_allocated => 150, :storage_used => 40, :cpu_allocated => 1000, :memory_allocated => 2048).tap do |mock_vdc|
987
+ mock_vdc.networks << MockNetwork.new({ :subnet => "7.8.9.0/24" }, mock_vdc)
988
+
989
+ mock_vdc.virtual_machines << MockVirtualMachine.new({ :name => "Master Blaster", :ip => "7.8.9.10" }, mock_vdc)
990
+ end
991
+ end
992
+
993
+ vcloud_mock_data.organizations.detect {|o| o.name == "Boom Inc." }.tap do |mock_organization|
994
+ mock_organization.vdcs.detect {|v| v.name == "Boomstick" }.tap do |mock_vdc|
995
+ mock_vdc.public_ip_collection.items << MockPublicIp.new(:name => "99.1.2.3").tap do |mock_public_ip|
996
+ mock_public_ip.internet_service_collection.items << MockPublicIpInternetService.new({
997
+ :protocol => "HTTP",
998
+ :port => 80,
999
+ :name => "Web Site",
1000
+ :description => "Web Servers",
1001
+ :redirect_url => "http://fakey.com"
1002
+ }, mock_public_ip.internet_service_collection
1003
+ ).tap do |mock_public_ip_service|
1004
+ mock_public_ip_service.node_collection.items << MockPublicIpInternetServiceNode.new({:ip_address => "1.2.3.5", :name => "Test Node 1", :description => "web 1"}, mock_public_ip_service.node_collection)
1005
+ mock_public_ip_service.node_collection.items << MockPublicIpInternetServiceNode.new({:ip_address => "1.2.3.6", :name => "Test Node 2", :description => "web 2"}, mock_public_ip_service.node_collection)
1006
+ mock_public_ip_service.node_collection.items << MockPublicIpInternetServiceNode.new({:ip_address => "1.2.3.7", :name => "Test Node 3", :description => "web 3"}, mock_public_ip_service.node_collection)
1007
+ end
1008
+
1009
+ mock_public_ip.internet_service_collection.items << MockPublicIpInternetService.new({
1010
+ :protocol => "TCP",
1011
+ :port => 7000,
1012
+ :name => "An SSH Map",
1013
+ :description => "SSH 1"
1014
+ }, mock_public_ip.internet_service_collection
1015
+ ).tap do |mock_public_ip_service|
1016
+ mock_public_ip_service.node_collection.items << MockPublicIpInternetServiceNode.new({ :ip_address => "1.2.3.5", :port => 22, :name => "SSH", :description => "web ssh" }, mock_public_ip_service.node_collection)
1017
+ end
1018
+ end
1019
+
1020
+ mock_vdc.public_ip_collection.items << MockPublicIp.new(:name => "99.1.2.4").tap do |mock_public_ip|
1021
+ mock_public_ip.internet_service_collection.items << MockPublicIpInternetService.new({
1022
+ :protocol => "HTTP",
1023
+ :port => 80,
1024
+ :name => "Web Site",
1025
+ :description => "Web Servers",
1026
+ :redirect_url => "http://fakey.com"
1027
+ }, mock_public_ip.internet_service_collection
1028
+ )
1029
+
1030
+ mock_public_ip.internet_service_collection.items << MockPublicIpInternetService.new({
1031
+ :protocol => "TCP",
1032
+ :port => 7000,
1033
+ :name => "An SSH Map",
1034
+ :description => "SSH 2"
1035
+ }, mock_public_ip.internet_service_collection
1036
+ )
1037
+ end
1038
+
1039
+ mock_vdc.public_ip_collection.items << MockPublicIp.new(:name => "99.1.9.7")
1040
+
1041
+ mock_vdc.internet_service_collection.backup_internet_services << MockBackupInternetService.new({ :port => 10000, :protocol => "TCP"}, self)
1042
+ end
1043
+
1044
+ mock_organization.vdcs.detect {|v| v.name == "Rock-n-Roll" }.tap do |mock_vdc|
1045
+ mock_vdc.public_ip_collection.items << MockPublicIp.new(:name => "99.99.99.99")
1046
+ end
1047
+ end
1048
+
1049
+ vcloud_mock_data.organizations.each do |organization|
1050
+ organization.vdcs.each do |vdc|
1051
+ vdc.networks.each do |network|
1052
+ network[:rnat] = vdc.public_ip_collection.items.first.name
1053
+ end
1054
+ vdc.virtual_machines.each do |virtual_machine|
1055
+ virtual_machine.disks << MockVirtualMachineDisk.new(:size => 25 * 1024)
1056
+ virtual_machine.disks << MockVirtualMachineDisk.new(:size => 50 * 1024)
1057
+ end
1058
+ end
1059
+ end
1060
+ end
1061
+ end
1062
+
1063
+ def self.reset
1064
+ @mock_data = nil
1065
+ end
1066
+
1067
+ def self.data_reset
1068
+ Formatador.display_line("[yellow][WARN] #{self} => #data_reset is deprecated, use #reset instead[/] [light_black](#{caller.first})[/]")
1069
+ self.reset
1070
+ end
1071
+
1072
+ def initialize(options = {})
1073
+ require 'builder'
1074
+ require 'fog/core/parser'
1075
+
1076
+ @versions_uri = URI.parse('https://vcloud.fakey.com/api/versions')
1077
+ end
1078
+
1079
+ def mock_data
1080
+ Fog::Compute::Ecloud::Mock.data
1081
+ end
1082
+
1083
+ def mock_error(expected, status, body='', headers={})
1084
+ raise Excon::Errors::Unauthorized.new("Expected(#{expected}) <=> Actual(#{status})")
1085
+ end
1086
+
1087
+ def mock_it(status, mock_data, mock_headers = {})
1088
+ response = Excon::Response.new
1089
+
1090
+ #Parse the response body into a hash
1091
+ if mock_data.empty?
1092
+ response.body = mock_data
1093
+ else
1094
+ document = Fog::ToHashDocument.new
1095
+ parser = Nokogiri::XML::SAX::PushParser.new(document)
1096
+ parser << mock_data
1097
+ parser.finish
1098
+ response.body = document.body
1099
+ end
1100
+
1101
+ response.status = status
1102
+ response.headers = mock_headers
1103
+ response
1104
+ end
1105
+
1106
+ end
1107
+
1108
+ class Real
1109
+ include Shared
1110
+
1111
+ class << self
1112
+
1113
+ def basic_request(*args)
1114
+ self.class_eval <<-EOS, __FILE__,__LINE__
1115
+ def #{args[0]}(uri)
1116
+ request({
1117
+ :expects => #{args[1] || 200},
1118
+ :method => '#{args[2] || 'GET'}',
1119
+ :headers => #{args[3] ? args[3].inspect : '{}'},
1120
+ :body => '#{args[4] ? args[4] : ''}',
1121
+ :parse => true,
1122
+ :uri => uri })
1123
+ end
1124
+ EOS
1125
+ end
1126
+
1127
+ def unauthenticated_basic_request(*args)
1128
+ self.class_eval <<-EOS, __FILE__,__LINE__
1129
+ def #{args[0]}(uri)
1130
+ unauthenticated_request({
1131
+ :expects => #{args[1] || 200},
1132
+ :method => '#{args[2] || 'GET'}',
1133
+ :headers => #{args[3] ? args[3].inspect : '{}'},
1134
+ :parse => true,
1135
+ :uri => uri })
1136
+ end
1137
+ EOS
1138
+ end
1139
+
1140
+ end
1141
+
1142
+ def initialize(options = {})
1143
+ require 'builder'
1144
+ require 'fog/core/parser'
1145
+
1146
+ @connections = {}
1147
+ @versions_uri = URI.parse(options[:ecloud_versions_uri])
1148
+ @version = options[:ecloud_version]
1149
+ @username = options[:ecloud_username]
1150
+ @password = options[:ecloud_password]
1151
+ @persistent = options[:persistent]
1152
+ end
1153
+
1154
+ def default_organization_uri
1155
+ @default_organization_uri ||= begin
1156
+ unless @login_results
1157
+ do_login
1158
+ end
1159
+ case @login_results.body[:Org]
1160
+ when Array
1161
+ @login_results.body[:Org].first[:href]
1162
+ when Hash
1163
+ @login_results.body[:Org][:href]
1164
+ else
1165
+ nil
1166
+ end
1167
+ end
1168
+ end
1169
+
1170
+ def reload
1171
+ @connections.each_value { |k,v| v.reset if v }
1172
+ end
1173
+
1174
+ # If the cookie isn't set, do a get_organizations call to set it
1175
+ # and try the request.
1176
+ # If we get an Unauthorized error, we assume the token expired, re-auth and try again
1177
+ def request(params)
1178
+ unless @cookie
1179
+ do_login
1180
+ end
1181
+ begin
1182
+ do_request(params)
1183
+ rescue Excon::Errors::Unauthorized => e
1184
+ do_login
1185
+ do_request(params)
1186
+ end
1187
+ end
1188
+
1189
+ def supporting_versions
1190
+ ["v0.8b-ext2.6", "0.8b-ext2.6"]
1191
+ end
1192
+
1193
+ private
1194
+
1195
+ def ensure_parsed(uri)
1196
+ if uri.is_a?(String)
1197
+ URI.parse(uri)
1198
+ else
1199
+ uri
1200
+ end
1201
+ end
1202
+
1203
+ def supported_version_numbers
1204
+ case supported_versions
1205
+ when Array
1206
+ supported_versions.map { |version| version[:Version] }
1207
+ when Hash
1208
+ [ supported_versions[:Version] ]
1209
+ end
1210
+ end
1211
+
1212
+ def get_login_uri
1213
+ check_versions
1214
+ URI.parse case supported_versions
1215
+ when Array
1216
+ supported_versions.detect {|version| version[:Version] == @version }[:LoginUrl]
1217
+ when Hash
1218
+ supported_versions[:LoginUrl]
1219
+ end
1220
+ end
1221
+
1222
+ # If we don't support any versions the service does, then raise an error.
1223
+ # If the @version that super selected isn't in our supported list, then select one that is.
1224
+ def check_versions
1225
+ if @version
1226
+ unless supported_version_numbers.include?(@version.to_s)
1227
+ raise UnsupportedVersion.new("#{@version} is not supported by the server.")
1228
+ end
1229
+ unless supporting_versions.include?(@version.to_s)
1230
+ raise UnsupportedVersion.new("#{@version} is not supported by #{self.class}")
1231
+ end
1232
+ else
1233
+ unless @version = (supported_version_numbers & supporting_versions).sort.first
1234
+ raise UnsupportedVersion.new("\nService @ #{@versions_uri} supports: #{supported_version_numbers.join(', ')}\n" +
1235
+ "#{self.class} supports: #{supporting_versions.join(', ')}")
1236
+ end
1237
+ end
1238
+ end
1239
+
1240
+ # Don't need to set the cookie for these or retry them if the cookie timed out
1241
+ def unauthenticated_request(params)
1242
+ do_request(params)
1243
+ end
1244
+
1245
+ # Use this to set the Authorization header for login
1246
+ def authorization_header
1247
+ "Basic #{Base64.encode64("#{@username}:#{@password}").chomp!}"
1248
+ end
1249
+
1250
+ def login_uri
1251
+ @login_uri ||= get_login_uri
1252
+ end
1253
+
1254
+ # login handles the auth, but we just need the Set-Cookie
1255
+ # header from that call.
1256
+ def do_login
1257
+ @login_results = login
1258
+ @cookie = @login_results.headers['Set-Cookie']
1259
+ end
1260
+
1261
+ # Actually do the request
1262
+ def do_request(params)
1263
+ # Convert the uri to a URI if it's a string.
1264
+ if params[:uri].is_a?(String)
1265
+ params[:uri] = URI.parse(params[:uri])
1266
+ end
1267
+ host_url = "#{params[:uri].scheme}://#{params[:uri].host}#{params[:uri].port ? ":#{params[:uri].port}" : ''}"
1268
+
1269
+ # Hash connections on the host_url ... There's nothing to say we won't get URI's that go to
1270
+ # different hosts.
1271
+ @connections[host_url] ||= Fog::Connection.new(host_url, @persistent)
1272
+
1273
+ # Set headers to an empty hash if none are set.
1274
+ headers = params[:headers] || {}
1275
+
1276
+ # Add our auth cookie to the headers
1277
+ if @cookie
1278
+ headers.merge!('Cookie' => @cookie)
1279
+ end
1280
+
1281
+ # Make the request
1282
+ response = @connections[host_url].request({
1283
+ :body => params[:body] || '',
1284
+ :expects => params[:expects] || 200,
1285
+ :headers => headers,
1286
+ :method => params[:method] || 'GET',
1287
+ :path => params[:uri].path
1288
+ })
1289
+
1290
+ # Parse the response body into a hash
1291
+ #puts response.body
1292
+ unless response.body.empty?
1293
+ if params[:parse]
1294
+ document = Fog::ToHashDocument.new
1295
+ parser = Nokogiri::XML::SAX::PushParser.new(document)
1296
+ parser << response.body
1297
+ parser.finish
1298
+
1299
+ response.body = document.body
1300
+ end
1301
+ end
1302
+
1303
+ response
1304
+ end
1305
+
1306
+ end
1307
+
1308
+ end
1309
+ end
1310
+ end