fog 1.9.0 → 1.10.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (548) hide show
  1. data/Gemfile +1 -1
  2. data/README.md +1 -1
  3. data/changelog.txt +743 -0
  4. data/fog.gemspec +3 -5
  5. data/lib/fog/aws.rb +1 -0
  6. data/lib/fog/aws/credential_fetcher.rb +1 -1
  7. data/lib/fog/aws/data_pipeline.rb +114 -0
  8. data/lib/fog/aws/dynamodb.rb +1 -1
  9. data/lib/fog/aws/models/compute/flavors.rb +1 -1
  10. data/lib/fog/aws/models/compute/spot_request.rb +2 -0
  11. data/lib/fog/aws/models/data_pipeline/pipeline.rb +67 -0
  12. data/lib/fog/aws/models/data_pipeline/pipelines.rb +36 -0
  13. data/lib/fog/aws/parsers/cloud_watch/list_metrics.rb +1 -1
  14. data/lib/fog/aws/parsers/compute/describe_instances.rb +1 -1
  15. data/lib/fog/aws/parsers/compute/spot_instance_requests.rb +2 -0
  16. data/lib/fog/aws/requests/compute/request_spot_instances.rb +1 -0
  17. data/lib/fog/aws/requests/data_pipeline/activate_pipeline.rb +35 -0
  18. data/lib/fog/aws/requests/data_pipeline/create_pipeline.rb +41 -0
  19. data/lib/fog/aws/requests/data_pipeline/delete_pipeline.rb +35 -0
  20. data/lib/fog/aws/requests/data_pipeline/describe_pipelines.rb +36 -0
  21. data/lib/fog/aws/requests/data_pipeline/list_pipelines.rb +36 -0
  22. data/lib/fog/aws/requests/data_pipeline/put_pipeline_definition.rb +72 -0
  23. data/lib/fog/aws/requests/rds/describe_db_instances.rb +8 -9
  24. data/lib/fog/aws/requests/storage/get_service.rb +1 -2
  25. data/lib/fog/aws/requests/storage/list_multipart_uploads.rb +3 -3
  26. data/lib/fog/aws/requests/storage/put_bucket_policy.rb +2 -2
  27. data/lib/fog/aws/storage.rb +1 -1
  28. data/lib/fog/bin.rb +2 -1
  29. data/lib/fog/bin/aws.rb +4 -0
  30. data/lib/fog/bin/bluebox.rb +2 -0
  31. data/lib/fog/bin/dreamhost.rb +31 -0
  32. data/lib/fog/bin/hp.rb +7 -0
  33. data/lib/fog/bin/internet_archive.rb +34 -0
  34. data/lib/fog/bin/openstack.rb +17 -2
  35. data/lib/fog/bluebox.rb +1 -0
  36. data/lib/fog/bluebox/blb.rb +85 -0
  37. data/lib/fog/bluebox/models/blb/lb_application.rb +32 -0
  38. data/lib/fog/bluebox/models/blb/lb_applications.rb +26 -0
  39. data/lib/fog/bluebox/models/blb/lb_backend.rb +22 -0
  40. data/lib/fog/bluebox/models/blb/lb_backends.rb +30 -0
  41. data/lib/fog/bluebox/models/blb/lb_service.rb +35 -0
  42. data/lib/fog/bluebox/models/blb/lb_services.rb +29 -0
  43. data/lib/fog/bluebox/requests/blb/add_machine_to_lb_application.rb +33 -0
  44. data/lib/fog/bluebox/requests/blb/add_machine_to_lb_backend.rb +31 -0
  45. data/lib/fog/bluebox/requests/blb/get_lb_application.rb +33 -0
  46. data/lib/fog/bluebox/requests/blb/get_lb_applications.rb +31 -0
  47. data/lib/fog/bluebox/requests/blb/get_lb_backend.rb +36 -0
  48. data/lib/fog/bluebox/requests/blb/get_lb_backends.rb +36 -0
  49. data/lib/fog/bluebox/requests/blb/get_lb_machine.rb +35 -0
  50. data/lib/fog/bluebox/requests/blb/get_lb_machines.rb +35 -0
  51. data/lib/fog/bluebox/requests/blb/get_lb_service.rb +36 -0
  52. data/lib/fog/bluebox/requests/blb/get_lb_services.rb +36 -0
  53. data/lib/fog/bluebox/requests/blb/remove_machine_from_lb_backend.rb +28 -0
  54. data/lib/fog/bluebox/requests/blb/update_lb_backend_machine.rb +29 -0
  55. data/lib/fog/brightbox/compute.rb +1 -0
  56. data/lib/fog/brightbox/requests/compute/create_firewall_policy.rb +1 -0
  57. data/lib/fog/brightbox/requests/compute/update_firewall_policy.rb +25 -0
  58. data/lib/fog/brightbox/requests/compute/update_server.rb +1 -0
  59. data/lib/fog/cdn.rb +5 -12
  60. data/lib/fog/compute.rb +7 -68
  61. data/lib/fog/core/errors.rb +5 -1
  62. data/lib/fog/core/scp.rb +1 -0
  63. data/lib/fog/core/ssh.rb +1 -0
  64. data/lib/fog/dns.rb +7 -27
  65. data/lib/fog/dreamhost.rb +11 -0
  66. data/lib/fog/dreamhost/dns.rb +86 -0
  67. data/lib/fog/dreamhost/examples/dns/getting_started.md +105 -0
  68. data/lib/fog/dreamhost/models/dns/record.rb +35 -0
  69. data/lib/fog/dreamhost/models/dns/records.rb +38 -0
  70. data/lib/fog/dreamhost/models/dns/zone.rb +59 -0
  71. data/lib/fog/dreamhost/models/dns/zones.rb +41 -0
  72. data/lib/fog/dreamhost/requests/dns/create_record.rb +32 -0
  73. data/lib/fog/dreamhost/requests/dns/delete_record.rb +31 -0
  74. data/lib/fog/dreamhost/requests/dns/list_records.rb +25 -0
  75. data/lib/fog/ecloud/models/compute/detached_disks.rb +1 -5
  76. data/lib/fog/ecloud/models/compute/internet_services.rb +1 -5
  77. data/lib/fog/ecloud/models/compute/nodes.rb +1 -5
  78. data/lib/fog/ecloud/models/compute/public_ips.rb +1 -5
  79. data/lib/fog/ecloud/models/compute/servers.rb +2 -6
  80. data/lib/fog/ecloud/requests/compute/get_detached_disk.rb +1 -1
  81. data/lib/fog/ecloud/requests/compute/get_internet_service.rb +1 -1
  82. data/lib/fog/ecloud/requests/compute/get_node.rb +1 -1
  83. data/lib/fog/ecloud/requests/compute/get_public_ip.rb +1 -1
  84. data/lib/fog/ecloud/requests/compute/get_server.rb +1 -1
  85. data/lib/fog/ecloud/requests/compute/virtual_machine_create_from_template.rb +1 -1
  86. data/lib/fog/glesys/compute.rb +5 -1
  87. data/lib/fog/glesys/models/compute/ip.rb +47 -46
  88. data/lib/fog/glesys/models/compute/ips.rb +95 -12
  89. data/lib/fog/glesys/models/compute/server.rb +66 -5
  90. data/lib/fog/glesys/models/compute/servers.rb +7 -1
  91. data/lib/fog/glesys/models/compute/template.rb +8 -16
  92. data/lib/fog/glesys/models/compute/templates.rb +23 -5
  93. data/lib/fog/glesys/requests/compute/ip_details.rb +2 -2
  94. data/lib/fog/glesys/requests/compute/server_details.rb +2 -2
  95. data/lib/fog/glesys/requests/compute/template_list.rb +2 -2
  96. data/lib/fog/hp.rb +56 -26
  97. data/lib/fog/hp/CHANGELOG.hp +113 -0
  98. data/lib/fog/hp/README_HP.rdoc +7 -6
  99. data/lib/fog/hp/block_storage.rb +169 -0
  100. data/lib/fog/hp/cdn.rb +29 -7
  101. data/lib/fog/hp/compute.rb +88 -17
  102. data/lib/fog/hp/models/block_storage/bootable_volumes.rb +28 -0
  103. data/lib/fog/hp/models/block_storage/snapshot.rb +56 -0
  104. data/lib/fog/hp/models/block_storage/snapshots.rb +29 -0
  105. data/lib/fog/hp/models/block_storage/volume.rb +102 -0
  106. data/lib/fog/hp/models/block_storage/volumes.rb +28 -0
  107. data/lib/fog/hp/models/compute/address.rb +0 -1
  108. data/lib/fog/hp/models/compute/image.rb +43 -4
  109. data/lib/fog/hp/models/compute/images.rb +0 -5
  110. data/lib/fog/hp/models/compute/key_pair.rb +0 -5
  111. data/lib/fog/hp/models/compute/meta.rb +29 -0
  112. data/lib/fog/hp/models/compute/metadata.rb +79 -0
  113. data/lib/fog/hp/models/compute/server.rb +84 -20
  114. data/lib/fog/hp/models/meta_parent.rb +33 -0
  115. data/lib/fog/hp/models/storage/directories.rb +34 -9
  116. data/lib/fog/hp/models/storage/directory.rb +111 -26
  117. data/lib/fog/hp/models/storage/file.rb +10 -0
  118. data/lib/fog/hp/models/storage/files.rb +8 -0
  119. data/lib/fog/hp/models/storage/shared_directories.rb +55 -0
  120. data/lib/fog/hp/models/storage/shared_directory.rb +39 -0
  121. data/lib/fog/hp/models/storage/shared_file.rb +67 -0
  122. data/lib/fog/hp/models/storage/shared_files.rb +64 -0
  123. data/lib/fog/hp/requests/block_storage/create_snapshot.rb +76 -0
  124. data/lib/fog/hp/requests/block_storage/create_volume.rb +87 -0
  125. data/lib/fog/hp/requests/block_storage/delete_snapshot.rb +38 -0
  126. data/lib/fog/hp/requests/block_storage/delete_volume.rb +38 -0
  127. data/lib/fog/hp/requests/block_storage/get_bootable_volume_details.rb +59 -0
  128. data/lib/fog/hp/requests/block_storage/get_snapshot_details.rb +54 -0
  129. data/lib/fog/hp/requests/block_storage/get_volume_details.rb +58 -0
  130. data/lib/fog/hp/requests/block_storage/list_bootable_volumes.rb +53 -0
  131. data/lib/fog/hp/requests/block_storage/list_snapshots.rb +48 -0
  132. data/lib/fog/hp/requests/block_storage/list_volumes.rb +52 -0
  133. data/lib/fog/hp/requests/compute/attach_volume.rb +78 -0
  134. data/lib/fog/hp/requests/compute/create_image.rb +5 -8
  135. data/lib/fog/hp/requests/compute/create_persistent_server.rb +168 -0
  136. data/lib/fog/hp/requests/compute/create_server.rb +36 -20
  137. data/lib/fog/hp/requests/compute/delete_meta.rb +55 -0
  138. data/lib/fog/hp/requests/compute/delete_security_group_rule.rb +4 -4
  139. data/lib/fog/hp/requests/compute/detach_volume.rb +47 -0
  140. data/lib/fog/hp/requests/compute/get_console_output.rb +43 -0
  141. data/lib/fog/hp/requests/compute/get_meta.rb +57 -0
  142. data/lib/fog/hp/requests/compute/get_windows_password.rb +43 -0
  143. data/lib/fog/hp/requests/compute/list_metadata.rb +56 -0
  144. data/lib/fog/hp/requests/compute/list_server_volumes.rb +49 -0
  145. data/lib/fog/hp/requests/compute/set_metadata.rb +60 -0
  146. data/lib/fog/hp/requests/compute/update_meta.rb +61 -0
  147. data/lib/fog/hp/requests/compute/update_metadata.rb +60 -0
  148. data/lib/fog/hp/requests/storage/delete_shared_object.rb +38 -0
  149. data/lib/fog/hp/requests/storage/get_object.rb +12 -10
  150. data/lib/fog/hp/requests/storage/get_object_temp_url.rb +31 -0
  151. data/lib/fog/hp/requests/storage/get_shared_container.rb +75 -0
  152. data/lib/fog/hp/requests/storage/get_shared_object.rb +66 -0
  153. data/lib/fog/hp/requests/storage/head_container.rb +1 -0
  154. data/lib/fog/hp/requests/storage/head_object.rb +1 -0
  155. data/lib/fog/hp/requests/storage/head_shared_container.rb +45 -0
  156. data/lib/fog/hp/requests/storage/head_shared_object.rb +39 -0
  157. data/lib/fog/hp/requests/storage/put_container.rb +6 -6
  158. data/lib/fog/hp/requests/storage/put_object.rb +12 -1
  159. data/lib/fog/hp/requests/storage/put_shared_object.rb +85 -0
  160. data/lib/fog/hp/storage.rb +175 -33
  161. data/lib/fog/identity.rb +5 -4
  162. data/lib/fog/image.rb +5 -6
  163. data/lib/fog/internet_archive.rb +290 -0
  164. data/lib/fog/internet_archive/models/storage/directories.rb +43 -0
  165. data/lib/fog/internet_archive/models/storage/directory.rb +126 -0
  166. data/lib/fog/internet_archive/models/storage/file.rb +286 -0
  167. data/lib/fog/internet_archive/models/storage/files.rb +122 -0
  168. data/lib/fog/internet_archive/models/storage/version.rb +36 -0
  169. data/lib/fog/internet_archive/models/storage/versions.rb +38 -0
  170. data/lib/fog/internet_archive/parsers/storage/access_control_list.rb +46 -0
  171. data/lib/fog/internet_archive/parsers/storage/complete_multipart_upload.rb +24 -0
  172. data/lib/fog/internet_archive/parsers/storage/copy_object.rb +22 -0
  173. data/lib/fog/internet_archive/parsers/storage/cors_configuration.rb +41 -0
  174. data/lib/fog/internet_archive/parsers/storage/delete_multiple_objects.rb +50 -0
  175. data/lib/fog/internet_archive/parsers/storage/get_bucket.rb +62 -0
  176. data/lib/fog/internet_archive/parsers/storage/get_bucket_lifecycle.rb +66 -0
  177. data/lib/fog/internet_archive/parsers/storage/get_bucket_location.rb +20 -0
  178. data/lib/fog/internet_archive/parsers/storage/get_bucket_logging.rb +40 -0
  179. data/lib/fog/internet_archive/parsers/storage/get_bucket_object_versions.rb +88 -0
  180. data/lib/fog/internet_archive/parsers/storage/get_bucket_versioning.rb +24 -0
  181. data/lib/fog/internet_archive/parsers/storage/get_bucket_website.rb +26 -0
  182. data/lib/fog/internet_archive/parsers/storage/get_request_payment.rb +20 -0
  183. data/lib/fog/internet_archive/parsers/storage/get_service.rb +32 -0
  184. data/lib/fog/internet_archive/parsers/storage/initiate_multipart_upload.rb +24 -0
  185. data/lib/fog/internet_archive/parsers/storage/list_multipart_uploads.rb +56 -0
  186. data/lib/fog/internet_archive/parsers/storage/list_parts.rb +40 -0
  187. data/lib/fog/internet_archive/requests/storage/abort_multipart_upload.rb +28 -0
  188. data/lib/fog/internet_archive/requests/storage/acl_utils.rb +62 -0
  189. data/lib/fog/internet_archive/requests/storage/complete_multipart_upload.rb +48 -0
  190. data/lib/fog/internet_archive/requests/storage/copy_object.rb +81 -0
  191. data/lib/fog/internet_archive/requests/storage/cors_utils.rb +41 -0
  192. data/lib/fog/internet_archive/requests/storage/delete_bucket.rb +47 -0
  193. data/lib/fog/internet_archive/requests/storage/delete_bucket_cors.rb +29 -0
  194. data/lib/fog/internet_archive/requests/storage/delete_bucket_lifecycle.rb +27 -0
  195. data/lib/fog/internet_archive/requests/storage/delete_bucket_policy.rb +29 -0
  196. data/lib/fog/internet_archive/requests/storage/delete_bucket_website.rb +29 -0
  197. data/lib/fog/internet_archive/requests/storage/delete_multiple_objects.rb +167 -0
  198. data/lib/fog/internet_archive/requests/storage/delete_object.rb +118 -0
  199. data/lib/fog/internet_archive/requests/storage/get_bucket.rb +112 -0
  200. data/lib/fog/internet_archive/requests/storage/get_bucket_acl.rb +69 -0
  201. data/lib/fog/internet_archive/requests/storage/get_bucket_cors.rb +65 -0
  202. data/lib/fog/internet_archive/requests/storage/get_bucket_lifecycle.rb +38 -0
  203. data/lib/fog/internet_archive/requests/storage/get_bucket_location.rb +58 -0
  204. data/lib/fog/internet_archive/requests/storage/get_bucket_logging.rb +47 -0
  205. data/lib/fog/internet_archive/requests/storage/get_bucket_object_versions.rb +162 -0
  206. data/lib/fog/internet_archive/requests/storage/get_bucket_policy.rb +34 -0
  207. data/lib/fog/internet_archive/requests/storage/get_bucket_versioning.rb +69 -0
  208. data/lib/fog/internet_archive/requests/storage/get_bucket_website.rb +40 -0
  209. data/lib/fog/internet_archive/requests/storage/get_object.rb +188 -0
  210. data/lib/fog/internet_archive/requests/storage/get_object_acl.rb +80 -0
  211. data/lib/fog/internet_archive/requests/storage/get_object_http_url.rb +55 -0
  212. data/lib/fog/internet_archive/requests/storage/get_object_https_url.rb +37 -0
  213. data/lib/fog/internet_archive/requests/storage/get_object_torrent.rb +47 -0
  214. data/lib/fog/internet_archive/requests/storage/get_object_url.rb +55 -0
  215. data/lib/fog/internet_archive/requests/storage/get_request_payment.rb +49 -0
  216. data/lib/fog/internet_archive/requests/storage/get_service.rb +55 -0
  217. data/lib/fog/internet_archive/requests/storage/head_object.rb +66 -0
  218. data/lib/fog/internet_archive/requests/storage/initiate_multipart_upload.rb +44 -0
  219. data/lib/fog/internet_archive/requests/storage/list_multipart_uploads.rb +55 -0
  220. data/lib/fog/internet_archive/requests/storage/list_parts.rb +55 -0
  221. data/lib/fog/internet_archive/requests/storage/post_object_hidden_fields.rb +38 -0
  222. data/lib/fog/internet_archive/requests/storage/put_bucket.rb +74 -0
  223. data/lib/fog/internet_archive/requests/storage/put_bucket_acl.rb +71 -0
  224. data/lib/fog/internet_archive/requests/storage/put_bucket_cors.rb +49 -0
  225. data/lib/fog/internet_archive/requests/storage/put_bucket_lifecycle.rb +77 -0
  226. data/lib/fog/internet_archive/requests/storage/put_bucket_logging.rb +81 -0
  227. data/lib/fog/internet_archive/requests/storage/put_bucket_policy.rb +28 -0
  228. data/lib/fog/internet_archive/requests/storage/put_bucket_versioning.rb +75 -0
  229. data/lib/fog/internet_archive/requests/storage/put_bucket_website.rb +64 -0
  230. data/lib/fog/internet_archive/requests/storage/put_object.rb +113 -0
  231. data/lib/fog/internet_archive/requests/storage/put_object_acl.rb +80 -0
  232. data/lib/fog/internet_archive/requests/storage/put_object_url.rb +48 -0
  233. data/lib/fog/internet_archive/requests/storage/put_request_payment.rb +49 -0
  234. data/lib/fog/internet_archive/requests/storage/sync_clock.rb +28 -0
  235. data/lib/fog/internet_archive/requests/storage/upload_part.rb +41 -0
  236. data/lib/fog/internet_archive/signaturev4.rb +73 -0
  237. data/lib/fog/internet_archive/storage.rb +402 -0
  238. data/lib/fog/joyent/models/compute/server.rb +1 -1
  239. data/lib/fog/joyent/requests/compute/resize_machine.rb +2 -0
  240. data/lib/fog/libvirt/models/compute/volume.rb +1 -1
  241. data/lib/fog/network.rb +5 -6
  242. data/lib/fog/openstack.rb +10 -0
  243. data/lib/fog/openstack/compute.rb +11 -4
  244. data/lib/fog/openstack/identity.rb +5 -2
  245. data/lib/fog/openstack/models/compute/images.rb +2 -1
  246. data/lib/fog/openstack/models/compute/metadata.rb +4 -5
  247. data/lib/fog/openstack/models/compute/server.rb +36 -21
  248. data/lib/fog/openstack/models/identity/role.rb +1 -1
  249. data/lib/fog/openstack/models/network/floating_ip.rb +1 -1
  250. data/lib/fog/openstack/models/network/floating_ips.rb +2 -2
  251. data/lib/fog/openstack/models/network/network.rb +8 -0
  252. data/lib/fog/openstack/models/storage/directories.rb +39 -0
  253. data/lib/fog/openstack/models/storage/directory.rb +50 -0
  254. data/lib/fog/openstack/models/storage/file.rb +150 -0
  255. data/lib/fog/openstack/models/storage/files.rb +94 -0
  256. data/lib/fog/openstack/requests/compute/allocate_address.rb +1 -1
  257. data/lib/fog/openstack/requests/compute/delete_meta.rb +43 -0
  258. data/lib/fog/openstack/requests/compute/get_limits.rb +1 -1
  259. data/lib/fog/openstack/requests/compute/get_snapshot_details.rb +1 -1
  260. data/lib/fog/openstack/requests/compute/get_volume_details.rb +1 -1
  261. data/lib/fog/openstack/requests/compute/list_servers.rb +1 -1
  262. data/lib/fog/openstack/requests/compute/list_tenants.rb +1 -0
  263. data/lib/fog/openstack/requests/compute/remove_fixed_ip.rb +1 -1
  264. data/lib/fog/openstack/requests/compute/update_meta.rb +46 -0
  265. data/lib/fog/openstack/requests/compute/update_server.rb +1 -1
  266. data/lib/fog/openstack/requests/identity/delete_user_role.rb +2 -2
  267. data/lib/fog/openstack/requests/identity/get_user_by_name.rb +2 -2
  268. data/lib/fog/openstack/requests/image/create_image.rb +1 -1
  269. data/lib/fog/openstack/requests/network/associate_floating_ip.rb +3 -3
  270. data/lib/fog/openstack/requests/network/create_floating_ip.rb +3 -3
  271. data/lib/fog/openstack/requests/network/delete_floating_ip.rb +1 -1
  272. data/lib/fog/openstack/requests/network/disassociate_floating_ip.rb +3 -3
  273. data/lib/fog/openstack/requests/network/get_floating_ip.rb +1 -1
  274. data/lib/fog/openstack/requests/network/list_floating_ips.rb +1 -1
  275. data/lib/fog/openstack/requests/storage/copy_object.rb +27 -0
  276. data/lib/fog/openstack/requests/storage/delete_container.rb +22 -0
  277. data/lib/fog/openstack/requests/storage/delete_object.rb +23 -0
  278. data/lib/fog/openstack/requests/storage/get_container.rb +44 -0
  279. data/lib/fog/openstack/requests/storage/get_containers.rb +33 -0
  280. data/lib/fog/openstack/requests/storage/get_object.rb +29 -0
  281. data/lib/fog/openstack/requests/storage/get_object_https_url.rb +51 -0
  282. data/lib/fog/openstack/requests/storage/head_container.rb +28 -0
  283. data/lib/fog/openstack/requests/storage/head_containers.rb +25 -0
  284. data/lib/fog/openstack/requests/storage/head_object.rb +23 -0
  285. data/lib/fog/openstack/requests/storage/post_set_meta_temp_url_key.rb +37 -0
  286. data/lib/fog/openstack/requests/storage/put_container.rb +22 -0
  287. data/lib/fog/openstack/requests/storage/put_object.rb +30 -0
  288. data/lib/fog/openstack/requests/storage/put_object_manifest.rb +25 -0
  289. data/lib/fog/openstack/storage.rb +159 -0
  290. data/lib/fog/openstack/volume.rb +4 -2
  291. data/lib/fog/ovirt/compute.rb +1 -0
  292. data/lib/fog/ovirt/models/compute/server.rb +2 -2
  293. data/lib/fog/ovirt/models/compute/volume.rb +1 -0
  294. data/lib/fog/ovirt/requests/compute/get_api_version.rb +16 -0
  295. data/lib/fog/providers.rb +2 -1
  296. data/lib/fog/rackspace/block_storage.rb +1 -0
  297. data/lib/fog/rackspace/cdn.rb +61 -7
  298. data/lib/fog/rackspace/compute_v2.rb +16 -3
  299. data/lib/fog/rackspace/databases.rb +4 -3
  300. data/lib/fog/rackspace/docs/compute_v2.md +663 -0
  301. data/lib/fog/rackspace/docs/getting_started.md +9 -9
  302. data/lib/fog/rackspace/examples/README.md +47 -0
  303. data/lib/fog/rackspace/examples/compute_v2/README.md +47 -0
  304. data/lib/fog/rackspace/examples/compute_v2/create_image.rb +61 -0
  305. data/lib/fog/rackspace/examples/compute_v2/create_server.rb +89 -0
  306. data/lib/fog/rackspace/examples/compute_v2/delete_image.rb +61 -0
  307. data/lib/fog/rackspace/examples/compute_v2/delete_server.rb +56 -0
  308. data/lib/fog/rackspace/examples/compute_v2/detach_volume.rb +93 -0
  309. data/lib/fog/rackspace/examples/compute_v2/resize_server.rb +106 -0
  310. data/lib/fog/rackspace/examples/compute_v2/server_attachments.rb +69 -0
  311. data/lib/fog/rackspace/examples/compute_v2/server_metadata.rb +85 -0
  312. data/lib/fog/rackspace/identity.rb +1 -1
  313. data/lib/fog/rackspace/load_balancers.rb +2 -2
  314. data/lib/fog/rackspace/mock_data.rb +114 -96
  315. data/lib/fog/rackspace/models/compute_v2/attachment.rb +16 -0
  316. data/lib/fog/rackspace/models/compute_v2/attachments.rb +6 -0
  317. data/lib/fog/rackspace/models/compute_v2/flavor.rb +18 -0
  318. data/lib/fog/rackspace/models/compute_v2/flavors.rb +9 -1
  319. data/lib/fog/rackspace/models/compute_v2/image.rb +52 -7
  320. data/lib/fog/rackspace/models/compute_v2/images.rb +9 -0
  321. data/lib/fog/rackspace/models/compute_v2/meta_parent.rb +9 -0
  322. data/lib/fog/rackspace/models/compute_v2/metadata.rb +30 -7
  323. data/lib/fog/rackspace/models/compute_v2/metadatum.rb +4 -0
  324. data/lib/fog/rackspace/models/compute_v2/network.rb +27 -0
  325. data/lib/fog/rackspace/models/compute_v2/networks.rb +23 -0
  326. data/lib/fog/rackspace/models/compute_v2/server.rb +235 -24
  327. data/lib/fog/rackspace/models/compute_v2/servers.rb +19 -1
  328. data/lib/fog/rackspace/models/dns/zones.rb +35 -2
  329. data/lib/fog/rackspace/models/identity/credentials.rb +3 -2
  330. data/lib/fog/rackspace/models/storage/account.rb +24 -0
  331. data/lib/fog/rackspace/models/storage/directories.rb +3 -0
  332. data/lib/fog/rackspace/models/storage/directory.rb +68 -39
  333. data/lib/fog/rackspace/models/storage/file.rb +38 -67
  334. data/lib/fog/rackspace/models/storage/files.rb +11 -4
  335. data/lib/fog/rackspace/models/storage/metadata.rb +129 -0
  336. data/lib/fog/rackspace/requests/cdn/delete_object.rb +37 -0
  337. data/lib/fog/rackspace/requests/cdn/get_containers.rb +34 -0
  338. data/lib/fog/rackspace/requests/cdn/head_container.rb +24 -0
  339. data/lib/fog/rackspace/requests/cdn/post_container.rb +21 -0
  340. data/lib/fog/rackspace/requests/cdn/put_container.rb +21 -0
  341. data/lib/fog/rackspace/requests/compute_v2/attach_volume.rb +13 -0
  342. data/lib/fog/rackspace/requests/compute_v2/change_server_password.rb +7 -0
  343. data/lib/fog/rackspace/requests/compute_v2/confirm_resize_server.rb +9 -0
  344. data/lib/fog/rackspace/requests/compute_v2/create_image.rb +9 -5
  345. data/lib/fog/rackspace/requests/compute_v2/create_network.rb +36 -0
  346. data/lib/fog/rackspace/requests/compute_v2/create_server.rb +38 -0
  347. data/lib/fog/rackspace/requests/compute_v2/delete_attachment.rb +5 -0
  348. data/lib/fog/rackspace/requests/compute_v2/delete_image.rb +2 -4
  349. data/lib/fog/rackspace/requests/compute_v2/delete_metadata_item.rb +6 -0
  350. data/lib/fog/rackspace/requests/compute_v2/delete_network.rb +21 -0
  351. data/lib/fog/rackspace/requests/compute_v2/delete_server.rb +4 -0
  352. data/lib/fog/rackspace/requests/compute_v2/get_attachment.rb +12 -0
  353. data/lib/fog/rackspace/requests/compute_v2/get_flavor.rb +14 -0
  354. data/lib/fog/rackspace/requests/compute_v2/get_image.rb +18 -0
  355. data/lib/fog/rackspace/requests/compute_v2/get_metadata_item.rb +9 -0
  356. data/lib/fog/rackspace/requests/compute_v2/get_network.rb +21 -0
  357. data/lib/fog/rackspace/requests/compute_v2/get_server.rb +32 -0
  358. data/lib/fog/rackspace/requests/compute_v2/list_addresses.rb +5 -0
  359. data/lib/fog/rackspace/requests/compute_v2/list_addresses_by_network.rb +12 -0
  360. data/lib/fog/rackspace/requests/compute_v2/list_attachments.rb +12 -0
  361. data/lib/fog/rackspace/requests/compute_v2/list_flavors.rb +10 -0
  362. data/lib/fog/rackspace/requests/compute_v2/list_images.rb +10 -0
  363. data/lib/fog/rackspace/requests/compute_v2/list_metadata.rb +8 -0
  364. data/lib/fog/rackspace/requests/compute_v2/list_networks.rb +18 -0
  365. data/lib/fog/rackspace/requests/compute_v2/list_servers.rb +31 -0
  366. data/lib/fog/rackspace/requests/compute_v2/reboot_server.rb +5 -0
  367. data/lib/fog/rackspace/requests/compute_v2/rebuild_server.rb +37 -0
  368. data/lib/fog/rackspace/requests/compute_v2/resize_server.rb +10 -0
  369. data/lib/fog/rackspace/requests/compute_v2/revert_resize_server.rb +10 -0
  370. data/lib/fog/rackspace/requests/compute_v2/set_metadata.rb +9 -0
  371. data/lib/fog/rackspace/requests/compute_v2/set_metadata_item.rb +10 -0
  372. data/lib/fog/rackspace/requests/compute_v2/update_metadata.rb +9 -0
  373. data/lib/fog/rackspace/requests/compute_v2/update_server.rb +9 -0
  374. data/lib/fog/rackspace/requests/storage/get_object.rb +0 -1
  375. data/lib/fog/rackspace/requests/storage/put_container.rb +2 -1
  376. data/lib/fog/rackspace/storage.rb +14 -2
  377. data/lib/fog/schema/data_validator.rb +154 -0
  378. data/lib/fog/storage.rb +8 -24
  379. data/lib/fog/terremark/models/shared/server.rb +5 -3
  380. data/lib/fog/terremark/parser.rb +14 -13
  381. data/lib/fog/terremark/parsers/shared/get_catalog.rb +5 -19
  382. data/lib/fog/terremark/parsers/shared/get_catalog_item.rb +4 -14
  383. data/lib/fog/terremark/parsers/shared/get_internet_services.rb +1 -1
  384. data/lib/fog/terremark/parsers/shared/get_keys_list.rb +4 -18
  385. data/lib/fog/terremark/parsers/shared/get_network_ips.rb +1 -1
  386. data/lib/fog/terremark/parsers/shared/get_node_services.rb +1 -1
  387. data/lib/fog/terremark/parsers/shared/get_organization.rb +4 -3
  388. data/lib/fog/terremark/parsers/shared/get_organizations.rb +3 -2
  389. data/lib/fog/terremark/parsers/shared/get_public_ips.rb +1 -1
  390. data/lib/fog/terremark/parsers/shared/get_tasks_list.rb +4 -17
  391. data/lib/fog/terremark/parsers/shared/get_vapp_template.rb +3 -14
  392. data/lib/fog/terremark/parsers/shared/get_vdc.rb +6 -38
  393. data/lib/fog/terremark/parsers/shared/instantiate_vapp_template.rb +3 -14
  394. data/lib/fog/terremark/parsers/shared/internet_service.rb +2 -5
  395. data/lib/fog/terremark/parsers/shared/network.rb +3 -11
  396. data/lib/fog/terremark/parsers/shared/node_service.rb +1 -1
  397. data/lib/fog/terremark/parsers/shared/public_ip.rb +1 -1
  398. data/lib/fog/terremark/parsers/shared/task.rb +3 -14
  399. data/lib/fog/terremark/parsers/shared/vapp.rb +3 -14
  400. data/lib/fog/vcloud/compute.rb +1 -0
  401. data/lib/fog/vcloud/models/compute/server.rb +15 -2
  402. data/lib/fog/vcloud/models/compute/vapp.rb +11 -0
  403. data/lib/fog/vcloud/requests/compute/configure_vm_network.rb +37 -0
  404. data/lib/fog/vcloud/requests/compute/instantiate_vapp_template.rb +8 -4
  405. data/lib/fog/version.rb +1 -1
  406. data/lib/fog/volume.rb +6 -6
  407. data/lib/fog/vsphere/requests/compute/create_vm.rb +18 -3
  408. data/lib/fog/vsphere/requests/compute/list_vm_interfaces.rb +1 -1
  409. data/lib/fog/vsphere/requests/compute/vm_reconfig_hardware.rb +1 -1
  410. data/tests/aws/models/data_pipeline/pipeline_tests.rb +8 -0
  411. data/tests/aws/models/data_pipeline/pipelines_tests.rb +8 -0
  412. data/tests/aws/models/rds/server_tests.rb +10 -9
  413. data/tests/aws/requests/compute/image_tests.rb +2 -2
  414. data/tests/aws/requests/compute/security_group_tests.rb +1 -1
  415. data/tests/aws/requests/compute/spot_instance_tests.rb +3 -2
  416. data/tests/aws/requests/data_pipeline/helper.rb +44 -0
  417. data/tests/aws/requests/data_pipeline/pipeline_tests.rb +54 -0
  418. data/tests/aws/requests/rds/instance_tests.rb +8 -5
  419. data/tests/bluebox/requests/blb/helper.rb +64 -0
  420. data/tests/bluebox/requests/blb/lb_tests.rb +75 -0
  421. data/tests/brightbox/requests/compute/firewall_policy_tests.rb +7 -0
  422. data/tests/brightbox/requests/compute/helper.rb +4 -2
  423. data/tests/compute/helper.rb +8 -0
  424. data/tests/core/user_agent_tests.rb +6 -0
  425. data/tests/dreamhost/README.md +56 -0
  426. data/tests/dreamhost/dns_tests.rb +20 -0
  427. data/tests/dreamhost/helper.rb +19 -0
  428. data/tests/dreamhost/models/dns/record_tests.rb +73 -0
  429. data/tests/dreamhost/models/dns/records_tests.rb +29 -0
  430. data/tests/dreamhost/models/dns/zone_tests.rb +62 -0
  431. data/tests/dreamhost/models/dns/zones_tests.rb +29 -0
  432. data/tests/dreamhost/requests/dns/create_record_tests.rb +39 -0
  433. data/tests/dreamhost/requests/dns/delete_record_tests.rb +26 -0
  434. data/tests/dreamhost/requests/dns/list_records_tests.rb +31 -0
  435. data/tests/glesys/requests/compute/helper.rb +5 -5
  436. data/tests/helper.rb +1 -1
  437. data/tests/helpers/formats_helper.rb +63 -50
  438. data/tests/helpers/formats_helper_tests.rb +87 -36
  439. data/tests/helpers/mock_helper.rb +4 -1
  440. data/tests/helpers/schema_validator_tests.rb +107 -0
  441. data/tests/hp/models/block_storage/bootable_volume_tests.rb +23 -0
  442. data/tests/hp/models/block_storage/snapshot_tests.rb +23 -0
  443. data/tests/hp/models/block_storage/volume_tests.rb +21 -0
  444. data/tests/hp/models/compute/address_tests.rb +1 -1
  445. data/tests/hp/models/compute/addresses_tests.rb +1 -1
  446. data/tests/hp/models/compute/key_pair_tests.rb +1 -1
  447. data/tests/hp/models/compute/key_pairs_tests.rb +1 -1
  448. data/tests/hp/models/compute/metadata_image_tests.rb +60 -0
  449. data/tests/hp/models/compute/metadata_server_tests.rb +54 -0
  450. data/tests/hp/models/compute/security_group_tests.rb +3 -1
  451. data/tests/hp/models/compute/security_groups_tests.rb +1 -1
  452. data/tests/hp/models/storage/directories_tests.rb +23 -0
  453. data/tests/hp/models/storage/directory_tests.rb +62 -0
  454. data/tests/hp/models/storage/file_tests.rb +44 -0
  455. data/tests/hp/models/storage/files_tests.rb +38 -0
  456. data/tests/hp/requests/block_storage/bootable_volume_tests.rb +78 -0
  457. data/tests/hp/requests/block_storage/snapshot_tests.rb +56 -0
  458. data/tests/hp/requests/block_storage/volume_tests.rb +94 -0
  459. data/tests/hp/requests/cdn/container_tests.rb +1 -1
  460. data/tests/hp/requests/compute/address_tests.rb +5 -6
  461. data/tests/hp/requests/compute/flavor_tests.rb +1 -1
  462. data/tests/hp/requests/compute/image_tests.rb +1 -1
  463. data/tests/hp/requests/compute/key_pair_tests.rb +1 -1
  464. data/tests/hp/requests/compute/metadata_tests.rb +70 -0
  465. data/tests/hp/requests/compute/persistent_server_tests.rb +66 -0
  466. data/tests/hp/requests/compute/security_group_rule_tests.rb +1 -1
  467. data/tests/hp/requests/compute/security_group_tests.rb +1 -1
  468. data/tests/hp/requests/compute/server_address_tests.rb +1 -1
  469. data/tests/hp/requests/compute/server_tests.rb +5 -6
  470. data/tests/hp/requests/compute/server_volume_tests.rb +76 -0
  471. data/tests/hp/requests/storage/container_tests.rb +1 -1
  472. data/tests/hp/requests/storage/object_tests.rb +9 -1
  473. data/tests/hp/user_agent_tests.rb +13 -0
  474. data/tests/internet_archive/models/storage/directory_tests.rb +51 -0
  475. data/tests/internet_archive/models/storage/file_tests.rb +80 -0
  476. data/tests/internet_archive/models/storage/files_tests.rb +56 -0
  477. data/tests/internet_archive/models/storage/url_tests.rb +28 -0
  478. data/tests/internet_archive/models/storage/version_tests.rb +52 -0
  479. data/tests/internet_archive/models/storage/versions_tests.rb +56 -0
  480. data/tests/internet_archive/requests/storage/acl_utils_tests.rb +209 -0
  481. data/tests/internet_archive/requests/storage/bucket_tests.rb +328 -0
  482. data/tests/internet_archive/requests/storage/cors_utils_tests.rb +108 -0
  483. data/tests/internet_archive/requests/storage/multipart_upload_tests.rb +132 -0
  484. data/tests/internet_archive/requests/storage/object_tests.rb +166 -0
  485. data/tests/internet_archive/requests/storage/versioning_tests.rb +258 -0
  486. data/tests/internet_archive/signaturev4_tests.rb +41 -0
  487. data/tests/internet_archive/signed_params_tests.rb +5 -0
  488. data/tests/openstack/models/compute/images_tests.rb +14 -0
  489. data/tests/openstack/models/compute/server_tests.rb +42 -1
  490. data/tests/openstack/models/identity/roles_tests.rb +1 -0
  491. data/tests/openstack/models/identity/user_tests.rb +2 -2
  492. data/tests/openstack/models/network/network_tests.rb +21 -1
  493. data/tests/openstack/models/storage/file_tests.rb +178 -0
  494. data/tests/openstack/requests/compute/limit_tests.rb +1 -1
  495. data/tests/openstack/requests/compute/tenant_tests.rb +2 -2
  496. data/tests/openstack/requests/identity/ec2_credentials_tests.rb +7 -4
  497. data/tests/openstack/requests/identity/helper.rb +17 -0
  498. data/tests/openstack/requests/identity/role_tests.rb +6 -0
  499. data/tests/openstack/requests/identity/tenant_tests.rb +14 -12
  500. data/tests/openstack/requests/identity/user_tests.rb +9 -5
  501. data/tests/openstack/requests/storage/container_tests.rb +64 -0
  502. data/tests/openstack/requests/storage/large_object_tests.rb +47 -0
  503. data/tests/openstack/requests/storage/object_tests.rb +84 -0
  504. data/tests/openstack/volume_tests.rb +15 -0
  505. data/tests/rackspace/cdn_tests.rb +78 -0
  506. data/tests/rackspace/helper.rb +9 -0
  507. data/tests/rackspace/models/compute_v2/flavors_tests.rb +1 -1
  508. data/tests/rackspace/models/compute_v2/image_tests.rb +2 -4
  509. data/tests/rackspace/models/compute_v2/images_tests.rb +1 -1
  510. data/tests/rackspace/models/compute_v2/metadata_tests.rb +5 -3
  511. data/tests/rackspace/models/compute_v2/network_tests.rb +10 -0
  512. data/tests/rackspace/models/compute_v2/networks_tests.rb +10 -0
  513. data/tests/rackspace/models/compute_v2/server_tests.rb +8 -7
  514. data/tests/rackspace/models/compute_v2/servers_tests.rb +5 -7
  515. data/tests/rackspace/models/dns/zones_tests.rb +22 -0
  516. data/tests/rackspace/models/identity/credentials_tests.rb +14 -5
  517. data/tests/rackspace/models/storage/account_tests.rb +28 -0
  518. data/tests/rackspace/models/storage/directories_tests.rb +29 -0
  519. data/tests/rackspace/models/storage/directory_tests.rb +141 -0
  520. data/tests/rackspace/models/storage/file_tests.rb +86 -11
  521. data/tests/rackspace/models/storage/metadata_tests.rb +174 -0
  522. data/tests/rackspace/requests/cdn/cdn_tests.rb +76 -0
  523. data/tests/rackspace/requests/compute/image_tests.rb +2 -2
  524. data/tests/rackspace/requests/compute_v2/image_tests.rb +6 -6
  525. data/tests/rackspace/requests/compute_v2/network_tests.rb +49 -0
  526. data/tests/rackspace/requests/identity/user_tests.rb +0 -4
  527. data/tests/rackspace/requests/storage/container_tests.rb +8 -1
  528. data/tests/rackspace/storage_tests.rb +8 -0
  529. data/tests/storage/helper.rb +3 -0
  530. metadata +341 -40
  531. data/docs/storage/aws.markdown +0 -21
  532. data/lib/fog/bin/virtual_box.rb +0 -57
  533. data/lib/fog/rackspace/docs/cloud_servers.md +0 -65
  534. data/lib/fog/rackspace/requests/identity/get_credentials.rb +0 -15
  535. data/lib/fog/virtual_box.rb +0 -11
  536. data/lib/fog/virtual_box/compute.rb +0 -59
  537. data/lib/fog/virtual_box/models/compute/medium.rb +0 -87
  538. data/lib/fog/virtual_box/models/compute/medium_format.rb +0 -34
  539. data/lib/fog/virtual_box/models/compute/mediums.rb +0 -32
  540. data/lib/fog/virtual_box/models/compute/nat_engine.rb +0 -65
  541. data/lib/fog/virtual_box/models/compute/nat_redirect.rb +0 -91
  542. data/lib/fog/virtual_box/models/compute/nat_redirects.rb +0 -41
  543. data/lib/fog/virtual_box/models/compute/network_adapter.rb +0 -82
  544. data/lib/fog/virtual_box/models/compute/network_adapters.rb +0 -42
  545. data/lib/fog/virtual_box/models/compute/server.rb +0 -199
  546. data/lib/fog/virtual_box/models/compute/servers.rb +0 -41
  547. data/lib/fog/virtual_box/models/compute/storage_controller.rb +0 -83
  548. data/lib/fog/virtual_box/models/compute/storage_controllers.rb +0 -38
