fog 1.10.0 → 1.10.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (379) hide show
  1. data/benchs/load_times.rb +31 -0
  2. data/changelog.txt +320 -0
  3. data/fog.gemspec +3 -3
  4. data/lib/fog.rb +42 -15
  5. data/lib/fog/aws/auto_scaling.rb +1 -1
  6. data/lib/fog/aws/beanstalk.rb +1 -1
  7. data/lib/fog/aws/cloud_formation.rb +1 -1
  8. data/lib/fog/aws/compute.rb +1 -1
  9. data/lib/fog/aws/elasticache.rb +1 -1
  10. data/lib/fog/aws/elb.rb +1 -1
  11. data/lib/fog/aws/iam.rb +1 -1
  12. data/lib/fog/aws/models/beanstalk/environment.rb +6 -2
  13. data/lib/fog/aws/models/cdn/distributions.rb +2 -1
  14. data/lib/fog/aws/models/cdn/distributions_helper.rb +2 -1
  15. data/lib/fog/aws/models/cdn/streaming_distributions.rb +2 -1
  16. data/lib/fog/aws/models/compute/server.rb +1 -1
  17. data/lib/fog/aws/models/storage/directory.rb +1 -1
  18. data/lib/fog/aws/models/storage/file.rb +1 -1
  19. data/lib/fog/aws/parsers/beanstalk/describe_environment_resources.rb +11 -0
  20. data/lib/fog/aws/rds.rb +1 -1
  21. data/lib/fog/aws/requests/cdn/delete_distribution.rb +5 -7
  22. data/lib/fog/aws/requests/cdn/delete_streaming_distribution.rb +5 -7
  23. data/lib/fog/aws/requests/cdn/get_distribution.rb +28 -31
  24. data/lib/fog/aws/requests/cdn/get_distribution_list.rb +29 -33
  25. data/lib/fog/aws/requests/cdn/get_invalidation.rb +15 -13
  26. data/lib/fog/aws/requests/cdn/get_invalidation_list.rb +15 -17
  27. data/lib/fog/aws/requests/cdn/get_streaming_distribution.rb +23 -26
  28. data/lib/fog/aws/requests/cdn/get_streaming_distribution_list.rb +29 -33
  29. data/lib/fog/aws/requests/cdn/post_distribution.rb +40 -42
  30. data/lib/fog/aws/requests/cdn/post_invalidation.rb +14 -18
  31. data/lib/fog/aws/requests/cdn/post_streaming_distribution.rb +28 -30
  32. data/lib/fog/aws/requests/cdn/put_distribution_config.rb +41 -43
  33. data/lib/fog/aws/requests/cdn/put_streaming_distribution_config.rb +31 -33
  34. data/lib/fog/aws/requests/cloud_formation/create_stack.rb +16 -20
  35. data/lib/fog/aws/requests/cloud_formation/delete_stack.rb +5 -8
  36. data/lib/fog/aws/requests/cloud_formation/describe_stack_events.rb +19 -22
  37. data/lib/fog/aws/requests/cloud_formation/describe_stack_resources.rb +18 -21
  38. data/lib/fog/aws/requests/cloud_formation/describe_stacks.rb +18 -21
  39. data/lib/fog/aws/requests/cloud_formation/get_template.rb +7 -10
  40. data/lib/fog/aws/requests/cloud_formation/update_stack.rb +12 -16
  41. data/lib/fog/aws/requests/cloud_formation/validate_template.rb +9 -12
  42. data/lib/fog/aws/requests/compute/associate_address.rb +13 -7
  43. data/lib/fog/aws/requests/compute/describe_reserved_instances_offerings.rb +16 -2
  44. data/lib/fog/aws/requests/compute/describe_security_groups.rb +2 -2
  45. data/lib/fog/aws/requests/elb/create_load_balancer.rb +10 -0
  46. data/lib/fog/aws/requests/iam/update_server_certificate.rb +27 -0
  47. data/lib/fog/aws/requests/storage/get_object.rb +6 -2
  48. data/lib/fog/aws/storage.rb +6 -4
  49. data/lib/fog/aws/sts.rb +1 -1
  50. data/lib/fog/bin.rb +2 -0
  51. data/lib/fog/bin/digitalocean.rb +31 -0
  52. data/lib/fog/bin/riakcs.rb +27 -0
  53. data/lib/fog/cloudstack/compute.rb +3 -0
  54. data/lib/fog/cloudstack/models/compute/snapshot.rb +46 -0
  55. data/lib/fog/cloudstack/models/compute/snapshots.rb +25 -0
  56. data/lib/fog/cloudstack/requests/compute/create_snapshot.rb +24 -0
  57. data/lib/fog/compute.rb +3 -0
  58. data/lib/fog/compute/models/server.rb +6 -7
  59. data/lib/fog/core.rb +10 -5
  60. data/lib/fog/core/errors.rb +2 -0
  61. data/lib/fog/core/scp.rb +3 -3
  62. data/lib/fog/core/ssh.rb +1 -1
  63. data/lib/fog/digitalocean.rb +9 -0
  64. data/lib/fog/digitalocean/CHANGELOG.md +6 -0
  65. data/lib/fog/digitalocean/compute.rb +107 -0
  66. data/lib/fog/digitalocean/examples/getting_started.md +106 -0
  67. data/lib/fog/digitalocean/models/compute/flavor.rb +14 -0
  68. data/lib/fog/digitalocean/models/compute/flavors.rb +25 -0
  69. data/lib/fog/digitalocean/models/compute/image.rb +15 -0
  70. data/lib/fog/digitalocean/models/compute/images.rb +25 -0
  71. data/lib/fog/digitalocean/models/compute/region.rb +14 -0
  72. data/lib/fog/digitalocean/models/compute/regions.rb +25 -0
  73. data/lib/fog/digitalocean/models/compute/server.rb +150 -0
  74. data/lib/fog/digitalocean/models/compute/servers.rb +27 -0
  75. data/lib/fog/digitalocean/models/compute/ssh_key.rb +28 -0
  76. data/lib/fog/digitalocean/models/compute/ssh_keys.rb +27 -0
  77. data/lib/fog/digitalocean/requests/compute/create_server.rb +68 -0
  78. data/lib/fog/digitalocean/requests/compute/create_ssh_key.rb +38 -0
  79. data/lib/fog/digitalocean/requests/compute/destroy_server.rb +34 -0
  80. data/lib/fog/digitalocean/requests/compute/destroy_ssh_key.rb +37 -0
  81. data/lib/fog/digitalocean/requests/compute/get_server_details.rb +35 -0
  82. data/lib/fog/digitalocean/requests/compute/get_ssh_key.rb +39 -0
  83. data/lib/fog/digitalocean/requests/compute/list_flavors.rb +38 -0
  84. data/lib/fog/digitalocean/requests/compute/list_images.rb +49 -0
  85. data/lib/fog/digitalocean/requests/compute/list_regions.rb +34 -0
  86. data/lib/fog/digitalocean/requests/compute/list_servers.rb +31 -0
  87. data/lib/fog/digitalocean/requests/compute/list_ssh_keys.rb +31 -0
  88. data/lib/fog/digitalocean/requests/compute/power_cycle_server.rb +33 -0
  89. data/lib/fog/digitalocean/requests/compute/power_off_server.rb +33 -0
  90. data/lib/fog/digitalocean/requests/compute/power_on_server.rb +33 -0
  91. data/lib/fog/digitalocean/requests/compute/reboot_server.rb +33 -0
  92. data/lib/fog/digitalocean/requests/compute/shutdown_server.rb +36 -0
  93. data/lib/fog/dreamhost/CHANGELOG.md +8 -0
  94. data/lib/fog/glesys/models/compute/server.rb +3 -3
  95. data/lib/fog/google/storage.rb +1 -1
  96. data/lib/fog/hp.rb +1 -1
  97. data/lib/fog/hp/CHANGELOG.hp +12 -2
  98. data/lib/fog/hp/block_storage.rb +1 -0
  99. data/lib/fog/hp/cdn.rb +1 -0
  100. data/lib/fog/hp/compute.rb +1 -0
  101. data/lib/fog/hp/models/compute/server.rb +14 -8
  102. data/lib/fog/hp/models/storage/directories.rb +1 -1
  103. data/lib/fog/hp/models/storage/directory.rb +28 -3
  104. data/lib/fog/hp/models/storage/files.rb +1 -1
  105. data/lib/fog/hp/requests/compute/create_server.rb +4 -14
  106. data/lib/fog/hp/storage.rb +2 -0
  107. data/lib/fog/internet_archive.rb +3 -1
  108. data/lib/fog/internet_archive/models/storage/directory.rb +25 -42
  109. data/lib/fog/internet_archive/models/storage/file.rb +45 -64
  110. data/lib/fog/internet_archive/models/storage/ia_attributes.rb +39 -0
  111. data/lib/fog/internet_archive/requests/storage/delete_multiple_objects.rb +4 -78
  112. data/lib/fog/internet_archive/requests/storage/delete_object.rb +2 -70
  113. data/lib/fog/internet_archive/requests/storage/get_object.rb +1 -22
  114. data/lib/fog/internet_archive/requests/storage/get_object_acl.rb +0 -4
  115. data/lib/fog/internet_archive/requests/storage/get_service.rb +1 -2
  116. data/lib/fog/internet_archive/requests/storage/head_object.rb +0 -4
  117. data/lib/fog/internet_archive/requests/storage/post_object_hidden_fields.rb +1 -1
  118. data/lib/fog/internet_archive/requests/storage/put_object.rb +2 -17
  119. data/lib/fog/internet_archive/requests/storage/put_object_acl.rb +0 -5
  120. data/lib/fog/internet_archive/storage.rb +6 -18
  121. data/lib/fog/joyent.rb +2 -0
  122. data/lib/fog/libvirt/requests/compute/get_node_info.rb +1 -1
  123. data/lib/fog/openstack/CHANGELOG.md +47 -0
  124. data/lib/fog/openstack/examples/identity/basics.rb +69 -0
  125. data/lib/fog/openstack/examples/image/upload-test-image.rb +77 -0
  126. data/lib/fog/openstack/examples/network/network_subnets_routers.rb +63 -0
  127. data/lib/fog/openstack/examples/storage/set-account-quota.rb +66 -0
  128. data/lib/fog/openstack/image.rb +4 -0
  129. data/lib/fog/openstack/models/compute/server.rb +4 -2
  130. data/lib/fog/openstack/models/network/floating_ip.rb +2 -2
  131. data/lib/fog/openstack/models/network/floating_ips.rb +1 -1
  132. data/lib/fog/openstack/models/network/router.rb +56 -0
  133. data/lib/fog/openstack/models/network/routers.rb +34 -0
  134. data/lib/fog/openstack/network.rb +15 -2
  135. data/lib/fog/openstack/requests/compute/create_server.rb +11 -0
  136. data/lib/fog/openstack/requests/compute/rebuild_server.rb +9 -1
  137. data/lib/fog/openstack/requests/network/add_router_interface.rb +48 -0
  138. data/lib/fog/openstack/requests/network/create_network.rb +57 -2
  139. data/lib/fog/openstack/requests/network/create_router.rb +57 -0
  140. data/lib/fog/openstack/requests/network/delete_router.rb +30 -0
  141. data/lib/fog/openstack/requests/network/get_router.rb +32 -0
  142. data/lib/fog/openstack/requests/network/list_routers.rb +27 -0
  143. data/lib/fog/openstack/requests/network/remove_router_interface.rb +36 -0
  144. data/lib/fog/openstack/requests/network/update_router.rb +85 -0
  145. data/lib/fog/openstack/storage.rb +57 -0
  146. data/lib/fog/ovirt/compute.rb +4 -0
  147. data/lib/fog/ovirt/models/compute/quota.rb +21 -0
  148. data/lib/fog/ovirt/models/compute/quotas.rb +24 -0
  149. data/lib/fog/ovirt/models/compute/server.rb +2 -1
  150. data/lib/fog/ovirt/models/compute/volume.rb +1 -0
  151. data/lib/fog/ovirt/requests/compute/get_quota.rb +19 -0
  152. data/lib/fog/ovirt/requests/compute/list_quotas.rb +21 -0
  153. data/lib/fog/ovirt/requests/compute/mock_files/quotas.xml +7 -0
  154. data/lib/fog/rackspace.rb +11 -0
  155. data/lib/fog/rackspace/block_storage.rb +73 -20
  156. data/lib/fog/rackspace/cdn.rb +57 -19
  157. data/lib/fog/rackspace/compute.rb +53 -28
  158. data/lib/fog/rackspace/compute_v2.rb +99 -22
  159. data/lib/fog/rackspace/databases.rb +74 -18
  160. data/lib/fog/rackspace/dns.rb +55 -22
  161. data/lib/fog/rackspace/docs/block_storage.md +417 -0
  162. data/lib/fog/rackspace/docs/compute_v2.md +114 -55
  163. data/lib/fog/rackspace/docs/getting_started.md +20 -10
  164. data/lib/fog/rackspace/docs/storage.md +496 -0
  165. data/lib/fog/rackspace/examples/README.md +1 -1
  166. data/lib/fog/rackspace/examples/block_storage/create_snapshot.rb +118 -0
  167. data/lib/fog/rackspace/examples/block_storage/create_volume.rb +58 -0
  168. data/lib/fog/rackspace/examples/block_storage/delete_volume.rb +53 -0
  169. data/lib/fog/rackspace/examples/compute_v2/create_image.rb +2 -2
  170. data/lib/fog/rackspace/examples/compute_v2/create_server.rb +1 -1
  171. data/lib/fog/rackspace/examples/compute_v2/delete_image.rb +2 -2
  172. data/lib/fog/rackspace/examples/compute_v2/delete_server.rb +2 -2
  173. data/lib/fog/rackspace/examples/compute_v2/detach_volume.rb +4 -4
  174. data/lib/fog/rackspace/examples/compute_v2/resize_server.rb +2 -2
  175. data/lib/fog/rackspace/examples/compute_v2/server_attachments.rb +3 -3
  176. data/lib/fog/rackspace/examples/compute_v2/server_metadata.rb +2 -2
  177. data/lib/fog/rackspace/examples/storage/create_cdn_directory.rb +44 -0
  178. data/lib/fog/rackspace/examples/storage/create_private_directory.rb +46 -0
  179. data/lib/fog/rackspace/examples/storage/delete_directory.rb +62 -0
  180. data/lib/fog/rackspace/examples/storage/delete_file.rb +70 -0
  181. data/lib/fog/rackspace/examples/storage/download_file.rb +75 -0
  182. data/lib/fog/rackspace/examples/storage/lorem.txt +1 -0
  183. data/lib/fog/rackspace/examples/storage/storage_metadata.rb +82 -0
  184. data/lib/fog/rackspace/examples/storage/upload_file.rb +45 -0
  185. data/lib/fog/rackspace/identity.rb +10 -3
  186. data/lib/fog/rackspace/load_balancers.rb +76 -18
  187. data/lib/fog/rackspace/models/block_storage/snapshot.rb +42 -0
  188. data/lib/fog/rackspace/models/block_storage/snapshots.rb +15 -0
  189. data/lib/fog/rackspace/models/block_storage/volume.rb +65 -0
  190. data/lib/fog/rackspace/models/block_storage/volume_type.rb +6 -0
  191. data/lib/fog/rackspace/models/block_storage/volume_types.rb +15 -0
  192. data/lib/fog/rackspace/models/block_storage/volumes.rb +15 -0
  193. data/lib/fog/rackspace/models/compute_v2/attachment.rb +8 -0
  194. data/lib/fog/rackspace/models/compute_v2/attachments.rb +9 -1
  195. data/lib/fog/rackspace/models/compute_v2/flavors.rb +9 -1
  196. data/lib/fog/rackspace/models/compute_v2/image.rb +10 -2
  197. data/lib/fog/rackspace/models/compute_v2/images.rb +9 -1
  198. data/lib/fog/rackspace/models/compute_v2/meta_parent.rb +1 -1
  199. data/lib/fog/rackspace/models/compute_v2/metadata.rb +17 -5
  200. data/lib/fog/rackspace/models/compute_v2/metadatum.rb +8 -0
  201. data/lib/fog/rackspace/models/compute_v2/server.rb +72 -13
  202. data/lib/fog/rackspace/models/compute_v2/servers.rb +16 -2
  203. data/lib/fog/rackspace/models/dns/zones.rb +5 -9
  204. data/lib/fog/rackspace/models/identity/service_catalog.rb +83 -0
  205. data/lib/fog/rackspace/models/storage/account.rb +26 -0
  206. data/lib/fog/rackspace/models/storage/directories.rb +23 -3
  207. data/lib/fog/rackspace/models/storage/directory.rb +89 -5
  208. data/lib/fog/rackspace/models/storage/file.rb +112 -2
  209. data/lib/fog/rackspace/models/storage/files.rb +78 -0
  210. data/lib/fog/rackspace/models/storage/metadata.rb +28 -5
  211. data/lib/fog/rackspace/requests/block_storage/create_snapshot.rb +24 -0
  212. data/lib/fog/rackspace/requests/block_storage/create_volume.rb +29 -0
  213. data/lib/fog/rackspace/requests/block_storage/delete_snapshot.rb +10 -0
  214. data/lib/fog/rackspace/requests/block_storage/delete_volume.rb +11 -0
  215. data/lib/fog/rackspace/requests/block_storage/get_snapshot.rb +20 -0
  216. data/lib/fog/rackspace/requests/block_storage/get_volume.rb +24 -0
  217. data/lib/fog/rackspace/requests/block_storage/get_volume_type.rb +14 -0
  218. data/lib/fog/rackspace/requests/block_storage/list_snapshots.rb +17 -0
  219. data/lib/fog/rackspace/requests/block_storage/list_volume_types.rb +13 -0
  220. data/lib/fog/rackspace/requests/block_storage/list_volumes.rb +21 -0
  221. data/lib/fog/rackspace/requests/cdn/delete_object.rb +5 -1
  222. data/lib/fog/rackspace/requests/cdn/get_containers.rb +5 -0
  223. data/lib/fog/rackspace/requests/cdn/head_container.rb +5 -0
  224. data/lib/fog/rackspace/requests/cdn/post_container.rb +6 -1
  225. data/lib/fog/rackspace/requests/cdn/put_container.rb +6 -1
  226. data/lib/fog/rackspace/requests/compute_v2/attach_volume.rb +4 -0
  227. data/lib/fog/rackspace/requests/compute_v2/change_server_password.rb +4 -0
  228. data/lib/fog/rackspace/requests/compute_v2/confirm_resize_server.rb +5 -0
  229. data/lib/fog/rackspace/requests/compute_v2/create_image.rb +9 -4
  230. data/lib/fog/rackspace/requests/compute_v2/create_server.rb +9 -5
  231. data/lib/fog/rackspace/requests/compute_v2/delete_attachment.rb +5 -0
  232. data/lib/fog/rackspace/requests/compute_v2/delete_image.rb +5 -0
  233. data/lib/fog/rackspace/requests/compute_v2/delete_metadata_item.rb +5 -0
  234. data/lib/fog/rackspace/requests/compute_v2/delete_server.rb +5 -0
  235. data/lib/fog/rackspace/requests/compute_v2/get_attachment.rb +4 -0
  236. data/lib/fog/rackspace/requests/compute_v2/get_flavor.rb +4 -0
  237. data/lib/fog/rackspace/requests/compute_v2/get_image.rb +5 -1
  238. data/lib/fog/rackspace/requests/compute_v2/get_metadata_item.rb +4 -0
  239. data/lib/fog/rackspace/requests/compute_v2/get_server.rb +4 -0
  240. data/lib/fog/rackspace/requests/compute_v2/list_addresses.rb +4 -0
  241. data/lib/fog/rackspace/requests/compute_v2/list_addresses_by_network.rb +4 -0
  242. data/lib/fog/rackspace/requests/compute_v2/list_attachments.rb +4 -0
  243. data/lib/fog/rackspace/requests/compute_v2/list_flavors.rb +4 -0
  244. data/lib/fog/rackspace/requests/compute_v2/list_images.rb +4 -0
  245. data/lib/fog/rackspace/requests/compute_v2/list_metadata.rb +4 -0
  246. data/lib/fog/rackspace/requests/compute_v2/list_servers.rb +4 -0
  247. data/lib/fog/rackspace/requests/compute_v2/reboot_server.rb +4 -0
  248. data/lib/fog/rackspace/requests/compute_v2/rebuild_server.rb +8 -4
  249. data/lib/fog/rackspace/requests/compute_v2/resize_server.rb +6 -1
  250. data/lib/fog/rackspace/requests/compute_v2/revert_resize_server.rb +8 -3
  251. data/lib/fog/rackspace/requests/compute_v2/set_metadata.rb +4 -0
  252. data/lib/fog/rackspace/requests/compute_v2/set_metadata_item.rb +4 -0
  253. data/lib/fog/rackspace/requests/compute_v2/update_metadata.rb +4 -0
  254. data/lib/fog/rackspace/requests/compute_v2/update_server.rb +4 -0
  255. data/lib/fog/rackspace/requests/storage/copy_object.rb +4 -0
  256. data/lib/fog/rackspace/requests/storage/delete_container.rb +4 -1
  257. data/lib/fog/rackspace/requests/storage/delete_object.rb +4 -1
  258. data/lib/fog/rackspace/requests/storage/get_container.rb +4 -0
  259. data/lib/fog/rackspace/requests/storage/get_containers.rb +4 -0
  260. data/lib/fog/rackspace/requests/storage/get_object.rb +4 -1
  261. data/lib/fog/rackspace/requests/storage/get_object_https_url.rb +7 -4
  262. data/lib/fog/rackspace/requests/storage/head_container.rb +4 -0
  263. data/lib/fog/rackspace/requests/storage/head_containers.rb +4 -0
  264. data/lib/fog/rackspace/requests/storage/head_object.rb +4 -1
  265. data/lib/fog/rackspace/requests/storage/post_set_meta_temp_url_key.rb +4 -1
  266. data/lib/fog/rackspace/requests/storage/put_container.rb +4 -1
  267. data/lib/fog/rackspace/requests/storage/put_object.rb +4 -1
  268. data/lib/fog/rackspace/requests/storage/put_object_manifest.rb +4 -1
  269. data/lib/fog/rackspace/service.rb +78 -0
  270. data/lib/fog/rackspace/storage.rb +62 -22
  271. data/lib/fog/riakcs.rb +122 -0
  272. data/lib/fog/riakcs/provisioning.rb +100 -0
  273. data/lib/fog/riakcs/requests/provisioning/create_user.rb +77 -0
  274. data/lib/fog/riakcs/requests/provisioning/disable_user.rb +23 -0
  275. data/lib/fog/riakcs/requests/provisioning/enable_user.rb +23 -0
  276. data/lib/fog/riakcs/requests/provisioning/get_user.rb +41 -0
  277. data/lib/fog/riakcs/requests/provisioning/list_users.rb +43 -0
  278. data/lib/fog/riakcs/requests/provisioning/regrant_secret.rb +23 -0
  279. data/lib/fog/riakcs/requests/provisioning/update_user.rb +23 -0
  280. data/lib/fog/riakcs/requests/usage/get_usage.rb +68 -0
  281. data/lib/fog/riakcs/usage.rb +66 -0
  282. data/lib/fog/vcloud/compute.rb +1 -1
  283. data/lib/fog/vcloud/models/compute/catalog_item.rb +8 -0
  284. data/lib/fog/vcloud/models/compute/server.rb +1 -0
  285. data/lib/fog/vcloud/requests/compute/configure_vm_network.rb +1 -2
  286. data/lib/fog/version.rb +1 -1
  287. data/lib/fog/vsphere/compute.rb +1 -1
  288. data/lib/fog/vsphere/models/compute/servers.rb +9 -9
  289. data/lib/fog/xenserver.rb +2 -0
  290. data/lib/fog/xenserver/CHANGELOG.md +7 -1
  291. data/lib/fog/xenserver/compute.rb +6 -0
  292. data/lib/fog/xenserver/examples/networks-and-vlans.rb +45 -0
  293. data/lib/fog/xenserver/models/compute/network.rb +33 -0
  294. data/lib/fog/xenserver/models/compute/vlan.rb +80 -0
  295. data/lib/fog/xenserver/models/compute/vlans.rb +39 -0
  296. data/lib/fog/xenserver/requests/compute/create_network.rb +42 -0
  297. data/lib/fog/xenserver/requests/compute/create_vlan.rb +35 -0
  298. data/lib/fog/xenserver/requests/compute/destroy_network.rb +33 -0
  299. data/lib/fog/xenserver/requests/compute/destroy_vlan.rb +32 -0
  300. data/lib/fog/zerigo/models/dns/records.rb +15 -12
  301. data/lib/tasks/changelog_task.rb +1 -0
  302. data/tests/aws/requests/compute/address_tests.rb +4 -0
  303. data/tests/aws/requests/iam/server_certificate_tests.rb +32 -0
  304. data/tests/cloudstack/compute/models/snapshot_tests.rb +34 -0
  305. data/tests/digitalocean/helper.rb +44 -0
  306. data/tests/digitalocean/models/compute/flavor_tests.rb +30 -0
  307. data/tests/digitalocean/models/compute/image_tests.rb +31 -0
  308. data/tests/digitalocean/models/compute/region_tests.rb +30 -0
  309. data/tests/digitalocean/models/compute/server_tests.rb +84 -0
  310. data/tests/digitalocean/models/compute/servers_tests.rb +35 -0
  311. data/tests/digitalocean/models/compute/ssh_key_tests.rb +40 -0
  312. data/tests/digitalocean/models/compute/ssh_keys_tests.rb +28 -0
  313. data/tests/digitalocean/requests/compute/create_server_tests.rb +28 -0
  314. data/tests/digitalocean/requests/compute/create_ssh_key_tests.rb +22 -0
  315. data/tests/digitalocean/requests/compute/destroy_server_tests.rb +15 -0
  316. data/tests/digitalocean/requests/compute/destroy_ssh_key_tests.rb +23 -0
  317. data/tests/digitalocean/requests/compute/get_server_details_tests.rb +13 -0
  318. data/tests/digitalocean/requests/compute/get_ssh_key_tests.rb +22 -0
  319. data/tests/digitalocean/requests/compute/list_flavors_tests.rb +23 -0
  320. data/tests/digitalocean/requests/compute/list_images_tests.rb +24 -0
  321. data/tests/digitalocean/requests/compute/list_regions_tests.rb +23 -0
  322. data/tests/digitalocean/requests/compute/list_servers_tests.rb +26 -0
  323. data/tests/digitalocean/requests/compute/list_ssh_keys_tests.rb +21 -0
  324. data/tests/digitalocean/requests/compute/power_cycle_server_tests.rb +20 -0
  325. data/tests/digitalocean/requests/compute/power_state_tests.rb +25 -0
  326. data/tests/digitalocean/requests/compute/reboot_server_tests.rb +14 -0
  327. data/tests/helpers/collection_helper.rb +36 -1
  328. data/tests/helpers/mock_helper.rb +2 -0
  329. data/tests/internet_archive/models/storage/directory_tests.rb +24 -32
  330. data/tests/internet_archive/models/storage/file_tests.rb +16 -35
  331. data/tests/internet_archive/models/storage/files_tests.rb +33 -31
  332. data/tests/internet_archive/models/storage/url_tests.rb +1 -1
  333. data/tests/internet_archive/requests/storage/bucket_tests.rb +34 -38
  334. data/tests/internet_archive/requests/storage/multipart_upload_tests.rb +1 -1
  335. data/tests/openstack/models/network/network_tests.rb +17 -0
  336. data/tests/openstack/models/network/router_tests.rb +38 -0
  337. data/tests/openstack/models/network/routers_tests.rb +21 -0
  338. data/tests/openstack/requests/network/network_tests.rb +61 -10
  339. data/tests/openstack/requests/network/router_tests.rb +75 -0
  340. data/tests/openstack/storage_tests.rb +19 -0
  341. data/tests/ovirt/requests/compute/list_quotas_tests.rb +12 -0
  342. data/tests/rackspace/block_storage_tests.rb +101 -0
  343. data/tests/rackspace/cdn_tests.rb +144 -52
  344. data/tests/rackspace/compute_tests.rb +88 -0
  345. data/tests/rackspace/compute_v2_tests.rb +101 -0
  346. data/tests/rackspace/databases_tests.rb +98 -0
  347. data/tests/rackspace/dns_tests.rb +82 -0
  348. data/tests/rackspace/load_balancer_tests.rb +99 -0
  349. data/tests/rackspace/models/compute_v2/image_tests.rb +51 -0
  350. data/tests/rackspace/models/compute_v2/server_tests.rb +51 -0
  351. data/tests/rackspace/models/identity/service_catalog_tests.rb +81 -0
  352. data/tests/rackspace/models/storage/file_tests.rb +10 -1
  353. data/tests/rackspace/rackspace_tests.rb +21 -0
  354. data/tests/rackspace/requests/compute_v2/metadata_tests.rb +2 -2
  355. data/tests/rackspace/requests/storage/object_tests.rb +2 -2
  356. data/tests/rackspace/storage_tests.rb +99 -3
  357. data/tests/riakcs/requests/provisioning/provisioning_tests.rb +174 -0
  358. data/tests/riakcs/requests/usage/usage_tests.rb +29 -0
  359. data/tests/xenserver/models/compute/network_tests.rb +18 -6
  360. data/tests/xenserver/models/compute/vlan_tests.rb +76 -0
  361. data/tests/xenserver/models/compute/vlans_tests.rb +36 -0
  362. data/tests/xenserver/requests/compute/create_network_tests.rb +20 -0
  363. data/tests/xenserver/requests/compute/create_vlan_tests.rb +36 -0
  364. data/tests/xenserver/requests/compute/destroy_network_tests.rb +13 -0
  365. data/tests/xenserver/requests/compute/destroy_vlan_tests.rb +36 -0
  366. metadata +178 -21
  367. data/lib/fog/internet_archive/models/storage/version.rb +0 -36
  368. data/lib/fog/internet_archive/models/storage/versions.rb +0 -38
  369. data/lib/fog/internet_archive/parsers/storage/get_bucket_object_versions.rb +0 -88
  370. data/lib/fog/internet_archive/parsers/storage/get_bucket_versioning.rb +0 -24
  371. data/lib/fog/internet_archive/requests/storage/get_bucket_object_versions.rb +0 -162
  372. data/lib/fog/internet_archive/requests/storage/get_bucket_versioning.rb +0 -69
  373. data/lib/fog/internet_archive/requests/storage/put_bucket_versioning.rb +0 -75
  374. data/lib/fog/openstack/README.identity.md +0 -69
  375. data/lib/fog/providers.rb +0 -34
  376. data/lib/fog/rackspace/examples/compute_v2/README.md +0 -47
  377. data/tests/internet_archive/models/storage/version_tests.rb +0 -52
  378. data/tests/internet_archive/models/storage/versions_tests.rb +0 -56
  379. data/tests/internet_archive/requests/storage/versioning_tests.rb +0 -258
