fog-rackspace 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (711) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +9 -0
  3. data/.rspec +2 -0
  4. data/.travis.yml +4 -0
  5. data/CODE_OF_CONDUCT.md +49 -0
  6. data/Gemfile +4 -0
  7. data/LICENSE.txt +21 -0
  8. data/README.md +41 -0
  9. data/Rakefile +6 -0
  10. data/bin/console +14 -0
  11. data/bin/setup +8 -0
  12. data/fog-rackspace.gemspec +32 -0
  13. data/lib/fog/rackspace.rb +25 -0
  14. data/lib/fog/rackspace/auto_scale.rb +134 -0
  15. data/lib/fog/rackspace/block_storage.rb +175 -0
  16. data/lib/fog/rackspace/cdn.rb +198 -0
  17. data/lib/fog/rackspace/cdn_v2.rb +123 -0
  18. data/lib/fog/rackspace/compute.rb +256 -0
  19. data/lib/fog/rackspace/compute_v2.rb +251 -0
  20. data/lib/fog/rackspace/core.rb +150 -0
  21. data/lib/fog/rackspace/databases.rb +164 -0
  22. data/lib/fog/rackspace/dns.rb +172 -0
  23. data/lib/fog/rackspace/docs/auto_scale.md +503 -0
  24. data/lib/fog/rackspace/docs/block_storage.md +417 -0
  25. data/lib/fog/rackspace/docs/cdn_v2.md +351 -0
  26. data/lib/fog/rackspace/docs/compute_v2.md +723 -0
  27. data/lib/fog/rackspace/docs/getting_started.md +88 -0
  28. data/lib/fog/rackspace/docs/networking_v2.md +422 -0
  29. data/lib/fog/rackspace/docs/orchestration.md +356 -0
  30. data/lib/fog/rackspace/docs/queues.md +312 -0
  31. data/lib/fog/rackspace/docs/storage.md +557 -0
  32. data/lib/fog/rackspace/errors.rb +33 -0
  33. data/lib/fog/rackspace/examples/README.md +47 -0
  34. data/lib/fog/rackspace/examples/auto_scale/add_policy.rb +66 -0
  35. data/lib/fog/rackspace/examples/auto_scale/add_webhook.rb +74 -0
  36. data/lib/fog/rackspace/examples/auto_scale/create_scaling_group.rb +111 -0
  37. data/lib/fog/rackspace/examples/auto_scale/delete_policy.rb +71 -0
  38. data/lib/fog/rackspace/examples/auto_scale/delete_scaling_group.rb +59 -0
  39. data/lib/fog/rackspace/examples/auto_scale/delete_webhook.rb +89 -0
  40. data/lib/fog/rackspace/examples/block_storage/create_snapshot.rb +116 -0
  41. data/lib/fog/rackspace/examples/block_storage/create_volume.rb +58 -0
  42. data/lib/fog/rackspace/examples/block_storage/delete_volume.rb +53 -0
  43. data/lib/fog/rackspace/examples/compute_v2/bootstrap_server.rb +96 -0
  44. data/lib/fog/rackspace/examples/compute_v2/create_image.rb +59 -0
  45. data/lib/fog/rackspace/examples/compute_v2/create_network.rb +81 -0
  46. data/lib/fog/rackspace/examples/compute_v2/create_server.rb +87 -0
  47. data/lib/fog/rackspace/examples/compute_v2/delete_image.rb +60 -0
  48. data/lib/fog/rackspace/examples/compute_v2/delete_network.rb +78 -0
  49. data/lib/fog/rackspace/examples/compute_v2/delete_server.rb +55 -0
  50. data/lib/fog/rackspace/examples/compute_v2/detach_volume.rb +93 -0
  51. data/lib/fog/rackspace/examples/compute_v2/resize_server.rb +106 -0
  52. data/lib/fog/rackspace/examples/compute_v2/server_attachments.rb +68 -0
  53. data/lib/fog/rackspace/examples/compute_v2/server_metadata.rb +83 -0
  54. data/lib/fog/rackspace/examples/queues/claim_messages.rb +60 -0
  55. data/lib/fog/rackspace/examples/queues/create_queue.rb +45 -0
  56. data/lib/fog/rackspace/examples/queues/delete_message.rb +71 -0
  57. data/lib/fog/rackspace/examples/queues/delete_queue.rb +53 -0
  58. data/lib/fog/rackspace/examples/queues/list_messages.rb +64 -0
  59. data/lib/fog/rackspace/examples/queues/post_message.rb +59 -0
  60. data/lib/fog/rackspace/examples/storage/create_cdn_directory.rb +43 -0
  61. data/lib/fog/rackspace/examples/storage/create_private_directory.rb +43 -0
  62. data/lib/fog/rackspace/examples/storage/delete_directory.rb +62 -0
  63. data/lib/fog/rackspace/examples/storage/delete_file.rb +70 -0
  64. data/lib/fog/rackspace/examples/storage/download_file.rb +75 -0
  65. data/lib/fog/rackspace/examples/storage/lorem.txt +1 -0
  66. data/lib/fog/rackspace/examples/storage/storage_metadata.rb +76 -0
  67. data/lib/fog/rackspace/examples/storage/upload_file.rb +44 -0
  68. data/lib/fog/rackspace/examples/storage/upload_large_files.rb +101 -0
  69. data/lib/fog/rackspace/identity.rb +83 -0
  70. data/lib/fog/rackspace/load_balancers.rb +206 -0
  71. data/lib/fog/rackspace/mock_data.rb +252 -0
  72. data/lib/fog/rackspace/models/auto_scale/group.rb +214 -0
  73. data/lib/fog/rackspace/models/auto_scale/group_builder.rb +86 -0
  74. data/lib/fog/rackspace/models/auto_scale/group_config.rb +76 -0
  75. data/lib/fog/rackspace/models/auto_scale/groups.rb +45 -0
  76. data/lib/fog/rackspace/models/auto_scale/launch_config.rb +61 -0
  77. data/lib/fog/rackspace/models/auto_scale/policies.rb +65 -0
  78. data/lib/fog/rackspace/models/auto_scale/policy.rb +220 -0
  79. data/lib/fog/rackspace/models/auto_scale/webhook.rb +116 -0
  80. data/lib/fog/rackspace/models/auto_scale/webhooks.rb +62 -0
  81. data/lib/fog/rackspace/models/block_storage/snapshot.rb +93 -0
  82. data/lib/fog/rackspace/models/block_storage/snapshots.rb +39 -0
  83. data/lib/fog/rackspace/models/block_storage/volume.rb +135 -0
  84. data/lib/fog/rackspace/models/block_storage/volume_type.rb +19 -0
  85. data/lib/fog/rackspace/models/block_storage/volume_types.rb +39 -0
  86. data/lib/fog/rackspace/models/block_storage/volumes.rb +39 -0
  87. data/lib/fog/rackspace/models/cdn_v2/flavor.rb +14 -0
  88. data/lib/fog/rackspace/models/cdn_v2/flavors.rb +24 -0
  89. data/lib/fog/rackspace/models/cdn_v2/service.rb +66 -0
  90. data/lib/fog/rackspace/models/cdn_v2/services.rb +24 -0
  91. data/lib/fog/rackspace/models/compute/flavor.rb +42 -0
  92. data/lib/fog/rackspace/models/compute/flavors.rb +24 -0
  93. data/lib/fog/rackspace/models/compute/image.rb +44 -0
  94. data/lib/fog/rackspace/models/compute/images.rb +31 -0
  95. data/lib/fog/rackspace/models/compute/server.rb +102 -0
  96. data/lib/fog/rackspace/models/compute/servers.rb +32 -0
  97. data/lib/fog/rackspace/models/compute_v2/attachment.rb +61 -0
  98. data/lib/fog/rackspace/models/compute_v2/attachments.rb +38 -0
  99. data/lib/fog/rackspace/models/compute_v2/flavor.rb +33 -0
  100. data/lib/fog/rackspace/models/compute_v2/flavors.rb +39 -0
  101. data/lib/fog/rackspace/models/compute_v2/image.rb +117 -0
  102. data/lib/fog/rackspace/models/compute_v2/images.rb +73 -0
  103. data/lib/fog/rackspace/models/compute_v2/key_pair.rb +54 -0
  104. data/lib/fog/rackspace/models/compute_v2/key_pairs.rb +40 -0
  105. data/lib/fog/rackspace/models/compute_v2/meta_parent.rb +40 -0
  106. data/lib/fog/rackspace/models/compute_v2/metadata.rb +108 -0
  107. data/lib/fog/rackspace/models/compute_v2/metadatum.rb +39 -0
  108. data/lib/fog/rackspace/models/compute_v2/network.rb +27 -0
  109. data/lib/fog/rackspace/models/compute_v2/networks.rb +23 -0
  110. data/lib/fog/rackspace/models/compute_v2/server.rb +655 -0
  111. data/lib/fog/rackspace/models/compute_v2/servers.rb +64 -0
  112. data/lib/fog/rackspace/models/compute_v2/virtual_interface.rb +85 -0
  113. data/lib/fog/rackspace/models/compute_v2/virtual_interfaces.rb +46 -0
  114. data/lib/fog/rackspace/models/databases/database.rb +43 -0
  115. data/lib/fog/rackspace/models/databases/databases.rb +30 -0
  116. data/lib/fog/rackspace/models/databases/flavor.rb +15 -0
  117. data/lib/fog/rackspace/models/databases/flavors.rb +24 -0
  118. data/lib/fog/rackspace/models/databases/instance.rb +104 -0
  119. data/lib/fog/rackspace/models/databases/instances.rb +24 -0
  120. data/lib/fog/rackspace/models/databases/user.rb +33 -0
  121. data/lib/fog/rackspace/models/databases/users.rb +30 -0
  122. data/lib/fog/rackspace/models/dns/callback.rb +28 -0
  123. data/lib/fog/rackspace/models/dns/record.rb +98 -0
  124. data/lib/fog/rackspace/models/dns/records.rb +58 -0
  125. data/lib/fog/rackspace/models/dns/zone.rb +66 -0
  126. data/lib/fog/rackspace/models/dns/zones.rb +74 -0
  127. data/lib/fog/rackspace/models/identity/credential.rb +13 -0
  128. data/lib/fog/rackspace/models/identity/credentials.rb +32 -0
  129. data/lib/fog/rackspace/models/identity/role.rb +14 -0
  130. data/lib/fog/rackspace/models/identity/roles.rb +31 -0
  131. data/lib/fog/rackspace/models/identity/service_catalog.rb +84 -0
  132. data/lib/fog/rackspace/models/identity/tenant.rb +15 -0
  133. data/lib/fog/rackspace/models/identity/tenants.rb +27 -0
  134. data/lib/fog/rackspace/models/identity/user.rb +53 -0
  135. data/lib/fog/rackspace/models/identity/users.rb +35 -0
  136. data/lib/fog/rackspace/models/load_balancers/access_rule.rb +38 -0
  137. data/lib/fog/rackspace/models/load_balancers/access_rules.rb +29 -0
  138. data/lib/fog/rackspace/models/load_balancers/load_balancer.rb +286 -0
  139. data/lib/fog/rackspace/models/load_balancers/load_balancers.rb +25 -0
  140. data/lib/fog/rackspace/models/load_balancers/node.rb +65 -0
  141. data/lib/fog/rackspace/models/load_balancers/nodes.rb +29 -0
  142. data/lib/fog/rackspace/models/load_balancers/virtual_ip.rb +34 -0
  143. data/lib/fog/rackspace/models/load_balancers/virtual_ips.rb +32 -0
  144. data/lib/fog/rackspace/models/monitoring/agent_token.rb +38 -0
  145. data/lib/fog/rackspace/models/monitoring/agent_tokens.rb +29 -0
  146. data/lib/fog/rackspace/models/monitoring/alarm.rb +58 -0
  147. data/lib/fog/rackspace/models/monitoring/alarm_example.rb +24 -0
  148. data/lib/fog/rackspace/models/monitoring/alarm_examples.rb +29 -0
  149. data/lib/fog/rackspace/models/monitoring/alarms.rb +41 -0
  150. data/lib/fog/rackspace/models/monitoring/base.rb +29 -0
  151. data/lib/fog/rackspace/models/monitoring/check.rb +72 -0
  152. data/lib/fog/rackspace/models/monitoring/check_type.rb +15 -0
  153. data/lib/fog/rackspace/models/monitoring/check_types.rb +21 -0
  154. data/lib/fog/rackspace/models/monitoring/checks.rb +41 -0
  155. data/lib/fog/rackspace/models/monitoring/data_point.rb +18 -0
  156. data/lib/fog/rackspace/models/monitoring/data_points.rb +47 -0
  157. data/lib/fog/rackspace/models/monitoring/entities.rb +47 -0
  158. data/lib/fog/rackspace/models/monitoring/entity.rb +62 -0
  159. data/lib/fog/rackspace/models/monitoring/metric.rb +22 -0
  160. data/lib/fog/rackspace/models/monitoring/metrics.rb +25 -0
  161. data/lib/fog/rackspace/models/monitoring/notification.rb +40 -0
  162. data/lib/fog/rackspace/models/monitoring/notifications.rb +28 -0
  163. data/lib/fog/rackspace/models/networking/network.rb +27 -0
  164. data/lib/fog/rackspace/models/networking/networks.rb +23 -0
  165. data/lib/fog/rackspace/models/networking/virtual_interface.rb +85 -0
  166. data/lib/fog/rackspace/models/networking/virtual_interfaces.rb +45 -0
  167. data/lib/fog/rackspace/models/networking_v2/network.rb +36 -0
  168. data/lib/fog/rackspace/models/networking_v2/networks.rb +23 -0
  169. data/lib/fog/rackspace/models/networking_v2/port.rb +39 -0
  170. data/lib/fog/rackspace/models/networking_v2/ports.rb +23 -0
  171. data/lib/fog/rackspace/models/networking_v2/security_group.rb +32 -0
  172. data/lib/fog/rackspace/models/networking_v2/security_group_rule.rb +38 -0
  173. data/lib/fog/rackspace/models/networking_v2/security_group_rules.rb +23 -0
  174. data/lib/fog/rackspace/models/networking_v2/security_groups.rb +23 -0
  175. data/lib/fog/rackspace/models/networking_v2/subnet.rb +38 -0
  176. data/lib/fog/rackspace/models/networking_v2/subnets.rb +23 -0
  177. data/lib/fog/rackspace/models/orchestration/event.rb +18 -0
  178. data/lib/fog/rackspace/models/orchestration/events.rb +28 -0
  179. data/lib/fog/rackspace/models/orchestration/resource.rb +30 -0
  180. data/lib/fog/rackspace/models/orchestration/resource_schemas.rb +16 -0
  181. data/lib/fog/rackspace/models/orchestration/resources.rb +35 -0
  182. data/lib/fog/rackspace/models/orchestration/stack.rb +48 -0
  183. data/lib/fog/rackspace/models/orchestration/stacks.rb +40 -0
  184. data/lib/fog/rackspace/models/orchestration/template.rb +13 -0
  185. data/lib/fog/rackspace/models/orchestration/templates.rb +31 -0
  186. data/lib/fog/rackspace/models/queues/claim.rb +139 -0
  187. data/lib/fog/rackspace/models/queues/claims.rb +64 -0
  188. data/lib/fog/rackspace/models/queues/message.rb +88 -0
  189. data/lib/fog/rackspace/models/queues/messages.rb +90 -0
  190. data/lib/fog/rackspace/models/queues/queue.rb +135 -0
  191. data/lib/fog/rackspace/models/queues/queues.rb +46 -0
  192. data/lib/fog/rackspace/models/storage/account.rb +50 -0
  193. data/lib/fog/rackspace/models/storage/directories.rb +62 -0
  194. data/lib/fog/rackspace/models/storage/directory.rb +194 -0
  195. data/lib/fog/rackspace/models/storage/file.rb +286 -0
  196. data/lib/fog/rackspace/models/storage/files.rb +201 -0
  197. data/lib/fog/rackspace/models/storage/metadata.rb +165 -0
  198. data/lib/fog/rackspace/monitoring.rb +184 -0
  199. data/lib/fog/rackspace/networking.rb +192 -0
  200. data/lib/fog/rackspace/networking_v2.rb +222 -0
  201. data/lib/fog/rackspace/orchestration.rb +227 -0
  202. data/lib/fog/rackspace/queues.rb +406 -0
  203. data/lib/fog/rackspace/requests/auto_scale/create_group.rb +58 -0
  204. data/lib/fog/rackspace/requests/auto_scale/create_policy.rb +42 -0
  205. data/lib/fog/rackspace/requests/auto_scale/create_webhook.rb +54 -0
  206. data/lib/fog/rackspace/requests/auto_scale/delete_group.rb +22 -0
  207. data/lib/fog/rackspace/requests/auto_scale/delete_policy.rb +29 -0
  208. data/lib/fog/rackspace/requests/auto_scale/delete_webhook.rb +33 -0
  209. data/lib/fog/rackspace/requests/auto_scale/execute_anonymous_webhook.rb +21 -0
  210. data/lib/fog/rackspace/requests/auto_scale/execute_policy.rb +21 -0
  211. data/lib/fog/rackspace/requests/auto_scale/get_group.rb +26 -0
  212. data/lib/fog/rackspace/requests/auto_scale/get_group_config.rb +27 -0
  213. data/lib/fog/rackspace/requests/auto_scale/get_group_state.rb +58 -0
  214. data/lib/fog/rackspace/requests/auto_scale/get_launch_config.rb +27 -0
  215. data/lib/fog/rackspace/requests/auto_scale/get_policy.rb +31 -0
  216. data/lib/fog/rackspace/requests/auto_scale/get_webhook.rb +36 -0
  217. data/lib/fog/rackspace/requests/auto_scale/list_groups.rb +34 -0
  218. data/lib/fog/rackspace/requests/auto_scale/list_policies.rb +22 -0
  219. data/lib/fog/rackspace/requests/auto_scale/list_webhooks.rb +31 -0
  220. data/lib/fog/rackspace/requests/auto_scale/pause_group_state.rb +22 -0
  221. data/lib/fog/rackspace/requests/auto_scale/resume_group_state.rb +21 -0
  222. data/lib/fog/rackspace/requests/auto_scale/update_group_config.rb +37 -0
  223. data/lib/fog/rackspace/requests/auto_scale/update_launch_config.rb +34 -0
  224. data/lib/fog/rackspace/requests/auto_scale/update_policy.rb +31 -0
  225. data/lib/fog/rackspace/requests/auto_scale/update_webhook.rb +41 -0
  226. data/lib/fog/rackspace/requests/block_storage/create_snapshot.rb +77 -0
  227. data/lib/fog/rackspace/requests/block_storage/create_volume.rb +96 -0
  228. data/lib/fog/rackspace/requests/block_storage/delete_snapshot.rb +31 -0
  229. data/lib/fog/rackspace/requests/block_storage/delete_volume.rb +42 -0
  230. data/lib/fog/rackspace/requests/block_storage/get_snapshot.rb +45 -0
  231. data/lib/fog/rackspace/requests/block_storage/get_volume.rb +55 -0
  232. data/lib/fog/rackspace/requests/block_storage/get_volume_type.rb +41 -0
  233. data/lib/fog/rackspace/requests/block_storage/list_snapshots.rb +39 -0
  234. data/lib/fog/rackspace/requests/block_storage/list_volume_types.rb +34 -0
  235. data/lib/fog/rackspace/requests/block_storage/list_volumes.rb +42 -0
  236. data/lib/fog/rackspace/requests/cdn/delete_object.rb +39 -0
  237. data/lib/fog/rackspace/requests/cdn/get_containers.rb +66 -0
  238. data/lib/fog/rackspace/requests/cdn/head_container.rb +58 -0
  239. data/lib/fog/rackspace/requests/cdn/post_container.rb +52 -0
  240. data/lib/fog/rackspace/requests/cdn/put_container.rb +52 -0
  241. data/lib/fog/rackspace/requests/cdn_v2/create_service.rb +10 -0
  242. data/lib/fog/rackspace/requests/cdn_v2/delete_assets.rb +12 -0
  243. data/lib/fog/rackspace/requests/cdn_v2/delete_service.rb +9 -0
  244. data/lib/fog/rackspace/requests/cdn_v2/get_flavor.rb +9 -0
  245. data/lib/fog/rackspace/requests/cdn_v2/get_home_document.rb +9 -0
  246. data/lib/fog/rackspace/requests/cdn_v2/get_ping.rb +10 -0
  247. data/lib/fog/rackspace/requests/cdn_v2/get_service.rb +9 -0
  248. data/lib/fog/rackspace/requests/cdn_v2/list_flavors.rb +9 -0
  249. data/lib/fog/rackspace/requests/cdn_v2/list_services.rb +9 -0
  250. data/lib/fog/rackspace/requests/cdn_v2/update_service.rb +13 -0
  251. data/lib/fog/rackspace/requests/compute/confirm_resized_server.rb +30 -0
  252. data/lib/fog/rackspace/requests/compute/create_image.rb +56 -0
  253. data/lib/fog/rackspace/requests/compute/create_server.rb +90 -0
  254. data/lib/fog/rackspace/requests/compute/delete_image.rb +40 -0
  255. data/lib/fog/rackspace/requests/compute/delete_server.rb +39 -0
  256. data/lib/fog/rackspace/requests/compute/get_flavor_details.rb +48 -0
  257. data/lib/fog/rackspace/requests/compute/get_image_details.rb +25 -0
  258. data/lib/fog/rackspace/requests/compute/get_server_details.rb +48 -0
  259. data/lib/fog/rackspace/requests/compute/list_addresses.rb +39 -0
  260. data/lib/fog/rackspace/requests/compute/list_flavors.rb +41 -0
  261. data/lib/fog/rackspace/requests/compute/list_flavors_detail.rb +43 -0
  262. data/lib/fog/rackspace/requests/compute/list_images.rb +36 -0
  263. data/lib/fog/rackspace/requests/compute/list_images_detail.rb +45 -0
  264. data/lib/fog/rackspace/requests/compute/list_private_addresses.rb +37 -0
  265. data/lib/fog/rackspace/requests/compute/list_public_addresses.rb +37 -0
  266. data/lib/fog/rackspace/requests/compute/list_servers.rb +37 -0
  267. data/lib/fog/rackspace/requests/compute/list_servers_detail.rb +52 -0
  268. data/lib/fog/rackspace/requests/compute/reboot_server.rb +26 -0
  269. data/lib/fog/rackspace/requests/compute/resize_server.rb +35 -0
  270. data/lib/fog/rackspace/requests/compute/revert_resized_server.rb +31 -0
  271. data/lib/fog/rackspace/requests/compute/server_action.rb +23 -0
  272. data/lib/fog/rackspace/requests/compute/update_server.rb +41 -0
  273. data/lib/fog/rackspace/requests/compute_v2/attach_volume.rb +78 -0
  274. data/lib/fog/rackspace/requests/compute_v2/change_server_password.rb +38 -0
  275. data/lib/fog/rackspace/requests/compute_v2/confirm_resize_server.rb +41 -0
  276. data/lib/fog/rackspace/requests/compute_v2/create_image.rb +97 -0
  277. data/lib/fog/rackspace/requests/compute_v2/create_keypair.rb +62 -0
  278. data/lib/fog/rackspace/requests/compute_v2/create_network.rb +36 -0
  279. data/lib/fog/rackspace/requests/compute_v2/create_server.rb +243 -0
  280. data/lib/fog/rackspace/requests/compute_v2/create_virtual_interface.rb +30 -0
  281. data/lib/fog/rackspace/requests/compute_v2/delete_attachment.rb +39 -0
  282. data/lib/fog/rackspace/requests/compute_v2/delete_image.rb +32 -0
  283. data/lib/fog/rackspace/requests/compute_v2/delete_keypair.rb +34 -0
  284. data/lib/fog/rackspace/requests/compute_v2/delete_metadata_item.rb +36 -0
  285. data/lib/fog/rackspace/requests/compute_v2/delete_network.rb +21 -0
  286. data/lib/fog/rackspace/requests/compute_v2/delete_server.rb +35 -0
  287. data/lib/fog/rackspace/requests/compute_v2/delete_virtual_interface.rb +23 -0
  288. data/lib/fog/rackspace/requests/compute_v2/get_attachment.rb +38 -0
  289. data/lib/fog/rackspace/requests/compute_v2/get_flavor.rb +43 -0
  290. data/lib/fog/rackspace/requests/compute_v2/get_image.rb +47 -0
  291. data/lib/fog/rackspace/requests/compute_v2/get_keypair.rb +39 -0
  292. data/lib/fog/rackspace/requests/compute_v2/get_metadata_item.rb +38 -0
  293. data/lib/fog/rackspace/requests/compute_v2/get_network.rb +21 -0
  294. data/lib/fog/rackspace/requests/compute_v2/get_server.rb +63 -0
  295. data/lib/fog/rackspace/requests/compute_v2/get_vnc_console.rb +45 -0
  296. data/lib/fog/rackspace/requests/compute_v2/list_addresses.rb +39 -0
  297. data/lib/fog/rackspace/requests/compute_v2/list_addresses_by_network.rb +48 -0
  298. data/lib/fog/rackspace/requests/compute_v2/list_attachments.rb +37 -0
  299. data/lib/fog/rackspace/requests/compute_v2/list_flavors.rb +35 -0
  300. data/lib/fog/rackspace/requests/compute_v2/list_flavors_detail.rb +38 -0
  301. data/lib/fog/rackspace/requests/compute_v2/list_images.rb +45 -0
  302. data/lib/fog/rackspace/requests/compute_v2/list_images_detail.rb +52 -0
  303. data/lib/fog/rackspace/requests/compute_v2/list_keypairs.rb +35 -0
  304. data/lib/fog/rackspace/requests/compute_v2/list_metadata.rb +37 -0
  305. data/lib/fog/rackspace/requests/compute_v2/list_networks.rb +18 -0
  306. data/lib/fog/rackspace/requests/compute_v2/list_servers.rb +56 -0
  307. data/lib/fog/rackspace/requests/compute_v2/list_virtual_interfaces.rb +22 -0
  308. data/lib/fog/rackspace/requests/compute_v2/reboot_server.rb +44 -0
  309. data/lib/fog/rackspace/requests/compute_v2/rebuild_server.rb +71 -0
  310. data/lib/fog/rackspace/requests/compute_v2/rescue_server.rb +43 -0
  311. data/lib/fog/rackspace/requests/compute_v2/resize_server.rb +44 -0
  312. data/lib/fog/rackspace/requests/compute_v2/revert_resize_server.rb +42 -0
  313. data/lib/fog/rackspace/requests/compute_v2/set_metadata.rb +39 -0
  314. data/lib/fog/rackspace/requests/compute_v2/set_metadata_item.rb +40 -0
  315. data/lib/fog/rackspace/requests/compute_v2/unrescue_server.rb +40 -0
  316. data/lib/fog/rackspace/requests/compute_v2/update_metadata.rb +39 -0
  317. data/lib/fog/rackspace/requests/compute_v2/update_server.rb +44 -0
  318. data/lib/fog/rackspace/requests/databases/check_root_user.rb +15 -0
  319. data/lib/fog/rackspace/requests/databases/create_database.rb +24 -0
  320. data/lib/fog/rackspace/requests/databases/create_instance.rb +28 -0
  321. data/lib/fog/rackspace/requests/databases/create_user.rb +25 -0
  322. data/lib/fog/rackspace/requests/databases/delete_database.rb +15 -0
  323. data/lib/fog/rackspace/requests/databases/delete_instance.rb +15 -0
  324. data/lib/fog/rackspace/requests/databases/delete_user.rb +15 -0
  325. data/lib/fog/rackspace/requests/databases/enable_root_user.rb +15 -0
  326. data/lib/fog/rackspace/requests/databases/get_flavor.rb +15 -0
  327. data/lib/fog/rackspace/requests/databases/get_instance.rb +15 -0
  328. data/lib/fog/rackspace/requests/databases/grant_user_access.rb +32 -0
  329. data/lib/fog/rackspace/requests/databases/list_databases.rb +15 -0
  330. data/lib/fog/rackspace/requests/databases/list_flavors.rb +15 -0
  331. data/lib/fog/rackspace/requests/databases/list_instances.rb +15 -0
  332. data/lib/fog/rackspace/requests/databases/list_users.rb +15 -0
  333. data/lib/fog/rackspace/requests/databases/resize_instance.rb +22 -0
  334. data/lib/fog/rackspace/requests/databases/resize_instance_volume.rb +24 -0
  335. data/lib/fog/rackspace/requests/databases/restart_instance.rb +20 -0
  336. data/lib/fog/rackspace/requests/databases/revoke_user_access.rb +26 -0
  337. data/lib/fog/rackspace/requests/dns/add_records.rb +37 -0
  338. data/lib/fog/rackspace/requests/dns/callback.rb +18 -0
  339. data/lib/fog/rackspace/requests/dns/create_domains.rb +48 -0
  340. data/lib/fog/rackspace/requests/dns/list_domain_details.rb +31 -0
  341. data/lib/fog/rackspace/requests/dns/list_domains.rb +20 -0
  342. data/lib/fog/rackspace/requests/dns/list_record_details.rb +20 -0
  343. data/lib/fog/rackspace/requests/dns/list_records.rb +22 -0
  344. data/lib/fog/rackspace/requests/dns/list_subdomains.rb +22 -0
  345. data/lib/fog/rackspace/requests/dns/modify_domain.rb +35 -0
  346. data/lib/fog/rackspace/requests/dns/modify_record.rb +36 -0
  347. data/lib/fog/rackspace/requests/dns/remove_domain.rb +28 -0
  348. data/lib/fog/rackspace/requests/dns/remove_domains.rb +26 -0
  349. data/lib/fog/rackspace/requests/dns/remove_record.rb +20 -0
  350. data/lib/fog/rackspace/requests/dns/remove_records.rb +19 -0
  351. data/lib/fog/rackspace/requests/identity/create_token.rb +222 -0
  352. data/lib/fog/rackspace/requests/identity/create_user.rb +25 -0
  353. data/lib/fog/rackspace/requests/identity/delete_user.rb +15 -0
  354. data/lib/fog/rackspace/requests/identity/get_user_by_id.rb +15 -0
  355. data/lib/fog/rackspace/requests/identity/get_user_by_name.rb +15 -0
  356. data/lib/fog/rackspace/requests/identity/list_credentials.rb +22 -0
  357. data/lib/fog/rackspace/requests/identity/list_tenants.rb +45 -0
  358. data/lib/fog/rackspace/requests/identity/list_user_roles.rb +22 -0
  359. data/lib/fog/rackspace/requests/identity/list_users.rb +22 -0
  360. data/lib/fog/rackspace/requests/identity/update_user.rb +24 -0
  361. data/lib/fog/rackspace/requests/load_balancers/create_access_rule.rb +24 -0
  362. data/lib/fog/rackspace/requests/load_balancers/create_load_balancer.rb +109 -0
  363. data/lib/fog/rackspace/requests/load_balancers/create_node.rb +30 -0
  364. data/lib/fog/rackspace/requests/load_balancers/create_virtual_ip.rb +20 -0
  365. data/lib/fog/rackspace/requests/load_balancers/delete_access_rule.rb +15 -0
  366. data/lib/fog/rackspace/requests/load_balancers/delete_all_access_rules.rb +15 -0
  367. data/lib/fog/rackspace/requests/load_balancers/delete_load_balancer.rb +23 -0
  368. data/lib/fog/rackspace/requests/load_balancers/delete_node.rb +15 -0
  369. data/lib/fog/rackspace/requests/load_balancers/delete_nodes.rb +16 -0
  370. data/lib/fog/rackspace/requests/load_balancers/delete_virtual_ip.rb +15 -0
  371. data/lib/fog/rackspace/requests/load_balancers/get_connection_logging.rb +15 -0
  372. data/lib/fog/rackspace/requests/load_balancers/get_connection_throttling.rb +15 -0
  373. data/lib/fog/rackspace/requests/load_balancers/get_content_caching.rb +15 -0
  374. data/lib/fog/rackspace/requests/load_balancers/get_error_page.rb +15 -0
  375. data/lib/fog/rackspace/requests/load_balancers/get_load_balancer.rb +44 -0
  376. data/lib/fog/rackspace/requests/load_balancers/get_load_balancer_usage.rb +21 -0
  377. data/lib/fog/rackspace/requests/load_balancers/get_monitor.rb +15 -0
  378. data/lib/fog/rackspace/requests/load_balancers/get_node.rb +15 -0
  379. data/lib/fog/rackspace/requests/load_balancers/get_session_persistence.rb +15 -0
  380. data/lib/fog/rackspace/requests/load_balancers/get_ssl_termination.rb +15 -0
  381. data/lib/fog/rackspace/requests/load_balancers/get_stats.rb +30 -0
  382. data/lib/fog/rackspace/requests/load_balancers/get_usage.rb +20 -0
  383. data/lib/fog/rackspace/requests/load_balancers/list_access_rules.rb +15 -0
  384. data/lib/fog/rackspace/requests/load_balancers/list_algorithms.rb +15 -0
  385. data/lib/fog/rackspace/requests/load_balancers/list_load_balancers.rb +21 -0
  386. data/lib/fog/rackspace/requests/load_balancers/list_nodes.rb +15 -0
  387. data/lib/fog/rackspace/requests/load_balancers/list_protocols.rb +15 -0
  388. data/lib/fog/rackspace/requests/load_balancers/list_virtual_ips.rb +15 -0
  389. data/lib/fog/rackspace/requests/load_balancers/remove_connection_throttling.rb +15 -0
  390. data/lib/fog/rackspace/requests/load_balancers/remove_error_page.rb +15 -0
  391. data/lib/fog/rackspace/requests/load_balancers/remove_monitor.rb +15 -0
  392. data/lib/fog/rackspace/requests/load_balancers/remove_session_persistence.rb +15 -0
  393. data/lib/fog/rackspace/requests/load_balancers/remove_ssl_termination.rb +15 -0
  394. data/lib/fog/rackspace/requests/load_balancers/set_connection_logging.rb +21 -0
  395. data/lib/fog/rackspace/requests/load_balancers/set_connection_throttling.rb +22 -0
  396. data/lib/fog/rackspace/requests/load_balancers/set_content_caching.rb +21 -0
  397. data/lib/fog/rackspace/requests/load_balancers/set_error_page.rb +21 -0
  398. data/lib/fog/rackspace/requests/load_balancers/set_monitor.rb +31 -0
  399. data/lib/fog/rackspace/requests/load_balancers/set_session_persistence.rb +21 -0
  400. data/lib/fog/rackspace/requests/load_balancers/set_ssl_termination.rb +31 -0
  401. data/lib/fog/rackspace/requests/load_balancers/update_load_balancer.rb +26 -0
  402. data/lib/fog/rackspace/requests/load_balancers/update_node.rb +29 -0
  403. data/lib/fog/rackspace/requests/monitoring/create_agent_token.rb +47 -0
  404. data/lib/fog/rackspace/requests/monitoring/create_alarm.rb +47 -0
  405. data/lib/fog/rackspace/requests/monitoring/create_check.rb +47 -0
  406. data/lib/fog/rackspace/requests/monitoring/create_entity.rb +47 -0
  407. data/lib/fog/rackspace/requests/monitoring/create_notification.rb +17 -0
  408. data/lib/fog/rackspace/requests/monitoring/delete_agent_token.rb +45 -0
  409. data/lib/fog/rackspace/requests/monitoring/delete_alarm.rb +41 -0
  410. data/lib/fog/rackspace/requests/monitoring/delete_check.rb +40 -0
  411. data/lib/fog/rackspace/requests/monitoring/delete_entity.rb +40 -0
  412. data/lib/fog/rackspace/requests/monitoring/delete_notification.rb +15 -0
  413. data/lib/fog/rackspace/requests/monitoring/evaluate_alarm_example.rb +18 -0
  414. data/lib/fog/rackspace/requests/monitoring/get_agent.rb +44 -0
  415. data/lib/fog/rackspace/requests/monitoring/get_agent_token.rb +47 -0
  416. data/lib/fog/rackspace/requests/monitoring/get_alarm.rb +51 -0
  417. data/lib/fog/rackspace/requests/monitoring/get_alarm_example.rb +15 -0
  418. data/lib/fog/rackspace/requests/monitoring/get_check.rb +56 -0
  419. data/lib/fog/rackspace/requests/monitoring/get_cpus_info.rb +61 -0
  420. data/lib/fog/rackspace/requests/monitoring/get_disks_info.rb +54 -0
  421. data/lib/fog/rackspace/requests/monitoring/get_entity.rb +55 -0
  422. data/lib/fog/rackspace/requests/monitoring/get_filesystems_info.rb +62 -0
  423. data/lib/fog/rackspace/requests/monitoring/get_logged_in_user_info.rb +56 -0
  424. data/lib/fog/rackspace/requests/monitoring/get_memory_info.rb +57 -0
  425. data/lib/fog/rackspace/requests/monitoring/get_monitoring_zone.rb +15 -0
  426. data/lib/fog/rackspace/requests/monitoring/get_network_interfaces_info.rb +89 -0
  427. data/lib/fog/rackspace/requests/monitoring/get_notification.rb +46 -0
  428. data/lib/fog/rackspace/requests/monitoring/get_processes_info.rb +70 -0
  429. data/lib/fog/rackspace/requests/monitoring/get_system_info.rb +51 -0
  430. data/lib/fog/rackspace/requests/monitoring/list_agent_tokens.rb +55 -0
  431. data/lib/fog/rackspace/requests/monitoring/list_agents.rb +61 -0
  432. data/lib/fog/rackspace/requests/monitoring/list_alarm_examples.rb +15 -0
  433. data/lib/fog/rackspace/requests/monitoring/list_alarms.rb +64 -0
  434. data/lib/fog/rackspace/requests/monitoring/list_check_types.rb +86 -0
  435. data/lib/fog/rackspace/requests/monitoring/list_checks.rb +70 -0
  436. data/lib/fog/rackspace/requests/monitoring/list_data_points.rb +51 -0
  437. data/lib/fog/rackspace/requests/monitoring/list_entities.rb +70 -0
  438. data/lib/fog/rackspace/requests/monitoring/list_metrics.rb +80 -0
  439. data/lib/fog/rackspace/requests/monitoring/list_monitoring_zones.rb +15 -0
  440. data/lib/fog/rackspace/requests/monitoring/list_notification_plans.rb +70 -0
  441. data/lib/fog/rackspace/requests/monitoring/list_notifications.rb +63 -0
  442. data/lib/fog/rackspace/requests/monitoring/list_overview.rb +111 -0
  443. data/lib/fog/rackspace/requests/monitoring/update_alarm.rb +45 -0
  444. data/lib/fog/rackspace/requests/monitoring/update_check.rb +45 -0
  445. data/lib/fog/rackspace/requests/monitoring/update_entity.rb +45 -0
  446. data/lib/fog/rackspace/requests/monitoring/update_notification.rb +16 -0
  447. data/lib/fog/rackspace/requests/networking/create_network.rb +36 -0
  448. data/lib/fog/rackspace/requests/networking/create_virtual_interface.rb +30 -0
  449. data/lib/fog/rackspace/requests/networking/delete_network.rb +21 -0
  450. data/lib/fog/rackspace/requests/networking/delete_virtual_interface.rb +23 -0
  451. data/lib/fog/rackspace/requests/networking/get_network.rb +21 -0
  452. data/lib/fog/rackspace/requests/networking/list_networks.rb +18 -0
  453. data/lib/fog/rackspace/requests/networking/list_virtual_interfaces.rb +22 -0
  454. data/lib/fog/rackspace/requests/networking_v2/create_network.rb +18 -0
  455. data/lib/fog/rackspace/requests/networking_v2/create_port.rb +18 -0
  456. data/lib/fog/rackspace/requests/networking_v2/create_security_group.rb +12 -0
  457. data/lib/fog/rackspace/requests/networking_v2/create_security_group_rule.rb +12 -0
  458. data/lib/fog/rackspace/requests/networking_v2/create_subnet.rb +18 -0
  459. data/lib/fog/rackspace/requests/networking_v2/delete_network.rb +11 -0
  460. data/lib/fog/rackspace/requests/networking_v2/delete_port.rb +11 -0
  461. data/lib/fog/rackspace/requests/networking_v2/delete_security_group.rb +5 -0
  462. data/lib/fog/rackspace/requests/networking_v2/delete_security_group_rule.rb +5 -0
  463. data/lib/fog/rackspace/requests/networking_v2/delete_subnet.rb +11 -0
  464. data/lib/fog/rackspace/requests/networking_v2/list_networks.rb +11 -0
  465. data/lib/fog/rackspace/requests/networking_v2/list_ports.rb +11 -0
  466. data/lib/fog/rackspace/requests/networking_v2/list_security_group_rules.rb +5 -0
  467. data/lib/fog/rackspace/requests/networking_v2/list_security_groups.rb +5 -0
  468. data/lib/fog/rackspace/requests/networking_v2/list_subnets.rb +11 -0
  469. data/lib/fog/rackspace/requests/networking_v2/show_network.rb +11 -0
  470. data/lib/fog/rackspace/requests/networking_v2/show_port.rb +11 -0
  471. data/lib/fog/rackspace/requests/networking_v2/show_security_group.rb +5 -0
  472. data/lib/fog/rackspace/requests/networking_v2/show_security_group_rule.rb +5 -0
  473. data/lib/fog/rackspace/requests/networking_v2/show_subnet.rb +11 -0
  474. data/lib/fog/rackspace/requests/networking_v2/update_network.rb +18 -0
  475. data/lib/fog/rackspace/requests/networking_v2/update_port.rb +18 -0
  476. data/lib/fog/rackspace/requests/networking_v2/update_security_group.rb +12 -0
  477. data/lib/fog/rackspace/requests/networking_v2/update_subnet.rb +23 -0
  478. data/lib/fog/rackspace/requests/orchestration/abandon_stack.rb +15 -0
  479. data/lib/fog/rackspace/requests/orchestration/build_info.rb +15 -0
  480. data/lib/fog/rackspace/requests/orchestration/create_stack.rb +16 -0
  481. data/lib/fog/rackspace/requests/orchestration/delete_stack.rb +15 -0
  482. data/lib/fog/rackspace/requests/orchestration/get_stack_template.rb +20 -0
  483. data/lib/fog/rackspace/requests/orchestration/list_resource_events.rb +19 -0
  484. data/lib/fog/rackspace/requests/orchestration/list_resource_types.rb +22 -0
  485. data/lib/fog/rackspace/requests/orchestration/list_resources.rb +19 -0
  486. data/lib/fog/rackspace/requests/orchestration/list_stack_data.rb +22 -0
  487. data/lib/fog/rackspace/requests/orchestration/list_stack_events.rb +19 -0
  488. data/lib/fog/rackspace/requests/orchestration/preview_stack.rb +16 -0
  489. data/lib/fog/rackspace/requests/orchestration/show_event_details.rb +22 -0
  490. data/lib/fog/rackspace/requests/orchestration/show_resource_data.rb +22 -0
  491. data/lib/fog/rackspace/requests/orchestration/show_resource_metadata.rb +22 -0
  492. data/lib/fog/rackspace/requests/orchestration/show_resource_schema.rb +15 -0
  493. data/lib/fog/rackspace/requests/orchestration/show_resource_template.rb +20 -0
  494. data/lib/fog/rackspace/requests/orchestration/show_stack_details.rb +22 -0
  495. data/lib/fog/rackspace/requests/orchestration/update_stack.rb +16 -0
  496. data/lib/fog/rackspace/requests/orchestration/validate_template.rb +16 -0
  497. data/lib/fog/rackspace/requests/queues/create_claim.rb +72 -0
  498. data/lib/fog/rackspace/requests/queues/create_message.rb +56 -0
  499. data/lib/fog/rackspace/requests/queues/create_queue.rb +39 -0
  500. data/lib/fog/rackspace/requests/queues/delete_claim.rb +42 -0
  501. data/lib/fog/rackspace/requests/queues/delete_message.rb +62 -0
  502. data/lib/fog/rackspace/requests/queues/delete_queue.rb +33 -0
  503. data/lib/fog/rackspace/requests/queues/get_claim.rb +37 -0
  504. data/lib/fog/rackspace/requests/queues/get_message.rb +41 -0
  505. data/lib/fog/rackspace/requests/queues/get_queue.rb +36 -0
  506. data/lib/fog/rackspace/requests/queues/get_queue_stats.rb +57 -0
  507. data/lib/fog/rackspace/requests/queues/list_messages.rb +73 -0
  508. data/lib/fog/rackspace/requests/queues/list_queues.rb +62 -0
  509. data/lib/fog/rackspace/requests/queues/update_claim.rb +39 -0
  510. data/lib/fog/rackspace/requests/storage/copy_object.rb +29 -0
  511. data/lib/fog/rackspace/requests/storage/delete_container.rb +36 -0
  512. data/lib/fog/rackspace/requests/storage/delete_multiple_objects.rb +128 -0
  513. data/lib/fog/rackspace/requests/storage/delete_object.rb +36 -0
  514. data/lib/fog/rackspace/requests/storage/delete_static_large_object.rb +78 -0
  515. data/lib/fog/rackspace/requests/storage/extract_archive.rb +37 -0
  516. data/lib/fog/rackspace/requests/storage/get_container.rb +69 -0
  517. data/lib/fog/rackspace/requests/storage/get_containers.rb +51 -0
  518. data/lib/fog/rackspace/requests/storage/get_object.rb +54 -0
  519. data/lib/fog/rackspace/requests/storage/get_object_http_url.rb +35 -0
  520. data/lib/fog/rackspace/requests/storage/get_object_https_url.rb +71 -0
  521. data/lib/fog/rackspace/requests/storage/head_container.rb +41 -0
  522. data/lib/fog/rackspace/requests/storage/head_containers.rb +44 -0
  523. data/lib/fog/rackspace/requests/storage/head_object.rb +48 -0
  524. data/lib/fog/rackspace/requests/storage/post_set_meta_temp_url_key.rb +46 -0
  525. data/lib/fog/rackspace/requests/storage/put_container.rb +42 -0
  526. data/lib/fog/rackspace/requests/storage/put_dynamic_obj_manifest.rb +63 -0
  527. data/lib/fog/rackspace/requests/storage/put_object.rb +77 -0
  528. data/lib/fog/rackspace/requests/storage/put_object_manifest.rb +22 -0
  529. data/lib/fog/rackspace/requests/storage/put_static_obj_manifest.rb +102 -0
  530. data/lib/fog/rackspace/service.rb +142 -0
  531. data/lib/fog/rackspace/storage.rb +465 -0
  532. data/lib/fog/rackspace/version.rb +5 -0
  533. data/tests/helper.rb +28 -0
  534. data/tests/helpers/collection_helper.rb +97 -0
  535. data/tests/helpers/compute/flavors_helper.rb +32 -0
  536. data/tests/helpers/compute/server_helper.rb +25 -0
  537. data/tests/helpers/compute/servers_helper.rb +10 -0
  538. data/tests/helpers/formats_helper.rb +98 -0
  539. data/tests/helpers/formats_helper_tests.rb +110 -0
  540. data/tests/helpers/mock_helper.rb +16 -0
  541. data/tests/helpers/model_helper.rb +31 -0
  542. data/tests/helpers/responds_to_helper.rb +11 -0
  543. data/tests/helpers/schema_validator_tests.rb +107 -0
  544. data/tests/helpers/succeeds_helper.rb +9 -0
  545. data/tests/lorem.txt +1 -0
  546. data/tests/rackspace/auto_scale_tests.rb +83 -0
  547. data/tests/rackspace/block_storage_tests.rb +119 -0
  548. data/tests/rackspace/cdn_tests.rb +186 -0
  549. data/tests/rackspace/compute_tests.rb +100 -0
  550. data/tests/rackspace/compute_v2_tests.rb +118 -0
  551. data/tests/rackspace/databases_tests.rb +140 -0
  552. data/tests/rackspace/dns_tests.rb +110 -0
  553. data/tests/rackspace/helper.rb +106 -0
  554. data/tests/rackspace/identity_tests.rb +26 -0
  555. data/tests/rackspace/load_balancer_tests.rb +135 -0
  556. data/tests/rackspace/models/auto_scale/group_builder_tests.rb +145 -0
  557. data/tests/rackspace/models/auto_scale/group_tests.rb +35 -0
  558. data/tests/rackspace/models/auto_scale/groups_tests.rb +17 -0
  559. data/tests/rackspace/models/auto_scale/policies_tests.rb +24 -0
  560. data/tests/rackspace/models/auto_scale/policy_tests.rb +35 -0
  561. data/tests/rackspace/models/auto_scale/webhook_tests.rb +42 -0
  562. data/tests/rackspace/models/auto_scale/webhooks_tests.rb +28 -0
  563. data/tests/rackspace/models/block_storage/snapshot_tests.rb +25 -0
  564. data/tests/rackspace/models/block_storage/snapshots_tests.rb +18 -0
  565. data/tests/rackspace/models/block_storage/volume_tests.rb +31 -0
  566. data/tests/rackspace/models/block_storage/volume_types_tests.rb +18 -0
  567. data/tests/rackspace/models/block_storage/volumes_tests.rb +9 -0
  568. data/tests/rackspace/models/compute_v2/flavors_tests.rb +17 -0
  569. data/tests/rackspace/models/compute_v2/image_tests.rb +74 -0
  570. data/tests/rackspace/models/compute_v2/images_tests.rb +20 -0
  571. data/tests/rackspace/models/compute_v2/keypairs_tests.rb +47 -0
  572. data/tests/rackspace/models/compute_v2/metadata_tests.rb +44 -0
  573. data/tests/rackspace/models/compute_v2/network_tests.rb +10 -0
  574. data/tests/rackspace/models/compute_v2/networks_tests.rb +10 -0
  575. data/tests/rackspace/models/compute_v2/server_tests.rb +274 -0
  576. data/tests/rackspace/models/compute_v2/servers_tests.rb +22 -0
  577. data/tests/rackspace/models/compute_v2/virtual_interface_tests.rb +33 -0
  578. data/tests/rackspace/models/compute_v2/virtual_interfaces_tests.rb +24 -0
  579. data/tests/rackspace/models/databases/database_tests.rb +29 -0
  580. data/tests/rackspace/models/databases/databases_tests.rb +17 -0
  581. data/tests/rackspace/models/databases/flavors_tests.rb +20 -0
  582. data/tests/rackspace/models/databases/instance_tests.rb +43 -0
  583. data/tests/rackspace/models/databases/instances_tests.rb +14 -0
  584. data/tests/rackspace/models/databases/user_tests.rb +21 -0
  585. data/tests/rackspace/models/databases/users_tests.rb +21 -0
  586. data/tests/rackspace/models/dns/zone_tests.rb +14 -0
  587. data/tests/rackspace/models/dns/zones_tests.rb +36 -0
  588. data/tests/rackspace/models/identity/credentials_tests.rb +25 -0
  589. data/tests/rackspace/models/identity/roles_tests.rb +16 -0
  590. data/tests/rackspace/models/identity/service_catalog_tests.rb +154 -0
  591. data/tests/rackspace/models/identity/tenants_tests.rb +21 -0
  592. data/tests/rackspace/models/identity/user_tests.rb +17 -0
  593. data/tests/rackspace/models/identity/users_tests.rb +17 -0
  594. data/tests/rackspace/models/load_balancers/access_list_tests.rb +12 -0
  595. data/tests/rackspace/models/load_balancers/access_lists_tests.rb +12 -0
  596. data/tests/rackspace/models/load_balancers/load_balancer_tests.rb +229 -0
  597. data/tests/rackspace/models/load_balancers/load_balancers_tests.rb +19 -0
  598. data/tests/rackspace/models/load_balancers/node_tests.rb +19 -0
  599. data/tests/rackspace/models/load_balancers/nodes_tests.rb +12 -0
  600. data/tests/rackspace/models/load_balancers/virtual_ip_tests.rb +16 -0
  601. data/tests/rackspace/models/load_balancers/virtual_ips_tests.rb +12 -0
  602. data/tests/rackspace/models/monitoring/agent_token_tests.rb +9 -0
  603. data/tests/rackspace/models/monitoring/agent_tokens_tests.rb +9 -0
  604. data/tests/rackspace/models/monitoring/alarm_example_tests.rb +18 -0
  605. data/tests/rackspace/models/monitoring/alarm_examples_tests.rb +19 -0
  606. data/tests/rackspace/models/monitoring/alarm_tests.rb +59 -0
  607. data/tests/rackspace/models/monitoring/alarms_tests.rb +25 -0
  608. data/tests/rackspace/models/monitoring/check_tests.rb +49 -0
  609. data/tests/rackspace/models/monitoring/check_types_tests.rb +14 -0
  610. data/tests/rackspace/models/monitoring/checks_tests.rb +16 -0
  611. data/tests/rackspace/models/monitoring/data_points_tests.rb +19 -0
  612. data/tests/rackspace/models/monitoring/entities_tests.rb +14 -0
  613. data/tests/rackspace/models/monitoring/entity_tests.rb +26 -0
  614. data/tests/rackspace/models/monitoring/metric_tests.rb +19 -0
  615. data/tests/rackspace/models/monitoring/metrics_tests.rb +17 -0
  616. data/tests/rackspace/models/monitoring/notification_tests.rb +19 -0
  617. data/tests/rackspace/models/monitoring/notifications_tests.rb +10 -0
  618. data/tests/rackspace/models/networking/network_tests.rb +10 -0
  619. data/tests/rackspace/models/networking/networks_tests.rb +10 -0
  620. data/tests/rackspace/models/networking/virtual_interface_tests.rb +33 -0
  621. data/tests/rackspace/models/networking/virtual_interfaces_tests.rb +24 -0
  622. data/tests/rackspace/models/queues/claim_tests.rb +41 -0
  623. data/tests/rackspace/models/queues/claims_tests.rb +53 -0
  624. data/tests/rackspace/models/queues/message_tests.rb +49 -0
  625. data/tests/rackspace/models/queues/messages_tests.rb +16 -0
  626. data/tests/rackspace/models/queues/queue_tests.rb +37 -0
  627. data/tests/rackspace/models/queues/queues_tests.rb +8 -0
  628. data/tests/rackspace/models/storage/account_tests.rb +26 -0
  629. data/tests/rackspace/models/storage/directories_tests.rb +26 -0
  630. data/tests/rackspace/models/storage/directory_tests.rb +138 -0
  631. data/tests/rackspace/models/storage/file_tests.rb +400 -0
  632. data/tests/rackspace/models/storage/files_tests.rb +39 -0
  633. data/tests/rackspace/models/storage/metadata_tests.rb +208 -0
  634. data/tests/rackspace/monitoring_tests.rb +76 -0
  635. data/tests/rackspace/networking_tests.rb +118 -0
  636. data/tests/rackspace/queues_tests.rb +105 -0
  637. data/tests/rackspace/rackspace_tests.rb +56 -0
  638. data/tests/rackspace/requests/auto_scale/config_tests.rb +97 -0
  639. data/tests/rackspace/requests/auto_scale/group_tests.rb +50 -0
  640. data/tests/rackspace/requests/auto_scale/helper.rb +224 -0
  641. data/tests/rackspace/requests/auto_scale/policy_tests.rb +71 -0
  642. data/tests/rackspace/requests/auto_scale/webhook_tests.rb +58 -0
  643. data/tests/rackspace/requests/block_storage/snapshot_tests.rb +80 -0
  644. data/tests/rackspace/requests/block_storage/volume_tests.rb +75 -0
  645. data/tests/rackspace/requests/block_storage/volume_type_tests.rb +21 -0
  646. data/tests/rackspace/requests/cdn/cdn_tests.rb +75 -0
  647. data/tests/rackspace/requests/compute/address_tests.rb +42 -0
  648. data/tests/rackspace/requests/compute/flavor_tests.rb +39 -0
  649. data/tests/rackspace/requests/compute/helper.rb +10 -0
  650. data/tests/rackspace/requests/compute/image_tests.rb +70 -0
  651. data/tests/rackspace/requests/compute/resize_tests.rb +35 -0
  652. data/tests/rackspace/requests/compute/server_tests.rb +94 -0
  653. data/tests/rackspace/requests/compute_v2/address_tests.rb +45 -0
  654. data/tests/rackspace/requests/compute_v2/attachment_tests.rb +66 -0
  655. data/tests/rackspace/requests/compute_v2/flavor_tests.rb +47 -0
  656. data/tests/rackspace/requests/compute_v2/image_tests.rb +77 -0
  657. data/tests/rackspace/requests/compute_v2/keypair_tests.rb +55 -0
  658. data/tests/rackspace/requests/compute_v2/metadata_tests.rb +104 -0
  659. data/tests/rackspace/requests/compute_v2/network_tests.rb +49 -0
  660. data/tests/rackspace/requests/compute_v2/server_tests.rb +172 -0
  661. data/tests/rackspace/requests/compute_v2/virtual_interface_tests.rb +49 -0
  662. data/tests/rackspace/requests/databases/database_tests.rb +39 -0
  663. data/tests/rackspace/requests/databases/flavor_tests.rb +16 -0
  664. data/tests/rackspace/requests/databases/helper.rb +79 -0
  665. data/tests/rackspace/requests/databases/instance_tests.rb +77 -0
  666. data/tests/rackspace/requests/databases/user_tests.rb +37 -0
  667. data/tests/rackspace/requests/dns/dns_tests.rb +125 -0
  668. data/tests/rackspace/requests/dns/helper.rb +124 -0
  669. data/tests/rackspace/requests/dns/records_tests.rb +83 -0
  670. data/tests/rackspace/requests/identity/tenants_tests.rb +21 -0
  671. data/tests/rackspace/requests/identity/token_tests.rb +70 -0
  672. data/tests/rackspace/requests/identity/user_tests.rb +106 -0
  673. data/tests/rackspace/requests/load_balancers/access_list_tests.rb +56 -0
  674. data/tests/rackspace/requests/load_balancers/algorithm_tests.rb +19 -0
  675. data/tests/rackspace/requests/load_balancers/connection_logging_tests.rb +25 -0
  676. data/tests/rackspace/requests/load_balancers/connection_throttling_tests.rb +37 -0
  677. data/tests/rackspace/requests/load_balancers/content_caching_tests.rb +25 -0
  678. data/tests/rackspace/requests/load_balancers/error_page_tests.rb +31 -0
  679. data/tests/rackspace/requests/load_balancers/get_stats_tests.rb +13 -0
  680. data/tests/rackspace/requests/load_balancers/helper.rb +229 -0
  681. data/tests/rackspace/requests/load_balancers/load_balancer_tests.rb +86 -0
  682. data/tests/rackspace/requests/load_balancers/load_balancer_usage_tests.rb +19 -0
  683. data/tests/rackspace/requests/load_balancers/monitor_tests.rb +46 -0
  684. data/tests/rackspace/requests/load_balancers/node_tests.rb +93 -0
  685. data/tests/rackspace/requests/load_balancers/protocol_tests.rb +21 -0
  686. data/tests/rackspace/requests/load_balancers/session_persistence_tests.rb +33 -0
  687. data/tests/rackspace/requests/load_balancers/ssl_termination_tests.rb +38 -0
  688. data/tests/rackspace/requests/load_balancers/usage_tests.rb +19 -0
  689. data/tests/rackspace/requests/load_balancers/virtual_ip_tests.rb +40 -0
  690. data/tests/rackspace/requests/monitoring/agent_tests.rb +74 -0
  691. data/tests/rackspace/requests/monitoring/alarm_example_tests.rb +30 -0
  692. data/tests/rackspace/requests/monitoring/alarm_tests.rb +55 -0
  693. data/tests/rackspace/requests/monitoring/check_tests.rb +39 -0
  694. data/tests/rackspace/requests/monitoring/entity_tests.rb +36 -0
  695. data/tests/rackspace/requests/monitoring/helper.rb +139 -0
  696. data/tests/rackspace/requests/monitoring/list_tests.rb +83 -0
  697. data/tests/rackspace/requests/monitoring/notification_tests.rb +46 -0
  698. data/tests/rackspace/requests/networking/network_tests.rb +49 -0
  699. data/tests/rackspace/requests/networking/virtual_interface_tests.rb +49 -0
  700. data/tests/rackspace/requests/queues/claim_tests.rb +60 -0
  701. data/tests/rackspace/requests/queues/helper.rb +50 -0
  702. data/tests/rackspace/requests/queues/messages_tests.rb +54 -0
  703. data/tests/rackspace/requests/queues/queues_tests.rb +38 -0
  704. data/tests/rackspace/requests/storage/account_tests.rb +15 -0
  705. data/tests/rackspace/requests/storage/container_tests.rb +67 -0
  706. data/tests/rackspace/requests/storage/large_object_tests.rb +355 -0
  707. data/tests/rackspace/requests/storage/object_tests.rb +230 -0
  708. data/tests/rackspace/service_tests.rb +82 -0
  709. data/tests/rackspace/storage_tests.rb +128 -0
  710. data/tests/rackspace/url_encoding_tests.rb +5 -0
  711. metadata +880 -0