@@ -4,8 +4,17 @@ module Fog
4
4
  module Compute
5
5
  class RackspaceV2
6
6
  class Attachment < Fog::Model
7
+
8
+ # @!attribute [r] server_id
9
+ # @return [String] The server id
7
10
  attribute :server_id, :aliases => 'serverId'
11
+
12
+ # @!attribute [r] volume_id
13
+ # @return [String] The volume id
8
14
  attribute :volume_id, :aliases => 'volumeId'
15
+
16
+ # @!attribute [r] device
17
+ # @return [String]device name of the device /dev/xvd[a-p]
9
18
  attribute :device
10
19
 
11
20
  def initialize(new_attributes = {})
@@ -14,6 +23,10 @@ module Fog
14
23
  self
15
24
  end
16
25
 
26
+ # Attaches volume to volume to server.
27
+ # Requires :server_id, :volume_id, and device to be populated
28
+ # @return [Boolean] true if volume is attaching
29
+ # @see http://docs.rackspace.com/servers/api/v2/cs-devguide/content/Attach_Volume_to_Server.html
17
30
  def save
18
31
  requires :server_id, :volume_id, :device
19
32
  data = service.attach_volume(server_id, volume_id, device)
@@ -21,6 +34,9 @@ module Fog
21
34
  true