@@ -0,0 +1,46 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # This example demonstrates creating a container with the Rackpace Open Cloud
4
+
5
+ require 'rubygems' #required for Ruby 1.8.x
6
+ require 'fog'
7
+
8
+ def get_user_input(prompt)
9
+ print "#{prompt}: "
10
+ gets.chomp
11
+ end
12
+
13
+ # Use username defined in ~/.fog file, if absent prompt for username.
14
+ # For more details on ~/.fog refer to http://fog.io/about/getting_started.html
15
+ def rackspace_username
16
+ Fog.credentials[:rackspace_username] || get_user_input("Enter Rackspace Username")
17
+ end
18
+
19
+ # Use api key defined in ~/.fog file, if absent prompt for api key
20
+ # For more details on ~/.fog refer to http://fog.io/about/getting_started.html
21
+ def rackspace_api_key
22
+ Fog.credentials[:rackspace_api_key] || get_user_input("Enter Rackspace API key")
23
+ end
24
+
25
+ # create Cloud Files service
26
+ service = Fog::Storage.new({
27
+ :provider => 'Rackspace',
28
+ :rackspace_username => rackspace_username,
29
+ :rackspace_api_key => rackspace_api_key,
30
+ :rackspace_region => :ord #Use Chicago Region
31
+ })
32
+
33
+
34
+ # prompt for directory name
35
+ directory_name = get_user_input "\nEnter name of directory to create"
36
+
37
+ # create directory
38
+ directory = service.directories.create :key => directory_name
39
+
40
+ # reload directory to refresh information
41
+ directory.reload
42
+
43
+ puts "\n Directory #{directory.key} was created."
44
+ puts "To delete the container please execute the delete_directory.rb script\n\n"
45
+
46
+
@@ -0,0 +1,62 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # This example demonstrates deleting a container with the Rackpace Open Cloud
4
+
5
+ require 'rubygems' #required for Ruby 1.8.x
6
+ require 'fog'
7
+
8
+ def get_user_input(prompt)
9
+ print "#{prompt}: "
10
+ gets.chomp
11
+ end
12
+
13
+ def select_directory(directories)
14
+ abort "\nThere are not any directories to delete in the Chicago region. Try running create_directory.rb\n\n" if directories.empty?
15
+
16
+ puts "\nSelect Directory To Delete:\n\n"
17
+ directories.each_with_index do |dir, i|
18
+ puts "\t #{i}. #{dir.key} [#{dir.count} objects]"
19
+ end
20
+
21
+ delete_str = get_user_input "\nEnter Directory Number"
22
+ directories[delete_str.to_i]
23
+ end
24
+
25
+ # Use username defined in ~/.fog file, if absent prompt for username.
26
+ # For more details on ~/.fog refer to http://fog.io/about/getting_started.html
27
+ def rackspace_username
28
+ Fog.credentials[:rackspace_username] || get_user_input("Enter Rackspace Username")
29
+ end
30
+
31
+ # Use api key defined in ~/.fog file, if absent prompt for api key
32
+ # For more details on ~/.fog refer to http://fog.io/about/getting_started.html
33
+ def rackspace_api_key
34
+ Fog.credentials[:rackspace_api_key] || get_user_input("Enter Rackspace API key")
35
+ end
36
+
37
+ # create Cloud Files service
38
+ service = Fog::Storage.new({
39
+ :provider => 'Rackspace',
40
+ :rackspace_username => rackspace_username,
41
+ :rackspace_api_key => rackspace_api_key,
42
+ :rackspace_region => :ord #Use Chicago Region
43
+ })
44
+
45
+ # retrieve directories
46
+ directories = service.directories
47
+
48
+ # prompt for directory
49
+ directory = select_directory(directories)
50
+
51
+ puts "\nNow deleting #{directory.key}"
52
+
53
+ # delete files if necessary
54
+ directory.files.each do |f|
55
+ puts "\tDeleting file #{f.key}"
56
+ f.destroy
57
+ end
58
+
59
+ # delete directory
60
+ directory.destroy
61
+
62
+ puts "\tDone\n\n"
@@ -0,0 +1,70 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # This example demonstrates deleting a file from a container with the Rackpace Open Cloud
4
+
5
+ require 'rubygems' #required for Ruby 1.8.x
6
+ require 'fog'
7
+
8
+ def get_user_input(prompt)
9
+ print "#{prompt}: "
10
+ gets.chomp
11
+ end
12
+
13
+ def select_directory(directories)
14
+ abort "\nThere are not any directories with files to delete in the Chicago region. Try running create_file.rb\n\n" if directories.empty?
15
+
16
+ puts "\nSelect Directory:\n\n"
17
+ directories.each_with_index do |dir, i|
18
+ puts "\t #{i}. #{dir.key} [#{dir.count} objects]"
19
+ end
20
+
21
+ delete_str = get_user_input "\nEnter Directory Number"
22
+ directories[delete_str.to_i]
23
+ end
24
+
25
+ def select_file(files)
26
+ puts "\nSelect File:\n\n"
27
+ files.each_with_index do |file, i|
28
+ puts "\t #{i}. #{file.key}"
29
+ end
30
+
31
+ delete_str = get_user_input "\nEnter File Number"
32
+ files[delete_str.to_i]
33
+ end
34
+
35
+ # Use username defined in ~/.fog file, if absent prompt for username.
36
+ # For more details on ~/.fog refer to http://fog.io/about/getting_started.html
37
+ def rackspace_username
38
+ Fog.credentials[:rackspace_username] || get_user_input("Enter Rackspace Username")
39
+ end
40
+
41
+ # Use api key defined in ~/.fog file, if absent prompt for api key
42
+ # For more details on ~/.fog refer to http://fog.io/about/getting_started.html
43
+ def rackspace_api_key
44
+ Fog.credentials[:rackspace_api_key] || get_user_input("Enter Rackspace API key")
45
+ end
46
+
47
+ # create Cloud Files service
48
+ service = Fog::Storage.new({
49
+ :provider => 'Rackspace',
50
+ :rackspace_username => rackspace_username,
51
+ :rackspace_api_key => rackspace_api_key,
52
+ :rackspace_region => :ord #Use Chicago Region
53
+ })
54
+
55
+ # retrieve directories with files
56
+ directories = service.directories.select {|s| s.count > 0}
57
+
58
+ # prompt for directory
59
+ directory = select_directory(directories)
60
+
61
+ # list of files for directory
62
+ files = directory.files
63
+
64
+ # prompt for file to delete
65
+ file = select_file(files)
66
+
67
+ # delete file
68
+ file.destroy
69
+
70
+ puts "\nFile #{file.key} was successfully deleted"
@@ -0,0 +1,75 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # This example demonstrates downloading a file with the Rackpace Open Cloud
4
+
5
+ require 'rubygems' #required for Ruby 1.8.x
6
+ require 'fog'
7
+
8
+ def get_user_input(prompt)
9
+ print "#{prompt}: "
10
+ gets.chomp
11
+ end
12
+
13
+ def select_directory(directories)
14
+ abort "\nThere are not any directories with files in the Chicago region. Try running create_file.rb\n\n" if directories.empty?
15
+
16
+ puts "\nSelect Directory:\n\n"
17
+ directories.each_with_index do |dir, i|
18
+ puts "\t #{i}. #{dir.key} [#{dir.count} objects]"
19
+ end
20
+
21
+ delete_str = get_user_input "\nEnter Directory Number"
22
+ directories[delete_str.to_i]
23
+ end
24
+
25
+ def select_file(files)
26
+ puts "\nSelect File:\n\n"
27
+ files.each_with_index do |file, i|
28
+ puts "\t #{i}. #{file.key}"
29
+ end
30
+
31
+ delete_str = get_user_input "\nEnter File Number"
32
+ files[delete_str.to_i]
33
+ end
34
+
35
+ # Use username defined in ~/.fog file, if absent prompt for username.
36
+ # For more details on ~/.fog refer to http://fog.io/about/getting_started.html
37
+ def rackspace_username
38
+ Fog.credentials[:rackspace_username] || get_user_input("Enter Rackspace Username")
39
+ end
40
+
41
+ # Use api key defined in ~/.fog file, if absent prompt for api key
42
+ # For more details on ~/.fog refer to http://fog.io/about/getting_started.html
43
+ def rackspace_api_key
44
+ Fog.credentials[:rackspace_api_key] || get_user_input("Enter Rackspace API key")
45
+ end
46
+
47
+ # create Cloud Files service
48
+ service = Fog::Storage.new({
49
+ :provider => 'Rackspace',
50
+ :rackspace_username => rackspace_username,
51
+ :rackspace_api_key => rackspace_api_key,
52
+ :rackspace_region => :ord #Use Chicago Region
53
+ })
54
+
55
+ # retrieve directories with files
56
+ directories = service.directories.select {|s| s.count > 0}
57
+
58
+ # prompt for directory
59
+ directory = select_directory(directories)
60
+
61
+ # list of files for directory
62
+ files = directory.files
63
+
64
+ # prompt for file to download
65
+ file = select_file(files)
66
+
67
+ # download file
68
+ filename = File.join(File.dirname(__FILE__), "downloaded-#{file.key}")
69
+ File.open(filename, 'w') do | f |
70
+ directory.files.get(file.key) do | data, remaining, content_length |
71
+ f.syswrite data
72
+ end
73
+ end
74
+
75
+ puts "\nFile #{file.key} was successfully downloaded to #{filename}"
@@ -0,0 +1 @@
1
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
@@ -0,0 +1,82 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # This example demonstrates creating a file on the CDN network with the Rackpace Open Cloud
4
+
5
+ require 'rubygems' #required for Ruby 1.8.x
6
+ require 'fog'
7
+
8
+ # Use username defined in ~/.fog file, if absent prompt for username.
9
+ # For more details on ~/.fog refer to http://fog.io/about/getting_started.html
10
+ def rackspace_username
11
+ Fog.credentials[:rackspace_username] || get_user_input("Enter Rackspace Username")
12
+ end
13
+
14
+ # Use api key defined in ~/.fog file, if absent prompt for api key
15
+ # For more details on ~/.fog refer to http://fog.io/about/getting_started.html
16
+ def rackspace_api_key
17
+ Fog.credentials[:rackspace_api_key] || get_user_input("Enter Rackspace API key")
18
+ end
19
+
20
+ def print_metadata(object)
21
+ object.metadata.each_pair do |key, value|
22
+ puts "\t#{key}: #{value}"
23
+ end
24
+ puts "\n"
25
+ end
26
+
27
+ # create Cloud Files service
28
+ service = Fog::Storage.new({
29
+ :provider => 'Rackspace',
30
+ :rackspace_username => rackspace_username,
31
+ :rackspace_api_key => rackspace_api_key,
32
+ :rackspace_region => :ord #Use Chicago Region
33
+ })
34
+
35
+
36
+ # create directory
37
+ puts "Creating directory 'metadata-tester'"
38
+ directory = service.directories.create :key => "metadata-tester"
39
+
40
+ # initial metadata
41
+ puts "Initial Container Metadata\n"
42
+ print_metadata directory
43
+
44
+ # adding metadata
45
+ puts "Adding Container Metadata"
46
+ directory.metadata["environment"] = "demo"
47
+ directory.save
48
+ print_metadata directory
49
+
50
+ # update metadata
51
+ puts "Updating Container Metadata"
52
+ directory.metadata["environment"] = "test"
53
+ directory.save
54
+ print_metadata directory
55
+
56
+ # upload file
57
+ puts "Uploading file"
58
+ upload_file = File.join(File.dirname(__FILE__), "lorem.txt")
59
+ file = directory.files.create :key => 'sample.txt', :body => File.open(upload_file, "r")
60
+
61
+ # initial metadata
62
+ puts "Initial File Metadata\n"
63
+ print_metadata file
64
+
65
+ # adding metadata
66
+ puts "Adding File Metadata"
67
+ file.metadata["preview"] = "true"
68
+ file.save
69
+ print_metadata file
70
+
71
+ # update metadata
72
+ puts "Updating File Metadata"
73
+ file.metadata["preview"] = "false"
74
+ file.save
75
+ print_metadata file
76
+
77
+ puts "To delete the directory and file please execute the delete_directory.rb script\n\n"
78
+
79
+
80
+
81
+
82
+
@@ -0,0 +1,45 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # This example demonstrates creating a file on the CDN network with the Rackpace Open Cloud
4
+
5
+ require 'rubygems' #required for Ruby 1.8.x
6
+ require 'fog'
7
+
8
+ def get_user_input(prompt)
9
+ print "#{prompt}: "
10
+ gets.chomp
11
+ end
12
+
13
+ # Use username defined in ~/.fog file, if absent prompt for username.
14
+ # For more details on ~/.fog refer to http://fog.io/about/getting_started.html
15
+ def rackspace_username
16
+ Fog.credentials[:rackspace_username] || get_user_input("Enter Rackspace Username")
17
+ end
18
+
19
+ # Use api key defined in ~/.fog file, if absent prompt for api key
20
+ # For more details on ~/.fog refer to http://fog.io/about/getting_started.html
21
+ def rackspace_api_key
22
+ Fog.credentials[:rackspace_api_key] || get_user_input("Enter Rackspace API key")
23
+ end
24
+
25
+ # create Cloud Files service
26
+ service = Fog::Storage.new({
27
+ :provider => 'Rackspace',
28
+ :rackspace_username => rackspace_username,
29
+ :rackspace_api_key => rackspace_api_key,
30
+ :rackspace_region => :ord #Use Chicago Region
31
+ })
32
+
33
+ # prompt for directory name
34
+ directory_name = get_user_input "\nEnter name of directory to create"
35
+
36
+ # create directory with CDN service
37
+ directory = service.directories.create :key => directory_name, :public => true
38
+
39
+ # upload file
40
+ upload_file = File.join(File.dirname(__FILE__), "lorem.txt")
41
+ file = directory.files.create :key => 'sample.txt', :body => File.open(upload_file, "r")
42
+
43
+ puts "You should not be able to view this file via CDN at #{file.public_url}"
44
+ puts "To delete the container and associated file please execute the delete_directory.rb script\n\n"
45
+
@@ -7,7 +7,7 @@ module Fog
7
7
  UK_ENDPOINT = 'https://lon.identity.api.rackspacecloud.com/v2.0'
