fog 1.9.0 → 1.10.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (548) hide show
  1. data/Gemfile +1 -1
  2. data/README.md +1 -1
  3. data/changelog.txt +743 -0
  4. data/fog.gemspec +3 -5
  5. data/lib/fog/aws.rb +1 -0
  6. data/lib/fog/aws/credential_fetcher.rb +1 -1
  7. data/lib/fog/aws/data_pipeline.rb +114 -0
  8. data/lib/fog/aws/dynamodb.rb +1 -1
  9. data/lib/fog/aws/models/compute/flavors.rb +1 -1
  10. data/lib/fog/aws/models/compute/spot_request.rb +2 -0
  11. data/lib/fog/aws/models/data_pipeline/pipeline.rb +67 -0
  12. data/lib/fog/aws/models/data_pipeline/pipelines.rb +36 -0
  13. data/lib/fog/aws/parsers/cloud_watch/list_metrics.rb +1 -1
  14. data/lib/fog/aws/parsers/compute/describe_instances.rb +1 -1
  15. data/lib/fog/aws/parsers/compute/spot_instance_requests.rb +2 -0
  16. data/lib/fog/aws/requests/compute/request_spot_instances.rb +1 -0
  17. data/lib/fog/aws/requests/data_pipeline/activate_pipeline.rb +35 -0
  18. data/lib/fog/aws/requests/data_pipeline/create_pipeline.rb +41 -0
  19. data/lib/fog/aws/requests/data_pipeline/delete_pipeline.rb +35 -0
  20. data/lib/fog/aws/requests/data_pipeline/describe_pipelines.rb +36 -0
  21. data/lib/fog/aws/requests/data_pipeline/list_pipelines.rb +36 -0
  22. data/lib/fog/aws/requests/data_pipeline/put_pipeline_definition.rb +72 -0
  23. data/lib/fog/aws/requests/rds/describe_db_instances.rb +8 -9
  24. data/lib/fog/aws/requests/storage/get_service.rb +1 -2
  25. data/lib/fog/aws/requests/storage/list_multipart_uploads.rb +3 -3
  26. data/lib/fog/aws/requests/storage/put_bucket_policy.rb +2 -2
  27. data/lib/fog/aws/storage.rb +1 -1
  28. data/lib/fog/bin.rb +2 -1
  29. data/lib/fog/bin/aws.rb +4 -0
  30. data/lib/fog/bin/bluebox.rb +2 -0
  31. data/lib/fog/bin/dreamhost.rb +31 -0
  32. data/lib/fog/bin/hp.rb +7 -0
  33. data/lib/fog/bin/internet_archive.rb +34 -0
  34. data/lib/fog/bin/openstack.rb +17 -2
  35. data/lib/fog/bluebox.rb +1 -0
  36. data/lib/fog/bluebox/blb.rb +85 -0
  37. data/lib/fog/bluebox/models/blb/lb_application.rb +32 -0
  38. data/lib/fog/bluebox/models/blb/lb_applications.rb +26 -0
  39. data/lib/fog/bluebox/models/blb/lb_backend.rb +22 -0
  40. data/lib/fog/bluebox/models/blb/lb_backends.rb +30 -0
  41. data/lib/fog/bluebox/models/blb/lb_service.rb +35 -0
  42. data/lib/fog/bluebox/models/blb/lb_services.rb +29 -0
  43. data/lib/fog/bluebox/requests/blb/add_machine_to_lb_application.rb +33 -0
  44. data/lib/fog/bluebox/requests/blb/add_machine_to_lb_backend.rb +31 -0
  45. data/lib/fog/bluebox/requests/blb/get_lb_application.rb +33 -0
  46. data/lib/fog/bluebox/requests/blb/get_lb_applications.rb +31 -0
  47. data/lib/fog/bluebox/requests/blb/get_lb_backend.rb +36 -0
  48. data/lib/fog/bluebox/requests/blb/get_lb_backends.rb +36 -0
  49. data/lib/fog/bluebox/requests/blb/get_lb_machine.rb +35 -0
  50. data/lib/fog/bluebox/requests/blb/get_lb_machines.rb +35 -0
  51. data/lib/fog/bluebox/requests/blb/get_lb_service.rb +36 -0
  52. data/lib/fog/bluebox/requests/blb/get_lb_services.rb +36 -0
  53. data/lib/fog/bluebox/requests/blb/remove_machine_from_lb_backend.rb +28 -0
  54. data/lib/fog/bluebox/requests/blb/update_lb_backend_machine.rb +29 -0
  55. data/lib/fog/brightbox/compute.rb +1 -0
  56. data/lib/fog/brightbox/requests/compute/create_firewall_policy.rb +1 -0
  57. data/lib/fog/brightbox/requests/compute/update_firewall_policy.rb +25 -0
  58. data/lib/fog/brightbox/requests/compute/update_server.rb +1 -0
  59. data/lib/fog/cdn.rb +5 -12
  60. data/lib/fog/compute.rb +7 -68
  61. data/lib/fog/core/errors.rb +5 -1
  62. data/lib/fog/core/scp.rb +1 -0
  63. data/lib/fog/core/ssh.rb +1 -0
  64. data/lib/fog/dns.rb +7 -27
  65. data/lib/fog/dreamhost.rb +11 -0
  66. data/lib/fog/dreamhost/dns.rb +86 -0
  67. data/lib/fog/dreamhost/examples/dns/getting_started.md +105 -0
  68. data/lib/fog/dreamhost/models/dns/record.rb +35 -0
  69. data/lib/fog/dreamhost/models/dns/records.rb +38 -0
  70. data/lib/fog/dreamhost/models/dns/zone.rb +59 -0
  71. data/lib/fog/dreamhost/models/dns/zones.rb +41 -0
  72. data/lib/fog/dreamhost/requests/dns/create_record.rb +32 -0
  73. data/lib/fog/dreamhost/requests/dns/delete_record.rb +31 -0
  74. data/lib/fog/dreamhost/requests/dns/list_records.rb +25 -0
  75. data/lib/fog/ecloud/models/compute/detached_disks.rb +1 -5
  76. data/lib/fog/ecloud/models/compute/internet_services.rb +1 -5
  77. data/lib/fog/ecloud/models/compute/nodes.rb +1 -5
  78. data/lib/fog/ecloud/models/compute/public_ips.rb +1 -5
  79. data/lib/fog/ecloud/models/compute/servers.rb +2 -6
  80. data/lib/fog/ecloud/requests/compute/get_detached_disk.rb +1 -1
  81. data/lib/fog/ecloud/requests/compute/get_internet_service.rb +1 -1
  82. data/lib/fog/ecloud/requests/compute/get_node.rb +1 -1
  83. data/lib/fog/ecloud/requests/compute/get_public_ip.rb +1 -1
  84. data/lib/fog/ecloud/requests/compute/get_server.rb +1 -1
  85. data/lib/fog/ecloud/requests/compute/virtual_machine_create_from_template.rb +1 -1
  86. data/lib/fog/glesys/compute.rb +5 -1
  87. data/lib/fog/glesys/models/compute/ip.rb +47 -46
  88. data/lib/fog/glesys/models/compute/ips.rb +95 -12
  89. data/lib/fog/glesys/models/compute/server.rb +66 -5
  90. data/lib/fog/glesys/models/compute/servers.rb +7 -1
  91. data/lib/fog/glesys/models/compute/template.rb +8 -16
  92. data/lib/fog/glesys/models/compute/templates.rb +23 -5
  93. data/lib/fog/glesys/requests/compute/ip_details.rb +2 -2
  94. data/lib/fog/glesys/requests/compute/server_details.rb +2 -2
  95. data/lib/fog/glesys/requests/compute/template_list.rb +2 -2
  96. data/lib/fog/hp.rb +56 -26
  97. data/lib/fog/hp/CHANGELOG.hp +113 -0
  98. data/lib/fog/hp/README_HP.rdoc +7 -6
  99. data/lib/fog/hp/block_storage.rb +169 -0
  100. data/lib/fog/hp/cdn.rb +29 -7
  101. data/lib/fog/hp/compute.rb +88 -17
  102. data/lib/fog/hp/models/block_storage/bootable_volumes.rb +28 -0
  103. data/lib/fog/hp/models/block_storage/snapshot.rb +56 -0
  104. data/lib/fog/hp/models/block_storage/snapshots.rb +29 -0
  105. data/lib/fog/hp/models/block_storage/volume.rb +102 -0
  106. data/lib/fog/hp/models/block_storage/volumes.rb +28 -0
  107. data/lib/fog/hp/models/compute/address.rb +0 -1
  108. data/lib/fog/hp/models/compute/image.rb +43 -4
  109. data/lib/fog/hp/models/compute/images.rb +0 -5
  110. data/lib/fog/hp/models/compute/key_pair.rb +0 -5
  111. data/lib/fog/hp/models/compute/meta.rb +29 -0
  112. data/lib/fog/hp/models/compute/metadata.rb +79 -0
  113. data/lib/fog/hp/models/compute/server.rb +84 -20
  114. data/lib/fog/hp/models/meta_parent.rb +33 -0
  115. data/lib/fog/hp/models/storage/directories.rb +34 -9
  116. data/lib/fog/hp/models/storage/directory.rb +111 -26
  117. data/lib/fog/hp/models/storage/file.rb +10 -0
  118. data/lib/fog/hp/models/storage/files.rb +8 -0
  119. data/lib/fog/hp/models/storage/shared_directories.rb +55 -0
  120. data/lib/fog/hp/models/storage/shared_directory.rb +39 -0
  121. data/lib/fog/hp/models/storage/shared_file.rb +67 -0
  122. data/lib/fog/hp/models/storage/shared_files.rb +64 -0
  123. data/lib/fog/hp/requests/block_storage/create_snapshot.rb +76 -0
  124. data/lib/fog/hp/requests/block_storage/create_volume.rb +87 -0
  125. data/lib/fog/hp/requests/block_storage/delete_snapshot.rb +38 -0
  126. data/lib/fog/hp/requests/block_storage/delete_volume.rb +38 -0
  127. data/lib/fog/hp/requests/block_storage/get_bootable_volume_details.rb +59 -0
  128. data/lib/fog/hp/requests/block_storage/get_snapshot_details.rb +54 -0
  129. data/lib/fog/hp/requests/block_storage/get_volume_details.rb +58 -0
  130. data/lib/fog/hp/requests/block_storage/list_bootable_volumes.rb +53 -0
  131. data/lib/fog/hp/requests/block_storage/list_snapshots.rb +48 -0
  132. data/lib/fog/hp/requests/block_storage/list_volumes.rb +52 -0
  133. data/lib/fog/hp/requests/compute/attach_volume.rb +78 -0
  134. data/lib/fog/hp/requests/compute/create_image.rb +5 -8
  135. data/lib/fog/hp/requests/compute/create_persistent_server.rb +168 -0
  136. data/lib/fog/hp/requests/compute/create_server.rb +36 -20
  137. data/lib/fog/hp/requests/compute/delete_meta.rb +55 -0
  138. data/lib/fog/hp/requests/compute/delete_security_group_rule.rb +4 -4
  139. data/lib/fog/hp/requests/compute/detach_volume.rb +47 -0
  140. data/lib/fog/hp/requests/compute/get_console_output.rb +43 -0
  141. data/lib/fog/hp/requests/compute/get_meta.rb +57 -0
  142. data/lib/fog/hp/requests/compute/get_windows_password.rb +43 -0
  143. data/lib/fog/hp/requests/compute/list_metadata.rb +56 -0
  144. data/lib/fog/hp/requests/compute/list_server_volumes.rb +49 -0
  145. data/lib/fog/hp/requests/compute/set_metadata.rb +60 -0
  146. data/lib/fog/hp/requests/compute/update_meta.rb +61 -0
  147. data/lib/fog/hp/requests/compute/update_metadata.rb +60 -0
  148. data/lib/fog/hp/requests/storage/delete_shared_object.rb +38 -0
  149. data/lib/fog/hp/requests/storage/get_object.rb +12 -10
  150. data/lib/fog/hp/requests/storage/get_object_temp_url.rb +31 -0
  151. data/lib/fog/hp/requests/storage/get_shared_container.rb +75 -0
  152. data/lib/fog/hp/requests/storage/get_shared_object.rb +66 -0
  153. data/lib/fog/hp/requests/storage/head_container.rb +1 -0
  154. data/lib/fog/hp/requests/storage/head_object.rb +1 -0
  155. data/lib/fog/hp/requests/storage/head_shared_container.rb +45 -0
  156. data/lib/fog/hp/requests/storage/head_shared_object.rb +39 -0
  157. data/lib/fog/hp/requests/storage/put_container.rb +6 -6
  158. data/lib/fog/hp/requests/storage/put_object.rb +12 -1
  159. data/lib/fog/hp/requests/storage/put_shared_object.rb +85 -0
  160. data/lib/fog/hp/storage.rb +175 -33
  161. data/lib/fog/identity.rb +5 -4
  162. data/lib/fog/image.rb +5 -6
  163. data/lib/fog/internet_archive.rb +290 -0
  164. data/lib/fog/internet_archive/models/storage/directories.rb +43 -0
  165. data/lib/fog/internet_archive/models/storage/directory.rb +126 -0
  166. data/lib/fog/internet_archive/models/storage/file.rb +286 -0
  167. data/lib/fog/internet_archive/models/storage/files.rb +122 -0
  168. data/lib/fog/internet_archive/models/storage/version.rb +36 -0
  169. data/lib/fog/internet_archive/models/storage/versions.rb +38 -0
  170. data/lib/fog/internet_archive/parsers/storage/access_control_list.rb +46 -0
  171. data/lib/fog/internet_archive/parsers/storage/complete_multipart_upload.rb +24 -0
  172. data/lib/fog/internet_archive/parsers/storage/copy_object.rb +22 -0
  173. data/lib/fog/internet_archive/parsers/storage/cors_configuration.rb +41 -0
  174. data/lib/fog/internet_archive/parsers/storage/delete_multiple_objects.rb +50 -0
  175. data/lib/fog/internet_archive/parsers/storage/get_bucket.rb +62 -0
  176. data/lib/fog/internet_archive/parsers/storage/get_bucket_lifecycle.rb +66 -0
  177. data/lib/fog/internet_archive/parsers/storage/get_bucket_location.rb +20 -0
  178. data/lib/fog/internet_archive/parsers/storage/get_bucket_logging.rb +40 -0
  179. data/lib/fog/internet_archive/parsers/storage/get_bucket_object_versions.rb +88 -0
  180. data/lib/fog/internet_archive/parsers/storage/get_bucket_versioning.rb +24 -0
  181. data/lib/fog/internet_archive/parsers/storage/get_bucket_website.rb +26 -0
  182. data/lib/fog/internet_archive/parsers/storage/get_request_payment.rb +20 -0
  183. data/lib/fog/internet_archive/parsers/storage/get_service.rb +32 -0
  184. data/lib/fog/internet_archive/parsers/storage/initiate_multipart_upload.rb +24 -0
  185. data/lib/fog/internet_archive/parsers/storage/list_multipart_uploads.rb +56 -0
  186. data/lib/fog/internet_archive/parsers/storage/list_parts.rb +40 -0
  187. data/lib/fog/internet_archive/requests/storage/abort_multipart_upload.rb +28 -0
  188. data/lib/fog/internet_archive/requests/storage/acl_utils.rb +62 -0
  189. data/lib/fog/internet_archive/requests/storage/complete_multipart_upload.rb +48 -0
  190. data/lib/fog/internet_archive/requests/storage/copy_object.rb +81 -0
  191. data/lib/fog/internet_archive/requests/storage/cors_utils.rb +41 -0
  192. data/lib/fog/internet_archive/requests/storage/delete_bucket.rb +47 -0
  193. data/lib/fog/internet_archive/requests/storage/delete_bucket_cors.rb +29 -0
  194. data/lib/fog/internet_archive/requests/storage/delete_bucket_lifecycle.rb +27 -0
  195. data/lib/fog/internet_archive/requests/storage/delete_bucket_policy.rb +29 -0
  196. data/lib/fog/internet_archive/requests/storage/delete_bucket_website.rb +29 -0
  197. data/lib/fog/internet_archive/requests/storage/delete_multiple_objects.rb +167 -0
  198. data/lib/fog/internet_archive/requests/storage/delete_object.rb +118 -0
  199. data/lib/fog/internet_archive/requests/storage/get_bucket.rb +112 -0
  200. data/lib/fog/internet_archive/requests/storage/get_bucket_acl.rb +69 -0
  201. data/lib/fog/internet_archive/requests/storage/get_bucket_cors.rb +65 -0
  202. data/lib/fog/internet_archive/requests/storage/get_bucket_lifecycle.rb +38 -0
  203. data/lib/fog/internet_archive/requests/storage/get_bucket_location.rb +58 -0
  204. data/lib/fog/internet_archive/requests/storage/get_bucket_logging.rb +47 -0
  205. data/lib/fog/internet_archive/requests/storage/get_bucket_object_versions.rb +162 -0
  206. data/lib/fog/internet_archive/requests/storage/get_bucket_policy.rb +34 -0
  207. data/lib/fog/internet_archive/requests/storage/get_bucket_versioning.rb +69 -0
  208. data/lib/fog/internet_archive/requests/storage/get_bucket_website.rb +40 -0
  209. data/lib/fog/internet_archive/requests/storage/get_object.rb +188 -0
  210. data/lib/fog/internet_archive/requests/storage/get_object_acl.rb +80 -0
  211. data/lib/fog/internet_archive/requests/storage/get_object_http_url.rb +55 -0
  212. data/lib/fog/internet_archive/requests/storage/get_object_https_url.rb +37 -0
  213. data/lib/fog/internet_archive/requests/storage/get_object_torrent.rb +47 -0
  214. data/lib/fog/internet_archive/requests/storage/get_object_url.rb +55 -0
  215. data/lib/fog/internet_archive/requests/storage/get_request_payment.rb +49 -0
  216. data/lib/fog/internet_archive/requests/storage/get_service.rb +55 -0
  217. data/lib/fog/internet_archive/requests/storage/head_object.rb +66 -0
  218. data/lib/fog/internet_archive/requests/storage/initiate_multipart_upload.rb +44 -0
  219. data/lib/fog/internet_archive/requests/storage/list_multipart_uploads.rb +55 -0
  220. data/lib/fog/internet_archive/requests/storage/list_parts.rb +55 -0
  221. data/lib/fog/internet_archive/requests/storage/post_object_hidden_fields.rb +38 -0
  222. data/lib/fog/internet_archive/requests/storage/put_bucket.rb +74 -0
  223. data/lib/fog/internet_archive/requests/storage/put_bucket_acl.rb +71 -0
  224. data/lib/fog/internet_archive/requests/storage/put_bucket_cors.rb +49 -0
  225. data/lib/fog/internet_archive/requests/storage/put_bucket_lifecycle.rb +77 -0
  226. data/lib/fog/internet_archive/requests/storage/put_bucket_logging.rb +81 -0
  227. data/lib/fog/internet_archive/requests/storage/put_bucket_policy.rb +28 -0
  228. data/lib/fog/internet_archive/requests/storage/put_bucket_versioning.rb +75 -0
  229. data/lib/fog/internet_archive/requests/storage/put_bucket_website.rb +64 -0
  230. data/lib/fog/internet_archive/requests/storage/put_object.rb +113 -0
  231. data/lib/fog/internet_archive/requests/storage/put_object_acl.rb +80 -0
  232. data/lib/fog/internet_archive/requests/storage/put_object_url.rb +48 -0
  233. data/lib/fog/internet_archive/requests/storage/put_request_payment.rb +49 -0
  234. data/lib/fog/internet_archive/requests/storage/sync_clock.rb +28 -0
  235. data/lib/fog/internet_archive/requests/storage/upload_part.rb +41 -0
  236. data/lib/fog/internet_archive/signaturev4.rb +73 -0
  237. data/lib/fog/internet_archive/storage.rb +402 -0
  238. data/lib/fog/joyent/models/compute/server.rb +1 -1
  239. data/lib/fog/joyent/requests/compute/resize_machine.rb +2 -0
  240. data/lib/fog/libvirt/models/compute/volume.rb +1 -1
  241. data/lib/fog/network.rb +5 -6
  242. data/lib/fog/openstack.rb +10 -0
  243. data/lib/fog/openstack/compute.rb +11 -4
  244. data/lib/fog/openstack/identity.rb +5 -2
  245. data/lib/fog/openstack/models/compute/images.rb +2 -1
  246. data/lib/fog/openstack/models/compute/metadata.rb +4 -5
  247. data/lib/fog/openstack/models/compute/server.rb +36 -21
  248. data/lib/fog/openstack/models/identity/role.rb +1 -1
  249. data/lib/fog/openstack/models/network/floating_ip.rb +1 -1
  250. data/lib/fog/openstack/models/network/floating_ips.rb +2 -2
  251. data/lib/fog/openstack/models/network/network.rb +8 -0
  252. data/lib/fog/openstack/models/storage/directories.rb +39 -0
  253. data/lib/fog/openstack/models/storage/directory.rb +50 -0
  254. data/lib/fog/openstack/models/storage/file.rb +150 -0
  255. data/lib/fog/openstack/models/storage/files.rb +94 -0
  256. data/lib/fog/openstack/requests/compute/allocate_address.rb +1 -1
  257. data/lib/fog/openstack/requests/compute/delete_meta.rb +43 -0
  258. data/lib/fog/openstack/requests/compute/get_limits.rb +1 -1
  259. data/lib/fog/openstack/requests/compute/get_snapshot_details.rb +1 -1
  260. data/lib/fog/openstack/requests/compute/get_volume_details.rb +1 -1
  261. data/lib/fog/openstack/requests/compute/list_servers.rb +1 -1
  262. data/lib/fog/openstack/requests/compute/list_tenants.rb +1 -0
  263. data/lib/fog/openstack/requests/compute/remove_fixed_ip.rb +1 -1
  264. data/lib/fog/openstack/requests/compute/update_meta.rb +46 -0
  265. data/lib/fog/openstack/requests/compute/update_server.rb +1 -1
  266. data/lib/fog/openstack/requests/identity/delete_user_role.rb +2 -2
  267. data/lib/fog/openstack/requests/identity/get_user_by_name.rb +2 -2
  268. data/lib/fog/openstack/requests/image/create_image.rb +1 -1
  269. data/lib/fog/openstack/requests/network/associate_floating_ip.rb +3 -3
  270. data/lib/fog/openstack/requests/network/create_floating_ip.rb +3 -3
  271. data/lib/fog/openstack/requests/network/delete_floating_ip.rb +1 -1
  272. data/lib/fog/openstack/requests/network/disassociate_floating_ip.rb +3 -3
  273. data/lib/fog/openstack/requests/network/get_floating_ip.rb +1 -1
  274. data/lib/fog/openstack/requests/network/list_floating_ips.rb +1 -1
  275. data/lib/fog/openstack/requests/storage/copy_object.rb +27 -0
  276. data/lib/fog/openstack/requests/storage/delete_container.rb +22 -0
  277. data/lib/fog/openstack/requests/storage/delete_object.rb +23 -0
  278. data/lib/fog/openstack/requests/storage/get_container.rb +44 -0
  279. data/lib/fog/openstack/requests/storage/get_containers.rb +33 -0
  280. data/lib/fog/openstack/requests/storage/get_object.rb +29 -0
  281. data/lib/fog/openstack/requests/storage/get_object_https_url.rb +51 -0
  282. data/lib/fog/openstack/requests/storage/head_container.rb +28 -0
  283. data/lib/fog/openstack/requests/storage/head_containers.rb +25 -0
  284. data/lib/fog/openstack/requests/storage/head_object.rb +23 -0
  285. data/lib/fog/openstack/requests/storage/post_set_meta_temp_url_key.rb +37 -0
  286. data/lib/fog/openstack/requests/storage/put_container.rb +22 -0
  287. data/lib/fog/openstack/requests/storage/put_object.rb +30 -0
  288. data/lib/fog/openstack/requests/storage/put_object_manifest.rb +25 -0
  289. data/lib/fog/openstack/storage.rb +159 -0
  290. data/lib/fog/openstack/volume.rb +4 -2
  291. data/lib/fog/ovirt/compute.rb +1 -0
  292. data/lib/fog/ovirt/models/compute/server.rb +2 -2
  293. data/lib/fog/ovirt/models/compute/volume.rb +1 -0
  294. data/lib/fog/ovirt/requests/compute/get_api_version.rb +16 -0
  295. data/lib/fog/providers.rb +2 -1
  296. data/lib/fog/rackspace/block_storage.rb +1 -0
  297. data/lib/fog/rackspace/cdn.rb +61 -7
  298. data/lib/fog/rackspace/compute_v2.rb +16 -3
  299. data/lib/fog/rackspace/databases.rb +4 -3
  300. data/lib/fog/rackspace/docs/compute_v2.md +663 -0
  301. data/lib/fog/rackspace/docs/getting_started.md +9 -9
  302. data/lib/fog/rackspace/examples/README.md +47 -0
  303. data/lib/fog/rackspace/examples/compute_v2/README.md +47 -0
  304. data/lib/fog/rackspace/examples/compute_v2/create_image.rb +61 -0
  305. data/lib/fog/rackspace/examples/compute_v2/create_server.rb +89 -0
  306. data/lib/fog/rackspace/examples/compute_v2/delete_image.rb +61 -0
  307. data/lib/fog/rackspace/examples/compute_v2/delete_server.rb +56 -0
  308. data/lib/fog/rackspace/examples/compute_v2/detach_volume.rb +93 -0
  309. data/lib/fog/rackspace/examples/compute_v2/resize_server.rb +106 -0
  310. data/lib/fog/rackspace/examples/compute_v2/server_attachments.rb +69 -0
  311. data/lib/fog/rackspace/examples/compute_v2/server_metadata.rb +85 -0
  312. data/lib/fog/rackspace/identity.rb +1 -1
  313. data/lib/fog/rackspace/load_balancers.rb +2 -2
  314. data/lib/fog/rackspace/mock_data.rb +114 -96
  315. data/lib/fog/rackspace/models/compute_v2/attachment.rb +16 -0
  316. data/lib/fog/rackspace/models/compute_v2/attachments.rb +6 -0
  317. data/lib/fog/rackspace/models/compute_v2/flavor.rb +18 -0
  318. data/lib/fog/rackspace/models/compute_v2/flavors.rb +9 -1
  319. data/lib/fog/rackspace/models/compute_v2/image.rb +52 -7
  320. data/lib/fog/rackspace/models/compute_v2/images.rb +9 -0
  321. data/lib/fog/rackspace/models/compute_v2/meta_parent.rb +9 -0
  322. data/lib/fog/rackspace/models/compute_v2/metadata.rb +30 -7
  323. data/lib/fog/rackspace/models/compute_v2/metadatum.rb +4 -0
  324. data/lib/fog/rackspace/models/compute_v2/network.rb +27 -0
  325. data/lib/fog/rackspace/models/compute_v2/networks.rb +23 -0
  326. data/lib/fog/rackspace/models/compute_v2/server.rb +235 -24
  327. data/lib/fog/rackspace/models/compute_v2/servers.rb +19 -1
  328. data/lib/fog/rackspace/models/dns/zones.rb +35 -2
  329. data/lib/fog/rackspace/models/identity/credentials.rb +3 -2
  330. data/lib/fog/rackspace/models/storage/account.rb +24 -0
  331. data/lib/fog/rackspace/models/storage/directories.rb +3 -0
  332. data/lib/fog/rackspace/models/storage/directory.rb +68 -39
  333. data/lib/fog/rackspace/models/storage/file.rb +38 -67
  334. data/lib/fog/rackspace/models/storage/files.rb +11 -4
  335. data/lib/fog/rackspace/models/storage/metadata.rb +129 -0
  336. data/lib/fog/rackspace/requests/cdn/delete_object.rb +37 -0
  337. data/lib/fog/rackspace/requests/cdn/get_containers.rb +34 -0
  338. data/lib/fog/rackspace/requests/cdn/head_container.rb +24 -0
  339. data/lib/fog/rackspace/requests/cdn/post_container.rb +21 -0
  340. data/lib/fog/rackspace/requests/cdn/put_container.rb +21 -0
  341. data/lib/fog/rackspace/requests/compute_v2/attach_volume.rb +13 -0
  342. data/lib/fog/rackspace/requests/compute_v2/change_server_password.rb +7 -0
  343. data/lib/fog/rackspace/requests/compute_v2/confirm_resize_server.rb +9 -0
  344. data/lib/fog/rackspace/requests/compute_v2/create_image.rb +9 -5
  345. data/lib/fog/rackspace/requests/compute_v2/create_network.rb +36 -0
  346. data/lib/fog/rackspace/requests/compute_v2/create_server.rb +38 -0
  347. data/lib/fog/rackspace/requests/compute_v2/delete_attachment.rb +5 -0
  348. data/lib/fog/rackspace/requests/compute_v2/delete_image.rb +2 -4
  349. data/lib/fog/rackspace/requests/compute_v2/delete_metadata_item.rb +6 -0
  350. data/lib/fog/rackspace/requests/compute_v2/delete_network.rb +21 -0
  351. data/lib/fog/rackspace/requests/compute_v2/delete_server.rb +4 -0
  352. data/lib/fog/rackspace/requests/compute_v2/get_attachment.rb +12 -0
  353. data/lib/fog/rackspace/requests/compute_v2/get_flavor.rb +14 -0
  354. data/lib/fog/rackspace/requests/compute_v2/get_image.rb +18 -0
  355. data/lib/fog/rackspace/requests/compute_v2/get_metadata_item.rb +9 -0
  356. data/lib/fog/rackspace/requests/compute_v2/get_network.rb +21 -0
  357. data/lib/fog/rackspace/requests/compute_v2/get_server.rb +32 -0
  358. data/lib/fog/rackspace/requests/compute_v2/list_addresses.rb +5 -0
  359. data/lib/fog/rackspace/requests/compute_v2/list_addresses_by_network.rb +12 -0
  360. data/lib/fog/rackspace/requests/compute_v2/list_attachments.rb +12 -0
  361. data/lib/fog/rackspace/requests/compute_v2/list_flavors.rb +10 -0
  362. data/lib/fog/rackspace/requests/compute_v2/list_images.rb +10 -0
  363. data/lib/fog/rackspace/requests/compute_v2/list_metadata.rb +8 -0
  364. data/lib/fog/rackspace/requests/compute_v2/list_networks.rb +18 -0
  365. data/lib/fog/rackspace/requests/compute_v2/list_servers.rb +31 -0
  366. data/lib/fog/rackspace/requests/compute_v2/reboot_server.rb +5 -0
  367. data/lib/fog/rackspace/requests/compute_v2/rebuild_server.rb +37 -0
  368. data/lib/fog/rackspace/requests/compute_v2/resize_server.rb +10 -0
  369. data/lib/fog/rackspace/requests/compute_v2/revert_resize_server.rb +10 -0
  370. data/lib/fog/rackspace/requests/compute_v2/set_metadata.rb +9 -0
  371. data/lib/fog/rackspace/requests/compute_v2/set_metadata_item.rb +10 -0
  372. data/lib/fog/rackspace/requests/compute_v2/update_metadata.rb +9 -0
  373. data/lib/fog/rackspace/requests/compute_v2/update_server.rb +9 -0
  374. data/lib/fog/rackspace/requests/storage/get_object.rb +0 -1
  375. data/lib/fog/rackspace/requests/storage/put_container.rb +2 -1
  376. data/lib/fog/rackspace/storage.rb +14 -2
  377. data/lib/fog/schema/data_validator.rb +154 -0
  378. data/lib/fog/storage.rb +8 -24
  379. data/lib/fog/terremark/models/shared/server.rb +5 -3
  380. data/lib/fog/terremark/parser.rb +14 -13
  381. data/lib/fog/terremark/parsers/shared/get_catalog.rb +5 -19
  382. data/lib/fog/terremark/parsers/shared/get_catalog_item.rb +4 -14
  383. data/lib/fog/terremark/parsers/shared/get_internet_services.rb +1 -1
  384. data/lib/fog/terremark/parsers/shared/get_keys_list.rb +4 -18
  385. data/lib/fog/terremark/parsers/shared/get_network_ips.rb +1 -1
  386. data/lib/fog/terremark/parsers/shared/get_node_services.rb +1 -1
  387. data/lib/fog/terremark/parsers/shared/get_organization.rb +4 -3
  388. data/lib/fog/terremark/parsers/shared/get_organizations.rb +3 -2
  389. data/lib/fog/terremark/parsers/shared/get_public_ips.rb +1 -1
  390. data/lib/fog/terremark/parsers/shared/get_tasks_list.rb +4 -17
  391. data/lib/fog/terremark/parsers/shared/get_vapp_template.rb +3 -14
  392. data/lib/fog/terremark/parsers/shared/get_vdc.rb +6 -38
  393. data/lib/fog/terremark/parsers/shared/instantiate_vapp_template.rb +3 -14
  394. data/lib/fog/terremark/parsers/shared/internet_service.rb +2 -5
  395. data/lib/fog/terremark/parsers/shared/network.rb +3 -11
  396. data/lib/fog/terremark/parsers/shared/node_service.rb +1 -1
  397. data/lib/fog/terremark/parsers/shared/public_ip.rb +1 -1
  398. data/lib/fog/terremark/parsers/shared/task.rb +3 -14
  399. data/lib/fog/terremark/parsers/shared/vapp.rb +3 -14
  400. data/lib/fog/vcloud/compute.rb +1 -0
  401. data/lib/fog/vcloud/models/compute/server.rb +15 -2
  402. data/lib/fog/vcloud/models/compute/vapp.rb +11 -0
  403. data/lib/fog/vcloud/requests/compute/configure_vm_network.rb +37 -0
  404. data/lib/fog/vcloud/requests/compute/instantiate_vapp_template.rb +8 -4
  405. data/lib/fog/version.rb +1 -1
  406. data/lib/fog/volume.rb +6 -6
  407. data/lib/fog/vsphere/requests/compute/create_vm.rb +18 -3
  408. data/lib/fog/vsphere/requests/compute/list_vm_interfaces.rb +1 -1
  409. data/lib/fog/vsphere/requests/compute/vm_reconfig_hardware.rb +1 -1
  410. data/tests/aws/models/data_pipeline/pipeline_tests.rb +8 -0
  411. data/tests/aws/models/data_pipeline/pipelines_tests.rb +8 -0
  412. data/tests/aws/models/rds/server_tests.rb +10 -9
  413. data/tests/aws/requests/compute/image_tests.rb +2 -2
  414. data/tests/aws/requests/compute/security_group_tests.rb +1 -1
  415. data/tests/aws/requests/compute/spot_instance_tests.rb +3 -2
  416. data/tests/aws/requests/data_pipeline/helper.rb +44 -0
  417. data/tests/aws/requests/data_pipeline/pipeline_tests.rb +54 -0
  418. data/tests/aws/requests/rds/instance_tests.rb +8 -5
  419. data/tests/bluebox/requests/blb/helper.rb +64 -0
  420. data/tests/bluebox/requests/blb/lb_tests.rb +75 -0
  421. data/tests/brightbox/requests/compute/firewall_policy_tests.rb +7 -0
  422. data/tests/brightbox/requests/compute/helper.rb +4 -2
  423. data/tests/compute/helper.rb +8 -0
  424. data/tests/core/user_agent_tests.rb +6 -0
  425. data/tests/dreamhost/README.md +56 -0
  426. data/tests/dreamhost/dns_tests.rb +20 -0
  427. data/tests/dreamhost/helper.rb +19 -0
  428. data/tests/dreamhost/models/dns/record_tests.rb +73 -0
  429. data/tests/dreamhost/models/dns/records_tests.rb +29 -0
  430. data/tests/dreamhost/models/dns/zone_tests.rb +62 -0
  431. data/tests/dreamhost/models/dns/zones_tests.rb +29 -0
  432. data/tests/dreamhost/requests/dns/create_record_tests.rb +39 -0
  433. data/tests/dreamhost/requests/dns/delete_record_tests.rb +26 -0
  434. data/tests/dreamhost/requests/dns/list_records_tests.rb +31 -0
  435. data/tests/glesys/requests/compute/helper.rb +5 -5
  436. data/tests/helper.rb +1 -1
  437. data/tests/helpers/formats_helper.rb +63 -50
  438. data/tests/helpers/formats_helper_tests.rb +87 -36
  439. data/tests/helpers/mock_helper.rb +4 -1
  440. data/tests/helpers/schema_validator_tests.rb +107 -0
  441. data/tests/hp/models/block_storage/bootable_volume_tests.rb +23 -0
  442. data/tests/hp/models/block_storage/snapshot_tests.rb +23 -0
  443. data/tests/hp/models/block_storage/volume_tests.rb +21 -0
  444. data/tests/hp/models/compute/address_tests.rb +1 -1
  445. data/tests/hp/models/compute/addresses_tests.rb +1 -1
  446. data/tests/hp/models/compute/key_pair_tests.rb +1 -1
  447. data/tests/hp/models/compute/key_pairs_tests.rb +1 -1
  448. data/tests/hp/models/compute/metadata_image_tests.rb +60 -0
  449. data/tests/hp/models/compute/metadata_server_tests.rb +54 -0
  450. data/tests/hp/models/compute/security_group_tests.rb +3 -1
  451. data/tests/hp/models/compute/security_groups_tests.rb +1 -1
  452. data/tests/hp/models/storage/directories_tests.rb +23 -0
  453. data/tests/hp/models/storage/directory_tests.rb +62 -0
  454. data/tests/hp/models/storage/file_tests.rb +44 -0
  455. data/tests/hp/models/storage/files_tests.rb +38 -0
  456. data/tests/hp/requests/block_storage/bootable_volume_tests.rb +78 -0
  457. data/tests/hp/requests/block_storage/snapshot_tests.rb +56 -0
  458. data/tests/hp/requests/block_storage/volume_tests.rb +94 -0
  459. data/tests/hp/requests/cdn/container_tests.rb +1 -1
  460. data/tests/hp/requests/compute/address_tests.rb +5 -6
  461. data/tests/hp/requests/compute/flavor_tests.rb +1 -1
  462. data/tests/hp/requests/compute/image_tests.rb +1 -1
  463. data/tests/hp/requests/compute/key_pair_tests.rb +1 -1
  464. data/tests/hp/requests/compute/metadata_tests.rb +70 -0
  465. data/tests/hp/requests/compute/persistent_server_tests.rb +66 -0
  466. data/tests/hp/requests/compute/security_group_rule_tests.rb +1 -1
  467. data/tests/hp/requests/compute/security_group_tests.rb +1 -1
  468. data/tests/hp/requests/compute/server_address_tests.rb +1 -1
  469. data/tests/hp/requests/compute/server_tests.rb +5 -6
  470. data/tests/hp/requests/compute/server_volume_tests.rb +76 -0
  471. data/tests/hp/requests/storage/container_tests.rb +1 -1
  472. data/tests/hp/requests/storage/object_tests.rb +9 -1
  473. data/tests/hp/user_agent_tests.rb +13 -0
  474. data/tests/internet_archive/models/storage/directory_tests.rb +51 -0
  475. data/tests/internet_archive/models/storage/file_tests.rb +80 -0
  476. data/tests/internet_archive/models/storage/files_tests.rb +56 -0
  477. data/tests/internet_archive/models/storage/url_tests.rb +28 -0
  478. data/tests/internet_archive/models/storage/version_tests.rb +52 -0
  479. data/tests/internet_archive/models/storage/versions_tests.rb +56 -0
  480. data/tests/internet_archive/requests/storage/acl_utils_tests.rb +209 -0
  481. data/tests/internet_archive/requests/storage/bucket_tests.rb +328 -0
  482. data/tests/internet_archive/requests/storage/cors_utils_tests.rb +108 -0
  483. data/tests/internet_archive/requests/storage/multipart_upload_tests.rb +132 -0
  484. data/tests/internet_archive/requests/storage/object_tests.rb +166 -0
  485. data/tests/internet_archive/requests/storage/versioning_tests.rb +258 -0
  486. data/tests/internet_archive/signaturev4_tests.rb +41 -0
  487. data/tests/internet_archive/signed_params_tests.rb +5 -0
  488. data/tests/openstack/models/compute/images_tests.rb +14 -0
  489. data/tests/openstack/models/compute/server_tests.rb +42 -1
  490. data/tests/openstack/models/identity/roles_tests.rb +1 -0
  491. data/tests/openstack/models/identity/user_tests.rb +2 -2
  492. data/tests/openstack/models/network/network_tests.rb +21 -1
  493. data/tests/openstack/models/storage/file_tests.rb +178 -0
  494. data/tests/openstack/requests/compute/limit_tests.rb +1 -1
  495. data/tests/openstack/requests/compute/tenant_tests.rb +2 -2
  496. data/tests/openstack/requests/identity/ec2_credentials_tests.rb +7 -4
  497. data/tests/openstack/requests/identity/helper.rb +17 -0
  498. data/tests/openstack/requests/identity/role_tests.rb +6 -0
  499. data/tests/openstack/requests/identity/tenant_tests.rb +14 -12
  500. data/tests/openstack/requests/identity/user_tests.rb +9 -5
  501. data/tests/openstack/requests/storage/container_tests.rb +64 -0
  502. data/tests/openstack/requests/storage/large_object_tests.rb +47 -0
  503. data/tests/openstack/requests/storage/object_tests.rb +84 -0
  504. data/tests/openstack/volume_tests.rb +15 -0
  505. data/tests/rackspace/cdn_tests.rb +78 -0
  506. data/tests/rackspace/helper.rb +9 -0
  507. data/tests/rackspace/models/compute_v2/flavors_tests.rb +1 -1
  508. data/tests/rackspace/models/compute_v2/image_tests.rb +2 -4
  509. data/tests/rackspace/models/compute_v2/images_tests.rb +1 -1
  510. data/tests/rackspace/models/compute_v2/metadata_tests.rb +5 -3
  511. data/tests/rackspace/models/compute_v2/network_tests.rb +10 -0
  512. data/tests/rackspace/models/compute_v2/networks_tests.rb +10 -0
  513. data/tests/rackspace/models/compute_v2/server_tests.rb +8 -7
  514. data/tests/rackspace/models/compute_v2/servers_tests.rb +5 -7
  515. data/tests/rackspace/models/dns/zones_tests.rb +22 -0
  516. data/tests/rackspace/models/identity/credentials_tests.rb +14 -5
  517. data/tests/rackspace/models/storage/account_tests.rb +28 -0
  518. data/tests/rackspace/models/storage/directories_tests.rb +29 -0
  519. data/tests/rackspace/models/storage/directory_tests.rb +141 -0
  520. data/tests/rackspace/models/storage/file_tests.rb +86 -11
  521. data/tests/rackspace/models/storage/metadata_tests.rb +174 -0
  522. data/tests/rackspace/requests/cdn/cdn_tests.rb +76 -0
  523. data/tests/rackspace/requests/compute/image_tests.rb +2 -2
  524. data/tests/rackspace/requests/compute_v2/image_tests.rb +6 -6
  525. data/tests/rackspace/requests/compute_v2/network_tests.rb +49 -0
  526. data/tests/rackspace/requests/identity/user_tests.rb +0 -4
  527. data/tests/rackspace/requests/storage/container_tests.rb +8 -1
  528. data/tests/rackspace/storage_tests.rb +8 -0
  529. data/tests/storage/helper.rb +3 -0
  530. metadata +341 -40
  531. data/docs/storage/aws.markdown +0 -21
  532. data/lib/fog/bin/virtual_box.rb +0 -57
  533. data/lib/fog/rackspace/docs/cloud_servers.md +0 -65
  534. data/lib/fog/rackspace/requests/identity/get_credentials.rb +0 -15
  535. data/lib/fog/virtual_box.rb +0 -11
  536. data/lib/fog/virtual_box/compute.rb +0 -59
  537. data/lib/fog/virtual_box/models/compute/medium.rb +0 -87
  538. data/lib/fog/virtual_box/models/compute/medium_format.rb +0 -34
  539. data/lib/fog/virtual_box/models/compute/mediums.rb +0 -32
  540. data/lib/fog/virtual_box/models/compute/nat_engine.rb +0 -65
  541. data/lib/fog/virtual_box/models/compute/nat_redirect.rb +0 -91
  542. data/lib/fog/virtual_box/models/compute/nat_redirects.rb +0 -41
  543. data/lib/fog/virtual_box/models/compute/network_adapter.rb +0 -82
  544. data/lib/fog/virtual_box/models/compute/network_adapters.rb +0 -42
  545. data/lib/fog/virtual_box/models/compute/server.rb +0 -199
  546. data/lib/fog/virtual_box/models/compute/servers.rb +0 -41
  547. data/lib/fog/virtual_box/models/compute/storage_controller.rb +0 -83
  548. data/lib/fog/virtual_box/models/compute/storage_controllers.rb +0 -38