22
35
  end
23
36
 
37
+ # Detaches volume from server
38
+ # @return [Boolean] true if volume is detaching
39
+ # @see http://docs.rackspace.com/servers/api/v2/cs-devguide/content/Delete_Volume_Attachment.html
24
40
  def destroy
25
41
  requires :server_id, :volume_id
26
42
  service.delete_attachment(server_id, volume_id)
@@ -10,11 +10,17 @@ module Fog
10
10
 
11
11
  attr_accessor :server
12
12
 
13
+ # Retrieves attachments belonging to server
14
+ # @return [Array<Fog::Compute::RackspaceV2::Attachment>] list of attachments
15
+ # @see Server#attachments
13
16
  def all
14
17
  data = service.list_attachments(server.id).body['volumeAttachments']
15
18
  load(data)
16
19
  end
17
20
 
21
+ # Retrieves attachment belonging to server
22
+ # @param [String] volume_id
23
+ # @return [Fog::Compute::RackspaceV2::Attachment] attachment for volume id
18
24
  def get(volume_id)
19
25
  data = service.get_attachment(server.id, volume_id).body['volumeAttachment']
20
26
  data && new(data)
@@ -4,12 +4,30 @@ module Fog
4
4
  module Compute
5
5
  class RackspaceV2
6
6
  class Flavor < Fog::Model