8
8
 
9
9
  requires :rackspace_username, :rackspace_api_key
10
- recognizes :rackspace_auth_url
10
+ recognizes :rackspace_auth_url, :rackspace_region
11
11
 
12
12
  model_path 'fog/rackspace/models/identity'
13
13
  model :user
@@ -18,6 +18,7 @@ module Fog
18
18
  collection :credentials
19
19
  model :tenant
20
20
  collection :tenants
21
+ model :service_catalog
21
22
 
22
23
  request_path 'fog/rackspace/requests/identity'
23
24
  request :create_token
@@ -33,15 +34,20 @@ module Fog
33
34
  request :delete_user
34
35
 
35
36
  class Mock
37
+ attr_reader :service_catalog
38
+
36
39
  def request
37
40
  Fog::Mock.not_implemented
38
41
  end
39
42
  end
40
43
 
41
44
  class Real
45
+ attr_reader :service_catalog, :auth_token
46
+
42
47
  def initialize(options={})
43
48
  @rackspace_username = options[:rackspace_username]
44
49
  @rackspace_api_key = options[:rackspace_api_key]
50
+ @rackspace_region = options[:rackspace_region]
45
51
  @rackspace_auth_url = options[:rackspace_auth_url] || US_ENDPOINT
46
52
 
47
53
  uri = URI.parse(@rackspace_auth_url)