@@ -4,16 +4,34 @@ require 'fog/glesys/models/compute/template'
4
4
  module Fog
5
5
  module Compute
6
6
  class Glesys
7
-
8
7
  class Templates < Fog::Collection
9
8
 
10
- model Fog::Glesys::Compute::Template
9
+ model Fog::Compute::Glesys::Template
11
10
 
12
11
  def all
13
- openvz = service.template_list.body['response']['templates']['OpenVZ']
14
- xen = service.template_list.body['response']['templates']['Xen']
12
+ # Only select OpenVZ and Xen platforms
13
+ # Glesys only offers Xen and OpenVZ but they have other platforms in the list
14
+ images = platform :openvz, :xen
15
+ load(images)
16
+ end
17
+
18
+ def openvz
19
+ images = platform :openvz
20
+ load(images)
21
+ end
22
+
23
+ def xen
24
+ images = platform :xen
25
+ load(images)
26
+ end
27
+
28
+ private
15
29
 
16
- load(xen+openvz)
30
+ def platform(*platforms)
31
+ images = service.template_list.body['response']['templates']
32
+ images.select do |platform, images|
33
+ platforms.include?(platform.downcase.to_sym)
34
+ end.collect{|platform, images| images}.flatten
17
35
  end
18
36
 
19
37
  end