7
+
8
+ # @!attribute [r] id
9
+ # @return [String] The flavor id
7
10
  identity :id
8
11
 
12
+
13
+ # @!attribute [r] name
14
+ # @return [String] flavor name
9
15
  attribute :name
16
+
17
+ # @!attribute [r] rame
18
+ # @return [Fixnum] ram in MB
10
19
  attribute :ram
20
+
21
+ # @!attribute [r] disk
22
+ # @return [String] disk space in GB
11
23
  attribute :disk
24
+
25
+ # @!attribute [r] vcpus
26
+ # @return [Fixnum] number of virtual CPUs
12
27
  attribute :vcpus
28
+
29
+ # @!attribute [r] links
30
+ # @return [Array] flavor links.
13
31
  attribute :links
14
32
  end
15
33
  end
@@ -8,12 +8,20 @@ module Fog
8
8
 
9
9
  model Fog::Compute::RackspaceV2::Flavor
10
10
 
11
+ # Retrieves information for all available flavors
12
+ # @return [Array<Fog::Compute::RackspaceV2::Flavor>] list of flavors
13
+ # @note Fog's currentl implementation only returns 1000 flavors.
14
+ # @note Fog does not retrieve all flavor details. Please use #get to retrieve all details for a specific flavor.
11
15
  def all