@@ -55,7 +61,7 @@ module Fog
55
61
 
56
62
  authenticate
57
63
  end
58
-
64
+
59
65
  def request(params)
60
66
  begin
61
67
  parameters = params.merge!({
@@ -72,9 +78,10 @@ module Fog
72
78
  response
73
79
  end
74
80
  end
75
-
81
+
76
82
  def authenticate
77
83
  data = self.create_token(@rackspace_username, @rackspace_api_key).body
84
+ @service_catalog = ServiceCatalog.from_response(self, data)
78
85
  @auth_token = data['access']['token']['id']
79
86
  end
80
87
  end
@@ -9,14 +9,16 @@ module Fog
9
9
  class InternalServerError < Fog::Rackspace::Errors::InternalServerError; end
10
10
  class BadRequest < Fog::Rackspace::Errors::BadRequest; end
11
11
 
12
- DFW_ENDPOINT = 'https://dfw.loadbalancers.api.rackspacecloud.com/v1.0/'
13
- ORD_ENDPOINT = 'https://ord.loadbalancers.api.rackspacecloud.com/v1.0/'
14
- LON_ENDPOINT = 'https://lon.loadbalancers.api.rackspacecloud.com/v1.0/'
12
+ DFW_ENDPOINT = 'https://dfw.loadbalancers.api.rackspacecloud.com/v1.0'
13
+ ORD_ENDPOINT = 'https://ord.loadbalancers.api.rackspacecloud.com/v1.0'
14
+ LON_ENDPOINT = 'https://lon.loadbalancers.api.rackspacecloud.com/v1.0'
15
15
 
16
16
  requires :rackspace_api_key, :rackspace_username
17
17
  recognizes :rackspace_auth_url
18
18
  recognizes :rackspace_auth_token
19
19
  recognizes :rackspace_lb_endpoint
20
+ recognizes :rackspace_load_balancers_url
21
+ recognizes :rackspace_region
20
22
 
21
23
  model_path 'fog/rackspace/models/load_balancers'
22
24
  collection :load_balancers
@@ -87,7 +89,7 @@ module Fog
87
89
 
88
90
  end
89
91
 
90
- class Mock
92
+ class Mock < Fog::Rackspace::Service
91
93
  include Shared
92
94
 
93
95
  def initialize(options={})
@@ -98,7 +100,7 @@ module Fog
98
100
 
99
101
  end
100
102
 
101
- class Real
103
+ class Real < Fog::Rackspace::Service
102
104
  include Shared
103
105
 
104
106
  def initialize(options={})
@@ -107,16 +109,13 @@ module Fog
107
109
  @rackspace_auth_url = options[:rackspace_auth_url]
108
110
  @rackspace_must_reauthenticate = false
109
111
  @connection_options = options[:connection_options] || {}
110
- uri = URI.parse(options[:rackspace_lb_endpoint] || DFW_ENDPOINT)
111
- @host = uri.host
112
- @persistent = options[:persistent] || false
113
- @path = uri.path.end_with?('/') ? uri.path.chop : uri.path
114
- @port = uri.port
115
- @scheme = uri.scheme
112
+
113
+ setup_custom_endpoint(options)
116
114
 
117
115
  authenticate
118
116
 
119
- @connection = Fog::Connection.new(uri.to_s, @persistent, @connection_options)
117
+ @persistent = options[:persistent] || false
118
+ @connection = Fog::Connection.new(endpoint_uri.to_s, @persistent, @connection_options)
120
119
  end
121
120
 
122
121
  def request(params)
@@ -126,10 +125,10 @@ module Fog
126
125
  :headers => {
127
126
  'Content-Type' => 'application/json',
128
127
  'Accept' => 'application/json',
129
- 'X-Auth-Token' => @auth_token
128
+ 'X-Auth-Token' => auth_token
130
129
  }.merge!(params[:headers] || {}),
131
- :host => @host,
132
- :path => "#{@path}/#{params[:path]}"
130
+ :host => endpoint_uri.host,
131
+ :path => "#{endpoint_uri.path}/#{params[:path]}"
133
132
  }))