@@ -3,8 +3,8 @@ module Fog
3
3
  class Glesys
4
4
  class Real
5
5
 
6
- def ip_list_free(params)
7
- request("/ip/listfree", params)
6
+ def ip_details(params)
7
+ request("/ip/details", params)
8
8
  end
9
9
  end
10
10
 
@@ -3,8 +3,8 @@ module Fog
3
3
  class Glesys
4
4
  class Real
5
5
 
6
- def server_details(serverid)
7
- request("/server/details", { :serverid => serverid })
6
+ def server_details(serverid, options = {})
7
+ request("/server/details", { :serverid => serverid }.merge!(options) )
8
8
  end
9
9
  end
10
10
 
@@ -3,8 +3,8 @@ module Fog
3
3
  class Glesys
4
4
  class Real
5
5
 
6
- def template_list(options = {})
7
- request("/server/templates", options)
6
+ def template_list
7
+ request("/server/templates")
8
8
  end
9
9
  end
10
10
 
@@ -2,6 +2,12 @@ require 'fog/core'
2
2
 
3
3
  module Fog
4
4
  module HP
5
+
6
+ # define a specific version for the HP Provider
7
+ unless const_defined?(:VERSION)
8
+ VERSION = '0.0.19'
9
+ end
10
+
5
11
  extend Fog::Provider