12
16
  data = service.list_flavors.body['flavors']
13
17
  load(data)
14
18
  end
15
19
 
16
- def get(flavor_id)
20
+ # Retrieve image
21
+ # @param [String] flavor_id id of flavor
22
+ # @return [Fog::Compute::RackspaceV2::Flavor] flavor
23
+ # @see http://docs.rackspace.com/servers/api/v2/cs-devguide/content/Get_Flavor_Details-d1e4317.html
24
+ def get(flavor_id)
17
25
  data = service.get_flavor(flavor_id).body['flavor']
18
26
  new(data)
19
27
  rescue Fog::Compute::RackspaceV2::NotFound
@@ -10,42 +10,86 @@ module Fog
10
10
  ERROR = 'ERROR'
11
11
  DELETED = 'DELETED'
12
12
 
13
+ # @!attribute [r] id
14
+ # @return [String] The server id
13
15
  identity :id
14
16
 
17
+ # @!attribute [r] name
18
+ # @return [String] The image name.
15
19
  attribute :name
20
+
21
+ # @!attribute [r] created
22
+ # @return [String] The time stamp for the creation date.
16
23
  attribute :created
24
+
25
+ # @!attribute [r] updated
26
+ # @return [String] The time stamp for the last update.
17
27
  attribute :updated
28
+
29
+ # @!attribute [r] state
30
+ # @return [String] image status.
18
31
  attribute :state, :aliases => 'status'