134
133
  rescue Excon::Errors::NotFound => error
135
134
  raise NotFound.slurp error
@@ -148,15 +147,74 @@ module Fog
148
147
 
149
148
  def authenticate
150
149
  options = {
151
- :rackspace_api_key => @rackspace_api_key,
150
+ :rackspace_api_key => @rackspace_api_key,
152
151
  :rackspace_username => @rackspace_username,
153
152
  :rackspace_auth_url => @rackspace_auth_url
154
153
  }
154
+ super(options)
155
+ end
156
+
157
+ def service_name
158
+ :cloudLoadBalancers
159
+ end
160
+
161
+ def region
162
+ @rackspace_region
163
+ end
164
+
165
+ def endpoint_uri(service_endpoint_url=nil)
166
+ @uri = super(@rackspace_endpoint || service_endpoint_url, :rackspace_load_balancers_url)
167
+ end
168
+
169
+ private
170
+
171
+ def setup_custom_endpoint(options)
172
+ @rackspace_endpoint = Fog::Rackspace.normalize_url(options[:rackspace_load_balancers_url] || options[:rackspace_lb_endpoint])
173
+
174
+ if v2_authentication?
175
+ case @rackspace_endpoint
176
+ when DFW_ENDPOINT
177
+ @rackspace_endpoint = nil
178
+ @rackspace_region = :dfw
179
+ when ORD_ENDPOINT
180
+ @rackspace_endpoint = nil
181
+ @rackspace_region = :ord
182
+ when LON_ENDPOINT
183
+ @rackspace_endpoint = nil
184
+ @rackspace_region = :lon
185
+ else
186
+ # we are actually using a custom endpoint
187
+ @rackspace_region = options[:rackspace_region] || :dfw
188
+ end
189
+ else
190
+ #if we are using auth1 and the endpoint is not set, default to DFW_ENDPOINT for historical reasons
191
+ @rackspace_endpoint ||= DFW_ENDPOINT
192
+ end
193
+ end
194
+
195
+ def deprecation_warnings(options)
196
+ Fog::Logger.deprecation("The :rackspace_lb_endpoint option is deprecated. Please use :rackspace_load_balancers_url for custom endpoints") if options[:rackspace_lb_endpoint]
197
+
198
+ if [DFW_ENDPOINT, ORD_ENDPOINT, LON_ENDPOINT].include?(@rackspace_endpoint) && v2_authentication?
199
+ regions = @identity_service.service_catalog.display_service_regions(service_name)
200
+ Fog::Logger.deprecation("Please specify region using :rackspace_region rather than :rackspace_endpoint. Valid regions for :rackspace_region are #{regions}.")
201
+ end
202
+ end
203
+
204
+ def append_tenant_v1(credentials)
205
+ account_id = credentials['X-Server-Management-Url'].match(/.*\/([\d]+)$/)[1]
206
+
207
+ endpoint = @rackspace_endpoint || credentials['X-Server-Management-Url'] || DFW_ENDPOINT
208
+ @uri = URI.parse(endpoint)
209
+ @uri.path = "#{@uri.path}/#{account_id}"
210
+ end
211
+
212
+ def authenticate_v1(options)
155
213
  credentials = Fog::Rackspace.authenticate(options, @connection_options)
214
+ append_tenant_v1 credentials
156
215
  @auth_token = credentials['X-Auth-Token']
157
- account_id = credentials['X-Server-Management-Url'].match(/.*\/([\d]+)$/)[1]
158
- @path = "#{@path}/#{account_id}"
159
216
  end
217
+
160
218
  end
161
219
  end
162
220
  end