@@ -0,0 +1,557 @@
1
+ #Cloud Files™ (storage)
2
+
3
+ This document explains how to get started using Cloud Files with Fog. It assumes you have read the [Getting Started with Fog and the Rackspace Open Cloud](getting_started.md) document.
4
+
5
+
6
+ ## Starting irb console
7
+
8
+ Start by executing the following command:
9
+
10
+ irb
11
+
12
+ Once `irb` has launched you need to require the Fog library.
13
+
14
+ If using Ruby 1.8.x execute:
15
+
16
+ require 'rubygems'
17
+ require 'fog'
18
+
19
+ If using Ruby 1.9.x execute:
20
+
21
+ require 'fog'
22
+
23
+ ## Create Service
24
+
25
+ Next, create a connection to Cloud Files.
26
+
27
+ Using a US-based account:
28
+
29
+ service = Fog::Storage.new({
30
+ :provider => 'Rackspace', # Rackspace Fog provider
31
+ :rackspace_username => RACKSPACE_USER_NAME, # Your Rackspace Username
32
+ :rackspace_api_key => RACKSPACE_API, # Your Rackspace API key
33
+ :rackspace_region => :ord, # Defaults to :dfw
34
+ :connection_options => {} # Optional
35
+ })
36
+
37
+ Using a UK-based account:
38
+
39
+ service = Fog::Storage.new({
40
+ :provider => 'Rackspace', # Rackspace Fog provider
41
+ :rackspace_username => RACKSPACE_USER_NAME, # Your Rackspace Username
42
+ :rackspace_api_key => RACKSPACE_API, # Your Rackspace API key
43
+ :rackspace_auth_url => Fog::Rackspace::UK_AUTH_ENDPOINT,
44
+ :rackspace_region => :lon,
45
+ :connection_options => {} # Optional
46
+ })
47
+
48
+ To learn more about obtaining cloud credentials refer to the [Getting Started with Fog and the Rackspace Open Cloud](getting_started.md) document.
49
+
50
+ By default `Fog::Storage` will authenticate against the US authentication endpoint and connect to the DFW region. You can specify alternative authentication endpoints using the key `:rackspace_auth_url`. Please refer to [Alternate Authentication Endpoints](http://docs.rackspace.com/auth/api/v2.0/auth-client-devguide/content/Endpoints-d1e180.html) for a list of alternative Rackspace authentication endpoints.
51
+
52
+ Alternative regions are specified using the key `:rackspace_region `. A list of regions available for Cloud Files can be found by executing the following:
53
+
54
+ identity_service = Fog::Identity({
55
+ :provider => 'Rackspace', # Rackspace Fog provider
56
+ :rackspace_username => RACKSPACE_USER_NAME, # Your Rackspace Username
57
+ :rackspace_api_key => RACKSPACE_API, # Your Rackspace API key
58
+ :rackspace_auth_url => Fog::Rackspace::UK_AUTH_ENDPOINT # Not specified for US Cloud
59
+ })
60
+
61
+ identity_service.service_catalog.display_service_regions :cloudFiles
62
+
63
+ Rackspace Private Cloud installations can skip specifying a region and directly specify their custom service endpoints using the keys `:rackspace_storage_url` and `:rackspace_cdn_url`.
64
+
65
+ **Note**: A`Fog::Storage` instance is needed for the desired region.
66
+
67
+ ### Optional Service Parameters
68
+
69
+ The Storage service supports the following additional parameters:
70
+
71
+ <table>
72
+ <tr>
73
+ <th>Key</th>
74
+ <th>Description</th>
75
+ </tr>
76
+ <tr>
77
+ <td>:rackspace_servicenet</td>
78
+ <td>If set to true, the service will access Cloud Files using the internal Rackspace ServiceNet. This option should only be used for internal network connections.</td>
79
+ </tr>
80
+ <tr>
81
+ <td>:rackspace_cdn_ssl</td>
82
+ <td>If set to true, the public_url method will return the SSL based URLs.</td>
83
+ </tr>
84
+ <tr>
85
+ <td>:persistent</td>
86
+ <td>If set to true, the service will use a persistent connection.</td>
87
+ </tr>
88
+ <tr>
89
+ <td>:rackspace_storage_url</td>
90
+ <td>The endpoint for the Cloud Files service. By default, Fog::Storage will pick the appropriate endpoint for region. This option will typically only be used for Rackspace Private Cloud Access.</td>
91
+ </tr>
92
+ <tr>
93
+ <td>:rackspace_cdn_url</td>
94
+ <td>The endpoint for the CDN service. By default, Fog::Storage pick the appropriate endpoint for region. This option will typically only be used for Rackspace Private Cloud Access.</td>
95
+ </tr>
96
+ </table>
97
+
98
+
99
+ ### Optional Connection Parameters
100
+
101
+ Fog supports passing additional connection parameters to its underlying HTTP library (Excon) using the `:connection_options` parameter.
102
+
103
+ <table>
104
+ <tr>
105
+ <th>Key</th>
106
+ <th>Description</th>
107
+ </tr>
108
+ <tr>
109
+ <td>:connect_timeout</td>
110
+ <td>Connection timeout (default: 60 seconds)</td>
111
+ </tr>
112
+ <tr>
113
+ <td>:read_timeout</td>
114
+ <td>Read timeout for connection (default: 60 seconds)</td> </tr>
115
+ <tr>
116
+ <td>:write_timeout</td>
117
+ <td>Write timeout for connection (default: 60 seconds)</td>
118
+ </tr>
119
+ <tr>
120
+ <td>:proxy</td>
121
+ <td>Proxy for HTTP and HTTPS connections</td>
122
+ </tr>
123
+ <tr>
124
+ <td>:ssl_ca_path</td>
125
+ <td>Path to SSL certificate authorities</td>
126
+ </tr>
127
+ <tr>
128
+ <td>:ssl_ca_file</td>
129
+ <td>SSL certificate authority file</td>
130
+ </tr>
131
+ <tr>
132
+ <td>:ssl_verify_peer</td>
133
+ <td>SSL verify peer (default: true)</td>
134
+ </tr>
135
+ <tr>
136
+ <td>:chunk_size</td>
137
+ <td>The chunk size in bytes used for block transfers. By default, Fog uses 1 MB chunks.</td>
138
+ </tr>
139
+ </table>
140
+
141
+
142
+ ## Fog Abstractions
143
+
144
+ Fog provides both a **model** and **request** abstraction. The request abstraction provides the most efficient interface and the model abstraction wraps the request abstraction to provide a convenient `ActiveModel` like interface.
145
+
146
+ ### Request Layer
147
+
148
+ The request abstraction maps directly to the [Cloud Files API](http://docs.rackspace.com/files/api/v1/cf-devguide/content/Overview-d1e70.html). It provides the most efficient interface to the Rackspace Open Cloud.
149
+
150
+ To see a list of requests supported by the storage service:
151
+
152
+ service.requests
153
+
154
+ This returns:
155
+
156
+ :copy_object, :delete_container, :delete_object, :get_container, :get_containers, :get_object, :get_object_https_url, :head_container, :head_containers, :head_object, :put_container, :put_object, :put_object_manifest, :post_set_meta_temp_url_key
157
+
158
+ To see a list of requests supported by the CDN service:
159
+
160
+ service.cdn.requests
161
+
162
+ This returns:
163
+
164
+ :get_containers, :head_container, :post_container, :put_container, :delete_object
165
+
166
+
167
+ #### Example Request
168
+
169
+ To request a view account details:
170
+
171
+ response = service.head_containers
172
+
173
+ This returns in the following `Excon::Response`:
174
+
175
+ #<Excon::Response:0x10283fc68 @headers={"X-Account-Bytes-Used"=>"2563554", "Date"=>"Thu, 21 Feb 2013 21:57:02 GMT", "X-Account-Meta-Temp-Url-Key"=>"super_secret_key", "X-Timestamp"=>"1354552916.82056", "Content-Length"=>"0", "Content-Type"=>"application/json; charset=utf-8", "X-Trans-Id"=>"txe934924374a744c8a6c40dd8f29ab94a", "Accept-Ranges"=>"bytes", "X-Account-Container-Count"=>"7", "X-Account-Object-Count"=>"5"}, @status=204, @body="">
176
+
177
+ To view the status of the response:
178
+
179
+ response.status
180
+
181
+ **Note**: Fog is aware of the valid HTTP response statuses for each request type. If an unexpected HTTP response status occurs, Fog will raise an exception.
182
+
183
+ To view response headers:
184
+
185
+ response.headers
186
+
187
+ This will return:
188
+
189
+ {"X-Account-Bytes-Used"=>"2563554", "Date"=>"Thu, 21 Feb 2013 21:57:02 GMT", "X-Account-Meta-Temp-Url-Key"=>"super_secret_key", "X-Timestamp"=>"1354552916.82056", "Content-Length"=>"0", "Content-Type"=>"application/json; charset=utf-8", "X-Trans-Id"=>"txe934924374a744c8a6c40dd8f29ab94a", "Accept-Ranges"=>"bytes", "X-Account-Container-Count"=>"7", "X-Account-Object-Count"=>"5"}
190
+
191
+
192
+ To learn more about `Fog::Storage` request methods refer to [rdoc](http://rubydoc.info/gems/fog/Fog/Storage/Rackspace/Real). To learn more about Excon refer to [Excon GitHub repo](https://github.com/geemus/excon).
193
+
194
+ ### Model Layer
195
+
196
+ Fog models behave in a manner similar to `ActiveModel`. Models will generally respond to `create`, `save`, `destroy`, `reload` and `attributes` methods. Additionally, fog will automatically create attribute accessors.
197
+
198
+ Here is a summary of common model methods:
199
+
200
+ <table>
201
+ <tr>
202
+ <th>Method</th>
203
+ <th>Description</th>
204
+ </tr>
205
+ <tr>
206
+ <td>create</td>
207
+ <td>
208
+ Accepts hash of attributes and creates object.<br>
209
+ Note: creation is a non-blocking call and you will be required to wait for a valid state before using resulting object.
210
+ </td>
211
+ </tr>
212
+ <tr>
213
+ <td>save</td>
214
+ <td>Saves object.<br>
215
+ Note: not all objects support updating object.</td>
216
+ </tr>
217
+ <tr>
218
+ <td>destroy</td>
219
+ <td>
220
+ Destroys object.<br>
221
+ Note: this is a non-blocking call and object deletion might not be instantaneous.
222
+ </td>
223
+ <tr>
224
+ <td>reload</td>
225
+ <td>Updates object with latest state from service.</td>
226
+ <tr>
227
+ <td>attributes</td>
228
+ <td>Returns a hash containing the list of model attributes and values.</td>
229
+ </tr>
230
+ <td>identity</td>
231
+ <td>
232
+ Returns the identity of the object.<br>
233
+ Note: This might not always be equal to object.id.
234
+ </td>
235
+ </tr>
236
+ </table>
237
+
238
+ The remainder of this document details the model abstraction.
239
+
240
+ **Note:** Fog refers to Rackspace Cloud containers as directories.
241
+
242
+ ## List Directories
243
+
244
+ To retrieve a list of directories:
245
+
246
+ service.directories
247
+
248
+ This returns a collection of `Fog::Storage::Rackspace::Directory` models:
249
+
250
+ <Fog::Storage::Rackspace::Directories
251
+ [
252
+ <Fog::Storage::Rackspace::Directory
253
+ key="blue",
254
+ bytes=434266,
255
+ count=1,
256
+ cdn_cname=nil
257
+ >,
258
+ <Fog::Storage::Rackspace::Directory
259
+ key="brown",
260
+ bytes=761879,
261
+ count=1,
262
+ cdn_cname=nil
263
+ >,
264
+ ...
265
+
266
+ ## Get Directory
267
+
268
+ To retrieve a specific directory:
269
+
270
+ service.directories.get "blue"
271
+
272
+ **Note** As a general rule, only use `get` when you want to iterate over the contents of a `Directory`
273
+
274
+ This call is similar to...
275
+
276
+ service.directories.new :key => "blue"
277
+
278
+ ... except the `get` method makes an HTTP call that returns metadata for up to the first 10,000 files. **This can be slow!**
279
+
280
+ This returns a `Fog::Storage::Rackspace::Directory` instance:
281
+
282
+ <Fog::Storage::Rackspace::Directory
283
+ key="blue",
284
+ bytes=434266,
285
+ count=1,
286
+ cdn_cname=nil
287
+ >
288
+
289
+ ## Create Directory
290
+
291
+ To create a directory:
292
+
293
+ service.directories.create :key => 'backups'
294
+
295
+ To create a directory utilizing CDN:
296
+
297
+ service.directories.create :key => 'web-assets', :public => true
298
+
299
+ ### Additional Parameters
300
+
301
+ The `create` method also supports the following key values:
302
+
303
+ <table>
304
+ <tr>
305
+ <th>Key</th>
306
+ <th>Description</th>
307
+ </tr>
308
+ <tr>
309
+ <td>:metadata</td>
310
+ <td>Hash containing directory metadata.</td>
311
+ </tr>
312
+ </table>
313
+
314
+
315
+ ## Update Directory
316
+
317
+ Cloud Files supports updating the `public` attribute to enable/disable CDN.
318
+
319
+ To update this attribute:
320
+
321
+ directory.public = false
322
+ directory.save
323
+
324
+ ## Delete Directory
325
+
326
+ To delete a directory:
327
+
328
+ directory.destroy
329
+
330
+ **Note**: Directory must be empty before it can be deleted.
331
+
332
+ ## List Files
333
+
334
+ To list files in a directory:
335
+
336
+ directory.files
337
+
338
+ **Note**: File contents is not downloaded until `body` attribute is called.
339
+
340
+ ## Upload Files
341
+
342
+ To upload a file into a directory:
343
+
344
+ file = directory.files.create :key => 'space.jpg', :body => File.open "space.jpg"
345
+
346
+ **Note**: For files larger than 5 GB please refer to the [Upload Large Files](#upload_large_files) section.
347
+
348
+ If you only need a `Directory` so that you can create a file (as above), you can accomplish this without
349
+ an HTTP call as below:
350
+
351
+ dir = service.directories.new :key => "blue"
352
+ file = dir.files.new(...)
353
+ file.save
354
+
355
+ This will **not** retrieve the metadata for files in the `Directory`.
356
+
357
+ However, if the `Directory` does not already exist in Cloud Files, the `save` call will return with a 404.
358
+
359
+ In this case, you will need to `save` the `Directory` first...
360
+
361
+ dir.save
362
+
363
+ ... before you can...
364
+
365
+ file.save
366
+
367
+ ### Additional Parameters
368
+
369
+ The `create` method also supports the following key values:
370
+
371
+ <table>
372
+ <tr>
373
+ <th>Key</th>
374
+ <th>Description</th>
375
+ </tr>
376
+ <tr>
377
+ <td>:content_type</td>
378
+ <td>The content type of the object. Cloud Files will attempt to auto detect this value if omitted.</td>
379
+ </tr>
380
+ <tr>
381
+ <td>:access_control_allow_origin</td>
382
+ <td>URLs can make Cross Origin Requests. Format is http://www.example.com. Separate URLs with a space. An asterisk (*) allows all. Please refer to <a href="http://docs.rackspace.com/files/api/v1/cf-devguide/content/CORS_Container_Header-d1e1300.html">CORS Container Headers</a> for more information.</td>
383
+ </tr>
384
+ <tr>
385
+ <td>:origin</td>
386
+ <td>The origin is the URI of the object's host.</td>
387
+ </tr>
388
+ <tr>
389
+ <td>:etag</td>
390
+ <td>The MD5 checksum of your object's data. If specified, Cloud Files will validate the integrity of the uploaded object.</td>
391
+ </tr>
392
+ <tr>
393
+ <td>:metadata</td>
394
+ <td>Hash containing file metadata.</td>
395
+ </tr>
396
+ </table>
397
+
398
+ ## Upload Large Files
399
+
400
+ Cloud Files requires files larger than 5 GB to be uploaded into segments along with an accompanying manifest file. All of the segments must be uploaded to the same container.
401
+
402
+ SEGMENT_LIMIT = 5368709119.0 # 5GB -1
403
+ BUFFER_SIZE = 1024 * 1024 # 1MB
404
+
405
+ File.open(file_name) do |f|
406
+ segment = 0
407
+ until file.eof?
408
+ segment += 1
409
+ offset = 0
410
+
411
+ # upload segment to cloud files
412
+ segment_suffix = segment.to_s.rjust(10, '0')
413
+ service.put_object("my_container", "large_file/#{segment_suffix}", nil) do
414
+ if offset <= SEGMENT_LIMIT - BUFFER_SIZE
415
+ buf = file.read(BUFFER_SIZE).to_s
416
+ offset += buf.size
417
+ buf
418
+ else
419
+ ''
420
+ end
421
+ end
422
+ end
423
+ end
424
+
425
+ # write manifest file
426
+ service.put_object_manifest("my_container", "large_file", 'X-Object-Manifest' => "my_container/large_file/")
427
+
428
+ Segmented files are downloaded like ordinary files. See [Download Files](#download-files) section for more information.
429
+
430
+ ## Download Files
431
+
432
+ The most efficient way to download files from a private or public directory is as follows:
433
+
434
+ File.open('downloaded-file.jpg', 'w') do | f |
435
+ directory.files.get("my_big_file.jpg") do | data, remaining, content_length |
436
+ f.syswrite data
437
+ end
438
+ end
439
+
440
+ This will download and save the file in 1 MB chunks. The chunk size can be changed by passing the parameter `:chunk_size` into the `:connection_options` hash in the service constructor.
441
+
442
+ **Note**: The `body` attribute of file will be empty if a file has been downloaded using this method.
443
+
444
+ If a file object has already been loaded into memory, you can save it as follows:
445
+
446
+ File.open('germany.jpg', 'w') {|f| f.write(file_object.body) }
447
+
448
+ **Note**: This method is more memory intensive as the entire object is loaded into memory before saving the file as in the example above.
449
+
450
+
451
+ ## Accessing Files Through CDN
452
+
453
+ The CDN service offers several different URLs to access your files.
454
+
455
+ The simplest is with the default container URL. This can be accessed as follows:
456
+
457
+ file.public_url
458
+
459
+ For a more user-friendly URL, you can create a CNAME DNS record pointing to the URL generated by the `public_url` method. Then set the CNAME on the `Directory` object using the attribute `cdn_cname`. Note, that the `cdn_cname` attribute does not persist and will need to be specified every time a directory object is retrieved.
460
+
461
+ To access the file using SSL, you need to specify the option `:rackspace_cdn_ssl => true` when creating `Fog::Storage` service. This will cause the `public_url` method to return the SSL-secured URL.
462
+
463
+ To stream content use the following:
464
+
465
+ file.streaming_url
466
+
467
+ To stream video for iOS devices without needing to convert your video use the following:
468
+
469
+ file.ios_url
470
+
471
+
472
+ ## Metadata
473
+
474
+ You can access metadata as an attribute on both `Fog::Storage::Rackspace::Directory` and `Fog::Storage::Rackspace::File`.
475
+
476
+ This example demonstrates how to iterate through a directory's metadata:
477
+
478
+ directory.metadata.each_pair {|metadatum| puts "#{metadatum.key}: #{metadatum.value}" }
479
+
480
+ You can update and retrieve metadata in a manner similar to a hash:
481
+
482
+ directory.metadata[:thumbnails]
483
+
484
+ file.metadata[:environment] = "development"
485
+
486
+ Directory metadata is saved when the directory is saved and file metadata is set when the file is saved:
487
+
488
+ directory.save
489
+
490
+ file.save
491
+
492
+ Metadata is reloaded when directory or file is reloaded:
493
+
494
+ directory.reload
495
+
496
+ file.reload
497
+
498
+ ## Copy File
499
+
500
+ Cloud Files supports copying files. To copy files into a container named "trip" with a name of "europe.jpg" do the following:
501
+
502
+ file.copy("trip", "europe.jpg")
503
+
504
+ To move or rename a file, perform a copy operation and then delete the old file:
505
+
506
+ file.copy("trip", "germany.jpg")
507
+ file.destroy
508
+
509
+ ## Delete File
510
+
511
+ To delete a file:
512
+
513
+ file.destroy
514
+
515
+ ## CDN Purge
516
+
517
+ To immediately remove a file from the CDN network use the following:
518
+
519
+ file.purge_from_cdn
520
+
521
+ You may only purge up to 25 objects per day and thus this should only be used in situations where there could be serious personal, business, or security consequences if the object remained in the CDN. To purge a directory, please contact Rackspace support.
522
+
523
+ **Note**: You may only **PURGE** up to 25 objects per day. Any attempt to purge more than this will result in a 498 status code error (Rate Limited).
524
+
525
+ ## Account Information
526
+
527
+ To view Cloud Files usage execute the following:
528
+
529
+ service.account
530
+
531
+ This returns a `Fog::Storage::Rackspace::Account` instance:
532
+
533
+ <Fog::Storage::Rackspace::Account
534
+ meta_temp_url_key="lkkl23jl2j3",
535
+ container_count=13,
536
+ bytes_used=2563554,
537
+ object_count=5
538
+ >
539
+
540
+ ## Examples
541
+
542
+ Example code using Cloud Files can be found [here](https://github.com/fog/fog/tree/master/lib/fog/rackspace/examples).
543
+
544
+ ## Additional Resources
545
+
546
+ * [fog.io](http://fog.io/)
547
+ * [Fog rdoc](http://rubydoc.info/gems/fog/)
548
+ * [Fog Github repo](https://github.com/fog/fog)
549
+ * [Fog Github Issues](https://github.com/fog/fog/issues)
550
+ * [Excon Github repo](https://github.com/geemus/excon)
551
+ * [Cloud Files API](http://docs.rackspace.com/files/api/v1/cf-devguide/content/Overview-d1e70.html)
552
+
553
+ ## Support and Feedback
554
+
555
+ Your feedback is appreciated! If you have specific issues with the **fog** SDK, you should file an [issue via Github](https://github.com/fog/fog/issues).
556
+
557
+ For general feedback and support requests, please visit: https://developer.rackspace.com/support.