32
+
33
+ # @!attribute [r] user_id
34
+ # @return [String] The user Id.
19
35
  attribute :user_id
36
+
37
+ # @!attribute [r] tenant_id
38
+ # @return [String] The tenant Id.
20
39
  attribute :tenant_id
40
+
41
+ # @!attribute [r] progress
42
+ # @return [Fixnum] The build completion progress, as a percentage. Value is from 0 to 100.
21
43
  attribute :progress
44
+
22
45
  attribute :minDisk
23
46
  attribute :minRam
47
+
48
+ # @!attribute [rw] disk_config
49
+ # @return [String<AUTO, MANUAL>] The disk configuration value.
50
+ # @see http://docs.rackspace.com/servers/api/v2/cs-devguide/content/ch_extensions.html#diskconfig_attribute
51
+ #
52
+ # The disk configuration value.
53
+ # * AUTO - The server is built with a single partition the size of the target flavor disk. The file system is automatically adjusted to fit the entire partition.
54
+ # This keeps things simple and automated. AUTO is valid only for images and servers with a single partition that use the EXT3 file system.
55
+ # This is the default setting for applicable Rackspace base images.
56
+ #
57
+ # * MANUAL - The server is built using whatever partition scheme and file system is in the source image. If the target flavor disk is larger,
58
+ # the remaining disk space is left unpartitioned. This enables images to have non-EXT3 file systems, multiple partitions,
59
+ # and so on, and enables you to manage the disk configuration.
24
60
  attribute :disk_config, :aliases => 'OS-DCF:diskConfig'
61
+
62
+ # @!attribute [r] links
63
+ # @return [Array] image links.
25
64
  attribute :links
26
-
27
- ignore_attributes :metadata
28
-
65
+
29
66
  def initialize(attributes={})
30
- @connection = attributes[:connection]
67
+ @service = attributes[:service]
31
68
  super
32
69
  end
33
70
 
71
+ # Image metadata
72
+ # @return [Fog::Compute::RackspaceV2::Metadata] Collection of Fog::Compute::RackspaceV2::Metadatum objects containing metadata key value pairs.
34
73
  def metadata
35
- raise "Please save image before accessing metadata" unless identity
36
74
  @metadata ||= begin
37
75
  Fog::Compute::RackspaceV2::Metadata.new({
38
- :connection => connection,
76
+ :service => service,
39
77
  :parent => self
40
78
  })
41
79
  end
42
80
  end
43
81
 
82
+ # Set server metadata
83
+ # @param [Hash] hash contains key value pairs
44
84
  def metadata=(hash={})
45
- raise "Please save image before accessing metadata" unless identity
46
85
  metadata.from_hash(hash)
47
86
  end
48
87
 
88
+ # Is image is in ready state
89
+ # @param [String] ready_state By default state is ACTIVE
90
+ # @param [Array,String] error_states By default state is ERROR
91
+ # @return [Boolean] returns true if server is in a ready state
92
+ # @raise [RuntimeException] if server state is an error state
49
93
  def ready?(ready_state = ACTIVE, error_states=[ERROR])
50
94
  if error_states
51
95
  error_states = Array(error_states)
@@ -55,6 +99,7 @@ module Fog
55
99
  end
56
100
 
57
101
 
102
+ # Destroy image
58
103
  def destroy
59
104
  requires :identity
60
105
  service.delete_image(identity)
@@ -8,11 +8,20 @@ module Fog
8
8
 
9
9
  model Fog::Compute::RackspaceV2::Image
10
10
 
11
+ # Returns list of images
12
+ # @return [Array<Fog::Compute::RackspaceV2::Image>] Retrieves a list images.
13
+ # @note Fog's current implementation only returns 1000 images.
14
+ # @note Fog does not retrieve all image details. Please use get to retrieve all details for a specific image.
15
+ # @see http://docs.rackspace.com/servers/api/v2/cs-devguide/content/List_Images-d1e4435.html
11
16
  def all
12
17
  data = service.list_images.body['images']
13
18
  load(data)
14
19
  end
15
20
 
21
+ # Retrieve image
22
+ # @param [String] image_id id of image
23
+ # @return [Fog::Compute::RackspaceV2:Image] image
24
+ # @see http://docs.rackspace.com/servers/api/v2/cs-devguide/content/Get_Image_Details-d1e4848.html
16
25
  def get(image_id)
17
26
  data = service.get_image(image_id).body['image']
18
27
  new(data)
@@ -3,14 +3,21 @@ module Fog
3
3
  class RackspaceV2
4
4
  module MetaParent
5
5
 
6
+ # Parent of metadata
7
+ # @return [#parent] parent of metadata
6
8
  def parent
7
9
  @parent
8
10
  end
9
11
 
12
+ # Sets parent of metadata
13
+ # @param [#parent] new_parent of metadata
10
14
  def parent=(new_parent)
11
15
  @parent = new_parent
12
16
  end
13
17
 
18
+ # Collection type for parent
19
+ # @return [String] collection type
20
+ # @raise [RuntimeException] raises excpetion if collection type for parent is unknown
14
21
  def collection_name
15
22
  if parent.class == Fog::Compute::RackspaceV2::Image
16
23
  return "images"
@@ -21,6 +28,8 @@ module Fog
21
28
  end
22
29
  end
23
30
 
31
+ # Converts metadata to hash
32
+ # @return [Hash] hash containing key value pairs for metadata
24
33
  def metas_to_hash(metas)
25
34
  hash = {}
26
35
  metas.each { |meta| hash[meta.key] = meta.value }
@@ -14,50 +14,71 @@ module Fog
14
14
 
15
15
  include Fog::Compute::RackspaceV2::MetaParent
16
16
 
17
+ # Retrieves all of the metadata from server
18
+ # @return [Array<Fog::Compute::RackspaceV2::Metadatum>] list of metadatum
17
19
  def all
18
20
  requires :parent
19
- data = connection.list_metadata(collection_name, parent.id).body['metadata']
21
+ return unless parent.identity
22
+ data = service.list_metadata(collection_name, parent.id).body['metadata']
20
23
  from_hash(data)
21
24
  end
22
25
 
26
+ # Retrieves specific metadata from server
27
+ # @param [String] key for metadatum
28
+ # @return [Fog::Compute::RackspaceV2::Metadatum] metadatum
23
29
  def get(key)
24
30
  requires :parent
25
- data = connection.get_metadata_item(collection_name, parent.id, key).body["meta"]
31
+ data = service.get_metadata_item(collection_name, parent.id, key).body["meta"]
26
32
  datum = data.first
27
33
  new(:key => datum[0], :value => datum[1])
28
34
  rescue Fog::Compute::RackspaceV2::NotFound
29
- nil
35
+ nil
30
36
  end
31
37
 
38
+ # Retrieve specific value for key from Metadata.
39
+ # * If key is of type String, this method will return the value of the metadatum
40
+ # * If key is of type Fixnum, this method will return a Fog::Compute::RackspaceV2::Metadatum object (legacy)
41
+ # @param [#key] key
42
+ # @return [#value]
32
43
  def [](key)
33
44
  return super(key) if key.is_a?(Integer)
34
45
  return nil unless key
35
46
  datum = self.find {|datum| datum.key == key || datum.key == key.to_sym }
36
47
  datum ? datum.value : nil
37
48
  end
38
-
49
+
50
+ # Set value for key.
51
+ # * If key is of type String, this method will set/add the value to Metadata
52
+ # * If key is of type Fixnum, this method will set a Fog::Compute::RackspaceV2::Metadatum object (legacy)
53
+ # @param [#key] key
54
+ # @return [String]
39
55
  def []=(key, value)
40
56
  return super(key,value) if key.is_a?(Integer)
41
57
  return nil unless key
42
58
  datum = self.find {|datum| datum.key == key || datum.key == key.to_sym }
43
59
  if datum
44
- data.value = value
60
+ datum.value = value
45
61
  else
46
- self << Fog::Compute::RackspaceV2::Metadatum.new(:key => key, :value => value, :connection => connection, :parent => parent)
62
+ self << Fog::Compute::RackspaceV2::Metadatum.new(:key => key, :value => value, :service => service, :parent => parent)
47
63
  end
48
64
  value
49
65
  end
50
66
 
67
+ # Saves the current metadata on server
51
68
  def save
52
69
  requires :parent
53
- connection.set_metadata(collection_name, parent.id, to_hash)
70
+ service.set_metadata(collection_name, parent.id, to_hash)
54
71
  end
55
72
 
73
+ # Creates new metadata
56
74
  def new(attributes = {})
57
75
  requires :parent
58
76
  super({ :parent => parent }.merge!(attributes))
59
77
  end
60
78
 
79
+ # Resets metadata using data from hash
80
+ # @param hash hash containing key value pairs used to populate metadata.
81
+ # @note This will remove existing data
61
82
  def from_hash(hash)
62
83
  return unless hash
63
84
  metas = []
@@ -65,6 +86,8 @@ module Fog
65
86
  load(metas)
66
87
  end
67
88
 
89
+ # Converts metadata object to hash
90
+ # @return [Hash] hash of metadata key value pairs
68
91
  def to_hash
69
92
  h = {}
70
93
  self.each { |datum| h[datum.key] = datum.value }
@@ -11,12 +11,16 @@ module Fog
11
11
  identity :key
12
12
  attribute :value
13
13
 
14
+ # Remove metadatum from server
15
+ # @return [Boolean] return true if metadatum is deleting
14
16
  def destroy
15
17
  requires :identity
16
18
  connection.delete_metadata_item(collection_name, parent.id, key)
17
19
  true
18
20
  end
19
21
 
22
+ # Save metadatum on server
23
+ # @return [Boolean] return true if metadatum is saving
20
24
  def save
21
25
  requires :identity, :value
22
26
  connection.set_metadata_item(collection_name, parent.id, key, value)