6
12
 
7
13
  module Errors
@@ -13,10 +19,14 @@ module Fog
13
19
  data = nil
14
20
  message = nil
15
21
  else
16
- data = Fog::JSON.decode(error.response.body)
17
- message = data['message']
18
- if message.nil? and !data.values.first.nil?
19
- message = data.values.first['message']
22
+ begin
23
+ data = Fog::JSON.decode(error.response.body)
24
+ message = data['message']
25
+ if message.nil? and !data.values.first.nil?
26
+ message = data.values.first['message']
27
+ end
28
+ rescue MultiJson::DecodeError
29
+ message = error.response.body #### body is not in JSON format, so just return as is
20
30
  end
21
31
  end
22
32
 
@@ -29,6 +39,7 @@ module Fog
29
39
  class InternalServerError < ServiceError; end
30
40
  class Conflict < ServiceError; end
31
41
  class NotFound < ServiceError; end
42
+ class Forbidden < ServiceError; end
32
43
  class ServiceUnavailable < ServiceError; end
33
44
 
34
45
  class BadRequest < ServiceError
@@ -47,6 +58,7 @@ module Fog
47
58
  service(:cdn, 'hp/cdn', 'CDN')
48
59
  service(:compute, 'hp/compute', 'Compute')
49
60
  service(:storage, 'hp/storage', 'Storage')
