fog 1.9.0 → 1.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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
@@ -0,0 +1,44 @@
1
+ module Fog
2
+ module Storage
3
+ class InternetArchive
4
+ class Real
5
+
6
+ require 'fog/internet_archive/parsers/storage/initiate_multipart_upload'
7
+
8
+ # Initiate a multipart upload to an S3 bucket
9
+ #
10
+ # @param bucket_name [String] Name of bucket to create object in
11
+ # @param object_name [String] Name of object to create
12
+ # @param options [Hash]:
13
+ # @option options [String] Cache-Control Caching behaviour
14
+ # @option options [String] Content-Disposition Presentational information for the object
15
+ # @option options [String] Content-Encoding Encoding of object data
16
+ # @option options [String] Content-MD5 Base64 encoded 128-bit MD5 digest of message (defaults to Base64 encoded MD5 of object.read)
17
+ # @option options [String] Content-Type Standard MIME type describing contents (defaults to MIME::Types.of.first)
18
+ # @option options [String] x-amz-acl Permissions, must be in ['private', 'public-read', 'public-read-write', 'authenticated-read']
19
+ # @option options [String] x-amz-meta-#{name} Headers to be returned with object, note total size of request without body must be less than 8 KB.
20
+ #
21
+ # @return [Excon::Response] response:
22
+ # * body [Hash]:
23
+ # * Bucket [String] - Bucket where upload was initiated
24
+ # * Key [String] - Object key where the upload was initiated
25
+ # * UploadId [String] - Id for initiated multipart upload
26
+ #
27
+ # @see http://docs.amazonwebservices.com/AmazonS3/latest/API/mpUploadInitiate.html
28
+ #
29
+ def initiate_multipart_upload(bucket_name, object_name, options = {})
30
+ request({
31
+ :expects => 200,
32
+ :headers => options,
33
+ :host => "#{bucket_name}.#{@host}",
34
+ :method => 'POST',
35
+ :parser => Fog::Parsers::Storage::InternetArchive::InitiateMultipartUpload.new,
36
+ :path => CGI.escape(object_name),
37
+ :query => {'uploads' => nil}
38
+ })
39
+ end
40
+
41
+ end # Real
42
+ end # Storage
43
+ end # InternetArchive
44
+ end # Fog
@@ -0,0 +1,55 @@
1
+ module Fog
2
+ module Storage
3
+ class InternetArchive
4
+ class Real
5
+
6
+ require 'fog/internet_archive/parsers/storage/list_multipart_uploads'
7
+
8
+ # List multipart uploads for a bucket
9
+ #
10
+ # @param bucket_name [String] Name of bucket to list multipart uploads for
11
+ # @param upload_id [String] upload id to list objects for
12
+ # @param options [Hash] config arguments for list. Defaults to {}.
13
+ # @option options key-marker[String] limits parts to only those that appear lexicographically after this key.
14
+ # @option options max-uploads [Integer] limits number of uploads returned
15
+ # @option options upload-id-marker [String] limits uploads to only those that appear lexicographically after this upload id.
16
+ #
17
+ # @return [Excon::Response] response:
18
+ # * body [Hash]:
19
+ # * Bucket [string] Bucket where the multipart upload was initiated
20
+ # * IsTruncated [Boolean] Whether or not the listing is truncated
21
+ # * KeyMarker [String] first key in list, only upload ids after this lexographically will appear
22
+ # * MaxUploads [Integer] Maximum results to return
23
+ # * NextKeyMarker [String] last key in list, for further pagination
24
+ # * NextUploadIdMarker [String] last key in list, for further pagination
25
+ # * Upload [Hash]:
26
+ # * Initiated [Time] Time when upload was initiated
27
+ # * Initiator [Hash]:
28
+ # * DisplayName [String] Display name of upload initiator
29
+ # * ID [String] Id of upload initiator
30
+ # * Key [String] Key where multipart upload was initiated
31
+ # * Owner [Hash]:
32
+ # * DisplayName [String] Display name of upload owner
33
+ # * ID [String] Id of upload owner
34
+ # * StorageClass [String] Storage class of object
35
+ # * UploadId [String] upload id of upload containing part
36
+ # * UploadIdMarker [String] first key in list, only upload ids after this lexographically will appear
37
+ #
38
+ # @see http://docs.amazonwebservices.com/AmazonS3/latest/API/mpUploadListMPUpload.html
39
+ #
40
+ def list_multipart_uploads(bucket_name, options = {})
41
+ request({
42
+ :expects => 200,
43
+ :headers => {},
44
+ :host => "#{bucket_name}.#{@host}",
45
+ :idempotent => true,
46
+ :method => 'GET',
47
+ :parser => Fog::Parsers::Storage::InternetArchive::ListMultipartUploads.new,
48
+ :query => options.merge!({'uploads' => nil})
49
+ })
50
+ end
51
+
52
+ end
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,55 @@
1
+ module Fog
2
+ module Storage
3
+ class InternetArchive
4
+ class Real
5
+
6
+ require 'fog/internet_archive/parsers/storage/list_parts'
7
+
8
+ # List parts for a multipart upload
9
+ #
10
+ # @param bucket_name [String] Name of bucket to list parts for
11
+ # @param object_name [String] Name of object to list parts for
12
+ # @param upload_id [String] upload id to list objects for
13
+ # @param options [Hash] config arguments for list. Defaults to {}.
14
+ # @option options max-parts [Integer] limits number of parts returned
15
+ # @option options part-number-marker [String] limits parts to only those that appear lexicographically after this part number.
16
+ #
17
+ # @return [Excon::Response] response:
18
+ # * body [Hash]:
19
+ # * Bucket [string] Bucket where the multipart upload was initiated
20
+ # * Initiator [Hash]:
21
+ # * DisplayName [String] Display name of upload initiator
22
+ # * ID [String] Id of upload initiator
23
+ # * IsTruncated [Boolean] Whether or not the listing is truncated
24
+ # * Key [String] Key where multipart upload was initiated
25
+ # * MaxParts [String] maximum number of replies alllowed in response
26
+ # * NextPartNumberMarker [String] last item in list, for further pagination
27
+ # * Part [Array]:
28
+ # * ETag [String] ETag of part
29
+ # * LastModified [Timestamp] Last modified for part
30
+ # * PartNumber [String] Part number for part
31
+ # * Size [Integer] Size of part
32
+ # * PartNumberMarker [String] Part number after which listing begins
33
+ # * StorageClass [String] Storage class of object
34
+ # * UploadId [String] upload id of upload containing part
35
+ #
36
+ # @see http://docs.amazonwebservices.com/AmazonS3/latest/API/mpUploadListParts.html
37
+ #
38
+ def list_parts(bucket_name, object_name, upload_id, options = {})
39
+ options['uploadId'] = upload_id
40
+ request({
41
+ :expects => 200,
42
+ :headers => {},
43
+ :host => "#{bucket_name}.#{@host}",
44
+ :idempotent => true,
45
+ :method => 'GET',
46
+ :parser => Fog::Parsers::Storage::InternetArchive::ListParts.new,
47
+ :path => CGI.escape(object_name),
48
+ :query => options.merge!({'uploadId' => upload_id})
49
+ })
50
+ end
51
+
52
+ end
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,38 @@
1
+ module Fog
2
+ module Storage
3
+ class InternetArchive
4
+ class Real
5
+
6
+ # Get a hash of hidden fields for form uploading to S3, in the form {:field_name => :field_value}
7
+ # Form should look like: <form action="http://#{bucket_name}.s3.#{Fog::InternetArchive::DOMAIN_NAME}/" method="post" enctype="multipart/form-data">
8
+ # These hidden fields should then appear, followed by a field named 'file' which is either a textarea or file input.
9
+ #
10
+ # @param options Hash:
11
+ # @option options acl [String] access control list, in ['private', 'public-read', 'public-read-write', 'authenticated-read', 'bucket-owner-read', 'bucket-owner-full-control']
12
+ # @option options Cache-Control [String] same as REST header
13
+ # @option options Content-Type [String] same as REST header
14
+ # @option options Content-Disposition [String] same as REST header
15
+ # @option options Content-Encoding [String] same as REST header
16
+ # @option options Expires same as REST header
17
+ # @option options key key for object, set to '${filename}' to use filename provided by user
18
+ # @option options policy security policy for upload
19
+ # @option options success_action_redirect url to redirct to upon success
20
+ # @option options success_action_status status code to return on success, in [200, 201, 204]
21
+ # @option options x-amz-security token devpay security token
22
+ # @option options x-amz-meta... meta data tags
23
+ #
24
+ # @see http://docs.amazonwebservices.com/AmazonS3/latest/dev/HTTPPOSTForms.html
25
+ #
26
+ def post_object_hidden_fields(options = {})
27
+ if options['policy']
28
+ options['policy'] = Base64.encode64(Fog::JSON.encode(options['policy'])).gsub("\n", "")
29
+ options['AWSAccessKeyId'] = @ia_access_key_id
30
+ options['Signature'] = Base64.encode64(@hmac.sign(options['policy'])).gsub("\n", "")
31
+ end
32
+ options
33
+ end
34
+
35
+ end
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,74 @@
1
+ module Fog
2
+ module Storage
3
+ class InternetArchive
4
+ class Real
5
+
6
+ # Create an S3 bucket
7
+ #
8
+ # @param bucket_name [String] name of bucket to create
9
+ # @option options [Hash] config arguments for bucket. Defaults to {}.
10
+ # @option options LocationConstraint [Symbol] sets the location for the bucket
11
+ # @option options x-amz-acl [String] Permissions, must be in ['private', 'public-read', 'public-read-write', 'authenticated-read']
12
+ #
13
+ # @return [Excon::Response] response:
14
+ # * status [Integer] 200
15
+ #
16
+ # @see http://docs.amazonwebservices.com/AmazonS3/latest/API/RESTBucketPUT.html
17
+ #
18
+ def put_bucket(bucket_name, options = {})
19
+ if location_constraint = options.delete('LocationConstraint')
20
+ data =
21
+ <<-DATA
22
+ <CreateBucketConfiguration>
23
+ <LocationConstraint>#{location_constraint}</LocationConstraint>
24
+ </CreateBucketConfiguration>
25
+ DATA
26
+ else
27
+ data = nil
28
+ end
29
+ request({
30
+ :expects => 200,
31
+ :body => data,
32
+ :headers => options,
33
+ :idempotent => true,
34
+ :host => "#{bucket_name}.#{@host}",
35
+ :method => 'PUT'
36
+ })
37
+ end
38
+
39
+ end
40
+
41
+ class Mock # :nodoc:all
42
+
43
+ def put_bucket(bucket_name, options = {})
44
+ acl = options['x-amz-acl'] || 'private'
45
+ if !['private', 'public-read', 'public-read-write', 'authenticated-read'].include?(acl)
46
+ raise Excon::Errors::BadRequest.new('invalid x-amz-acl')
47
+ else
48
+ self.data[:acls][:bucket][bucket_name] = self.class.acls(acl)
49
+ end
50
+
51
+ response = Excon::Response.new
52
+ response.status = 200
53
+ bucket = {
54
+ :objects => {},
55
+ 'Name' => bucket_name,
56
+ 'CreationDate' => Time.now,
57
+ 'Owner' => { 'DisplayName' => 'owner', 'ID' => 'some_id'},
58
+ 'Payer' => 'BucketOwner'
59
+ }
60
+ if options['LocationConstraint']
61
+ bucket['LocationConstraint'] = options['LocationConstraint']
62
+ else
63
+ bucket['LocationConstraint'] = nil
64
+ end
65
+ unless self.data[:buckets][bucket_name]
66
+ self.data[:buckets][bucket_name] = bucket
67
+ end
68
+ response
69
+ end
70
+
71
+ end
72
+ end
73
+ end
74
+ end
@@ -0,0 +1,71 @@
1
+ module Fog
2
+ module Storage
3
+ class InternetArchive
4
+ class Real
5
+
6
+ require 'fog/internet_archive/requests/storage/acl_utils'
7
+
8
+ # Change access control list for an S3 bucket
9
+ #
10
+ # @param bucket_name [String] name of bucket to modify
11
+ # @param acl [Hash]
12
+ # * Owner [Hash]:
13
+ # * ID [String]: id of owner
14
+ # * DisplayName [String]: display name of owner
15
+ # * AccessControlList [Array]:
16
+ # * Grantee [Hash]:
17
+ # * DisplayName [String] Display name of grantee
18
+ # * ID [String] Id of grantee
19
+ # or
20
+ # * EmailAddress [String] Email address of grantee
21
+ # or
22
+ # * URI [String] URI of group to grant access for
23
+ # * Permission [String] Permission, in [FULL_CONTROL, WRITE, WRITE_ACP, READ, READ_ACP]
24
+ # * acl [String] Permissions, must be in ['private', 'public-read', 'public-read-write', 'authenticated-read']
25
+ #
26
+ # @see http://docs.amazonwebservices.com/AmazonS3/latest/API/RESTBucketPUTacl.html
27
+
28
+ def put_bucket_acl(bucket_name, acl)
29
+ data = ""
30
+ headers = {}
31
+
32
+ if acl.is_a?(Hash)
33
+ data = Fog::Storage::InternetArchive.hash_to_acl(acl)
34
+ else
35
+ if !['private', 'public-read', 'public-read-write', 'authenticated-read'].include?(acl)
36
+ raise Excon::Errors::BadRequest.new('invalid x-amz-acl')
37
+ end
38
+ headers['x-amz-acl'] = acl
39
+ end
40
+
41
+ headers['Content-MD5'] = Base64.encode64(Digest::MD5.digest(data)).strip
42
+ headers['Content-Type'] = 'application/json'
43
+ headers['Date'] = Fog::Time.now.to_date_header
44
+
45
+ request({
46
+ :body => data,
47
+ :expects => 200,
48
+ :headers => headers,
49
+ :host => "#{bucket_name}.#{@host}",
50
+ :method => 'PUT',
51
+ :query => {'acl' => nil}
52
+ })
53
+ end
54
+ end
55
+
56
+ class Mock
57
+ def put_bucket_acl(bucket_name, acl)
58
+ if acl.is_a?(Hash)
59
+ self.data[:acls][:bucket][bucket_name] = Fog::Storage::InternetArchive.hash_to_acl(acl)
60
+ else
61
+ if !['private', 'public-read', 'public-read-write', 'authenticated-read'].include?(acl)
62
+ raise Excon::Errors::BadRequest.new('invalid x-amz-acl')
63
+ end
64
+ self.data[:acls][:bucket][bucket_name] = acl
65
+ end
66
+ end
67
+ end
68
+
69
+ end
70
+ end
71
+ end
@@ -0,0 +1,49 @@
1
+ module Fog
2
+ module Storage
3
+ class InternetArchive
4
+ class Real
5
+
6
+ require 'fog/internet_archive/requests/storage/cors_utils'
7
+
8
+ # Sets the cors configuration for your bucket. If the configuration exists, Amazon S3 replaces it.
9
+ #
10
+ # @param bucket_name [String] name of bucket to modify
11
+ # @param cors [Hash]
12
+ # * CORSConfiguration [Array]:
13
+ # * ID [String]: A unique identifier for the rule.
14
+ # * AllowedMethod [String]: An HTTP method that you want to allow the origin to execute.
15
+ # * AllowedOrigin [String]: An origin that you want to allow cross-domain requests from.
16
+ # * AllowedHeader [String]: Specifies which headers are allowed in a pre-flight OPTIONS request via the Access-Control-Request-Headers header.
17
+ # * MaxAgeSeconds [String]: The time in seconds that your browser is to cache the preflight response for the specified resource.
18
+ # * ExposeHeader [String]: One or more headers in the response that you want customers to be able to access from their applications.
19
+ #
20
+ # @see http://docs.amazonwebservices.com/AmazonS3/latest/API/RESTBucketPUTcors.html
21
+
22
+ def put_bucket_cors(bucket_name, cors)
23
+ data = Fog::Storage::InternetArchive.hash_to_cors(cors)
24
+
25
+ headers = {}
26
+ headers['Content-MD5'] = Base64.encode64(Digest::MD5.digest(data)).strip
27
+ headers['Content-Type'] = 'application/json'
28
+ headers['Date'] = Fog::Time.now.to_date_header
29
+
30
+ request({
31
+ :body => data,
32
+ :expects => 200,
33
+ :headers => headers,
34
+ :host => "#{bucket_name}.#{@host}",
35
+ :method => 'PUT',
36
+ :query => {'cors' => nil}
37
+ })
38
+ end
39
+ end
40
+
41
+ class Mock
42
+ def put_bucket_cors(bucket_name, cors)
43
+ self.data[:cors][:bucket][bucket_name] = Fog::Storage::InternetArchive.hash_to_cors(cors)
44
+ end
45
+ end
46
+
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,77 @@
1
+ module Fog
2
+ module Storage
3
+ class InternetArchive
4
+ class Real
5
+
6
+ # Change lifecycle configuration for an S3 bucket
7
+ #
8
+ # @param bucket_name [String] name of bucket to set lifecycle configuration for
9
+ # * lifecycle [Hash]:
10
+ # * Rules [Array] object expire rules
11
+ # * ID [String] Unique identifier for the rule
12
+ # * Prefix [String] Prefix identifying one or more objects to which the rule applies
13
+ # * Enabled [Boolean] if rule is currently being applied
14
+ # * Expiration [Hash] Container for the object expiration rule.
15
+ # * Days [Integer] lifetime, in days, of the objects that are subject to the rule
16
+ # * Date [Date] Indicates when the specific rule take effect.
17
+ # The date value must conform to the ISO 8601 format. The time is always midnight UTC.
18
+ # * Transition [Hash] Container for the transition rule that describes when objects transition
19
+ # to the Glacier storage class
20
+ # * Days [Integer] lifetime, in days, of the objects that are subject to the rule
21
+ # * Date [Date] Indicates when the specific rule take effect.
22
+ # The date value must conform to the ISO 8601 format. The time is always midnight UTC.
23
+ # * StorageClass [String] Indicates the Amazon S3 storage class to which you want the object
24
+ # to transition to.
25
+ #
26
+ #
27
+ # @see http://docs.amazonwebservices.com/AmazonS3/latest/API/RESTBucketPUTlifecycle.html
28
+ #
29
+ def put_bucket_lifecycle(bucket_name, lifecycle)
30
+ builder = Nokogiri::XML::Builder.new do
31
+ LifecycleConfiguration {
32
+ lifecycle['Rules'].each do |rule|
33
+ Rule {
34
+ ID rule['ID']
35
+ Prefix rule['Prefix']
36
+ Status rule['Enabled'] ? 'Enabled' : 'Disabled'
37
+ unless (rule['Expiration'] or rule['Transition'])
38
+ Expiration { Days rule['Days'] }
39
+ else
40
+ if rule['Expiration']
41
+ if rule['Expiration']['Days']
42
+ Expiration { Days rule['Expiration']['Days'] }
43
+ elsif rule['Expiration']['Date']
44
+ Expiration { Date rule['Expiration']['Date'].is_a?(Time) ? rule['Expiration']['Date'].utc.iso8601 : Time.parse(rule['Expiration']['Date']).utc.iso8601 }
45
+ end
46
+ end
47
+ if rule['Transition']
48
+ Transition {
49
+ if rule['Transition']['Days']
50
+ Days rule['Transition']['Days']
51
+ elsif rule['Transition']['Date']
52
+ Date rule['Transition']['Date'].is_a?(Time) ? time.utc.iso8601 : Time.parse(time).utc.iso8601
53
+ end
54
+ StorageClass rule['Transition']['StorageClass'].nil? ? 'GLACIER' : rule['Transition']['StorageClass']
55
+ }
56
+ end
57
+ end
58
+ }
59
+ end
60
+ }
61
+ end
62
+ body = builder.to_xml
63
+ body.gsub! /<([^<>]+)\/>/, '<\1></\1>'
64
+ request({
65
+ :body => body,
66
+ :expects => 200,
67
+ :headers => {'Content-MD5' => Base64.encode64(Digest::MD5.digest(body)).chomp!,
68
+ 'Content-Type' => 'application/xml'},
69
+ :host => "#{bucket_name}.#{@host}",
70
+ :method => 'PUT',
71
+ :query => {'lifecycle' => nil}
72
+ })
73
+ end
74
+ end
75
+ end
76
+ end
77
+ end