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,356 @@
1
+ # OpenStack Orchestration
2
+ The mission of the OpenStack Orchestration program is to create a human- and machine-accessible service for managing the entire lifecycle of infrastructure and applications within OpenStack clouds.
3
+
4
+ ## Heat
5
+ Heat is the main project in the OpenStack Orchestration program. It implements an orchestration engine to launch multiple composite cloud applications based on templates in the form of text files that can be treated like code. A native Heat template format is evolving, but Heat also endeavours to provide compatibility with the AWS CloudFormation template format, so that many existing CloudFormation templates can be launched on OpenStack. Heat provides both an OpenStack-native ReST API and a CloudFormation-compatible Query API.
6
+
7
+ *Why ‘Heat’? It makes the clouds rise!*
8
+
9
+ **How it works**
10
+
11
+ * A Heat template describes the infrastructure for a cloud application in a text file that is readable and writable by humans, and can be checked into version control, diffed, &c.
12
+ * Infrastructure resources that can be described include: servers, floating ips, volumes, security groups, users, etc.
13
+ * Heat also provides an autoscaling service that integrates with Ceilometer, so you can include a scaling group as a resource in a template.
14
+ * Templates can also specify the relationships between resources (e.g. this volume is connected to this server). This enables Heat to call out to the OpenStack APIs to create all of your infrastructure in the correct order to completely launch your application.
15
+ * Heat manages the whole lifecycle of the application - when you need to change your infrastructure, simply modify the template and use it to update your existing stack. Heat knows how to make the necessary changes. It will delete all of the resources when you are finished with the application, too.
16
+ * Heat primarily manages infrastructure, but the templates integrate well with software configuration management tools such as Puppet and Chef. The Heat team is working on providing even better integration between infrastructure and software.
17
+
18
+ _Source: [OpenStack Wiki](https://wiki.openstack.org/wiki/Heat)_
19
+
20
+ # Rackspace Orchestration (Heat) Client
21
+
22
+ [Full Rackspace Orchestration/Heat API Docs](http://docs.rackspace.com/orchestration/api/v1/orchestration-devguide/content/API_Operations_dle7023.html)
23
+
24
+ ## Orchestration Service
25
+ Get a handle on the Orchestration service:
26
+
27
+ ```ruby
28
+ irb: service = Fog::Rackspace::Orchestration.new({
29
+ :rackspace_username => username,
30
+ :rackspace_api_key => api_key,
31
+ :rackspace_region => :iad #:ord, :dfw, :syd
32
+ })
33
+ ===> #<Fog::Rackspace::Orchestration::Real:2168274880 ...
34
+ ```
35
+ We will use this `service` to interact with the Orchestration resources, `stack`, `event`, `resource`, and `template`
36
+
37
+ ## Stacks
38
+
39
+ Get a list of stacks you own:
40
+
41
+ ```ruby
42
+ irb: service.stacks
43
+ ===> <Fog::Rackspace::Orchestration::Stacks
44
+ []
45
+ >
46
+ ```
47
+
48
+ Create a new `stack` with a [Heat Template (HOT)](http://docs.openstack.org/developer/heat/template_guide/hot_guide.html). Here we are using Rackspace's HOT for [a single redis server]("https://github.com/rackspace-orchestration-templates/redis-single/blob/master/redis-single.yaml"):
49
+
50
+ ```ruby
51
+ redis_template = File.read("spec/support/redis_template.yml")
52
+ ===> "heat_template_version: 2013-05-23\n\ndescription: ....
53
+
54
+ irb: service.stacks.new.save({
55
+ :stack_name => "a_redis_stack",
56
+ :template => redis_template
57
+ })
58
+ ```
59
+
60
+ We get back a JSON blob filled with info about our new stack:
61
+
62
+ ```ruby
63
+ ===> {"id"=>"73e0f38a-a9fb-4a4e-8196-2b63039ef31f", "links"=>[{"href"=>"https://iad.orchestration.api.rackspacecloud.com/v1/930035/stacks/a_redis_stack/73e0f38a-a9fb-4a4e-8196-2b63039ef31f", "rel"=>"self"}]}
64
+ ```
65
+
66
+ Now that we have the `id` of our new stack, we can get a reference to it using the stack's `name` and `id`:
67
+
68
+
69
+ ```ruby
70
+ irb: stack = service.stacks.get("a_redis_stack", "73e0f38a-a9fb-4a4e-8196-2b63039ef31f")
71
+ ===> <Fog::Rackspace::Orchestration::Stack
72
+ id="73e0f38a-a9fb-4a4e-8196-2b63039ef31f",
73
+ description="This is a Heat template to deploy a standalone redis server on\nRackspace Cloud Servers\n",
74
+ links=[{"href"=>"https://iad.orchestration.api.rackspacecloud.com/v1/930035/stacks/a_redis_stack/73e0f38a-a9fb-4a4e-8196-2b63039ef31f", "rel"=>"self"}],
75
+ stack_status_reason="Stack CREATE started",
76
+ stack_name="a_redis_stack",
77
+ creation_time="2014-11-13T16:21:02Z",
78
+ updated_time=nil
79
+ >
80
+ ```
81
+ A stack knows about related `events`:
82
+
83
+ ```ruby
84
+ irb: stack.events
85
+ ===> <Fog::Rackspace::Orchestration::Events
86
+ [
87
+ <Fog::Rackspace::Orchestration::Event
88
+ id="7b1830a3-5d7b-43b2-bc1b-cffbb25c8b3e",
89
+ resource_name="redis_server_config",
90
+ event_time="2014-11-13T16:21:45Z",
91
+ links=[{"href"=>"https://iad.orchestration.api.rackspacecloud.com/v1/930035/stacks/a_redis_stack/73e0f38a-a9fb-4a4e-8196-2b63039ef31f/resources/redis_server_config/events/7b1830a3-5d7b-43b2-bc1b-cffbb25c8b3e", "rel"=>"self"}, {"href"=>"https://iad.orchestration.api.rackspacecloud.com/v1/930035/stacks/a_redis_stack/73e0f38a-a9fb-4a4e-8196-2b63039ef31f/resources/redis_server_config", "rel"=>"resource"}, {"href"=>"https://iad.orchestration.api.rackspacecloud.com/v1/930035/stacks/a_redis_stack/73e0f38a-a9fb-4a4e-8196-2b63039ef31f", "rel"=>"stack"}],
92
+ logical_resource_id="redis_server_config",
93
+ resource_status="CREATE_IN_PROGRESS",
94
+ resource_status_reason="state changed",
95
+ physical_resource_id=nil
96
+ >,
97
+ ```
98
+ A stack knows about related `resources`:
99
+
100
+ ```ruby
101
+ irb: stack.resources
102
+ ===> <Fog::Rackspace::Orchestration::Resources
103
+ [
104
+ <Fog::Rackspace::Orchestration::Resource
105
+ id=nil,
106
+ resource_name="redis_server",
107
+ description=nil,
108
+ links=[{"href"=>"https://iad.orchestration.api.rackspacecloud.com/v1/930035/stacks/a_redis_stack/73e0f38a-a9fb-4a4e-8196-2b63039ef31f/resources/redis_server", "rel"=>"self"}, {"href"=>"https://iad.orchestration.api.rackspacecloud.com/v1/930035/stacks/a_redis_stack/73e0f38a-a9fb-4a4e-8196-2b63039ef31f", "rel"=>"stack"}],
109
+ logical_resource_id="redis_server",
110
+ resource_status="CREATE_COMPLETE",
111
+ updated_time="2014-11-13T16:21:04Z",
112
+ required_by=["redis_server_config"],
113
+ resource_status_reason="state changed",
114
+ resource_type="Rackspace::Cloud::Server"
115
+ >,
116
+ ```
117
+
118
+ You can list, limit, sort stacks based on certain keywords:
119
+
120
+ ** Available keywords:**
121
+
122
+ * status
123
+ * ​name
124
+ * ​limit
125
+ * ​marker
126
+ * ​sort_keys
127
+ * sort_dir
128
+
129
+ ```ruby
130
+ irb: stacks = service.stacks.all(sort_key: "stack_name", sort_dir: "asc")
131
+ ===> <Fog::Rackspace::Orchestration::Stacks
132
+ [
133
+ <Fog::Rackspace::Orchestration::Stack
134
+ id="73e0f38a-a9fb-4a4e-8196-2b63039ef31f",
135
+ description="This is a Heat template to deploy a standalone redis server on\nRackspace Cloud Servers\n",
136
+ links=[{"href"=>"https://iad.orchestration.api.rackspacecloud.com/v1/930035/stacks/a_redis_stack/73e0f38a-a9fb-4a4e-8196-2b63039ef31f", "rel"=>"self"}],
137
+ stack_status_reason="Stack CREATE started",
138
+ stack_name="a_redis_stack",
139
+ creation_time="2014-11-13T16:21:02Z",
140
+ updated_time=nil
141
+ >
142
+ ]
143
+ >
144
+ ```
145
+ You can get a stack's `template`
146
+
147
+ ```ruby
148
+ irb: stack.template
149
+ ===> <Fog::Rackspace::Orchestration::Template
150
+ description="This is a Heat template to deploy a standalone redis server on\nRackspace Cloud Servers\n",
151
+ heat_template_version="2013-05-23",
152
+ ....
153
+ ```
154
+ You can abandon a stack -- essentially, it will delete the stack, but keep the resources around for potential further use:
155
+
156
+ ```ruby
157
+ irb: stack.abandon
158
+ ===> #<Excon::Response:0x00000104d6b870 @data={:body=>{"status"=>"IN_PROGRESS", "name"=>"a_redis_stack", "stack_user_project_id"=>"930035", "environment"=>{"parameters"=>{}, "resource_registry"=>{"resources"=>{}}}, "template"=>{"parameter_groups"=>[{"parameters"=>["flavor", "image"], "label"=>"Server Settings"}, {"parameters"=>["redis_port"], "label"=>"Redis Settings"}, {"parameters"=>["redis_version", "redis_hostname", "kitchen", "chef_version"], "label"=>"rax-dev-params"}], "heat_template_version"=>"2013-05-23", "description"=>"This is a Heat te
159
+ ```
160
+
161
+ You can preview a stack:
162
+
163
+ ```ruby
164
+ irb: service.stacks.preview({
165
+ :stack_name => "a_redis_template",
166
+ :template => redis_template
167
+ })
168
+ ===> <Fog::Rackspace::Orchestration::Stack
169
+ id="None",
170
+ description="This is a Heat template to deploy a standalone redis server on\nRackspace Cloud Servers\n",
171
+ links=[{"href"=>"https://iad.orchestration.api.rackspacecloud.com/v1/930035/stacks/a_redis_template/None", "rel"=>"self"}],
172
+ stack_status_reason=nil,
173
+ stack_name="a_redis_template",
174
+ creation_time="2014-11-13T16:33:50Z",
175
+ updated_time=nil
176
+ >
177
+ ```
178
+
179
+ Of course, you can just delete a stack. This deletes associated `resources` (as opposed to `abandon`):
180
+
181
+ ```ruby
182
+ irb: stack.delete
183
+ ===> #<Excon::Response:0x0000010198b000 @data={:body=>"", :headers=>{"Server"=>"nginx/1.2.1", "Date"=>"Thu, 13 Nov 2014 16:28:38 GMT", "Content-Type"=>"text/html; charset=UTF-8", "Connection"=>"keep-alive", "Via"=>"1.0 Repose (Repose/6.0.2)"}, :status=>204, :reason_phrase=>"No Content", :remote_ip=>"23.253.147.138", :local_port=>54721, :local_address=>"192.168.1.65"}, @body="", @headers={"Server"=>"nginx/1.2.1", "Date"=>"Thu, 13 Nov 2014 16:28:38 GMT", "Content-Type"=>"text/html; charset=UTF-8", "Connection"=>"keep-alive", "Via"=>"1.0 Repose (Repose/6.0.2)"}, @status=204, @remote_ip="23.253.147.138", @local_port=54721, @local_address="192.168.1.65">
184
+ ```
185
+
186
+ Reload any object by calling `reload` on it:
187
+
188
+ ```ruby
189
+ irb: stacks.reload
190
+ ===> <Fog::Rackspace::Orchestration::Stacks
191
+ []
192
+ >
193
+ ```
194
+ You can get build information:
195
+
196
+ ```ruby
197
+ irb: service.stacks.build_info
198
+ ===> {"engine"=>{"revision"=>"2014.k1-20141027-1178"}, "fusion-api"=>{"revision"=>"j1-20140915-10d9ee4-98"}, "api"=>{"revision"=>"2014.k1-20141027-1178"}}
199
+ ```
200
+
201
+ ## Events
202
+
203
+ `Events` are indexable and can be scoped by `stack`:
204
+
205
+ ```ruby
206
+ irb: event = stack.events.first
207
+ ===> <Fog::Rackspace::Orchestration::Event
208
+ id="7b1830a3-5d7b-43b2-bc1b-cffbb25c8b3e",
209
+ resource_name="redis_server_config",
210
+ event_time="2014-11-13T16:21:45Z",
211
+ links=[{"href"=>"https://iad.orchestration.api.rackspacecloud.com/v1/930035/stacks/a_redis_stack/73e0f38a-a9fb-4a4e-8196-2b63039ef31f/resources/redis_server_config/events/7b1830a3-5d7b-43b2-bc1b-cffbb25c8b3e", "rel"=>"self"}, {"href"=>"https://iad.orchestration.api.rackspacecloud.com/v1/930035/stacks/a_redis_stack/73e0f38a-a9fb-4a4e-8196-2b63039ef31f/resources/redis_server_config", "rel"=>"resource"}, {"href"=>"https://iad.orchestration.api.rackspacecloud.com/v1/930035/stacks/a_redis_stack/73e0f38a-a9fb-4a4e-8196-2b63039ef31f", "rel"=>"stack"}],
212
+ logical_resource_id="redis_server_config",
213
+ resource_status="CREATE_IN_PROGRESS",
214
+ resource_status_reason="state changed",
215
+ physical_resource_id=nil
216
+ >
217
+ ```
218
+
219
+ `Events` can be sorted, limited, etc by passing an hash like so:
220
+ `service.events.all(stack, limit: 1)`
221
+
222
+ ** Available keys: **
223
+
224
+ * resource_action
225
+ * resource_status
226
+ * resource_name
227
+ * ​resource_type
228
+ * ​limit
229
+ * ​marker
230
+ * sort_keys
231
+ * ​sort_dir
232
+
233
+ They are getable:
234
+
235
+ ```ruby
236
+ irb: event = service.events.get(stack, resource, event_id)
237
+ ===> <Fog::Rackspace::Orchestration::Event
238
+ id="7b1830a3-5d7b-43b2-bc1b-cffbb25c8b3e",
239
+ resource_name="redis_server_config",
240
+ event_time="2014-11-13T16:21:45Z",
241
+ links=[{"href"=>"https://iad.orchestration.api.rackspacecloud.com/v1/930035/stacks/a_redis_stack/73e0f38a-a9fb-4a4e-8196-2b63039ef31f/resources/redis_server_config/events/7b1830a3-5d7b-43b2-bc1b-cffbb25c8b3e", "rel"=>"self"}, {"href"=>"https://iad.orchestration.api.rackspacecloud.com/v1/930035/stacks/a_redis_stack/73e0f38a-a9fb-4a4e-8196-2b63039ef31f/resources/redis_server_config", "rel"=>"resource"}, {"href"=>"https://iad.orchestration.api.rackspacecloud.com/v1/930035/stacks/a_redis_stack/73e0f38a-a9fb-4a4e-8196-2b63039ef31f", "rel"=>"stack"}],
242
+ logical_resource_id="redis_server_config",
243
+ resource_status="CREATE_IN_PROGRESS",
244
+ resource_status_reason="state changed",
245
+ physical_resource_id=nil
246
+ >
247
+ ```
248
+
249
+ An `event` knows about its associated `stack`:
250
+
251
+ ```ruby
252
+ irb: event.stack
253
+ ===> <Fog::Rackspace::Orchestration::Stack
254
+ id="73e0f38a-a9fb-4a4e-8196-2b63039ef31f",
255
+ description="This is a Heat template to deploy a standalone redis server on\nRackspace Cloud Servers\n",
256
+ links=[{"href"=>"https://iad.orchestration.api.rackspacecloud.com/v1/930035/stacks/a_redis_stack/73e0f38a-a9fb-4a4e-8196-2b63039ef31f", "rel"=>"self"}],
257
+ stack_status_reason="Stack CREATE completed successfully",
258
+ stack_name="a_redis_stack",
259
+ creation_time="2014-11-13T16:21:02Z",
260
+ updated_time=nil
261
+ >
262
+ ```
263
+
264
+ You can list, limit, sort events based on certain keywords:
265
+
266
+ ```ruby
267
+ irb: events = stack.events.all(stack, sort_key: "resource_name", sort_dir: "desc", limit: 3)
268
+ ===> <Fog::Rackspace::Orchestration::Events
269
+ [
270
+ <Fog::Rackspace::Orchestration::Event
271
+ id="9cdae7d7-f44e-4dbb-bc0b-61ea6da9cf81",
272
+ resource_name="redis_server_config",
273
+ event_time="2014-11-13T16:24:07Z",
274
+ ....
275
+ ```
276
+
277
+ An `event` has an associated `resource`:
278
+
279
+ ```ruby
280
+ irb: resource = event.resource
281
+ ===> <Fog::Rackspace::Orchestration::Resource
282
+ id=nil,
283
+ resource_name="redis_server_config",
284
+ description="",
285
+ links=[{"href"=>"https://iad.orchestration.api.rackspacecloud.com/v1/930035/stacks/a_redis_stack/73e0f38a-a9fb-4a4e-8196-2b63039ef31f/resources/redis_server_config", "rel"=>"self"}, {"href"=>"https://iad.orchestration.api.rackspacecloud.com/v1/930035/stacks/a_redis_stack/73e0f38a-a9fb-4a4e-8196-2b63039ef31f", "rel"=>"stack"}],
286
+ logical_resource_id="redis_server_config",
287
+ resource_status="CREATE_COMPLETE",
288
+ updated_time="2014-11-13T16:21:45Z",
289
+ required_by=[],
290
+ resource_status_reason="state changed",
291
+ resource_type="OS::Heat::ChefSolo"
292
+ >
293
+ ```
294
+
295
+ ## Resource
296
+
297
+ `resources` are indexable:
298
+
299
+ ```ruby
300
+ irb: service.resources.all(stack, {nested_depth: 1})
301
+ ===> <Fog::Rackspace::Orchestration::Resources
302
+ [
303
+ <Fog::Rackspace::Orchestration::Resource
304
+ id=nil,
305
+ resource_name="redis_server",
306
+ description=nil,
307
+ links=[{"href"=>"https://iad.orchestration.api.rackspacecloud.com/v1/930035/stacks/a_redis_stack/ee648a3b-14a3-4df8-aa58-620a9d67e3e5/resources/redis_server", "rel"=>"self"}, {"href"=>"https://iad.orchestration.api.rackspacecloud.com/v1/930035/stacks/a_redis_stack/ee648a3b-14a3-4df8-aa58-620a9d67e3e5", "rel"=>"stack"}],
308
+ logical_resource_id="redis_server",
309
+ resource_status="CREATE_COMPLETE",
310
+ updated_time="2014-11-13T16:32:30Z",
311
+ required_by=["redis_server_config"],
312
+ resource_status_reason="state changed",
313
+ resource_type="Rackspace::Cloud::Server"
314
+ >,
315
+ ...
316
+ ```
317
+
318
+ A `resource` knows about its associated `stack`:
319
+
320
+ ```ruby
321
+ irb: resource.stack
322
+ ===> <Fog::Rackspace::Orchestration::Stack
323
+ id="73e0f38a-a9fb-4a4e-8196-2b63039ef31f",
324
+ description="This is a Heat template to deploy a standalone redis server on\nRackspace Cloud Servers\n",
325
+ links=[{"href"=>"https://iad.orchestration.api.rackspacecloud.com/v1/930035/stacks/a_redis_stack/73e0f38a-a9fb-4a4e-8196-2b63039ef31f", "rel"=>"self"}],
326
+ stack_status_reason="Stack CREATE completed successfully",
327
+ stack_name="a_redis_stack",
328
+ creation_time="2014-11-13T16:21:02Z",
329
+ updated_time=nil
330
+ >
331
+ ```
332
+
333
+ Resource metadata is visible:
334
+
335
+ ```ruby
336
+ irb: resource.metadata
337
+ ===> {}
338
+ ```
339
+
340
+ A `resource's` template is visible (if one exists)
341
+
342
+ ```ruby
343
+ irb: resource.template
344
+ ===> nil
345
+ ```
346
+
347
+ ## Validation
348
+ You can validate a Heat template (HOT) before using it:
349
+
350
+ ```ruby
351
+ irb: service.templates.validate({:template => redis_template})
352
+ ===> <Fog::Rackspace::Orchestration::Template
353
+ description="This is a Heat template to deploy a standalone redis server on\nRackspace Cloud Servers\n",
354
+ heat_template_version=nil,
355
+ ...
356
+ ```
@@ -0,0 +1,312 @@
1
+ #Cloud Queues (queues)
2
+
3
+ This document explains how to get started using queues with Fog. It assumes you have read the [Getting Started with Fog and the Rackspace Open Cloud](getting_started.md) document.
4
+
5
+ ## Basic Concepts
6
+
7
+ Cloud Queues is an open source, scalable, and highly available message and notifications service, based on the OpenStack Marconi project. Users of this service can create and manage a producer-consumer or a publisher-subscriber model. Unlimited queues and messages give users the flexibility they need to create powerful web applications in the cloud.
8
+
9
+ It consists of a few basic components: queues, messages, claims, and statistics. In the producer-consumer model, users create queues in which producers, or servers, can post messages. Workers, or consumers, can then claim those messages and delete them after they complete the actions associated with the messages. A single claim can contain multiple messages, and administrators can query claims for status.
10
+
11
+ In the publisher-subscriber model, messages are posted to a queue as in the producer-consumer model, but messages are never claimed. Instead, subscribers, or watchers, send GET requests to pull all messages that have been posted since their last request. In this model, a message remains in the queue, unclaimed, until the message's time to live (TTL) has expired.
12
+
13
+ In both of these models, administrators can get queue statistics that display the most recent and oldest messages, the number of unclaimed messages, and more.
14
+
15
+ ## Starting irb console
16
+
17
+ Start by executing the following command:
18
+
19
+ irb
20
+
21
+ Once `irb` has launched you need to require the Fog library as follows:
22
+
23
+ require 'fog'
24
+
25
+ ## Create Service
26
+
27
+ Next, create a connection to queue service:
28
+
29
+ Using a US-based account:
30
+
31
+ service = Fog::Rackspace::Queues.new(
32
+ :rackspace_username => RACKSPACE_USER_NAME, # Your Rackspace Username
33
+ :rackspace_api_key => RACKSPACE_API, # Your Rackspace API key
34
+ :rackspace_region => :ord, # Your desired region
35
+ :rackspace_queues_client_id => CLIENT_ID, # Your client ID
36
+ :connection_options => {} # Optional connection options
37
+ )
38
+
39
+ Using a UK-based account:
40
+
41
+ service = Fog::Rackspace::Queues.new(
42
+ :rackspace_username => RACKSPACE_USER_NAME, # Your Rackspace Username
43
+ :rackspace_api_key => RACKSPACE_API, # Your Rackspace API key
44
+ :rackspace_auth_url => Fog::Rackspace::UK_AUTH_ENDPOINT,
45
+ :rackspace_region => :lon, # Your desired region
46
+ :rackspace_queues_client_id => CLIENT_ID', # Your client ID
47
+ :connection_options => {} # Optional connection options
48
+ )
49
+
50
+ To learn more about obtaining cloud credentials refer to the [Getting Started with Fog and the Rackspace Open Cloud](getting_started.md) document.
51
+
52
+ ### Authentication Endpoint
53
+
54
+ By default `Fog::Rackspace::Queues` will authenticate against the US authentication endpoint. 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.
55
+
56
+ ### Regions
57
+
58
+ Alternative regions are specified using the key `:rackspace_region `. A list of regions available for cloud queues can be found by executing the following:
59
+
60
+ identity_service = Fog::Identity({
61
+ :provider => 'Rackspace', # Rackspace Fog provider
62
+ :rackspace_username => RACKSPACE_USER_NAME, # Your Rackspace Username
63
+ :rackspace_api_key => RACKSPACE_API, # Your Rackspace API key
64
+ :rackspace_auth_url => Fog::Rackspace::UK_AUTH_ENDPOINT # Not specified for US Cloud
65
+ })
66
+
67
+ identity_service.service_catalog.display_service_regions :queues
68
+
69
+ ### Private Cloud
70
+
71
+ Rackspace Private Cloud installations can skip specifying a region and directly specify their custom service endpoints using the key `:rackspace_queues_url`.
72
+
73
+ **Note**: A`Fog::Rackspace::Queues` instance is needed for the desired region.
74
+
75
+ ### Client ID
76
+
77
+ The Rackspace Queue service requires that every client define a client id to help identify messages and claims specific to the client. This client id should take the form of a UUID and can be generated using fog as follows:
78
+
79
+ Fog::UUID.uuid
80
+
81
+ If the client id is omitted fog will generate one for you.
82
+
83
+ ### Optional Connection Parameters
84
+
85
+ Fog supports passing additional connection parameters to its underlying HTTP library (Excon) using the `:connection_options` parameter.
86
+
87
+ <table>
88
+ <tr>
89
+ <th>Key</th>
90
+ <th>Description</th>
91
+ </tr>
92
+ <tr>
93
+ <td>:connect_timeout</td>
94
+ <td>Connection timeout (default: 60 seconds)</td>
95
+ </tr>
96
+ <tr>
97
+ <td>:read_timeout</td>
98
+ <td>Read timeout for connection (default: 60 seconds)</td> </tr>
99
+ <tr>
100
+ <td>:write_timeout</td>
101
+ <td>Write timeout for connection (default: 60 seconds)</td>
102
+ </tr>
103
+ <tr>
104
+ <td>:proxy</td>
105
+ <td>Proxy for HTTP and HTTPS connections</td>
106
+ </tr>
107
+ <tr>
108
+ <td>:ssl_ca_path</td>
109
+ <td>Path to SSL certificate authorities</td>
110
+ </tr>
111
+ <tr>
112
+ <td>:ssl_ca_file</td>
113
+ <td>SSL certificate authority file</td>
114
+ </tr>
115
+ <tr>
116
+ <td>:ssl_verify_peer</td>
117
+ <td>SSL verify peer (default: true)</td>
118
+ </tr>
119
+ </table>
120
+
121
+
122
+ ## Fog Abstractions
123
+
124
+ 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.
125
+
126
+ ### Request Layer
127
+
128
+ The request abstraction maps directly to the [Queue API](http://docs.rackspace.com/queues/api/v1.0/cq-devguide/content/overview.html). It provides the most efficient interface to the Rackspace Open Cloud.
129
+
130
+ To see a list of requests supported by the service:
131
+
132
+ service.requests
133
+
134
+ This returns:
135
+
136
+ :list_queues, :get_queue, :create_queue, :delete_queue, :get_queue_stats, :list_messages, :get_message, :create_message, :delete_message, :create_claim, :get_claim, :update_claim, :delete_claim
137
+
138
+
139
+ #### Example Request
140
+
141
+ To request a list of queues:
142
+
143
+ response = service.list_queues
144
+
145
+ This returns in the following `Excon::Response`:
146
+
147
+ #<Excon::Response:0x007feddda06e00 @data={:body=>{"queues"=>[{"href"=>"/v1/queues/demo-queue", "name"=>"demo-queue"}], "links"=>[{"href"=>"/v1/queues?marker=demo-queue", "rel"=>"next"}]}, :headers=>{"Content-Length"=>"119", "Content-Type"=>"application/json; charset=utf-8", "Content-Location"=>"/v1/queues", "X-Project-ID"=>"5551212"}, :status=>200, :remote_ip=>"10.10.0.1"}, @body="{\"queues\": [{\"href\": \"/v1/queues/demo-queue\", \"name\": \"demo-queue\"}], \"links\": [{\"href\": \"/v1/queues?marker=demo-queue\", \"rel\": \"next\"}]}", @headers={"Content-Length"=>"119", "Content-Type"=>"application/json; charset=utf-8", "Content-Location"=>"/v1/queues", "X-Project-ID"=>"5551212"}, @status=200, @remote_ip="10.10.0.1">
148
+
149
+ To view the status of the response:
150
+
151
+ response.status
152
+
153
+ **Note**: Fog is aware of valid HTTP response statuses for each request type. If an unexpected HTTP response status occurs, Fog will raise an exception.
154
+
155
+ To view response body:
156
+
157
+ response.body
158
+
159
+ This returns:
160
+
161
+ {"queues"=>[{"href"=>"/v1/queues/demo-queue", "name"=>"demo-queue"}], "links"=>[{"href"=>"/v1/queues?marker=demo-queue", "rel"=>"next"}]}
162
+
163
+
164
+ To learn more about queue request methods refer to [rdoc](http://rubydoc.info/gems/fog/Fog/Rackspace/Queues/Real). To learn more about Excon refer to [Excon GitHub repo](https://github.com/geemus/excon).
165
+
166
+ ### Model Layer
167
+
168
+ Fog models behave in a manner similar to `ActiveModel`. Models will generally respond to `create`, `save`, `persisted?`, `destroy`, `reload` and `attributes` methods. Additionally, fog will automatically create attribute accessors.
169
+
170
+ Here is a summary of common model methods:
171
+
172
+ <table>
173
+ <tr>
174
+ <th>Method</th>
175
+ <th>Description</th>
176
+ </tr>
177
+ <tr>
178
+ <td>create</td>
179
+ <td>
180
+ Accepts hash of attributes and creates object.<br>
181
+ Note: creation is a non-blocking call and you will be required to wait for a valid state before using resulting object.
182
+ </td>
183
+ </tr>
184
+ <tr>
185
+ <td>save</td>
186
+ <td>Saves object.<br>
187
+ Note: not all objects support updating object.</td>
188
+ </tr>
189
+ <tr>
190
+ <td>persisted?</td>
191
+ <td>Returns true if the object has been persisted.</td>
192
+ </tr>
193
+ <tr>
194
+ <td>destroy</td>
195
+ <td>
196
+ Destroys object.<br>
197
+ Note: this is a non-blocking call and object deletion might not be instantaneous.
198
+ </td>
199
+ <tr>
200
+ <td>reload</td>
201
+ <td>Updates object with latest state from service.</td>
202
+ <tr>
203
+ <td>ready?</td>
204
+ <td>Returns true if object is in a ready state and able to perform actions. This method will raise an exception if object is in an error state.</td>
205
+ </tr>
206
+ <tr>
207
+ <td>attributes</td>
208
+ <td>Returns a hash containing the list of model attributes and values.</td>
209
+ </tr>
210
+ <td>identity</td>
211
+ <td>
212
+ Returns the identity of the object.<br>
213
+ Note: This might not always be equal to object.id.
214
+ </td>
215
+ </tr>
216
+ <tr>
217
+ <td>wait_for</td>
218
+ <td>This method periodically reloads model and then yields to specified block until block returns true or a timeout occurs.</td>
219
+ </tr>
220
+ </table>
221
+
222
+ The remainder of this document details the model abstraction.
223
+
224
+ ## Create Queue
225
+
226
+ Queues require a unique name. If you try to create a queue with a name that already exists, fog will throw a `Fog::Rackspace::Queues::ServiceError` exception with a 204 status code.
227
+
228
+ To create a queue named demo-queue
229
+
230
+ begin
231
+ queue = service.queues.create :name => 'demo-queue'
232
+ rescue Fog::Rackspace::Queues::ServiceError => e
233
+ if e.status_code == 204
234
+ # duplicate queue exists
235
+ end
236
+ end
237
+
238
+ ## Posting a Message to a Queue
239
+
240
+ Messages can be any type of data, as long as they do not exceed 256 KB in length. Typical message bodies range from simple values, to a chunk of XML, or a list of JSON values. Fog handles the JSON-encoding required to post the message.
241
+
242
+ You can post a message a message to your queue as follows:
243
+
244
+ queue.messages.create :body => 'The laces were out!', :ttl => 360
245
+
246
+ You must supply both a body and a value for `ttl`. The value of `ttl` must be between 60 and 1209600 seconds (one minute to 14 days).
247
+
248
+ ## Listing Messages in a Queue
249
+
250
+ To list messages:
251
+
252
+ queue.messages
253
+
254
+ You can change the behavior by setting the follow attributes on the messages collection:
255
+
256
+ Parameter | Default | Effect
257
+ ---- | ---- | ----
258
+ **echo** | `true` | When `true`, your own messages are included.
259
+ **include_claimed** | `false` | By default, only unclaimed messages are returned. Pass this as `true` to get all messages, claimed or not.
260
+ **marker** | `nil` | Used for pagination.
261
+ **limit** | `10` | The maximum number of messages to return. Note that you may receive fewer than the specified limit if there aren't that many available messages in the queue.
262
+
263
+ For example, to include claimed messages:
264
+
265
+ queue.messages.include_claimed = true
266
+ queue.messages
267
+
268
+ ## Claiming Messages in a Queue
269
+
270
+ Claiming messages is how workers processing a queue mark messages as being handled by that worker, avoiding having two workers process the same message.
271
+
272
+ Messages can be claimed and processed as follows:
273
+
274
+ claims = queue.claims.create :ttl => 300, :grace => 100, :limit => 10
275
+
276
+ The parameters for this call are described in the following table:
277
+
278
+ Parameter | Default | Notes
279
+ ---- | ---- | ----
280
+ **ttl** | | The ttl attribute specifies how long the server waits before releasing the claim. The ttl value must be between 60 and 43200 seconds (12 hours).
281
+ **grace** | | The grace attribute specifies the message grace period in seconds. The value of the grace period must be between 60 and 43200 seconds (12 hours). To deal with workers that have stopped responding (for up to 1209600 seconds or 14 days, including claim lifetime), the server extends the lifetime of claimed messages to be at least as long as the lifetime of the claim itself, plus the specified grace period. If a claimed message would normally live longer than the grace period, its expiration is not adjusted.
282
+ **limit** | 10 | The number of messages to claim. The maximum number of messages you may claim at once is 20.
283
+
284
+ If the claim is successful it will return a `Fog::Rackspace::Queues::Claims` object; if there are not any available messages it will return `false`.
285
+
286
+ To iterate through the claimed messages:
287
+
288
+ claim.messages.each do |message|
289
+ # process message here
290
+ message.destroy
291
+ end
292
+
293
+ **Note:** You will want to call the `destroy` method on the message after processing to insure it is not processed more than once.
294
+
295
+ ## Renewing a Claim
296
+
297
+ Once a claim has been made, if the TTL and grace period expire, the claim is automatically released and the messages are made available for others to claim. If you have a long-running process and want to ensure that this does not happen in the middle of the process, you should update the claim with one or both of a TTL or grace period. Updating resets the age of the claim, restarting the TTL for the claim. To update a claim, call:
298
+
299
+ claim.ttl = 360
300
+ claim.grace = 360
301
+ claim.save
302
+
303
+ ## Refreshing a Claim
304
+
305
+ If you have a `Fog::Rackspace::Queues::claims` object, keep in mind that it is not a live window into the status of the claim; rather, it is a snapshot of the claim at the time the object was created. To refresh it with the latest information, call its `reload` method. This refreshes all of its attributes with the most current status of the claim.
306
+
307
+
308
+ ## Releasing a Claim
309
+
310
+ If you have a claim on several messages and must abandon processing of those messages for any reason, you should release the claim so that those messages can be processed by other workers as soon as possible, instead of waiting for the claim's TTL to expire. When you release a claim, the claimed messages are immediately made available in the queue for other workers to claim. To release a claim, call:
311
+
312
+ claim.destroy