61
+ service(:block_storage, 'hp/block_storage', 'BlockStorage')
50
62
 
51
63
  # legacy swauth 1.0/1.1 style authentication
52
64
  def self.authenticate_v1(options, connection_options = {})
@@ -61,14 +73,17 @@ module Fog
61
73
  @auth_path = "auth/v1.0"
62
74
  end
63
75
  service_url = "#{@scheme}://#{@host}:#{@port}"
76
+ # Set the User-Agent
77
+ @user_agent = options[:user_agent]
78
+ set_user_agent_header(connection_options, "fog/#{Fog::VERSION}", @user_agent)
64
79
  connection = Fog::Connection.new(service_url, false, connection_options)
65
- @hp_account_id = options[:hp_account_id]
80
+ @hp_access_key = options[:hp_access_key]
66
81
  @hp_secret_key = options[:hp_secret_key]
67
82
  response = connection.request({
68
83
  :expects => [200, 204],
69
84
  :headers => {
70
85
  'X-Auth-Key' => @hp_secret_key,
71
- 'X-Auth-User' => @hp_account_id
86
+ 'X-Auth-User' => @hp_access_key
72
87
  },
73
88
  :host => @host,
74
89
  :port => @port,
@@ -101,16 +116,19 @@ module Fog
101
116
  @auth_path = "v2.0/tokens"
102
117
  end
103
118
  service_url = "#{@scheme}://#{@host}:#{@port}"
119
+ # Set the User-Agent. If the caller sets a user_agent, use it.
120
+ @user_agent = options[:user_agent]
121
+ set_user_agent_header(connection_options, "fog/#{Fog::VERSION}", @user_agent)
104
122
  connection = Fog::Connection.new(service_url, false, connection_options)
105
123
 
106
124
  ### Implement HP Control Services Authentication services ###
107
125
  # Get the style of auth credentials passed, defaults to access/secret key style
108
126
  @hp_use_upass_auth_style = options[:hp_use_upass_auth_style] || false
109
- @hp_account_id = options[:hp_account_id]
127
+ @hp_access_key = options[:hp_access_key]
110
128
  @hp_secret_key = options[:hp_secret_key]
111
129
  @hp_tenant_id = options[:hp_tenant_id]
112
130
  @hp_service_type = options[:hp_service_type]
113
- @hp_avl_zone = options[:hp_avl_zone] || :az1
131
+ @hp_avl_zone = options[:hp_avl_zone]
114
132
 
115
133
  ### Decide which auth style to use
116
134
  unless (@hp_use_upass_auth_style)
@@ -118,7 +136,7 @@ module Fog
118
136
  request_body = {
119
137
  'auth' => {
120
138
  'apiAccessKeyCredentials' => {
121
- 'accessKey' => "#{@hp_account_id}",
139
+ 'accessKey' => "#{@hp_access_key}",
122
140
  'secretKey' => "#{@hp_secret_key}"
123
141
  }
124
142
  }
@@ -128,17 +146,17 @@ module Fog
128
146
  request_body = {
129
147
  'auth' => {
130
148
  'passwordCredentials' => {
131
- 'username' => "#{@hp_account_id}",
149
+ 'username' => "#{@hp_access_key}",
132
150
  'password' => "#{@hp_secret_key}"
133
151
  }
134
152
  }
135
153
  }
136
154
  end
137
155
  # add tenant_id if specified
138
- request_body['auth']['tenantId'] = "#{@hp_tenant_id}" if @hp_tenant_id
156
+ request_body['auth']['tenantId'] = @hp_tenant_id if @hp_tenant_id
139
157
 
140
158
  ### Make the call to CS to get auth token and service catalog
141
- response = service.request(
159
+ response = connection.request(
142
160
  {
143
161
  :expects => 200,
144
162
  :headers => {
@@ -157,9 +175,9 @@ module Fog
157
175
  ### fish out auth_token and endpoint for the service
158
176
  auth_token = body['access']['token']['id']
159
177
  endpoint_url = get_endpoint_from_catalog(body['access']['serviceCatalog'], @hp_service_type, @hp_avl_zone)
160
- # If service is Storage, then get the CDN endpoint as well
161
- if @hp_service_type == "object-store"
162
- cdn_endpoint_url = get_endpoint_from_catalog(body['access']['serviceCatalog'], "hpext:cdn", @hp_avl_zone)
178
+ # If service is Storage, then get the CDN endpoint as well. 'Name' is unique instead of 'Type'
179
+ if @hp_service_type == "Object Storage"
180
+ cdn_endpoint_url = get_endpoint_from_catalog(body['access']['serviceCatalog'], "CDN", @hp_avl_zone)
163
181
  end
164
182
 
165
183
  return {
@@ -180,19 +198,31 @@ module Fog
180
198
  private
181
199
 
182
200
  def self.get_endpoint_from_catalog(service_catalog, service_type, avl_zone)
183
- if service_catalog
184
- service_item = service_catalog.select {|s| s["type"] == service_type}.first
185
- if service_item and service_item['endpoints'] and
186
- if avl_zone == :az1
187
- endpoint_url = service_item['endpoints'][0]['publicURL'] if service_item['endpoints'][0]
188
- elsif avl_zone == :az2
189
- endpoint_url = service_item['endpoints'][1]['publicURL'] if service_item['endpoints'][1]
190
- end
191
- raise "Unable to retrieve endpoint service url from service catalog." if endpoint_url.nil?
192
- return endpoint_url
201
+ raise "Unable to parse service catalog." unless service_catalog
202
+ service_item = service_catalog.detect do |s|
203
+ # 'Name' is unique instead of 'Type'
204
+ s["name"] == service_type
205
+ end
206
+ if service_item and service_item['endpoints']
207
+ endpoint = service_item['endpoints'].detect do |ep|
208
+ ep['region'] == avl_zone
193
209
  end
210
+ endpoint_url = endpoint['publicURL'] if endpoint
211
+ raise "Unable to retrieve endpoint service url for availability zone '#{avl_zone}' from service catalog. " if endpoint_url.nil?
212
+ return endpoint_url
213
+ end
214
+ end
215
+
216
+ def self.set_user_agent_header(conn_opts, base_str, client_str)
217
+ if client_str
218
+ user_agent = {'User-Agent' => base_str + " (#{client_str})"}
219
+ else
220
+ user_agent = {'User-Agent' => base_str}
221
+ end
222
+ if conn_opts[:headers]
223
+ conn_opts[:headers] = user_agent.merge!(conn_opts[:headers])
194
224
  else
195
- raise "Unable to parse service catalog."
225
+ conn_opts[:headers] = user_agent
196
226
  end
197
227
  end
198
228
 
@@ -0,0 +1,113 @@
1
+ 0.0.19 18/01/2013
2
+ =================
3
+ - update Block Storage namespace to be Fog::HP::BlockStorage
4
+ - merge with upstream fog v1.8.0
5
+ - deprecate hp_account_id to use hp_access_key instead
6
+
7
+ 0.0.18 12/04/2012
8
+ =================
9
+ - add support for controlled access via cross-tenant ACLs
10
+ - add support for creating bootable volumes
11
+ - add support for creating persistent server instances using bootable volumes
12
+
13
+ 0.0.17 10/16/2012
14
+ =================
15
+ - add support for generating temporary urls
16
+ - add support for retrieving encrypted password for Windows instances
17
+ - add support for creating Windows instances
18
+
19
+ 0.0.16 08/15/2012
20
+ =================
21
+ - add support for User-Agent string in header
22
+ - add support for Snapshots API to BlockStorage provider
23
+ - add support for Volumes API to BlockStorage provider
24
+ - add BlockStorage service to HP provider
25
+ - upgrade to excon 0.14.0 to take advantage of instrumentation
26
+ - add a head method for the directories collection
27
+ - update image model
28
+ - update put_object and get_object to accept blocks
29
+
30
+ 0.0.15 06/08/2012
31
+ =================
32
+ - add metadata attribute in server and image models to manage metadata
33
+ - add metadata model and request layer functionality with mocking support
34
+ - add tests for metadata
35
+ - upgrade to excon 0.13.0 to take advantage of ssl passthru functionality
36
+ - add security_groups attribute to the server model
37
+ - add support for future availability zones for all HP services
38
+ - change hp_avl_zone to be a required parameter for all HP services
39
+ - add support for console output in compute service
40
+ - add helper method for cdn public ssl url
41
+ - add tests for storage, compute and cdn services
42
+ - improve quality of mocks to match real implementation
43
+
44
+ 0.0.14 02/23/2012
45
+ =================
46
+ - minor fix for public ip address
47
+ - minor fix for exceptions raised by CDN service
48
+ - add keypair get/set methods to server model
49
+
50
+ 0.0.13 02/09/2012
51
+ =================
52
+ - provide access to availability zones for compute
53
+ - minor fix for CS authentication uri
54
+ - update inline documentation
55
+ - update README_HP with copyright message
56
+
57
+ 0.0.12 02/02/2012
58
+ =================
59
+ - integrate CS authentication
60
+ - refactor HP provider to work with legacy v1 authentication as well
61
+ - integrate CDN to work with Storage provider
62
+ - add additional attributes for CDN provider
63
+ - remove bits and add cores as alias to vcpus in flavor model
64
+ - update inline documentation
65
+ - update README_HP with copyright message
66
+
67
+ 0.0.11 01/09/2012
68
+ =================
69
+ - add ability to customize various connection timeouts options
70
+ - add CDN service capabilities
71
+ - integrate the CDN service with the Storage service
72
+ - add a new CDN Uri option to Storage service
73
+ - incorporate Diablo 4 API changes
74
+ - update image, server and flavor models
75
+ - update create_image and create_server calls
76
+ - add rebuild_server and change_password_server calls
77
+ - new extensions APIs
78
+ - add keypair model and request layer with mocking support
79
+ - add security group model and request layer with mocking support
80
+ - add security group rule model and request layer with mocking support
81
+ - add address model and request layer with mocking support
82
+ - update server model with address management methods
83
+ - update server creation to use keypairs, security groups and other options
84
+ - update inline documentation
85
+
86
+ 0.0.10 10/18/2011
87
+ =================
88
+ - merge with upstream fog v1.0.0
89
+
90
+ 0.0.9 09/21/2011
91
+ ================
92
+ - minor bug fixes
93
+ - add support for special char. including '?' in container and object names
94
+ - fix public_url for special char. in container and object names
95
+
96
+ 0.0.8 08/29/2011
97
+ ================
98
+ - add README_HP.rdoc
99
+ - add CHANGELOG.hp
100
+ - remove resize_server, confirm_resized_server and revert_resized_server from HP Cloud Compute
101
+
102
+ 0.0.7 08/10/2011
103
+ ================
104
+ - minor fixes
105
+ - added acl support to directory
106
+ - added public? method to directory model
107
+ - added mock support for HP Cloud Object Storage
108
+
109
+ 0.0.6 07/26/2011
110
+ ================
111
+ - initial release with name change to 'hpfog'
112
+ - HP provider for HP Cloud Object Storage
113
+ - HP provider for HP Cloud Compute
@@ -29,11 +29,14 @@ If you should ever need to remove the library:
29
29
  The Ruby Fog library is well documented on the community web site at {fog.io}[http://fog.io], but for specific examples
30
30
  using HP's extensions, see:
31
31
 
32
- * {HP Cloud Fog library - Object Storage Examples}[https://build.hpcloud.com/bindings/fog/object-storage]
33
- * {HP Cloud Fog library - Compute Examples}[https://build.hpcloud.com/bindings/fog/compute]
34
- * {HP Cloud Fog library - CDN Examples}[https://build.hpcloud.com/bindings/fog/cdn]
32
+ * {HP Cloud Fog library - Object Storage Examples}[https://docs.hpcloud.com/bindings/fog/object-storage]
33
+ * {HP Cloud Fog library - Compute Examples}[https://docs.hpcloud.com/bindings/fog/compute]
34
+ * {HP Cloud Fog library - CDN Examples}[https://docs.hpcloud.com/bindings/fog/cdn]
35
+ * {HP Cloud Fog library - Block Storage Examples}[https://docs.hpcloud.com/bindings/fog/block-storage]
36
+
37
+ Having trouble? Get help over at the {Forums}[https://community.hpcloud.com/forum] or
38
+ at the {Knowledge Base}[https://community.hpcloud.com/knowledge-base] areas.
35
39
 
36
- Having trouble? {Get help over at the Forums}[https://connect.hpcloud.com]
37
40
 
38
41
  == Notice
39
42
 
@@ -56,5 +59,3 @@ PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
56
59
  FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
57
60
  OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
58
61
  DEALINGS IN THE SOFTWARE.
59
-
60
-
@@ -0,0 +1,169 @@
1
+ require 'fog/hp'
2
+
3
+ module Fog
4
+ module HP
5
+ class BlockStorage < Fog::Service
6
+
7
+ requires :hp_secret_key, :hp_tenant_id, :hp_avl_zone
8
+ recognizes :hp_auth_uri
9
+ recognizes :persistent, :connection_options
10
+ recognizes :hp_use_upass_auth_style, :hp_auth_version, :user_agent
11
+ recognizes :hp_access_key, :hp_account_id # :hp_account_id is deprecated use hp_access_key instead
12
+
13
+ secrets :hp_secret_key
14
+
15
+ model_path 'fog/hp/models/block_storage'
16
+ model :volume
17
+ collection :volumes
18
+ collection :bootable_volumes
19
+
20
+ model :snapshot
21
+ collection :snapshots
22
+
23
+ request_path 'fog/hp/requests/block_storage'
24
+ request :create_volume
25
+ request :delete_volume
26
+ request :get_bootable_volume_details
27
+ request :get_volume_details
28
+ request :list_bootable_volumes
29
+ request :list_volumes
30
+
31
+ request :create_snapshot
32
+ request :delete_snapshot
33
+ request :get_snapshot_details
34
+ request :list_snapshots
35
+
36
+ module Utils
37
+
38
+ def compute
39
+ @compute ||= Fog::Compute.new(
40
+ :provider => 'HP',
41
+ :hp_access_key => @hp_access_key,
42
+ :hp_secret_key => @hp_secret_key,
43
+ :hp_auth_uri => @hp_auth_uri,
44
+ :hp_tenant_id => @hp_tenant_id,
45
+ :hp_avl_zone => @hp_avl_zone,
46
+ :connection_options => @connection_options
47
+ )
48
+ end
49
+
50
+ end
51
+
52
+ class Mock
53
+ include Utils
54
+
55
+ def self.data
56
+ @data ||= Hash.new do |hash, key|
57
+ hash[key] = {
58
+ :volumes => {},
59
+ :snapshots => {}
60
+ }
61
+ end
62
+ end
63
+
64
+ def self.reset
65
+ @data = nil
66
+ end
67
+
68
+ def initialize(options={})
69
+ # deprecate hp_account_id
70
+ if options[:hp_account_id]
71
+ Fog::Logger.deprecation(":hp_account_id is deprecated, please use :hp_access_key instead.")
72
+ @hp_access_key = options.delete(:hp_account_id)
73
+ end
74
+ @hp_access_key = options[:hp_access_key]
75
+ unless @hp_access_key
76
+ raise ArgumentError.new("Missing required arguments: hp_access_key. :hp_account_id is deprecated, please use :hp_access_key instead.")
77
+ end
78
+ end
79
+
80
+ def data
81
+ self.class.data[@hp_access_key]
82
+ end
83
+
84
+ def reset_data
85
+ self.class.data.delete(@hp_access_key)
86
+ end
87
+
88
+ end
89
+
90
+ class Real
91
+ include Utils
92
+
93
+ def initialize(options={})
94
+ # deprecate hp_account_id
95
+ if options[:hp_account_id]
96
+ Fog::Logger.deprecation(":hp_account_id is deprecated, please use :hp_access_key instead.")
97
+ options[:hp_access_key] = options.delete(:hp_account_id)
98
+ end
99
+ @hp_access_key = options[:hp_access_key]
100
+ unless @hp_access_key
101
+ raise ArgumentError.new("Missing required arguments: hp_access_key. :hp_account_id is deprecated, please use :hp_access_key instead.")
102
+ end
103
+ @hp_secret_key = options[:hp_secret_key]
104
+ @hp_auth_uri = options[:hp_auth_uri]
105
+ @connection_options = options[:connection_options] || {}
106
+ ### Set an option to use the style of authentication desired; :v1 or :v2 (default)
107
+ auth_version = options[:hp_auth_version] || :v2
108
+ ### Pass the service name for object storage to the authentication call
109
+ options[:hp_service_type] = "Block Storage"
110
+ @hp_tenant_id = options[:hp_tenant_id]
111
+ @hp_avl_zone = options[:hp_avl_zone]
112
+
113
+ ### Make the authentication call
114
+ if (auth_version == :v2)
115
+ # Call the control services authentication
116
+ credentials = Fog::HP.authenticate_v2(options, @connection_options)
117
+ # the CS service catalog returns the block storage endpoint
118
+ @hp_block_uri = credentials[:endpoint_url]
119
+ else
120
+ # Call the legacy v1.0/v1.1 authentication
121
+ credentials = Fog::HP.authenticate_v1(options, @connection_options)
122
+ # the user sends in the block storage endpoint
123
+ @hp_block_uri = options[:hp_auth_uri]
124
+ end
125
+
126
+ @auth_token = credentials[:auth_token]
127
+ @persistent = options[:persistent] || false
128
+
129
+ uri = URI.parse(@hp_block_uri)
130
+ @host = uri.host
131
+ @path = uri.path
132
+ @port = uri.port
133
+ @scheme = uri.scheme
134
+
135
+ @connection = Fog::Connection.new("#{@scheme}://#{@host}:#{@port}", @persistent, @connection_options)
136
+ end
137
+
138
+ def reload
139
+ @connection.reset
140
+ end
141
+
142
+ def request(params, parse_json = true, &block)
143
+ begin
144
+ response = @connection.request(params.merge!({
145
+ :headers => {
146
+ 'Content-Type' => 'application/json',
147
+ 'X-Auth-Token' => @auth_token
148
+ }.merge!(params[:headers] || {}),
149
+ :host => @host,
150
+ :path => "#{@path}/#{params[:path]}",
151
+ }), &block)
152
+ rescue Excon::Errors::HTTPStatusError => error
153
+ raise case error
154
+ when Excon::Errors::NotFound
155
+ Fog::HP::BlockStorage::NotFound.slurp(error)
156
+ else
157
+ error
158
+ end
159
+ end
160
+ if !response.body.empty? && parse_json && response.headers['Content-Type'] =~ %r{application/json}
161
+ response.body = Fog::JSON.decode(response.body)
162
+ end
163
+ response
164
+ end
165
+
166
+ end
167
+ end
168
+ end
169
+ end