@@ -0,0 +1,27 @@
1
+ module Fog
2
+ module Compute
3
+ class RackspaceV2
4
+ class Network < Fog::Model
5
+ identity :id
6
+
7
+ attribute :label
8
+ attribute :cidr
9
+
10
+ def save
11
+ requires :label, :cidr
12
+
13
+ data = service.create_network(label, cidr)
14
+ merge_attributes(data.body['network'])
15
+ true
16
+ end
17
+
18
+ def destroy
19
+ requires :identity
20
+
21
+ service.delete_network(identity)
22
+ true
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,23 @@
1
+ require 'fog/rackspace/models/compute_v2/network'
2
+
3
+ module Fog
4
+ module Compute
5
+ class RackspaceV2
6
+ class Networks < Fog::Collection
7
+ model Fog::Compute::RackspaceV2::Network
8
+
9
+ def all
10
+ data = service.list_networks.body['networks']
11
+ load(data)
12
+ end
13
+
14
+ def get(id)
15
+ data = service.get_network(id).body['network']
16
+ new(data)
17
+ rescue Fog::Compute::RackspaceV2::NotFound
18
+ nil
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
@@ -22,42 +22,134 @@ module Fog
22
22
  UNKNOWN = 'UNKNOWN'
23
23
  VERIFY_RESIZE = 'VERIFY_RESIZE'
24
24
 
25
+ # @!attribute [r] id
26
+ # @return [String] The server id
25
27
  identity :id
26
28
 
29
+ # @!attribute [rw] name
30
+ # @return [String] The server name.
27
31
  attribute :name
32
+
33
+ # @!attribute [r] created
34
+ # @return [String] The time stamp for the creation date.
28
35
  attribute :created
36
+
37
+ # @!attribute [r] updated
38
+ # @return [String] The time stamp for the last update.
29
39
  attribute :updated
40
+
41
+ # @!attribute [r] host Id
42
+ # The host Id.
43
+ # The compute provisioning algorithm has an anti-affinity property that attempts to spread customer VMs across hosts.
44
+ # Under certain situations, VMs from the same customer might be placed on the same host.
45
+ # hostId represents the host your server runs on and can be used to determine this scenario if it is relevant to your application.
46
+ # HostId is unique per account and is not globally unique.
47
+ # @return [String] host id.
30
48
  attribute :host_id, :aliases => 'hostId'
49
+
50
+ # @!attribute [r] state
51
+ # @return [String] server status.
52
+ # @see http://docs.rackspace.com/servers/api/v2/cs-devguide/content/List_Servers-d1e2078.html#server_status
31
53
  attribute :state, :aliases => 'status'
54
+
55
+ # @!attribute [r] progress
56
+ # @return [Fixnum] The build completion progress, as a percentage. Value is from 0 to 100.
32
57
  attribute :progress
58
+
59
+ # @!attribute [r] user_id
60
+ # @return [String] The user Id.
33
61
  attribute :user_id
62
+
63
+ # @!attribute [r] tenant_id
64
+ # @return [String] The tenant Id.
34
65
  attribute :tenant_id
66
+
67
+ # @!attribute [r] links
68
+ # @return [Array] Server links.
35
69
  attribute :links
70
+
71
+ # @!attribute [rw] personality
72
+ # @note This attribute is only used for server creation. This field will be nil on subsequent retrievals.
73
+ # @return [Hash] Hash containing data to inject into the file system of the cloud server instance during server creation.
74
+ # @example To inject fog.txt into file system
75
+ # :personality => [{ :path => '/root/fog.txt',
76
+ # :contents => Base64.encode64('Fog was here!')
77
+ # }]
78
+ # @see #create
79
+ # @see http://docs.rackspace.com/servers/api/v2/cs-devguide/content/Server_Personality-d1e2543.html
36
80
  attribute :personality
81
+
82
+ # @!attribute [rw] ipv4_address
83
+ # @return [String] The public IP version 4 access address.
84
+ # @note This field will populate once the server is ready to use.
85
+ # @see http://docs.rackspace.com/servers/api/v2/cs-devguide/content/Server_Primary_Addresses-d1e2558.html
37
86
  attribute :ipv4_address, :aliases => 'accessIPv4'
87
+
88
+ # @!attribute [rw] ipv6_address
89
+ # @return [String] The public IP version 6 access address.
90
+ # @note This field will populate once the server is ready to use.
91
+ # @see http://docs.rackspace.com/servers/api/v2/cs-devguide/content/Server_Primary_Addresses-d1e2558.html
38
92
  attribute :ipv6_address, :aliases => 'accessIPv6'
93
+
94
+ # @!attribute [rw] disk_config
95
+ # @return [String<AUTO, MANUAL>] The disk configuration value.
96
+ # @see http://docs.rackspace.com/servers/api/v2/cs-devguide/content/ch_extensions.html#diskconfig_attribute
97
+ #
98
+ # The disk configuration value.
99
+ # * AUTO - The server is built with a single partition the size of the target flavor disk. The file system is automatically adjusted to fit the entire partition.
100
+ # This keeps things simple and automated. AUTO is valid only for images and servers with a single partition that use the EXT3 file system.
101
+ # This is the default setting for applicable Rackspace base images.
102
+ #
103
+ # * MANUAL - The server is built using whatever partition scheme and file system is in the source image. If the target flavor disk is larger,
104
+ # the remaining disk space is left unpartitioned. This enables images to have non-EXT3 file systems, multiple partitions,
105
+ # and so on, and enables you to manage the disk configuration.
39
106
  attribute :disk_config, :aliases => 'OS-DCF:diskConfig'
107
+
108
+ # @!attribute [r] bandwidth
109
+ # @return [Array] The amount of bandwidth used for the specified audit period.
110
+ # @see http://docs.rackspace.com/servers/api/v2/cs-devguide/content/ch_extensions.html#bandwidth_extension
40
111
  attribute :bandwidth, :aliases => 'rax-bandwidth:bandwidth'
112
+
113
+ # @!attribute [r] address
114
+ # @return [Hash<String, Array[Hash]>] IP addresses allocated for server by network
115
+ # @example
116
+ # {
117
+ # "public" => [
118
+ # {"version"=>4, "addr"=>"166.78.105.63"},
119
+ # {"version"=>6, "addr"=>"2001:4801:7817:0072:0fe1:75e8:ff10:61a9"}
120
+ # ],
121
+ # "private"=> [{"version"=>4, "addr"=>"10.177.18.209"}]
122
+ # }
41
123
  attribute :addresses
42
- attribute :flavor_id, :aliases => 'flavor', :squash => 'id'
43
- attribute :image_id, :aliases => 'image', :squash => 'id'
44
124
 
45
- ignore_attributes :metadata
125
+ # @!attribute [r] flavor_id
126
+ # @return [String] The flavor Id.
127
+ # @see http://docs.rackspace.com/servers/api/v2/cs-devguide/content/List_Flavors-d1e4188.html
128
+ attribute :flavor_id, :aliases => 'flavor', :squash => 'id'
46
129
 
130
+ # @!attribute [r] image_id
131
+ # @return [String] The image Id.
132
+ # @see http://docs.rackspace.com/servers/api/v2/cs-devguide/content/List_Images-d1e4435.html
133
+ attribute :image_id, :aliases => 'image', :squash => 'id'
134
+ # @!attribute [r] password
135
+ # @return [String] Password for system adminstrator account.
136
+ # @note This value is ONLY populated on server creation.
47
137
  attr_reader :password
48
-
138
+
139
+
49
140
  def initialize(attributes={})
50
141
  @service = attributes[:service]
51
142
  super
52
143
  end
53
-
144
+
54
145
  alias :access_ipv4_address :ipv4_address
55
146
  alias :access_ipv4_address= :ipv4_address=
56
147
  alias :access_ipv6_address :ipv6_address
57
148
  alias :access_ipv6_address= :ipv6_address=
58
-
149
+
150
+ # Server metadata
151
+ # @return [Fog::Compute::RackspaceV2::Metadata] metadata key value pairs.
59
152
  def metadata
60
- raise "Please save server before accessing metadata" unless identity
61
153
  @metadata ||= begin
62
154
  Fog::Compute::RackspaceV2::Metadata.new({
63
155
  :service => service,
@@ -65,34 +157,60 @@ module Fog
65
157
  })
66
158
  end
67
159
  end
68
-
160
+
161
+ # Set server metadata
162
+ # @param [Hash] hash contains key value pairs
69
163
  def metadata=(hash={})
70
- raise "Please save server before accessing metadata" unless identity
71
164
  metadata.from_hash(hash)
72
165
  end
73
166
 
74
- def save
167
+ # Saves the server.
168
+ # Creates server if it is new, otherwise it will update server attributes name, accessIPv4, and accessIPv6.
169
+ # @return [Boolean] true if server has started saving
170
+ def save(options = {})
75
171
  if persisted?
76
172
  update
77
173
  else
78
- create
174
+ create(options)
79
175
  end
80
176
  true
81
177
  end
82
178
 
83
- def create
179
+ # Creates server
180
+ # * requires attributes: service:, :name, :image_id, and :flavor_id
181
+ # * optional attributes :disk_config, :metadata, :personality
182
+ # @return [Boolean] returns true if server is being created
183
+ # @note You should use servers.create to create servers instead calling this method directly
184
+ # @see Servers#create
185
+ # @see http://docs.rackspace.com/servers/api/v2/cs-devguide/content/CreateServers.html
186
+ #
187
+ # * State Transitions
188
+ # * BUILD -> ACTIVE
189
+ # * BUILD -> ERROR (on error)
190
+ def create(options)
84
191
  requires :name, :image_id, :flavor_id
85
192
 
86
- options = {}
87
193
  options[:disk_config] = disk_config unless disk_config.nil?
88
- options[:metadata] = metadata unless @metadata.nil?
194
+ options[:metadata] = metadata.to_hash unless @metadata.nil?
89
195
  options[:personality] = personality unless personality.nil?
90
196
 
197
+ if options[:networks]
198
+ options[:networks].map! { |id| { :uuid => id } }
199
+ end
200
+
91
201
  data = service.create_server(name, image_id, flavor_id, 1, 1, options)
92
202
  merge_attributes(data.body['server'])
93
203
  true
94
204
  end
95
205
 
206
+ # Updates server
207
+ # This will update :name, :accessIPv4, and :accessIPv6 attributes.
208
+ # @note If you edit the server name, the server host name does not change. Also, server names are not guaranteed to be unique.
209
+ # @return true if update has started updating
210
+ # @see http://docs.rackspace.com/servers/api/v2/cs-devguide/content/ServerUpdate.html
211
+ #
212
+ # * State Transition
213
+ # * ACTIVE -> ACTIVE
96
214
  def update
97
215
  requires :identity
98
216
  options = {
@@ -100,32 +218,53 @@ module Fog
100
218
  'accessIPv4' => ipv4_address,
101
219
  'accessIPv6' => ipv6_address
102
220
  }
103
-
221
+
104
222
  data = service.update_server(identity, options)
105
223
  merge_attributes(data.body['server'])
106
224
  true
107
225
  end
108
226
 
227
+ # Destroy the server
228
+ # @return [Boolean] returns true if server has started deleting
229
+ # @see http://docs.rackspace.com/servers/api/v2/cs-devguide/content/Delete_Server-d1e2883.html
230
+ #
231
+ # * Status Transition:
232
+ # * ACTIVE -> DELETED
233
+ # * ERROR -> DELETED
109
234
  def destroy
110
235
  requires :identity
111
236
  service.delete_server(identity)
112
237
  true
113
238
  end
114
239
 
240
+ # Server flavor
241
+ # @return [Fog::Compute::RackspaceV2::Flavor] server flavor
115
242
  def flavor
116
243
  requires :flavor_id
117
244
  @flavor ||= service.flavors.get(flavor_id)
118
245
  end
119
246
 
247
+ # Server image
248
+ # @return [Fog::Compute::RackspaceV2::Image] server image
120
249
  def image
121
250
  requires :image_id
122
251
  @image ||= service.images.get(image_id)
123
252
  end
124
253
 
254
+ # Creates Image from server. Once complete, a new image is available that you can use to rebuild or create servers.
255
+ # @param name [String] name of image to create
256
+ # @param options [Hash]:
257
+ # @option options [Hash<String, String>] metadata hash of containing metadata key value pairs.
258
+ # @return [Fog::ComputeRackspaceV2::Image] image being created
259
+ # @see http://docs.rackspace.com/servers/api/v2/cs-devguide/content/Create_Image-d1e4655.html
260
+ #
261
+ # * State Transition:
262
+ # * SAVING -> ACTIVE
263
+ # * SAVING -> ERROR (on error)
125
264
  def create_image(name, options = {})
126
265
  requires :identity
127
266
  response = service.create_image(identity, name, options)
128
- begin
267
+ begin
129
268
  image_id = response.headers["Location"].match(/\/([^\/]+$)/)[1]
130
269
  Fog::Compute::RackspaceV2::Image.new(:collection => service.images, :service => service, :id => image_id)
131
270
  rescue
@@ -133,6 +272,9 @@ module Fog
133
272
  end
134
273
  end
135
274
 
275
+ # Attached Cloud Block Volumes
276
+ # @return [Fog::Compute::RackspaceV2::Attachments] attached Cloud Block Volumes
277
+ # @see http://docs.rackspace.com/servers/api/v2/cs-devguide/content/List_Volume_Attachments.html
136
278
  def attachments
137
279
  @attachments ||= begin
138
280
  Fog::Compute::RackspaceV2::Attachments.new({
@@ -141,21 +283,35 @@ module Fog
141
283
  })
142
284
  end
143
285
  end
144
-
286
+
287
+ # Attaches Cloud Block Volume
288
+ # @param [Fog::Rackspace::BlockStorage::Volume, String] volume object or the volume id of volume to mount
289
+ # @param [String] device name of the device /dev/xvd[a-p] (optional)
290
+ # @return [Fog::Compute::RackspaceV2::Attachment] resulting attachment object
291
+ # @see http://docs.rackspace.com/servers/api/v2/cs-devguide/content/Attach_Volume_to_Server.html
145
292
  def attach_volume(volume, device=nil)
146
293
  requires :identity
147
294
  volume_id = volume.is_a?(String) ? volume : volume.id
148
295
  attachments.create(:server_id => identity, :volume_id => volume_id, :device => device)
149
- end
296
+ end
150
297
 
298
+ # Server's private IPv4 address
299
+ # @return [String] private IPv4 address
151
300
  def private_ip_address
152
301
  addresses['private'].select{|a| a["version"] == 4}[0]["addr"]
153
302
  end
154
303
 
304
+ # Server's public IPv4 address
305
+ # @return [String] public IPv4 address
155
306
  def public_ip_address
156
307
  ipv4_address
157
308
  end
158
309
 
310
+ # Is server is in ready state
311
+ # @param [String] ready_state By default state is ACTIVE
312
+ # @param [Array,String] error_states By default state is ERROR
313
+ # @return [Boolean] returns true if server is in a ready state
314
+ # @raise [RuntimeException] if server state is an error state
159
315
  def ready?(ready_state = ACTIVE, error_states=[ERROR])
160
316
  if error_states
161
317
  error_states = Array(error_states)
@@ -164,6 +320,13 @@ module Fog
164
320
  state == ready_state
165
321
  end
166
322
 
323
+ # Reboot server
324
+ # @param [String<SOFT, HARD>] type 'SOFT' will do a soft reboot. 'HARD' will do a hard reboot.
325
+ # @see http://docs.rackspace.com/servers/api/v2/cs-devguide/content/Reboot_Server-d1e3371.html
326
+ #
327
+ # * State transition:
328
+ # * ACTIVE -> REBOOT -> ACTIVE (soft reboot)
329
+ # * ACTIVE -> HARD_REBOOT -> ACTIVE (hard reboot)
167
330
  def reboot(type = 'SOFT')
168
331
  requires :identity
169
332
  service.reboot_server(identity, type)
@@ -171,13 +334,15 @@ module Fog
171
334
  true
172
335
  end
173
336
 
174
- def resize(flavor_id)
175
- requires :identity
176
- service.resize_server(identity, flavor_id)
177
- self.state = RESIZE
178
- true
179
- end
180
337
 
338
+ # Rebuild removes all data on the server and replaces it with the specified image. The id and all IP addresses remain the same.
339
+ # @param [String] image_id image to use for rebuild
340
+ # @return [Boolean] returns true if rebuild is in process
341
+ # @see http://docs.rackspace.com/servers/api/v2/cs-devguide/content/Rebuild_Server-d1e3538.html
342
+ #
343
+ # * Status Transition:
344
+ # * ACTIVE -> REBUILD -> ACTIVE
345
+ # * ACTIVE -> REBUILD -> ERROR (on error)
181
346
  def rebuild(image_id, options={})
182
347
  requires :identity
183
348
  service.rebuild_server(identity, image_id, options)
@@ -185,18 +350,61 @@ module Fog
185
350
  true
186
351
  end
187
352
 
353
+ # Resize existing server to a different flavor, in essence, scaling the server up or down. The original server is saved for a period of time to allow rollback if there is a problem. All resizes should be tested and explicitly confirmed, at which time the original server is removed. All resizes are automatically confirmed after 24 hours if they are not confirmed or reverted.
354
+ # @param [String] flavor to resize
355
+ # @return [Boolean] returns true if resize is in process
356
+ # @note All resizes are automatically confirmed after 24 hours if you do not explicitly confirm or revert the resize.
357
+ # @see http://docs.rackspace.com/servers/api/v2/cs-devguide/content/Resize_Server-d1e3707.html
358
+ # @see #confirm_resize
359
+ # @see #revert_resize
360
+ #
361
+ # * Status Transition:
362
+ # * ACTIVE -> QUEUE_RESIZE -> PREP_RESIZE -> VERIFY_RESIZE
363
+ # * ACTIVE -> QUEUE_RESIZE -> ACTIVE (on error)
364
+ def resize(flavor_id)
365
+ requires :identity
366
+ service.resize_server(identity, flavor_id)
367
+ self.state = RESIZE
368
+ true
369
+ end
370
+
371
+ # Confirms server resize operation
372
+ # @note All resizes are automatically confirmed after 24 hours if you do not explicitly confirm or revert the resize.
373
+ # @see http://docs.rackspace.com/servers/api/v2/cs-devguide/content/Confirm_Resized_Server-d1e3868.html
374
+ # @see #resize
375
+ #
376
+ # * Status Transition:
377
+ # * VERIFY_RESIZE -> ACTIVE
378
+ # * VERIFY_RESIZE -> ERROR (on error)
188
379
  def confirm_resize
189
380
  requires :identity
190
381
  service.confirm_resize_server(identity)
191
382
  true
192
383
  end
193
384
 
385
+ # Reverts server resize operation
386
+ # @note All resizes are automatically confirmed after 24 hours if you do not explicitly confirm or revert the resize.
387
+ # @see http://docs.rackspace.com/servers/api/v2/cs-devguide/content/Revert_Resized_Server-d1e4024.html
388
+ # @see #resize
389
+ #
390
+ # * Status Transition:
391
+ # * VERIFY_RESIZE -> ACTIVE
392
+ # * VERIFY_RESIZE -> ERROR (on error)
194
393
  def revert_resize
195
394
  requires :identity
196
395
  service.revert_resize_server(identity)
197
396
  true
198
397
  end
199
398
 
399
+ # Change admin password
400
+ # @param [String] password The administrator password.
401
+ # @return [Boolean] returns true if operation was scheduled
402
+ # @note Though Rackspace does not enforce complexity requirements for the password, the operating system might. If the password is not complex enough, the server might enter an ERROR state.
403
+ # @see http://docs.rackspace.com/servers/api/v2/cs-devguide/content/Change_Password-d1e3234.html
404
+ #
405
+ # * Status Transition:
406
+ # * ACTIVE -> PASSWORD -> ACTIVE
407
+ # * ACTIVE -> PASSWORD -> ERROR (on error)
200
408
  def change_admin_password(password)
201
409
  requires :identity
202
410
  service.change_server_password(identity, password)
@@ -205,6 +413,9 @@ module Fog
205
413
  true
206
414
  end
207
415
 
416
+ # Setup server for SSH access
417
+ # This requires public_key_path and private_key_path to be passed into Compute service via Fog::Compute constructor or .fog file
418
+ # @see Servers#bootstrap
208
419
  def setup(credentials = {})
209
420
  requires :public_ip_address, :identity, :public_key, :username
210
421
  Fog::SSH.new(public_ip_address, username, credentials).run([