fog 1.5.0 → 1.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (355) hide show
  1. data/.travis.yml +21 -0
  2. data/README.md +3 -1
  3. data/Rakefile +4 -1
  4. data/changelog.txt +462 -0
  5. data/docs/storage/index.markdown +4 -4
  6. data/fog.gemspec +2 -2
  7. data/lib/fog.rb +1 -1
  8. data/lib/fog/atmos.rb +11 -0
  9. data/lib/fog/atmos/models/storage/directories.rb +48 -0
  10. data/lib/fog/atmos/models/storage/directory.rb +53 -0
  11. data/lib/fog/atmos/models/storage/file.rb +107 -0
  12. data/lib/fog/atmos/models/storage/files.rb +73 -0
  13. data/lib/fog/atmos/requests/storage/delete_namespace.rb +19 -0
  14. data/lib/fog/atmos/requests/storage/get_namespace.rb +20 -0
  15. data/lib/fog/atmos/requests/storage/head_namespace.rb +20 -0
  16. data/lib/fog/atmos/requests/storage/post_namespace.rb +20 -0
  17. data/lib/fog/atmos/requests/storage/put_namespace.rb +20 -0
  18. data/lib/fog/atmos/storage.rb +186 -0
  19. data/lib/fog/aws.rb +2 -0
  20. data/lib/fog/aws/auto_scaling.rb +15 -1
  21. data/lib/fog/aws/compute.rb +26 -17
  22. data/lib/fog/aws/elb.rb +14 -2
  23. data/lib/fog/aws/glacier.rb +172 -0
  24. data/lib/fog/aws/iam.rb +35 -29
  25. data/lib/fog/aws/models/auto_scaling/group.rb +1 -1
  26. data/lib/fog/aws/models/compute/flavors.rb +11 -0
  27. data/lib/fog/aws/models/compute/security_group.rb +22 -6
  28. data/lib/fog/aws/models/compute/server.rb +5 -1
  29. data/lib/fog/aws/models/compute/spot_request.rb +12 -0
  30. data/lib/fog/aws/models/compute/spot_requests.rb +1 -2
  31. data/lib/fog/aws/models/compute/volume.rb +7 -1
  32. data/lib/fog/aws/models/glacier/archive.rb +70 -0
  33. data/lib/fog/aws/models/glacier/archives.rb +30 -0
  34. data/lib/fog/aws/models/glacier/job.rb +65 -0
  35. data/lib/fog/aws/models/glacier/jobs.rb +45 -0
  36. data/lib/fog/aws/models/glacier/vault.rb +53 -0
  37. data/lib/fog/aws/models/glacier/vaults.rb +28 -0
  38. data/lib/fog/aws/models/rds/server.rb +3 -1
  39. data/lib/fog/aws/models/rds/snapshot.rb +1 -0
  40. data/lib/fog/aws/models/rds/snapshots.rb +3 -0
  41. data/lib/fog/aws/models/storage/file.rb +4 -3
  42. data/lib/fog/aws/parsers/auto_scaling/describe_auto_scaling_groups.rb +8 -1
  43. data/lib/fog/aws/parsers/compute/create_volume.rb +2 -2
  44. data/lib/fog/aws/parsers/compute/describe_instance_status.rb +8 -1
  45. data/lib/fog/aws/parsers/compute/describe_instances.rb +2 -0
  46. data/lib/fog/aws/parsers/compute/describe_reserved_instances_offerings.rb +1 -1
  47. data/lib/fog/aws/parsers/compute/describe_volumes.rb +2 -2
  48. data/lib/fog/aws/parsers/compute/run_instances.rb +2 -0
  49. data/lib/fog/aws/parsers/compute/spot_instance_requests.rb +1 -1
  50. data/lib/fog/aws/parsers/dns/list_resource_record_sets.rb +3 -1
  51. data/lib/fog/aws/parsers/rds/db_parser.rb +3 -1
  52. data/lib/fog/aws/parsers/rds/snapshot_parser.rb +1 -0
  53. data/lib/fog/aws/rds.rb +9 -9
  54. data/lib/fog/aws/requests/auto_scaling/create_auto_scaling_group.rb +1 -0
  55. data/lib/fog/aws/requests/auto_scaling/delete_auto_scaling_group.rb +1 -1
  56. data/lib/fog/aws/requests/compute/create_volume.rb +53 -14
  57. data/lib/fog/aws/requests/compute/describe_instance_status.rb +2 -0
  58. data/lib/fog/aws/requests/compute/describe_instances.rb +3 -1
  59. data/lib/fog/aws/requests/compute/describe_internet_gateways.rb +13 -7
  60. data/lib/fog/aws/requests/compute/describe_spot_instance_requests.rb +1 -0
  61. data/lib/fog/aws/requests/compute/describe_subnets.rb +13 -7
  62. data/lib/fog/aws/requests/compute/describe_volumes.rb +2 -0
  63. data/lib/fog/aws/requests/compute/describe_vpcs.rb +12 -6
  64. data/lib/fog/aws/requests/compute/request_spot_instances.rb +2 -0
  65. data/lib/fog/aws/requests/compute/run_instances.rb +8 -2
  66. data/lib/fog/aws/requests/dns/change_resource_record_sets.rb +20 -1
  67. data/lib/fog/aws/requests/elb/create_load_balancer.rb +2 -2
  68. data/lib/fog/aws/requests/elb/describe_load_balancers.rb +1 -1
  69. data/lib/fog/aws/requests/glacier/abort_multipart_upload.rb +35 -0
  70. data/lib/fog/aws/requests/glacier/complete_multipart_upload.rb +42 -0
  71. data/lib/fog/aws/requests/glacier/create_archive.rb +43 -0
  72. data/lib/fog/aws/requests/glacier/create_vault.rb +34 -0
  73. data/lib/fog/aws/requests/glacier/delete_archive.rb +35 -0
  74. data/lib/fog/aws/requests/glacier/delete_vault.rb +34 -0
  75. data/lib/fog/aws/requests/glacier/delete_vault_notification_configuration.rb +33 -0
  76. data/lib/fog/aws/requests/glacier/describe_job.rb +35 -0
  77. data/lib/fog/aws/requests/glacier/describe_vault.rb +34 -0
  78. data/lib/fog/aws/requests/glacier/get_job_output.rb +41 -0
  79. data/lib/fog/aws/requests/glacier/get_vault_notification_configuration.rb +34 -0
  80. data/lib/fog/aws/requests/glacier/initiate_job.rb +41 -0
  81. data/lib/fog/aws/requests/glacier/initiate_multipart_upload.rb +38 -0
  82. data/lib/fog/aws/requests/glacier/list_jobs.rb +39 -0
  83. data/lib/fog/aws/requests/glacier/list_multipart_uploads.rb +37 -0
  84. data/lib/fog/aws/requests/glacier/list_parts.rb +37 -0
  85. data/lib/fog/aws/requests/glacier/list_vaults.rb +36 -0
  86. data/lib/fog/aws/requests/glacier/set_vault_notification_configuration.rb +37 -0
  87. data/lib/fog/aws/requests/glacier/upload_part.rb +46 -0
  88. data/lib/fog/aws/requests/rds/create_db_instance.rb +7 -5
  89. data/lib/fog/aws/requests/rds/create_db_instance_read_replica.rb +41 -1
  90. data/lib/fog/aws/requests/rds/create_db_snapshot.rb +1 -1
  91. data/lib/fog/aws/requests/rds/describe_db_instances.rb +8 -10
  92. data/lib/fog/aws/requests/rds/describe_db_security_groups.rb +1 -1
  93. data/lib/fog/aws/requests/rds/describe_db_snapshots.rb +2 -0
  94. data/lib/fog/aws/requests/rds/modify_db_instance.rb +7 -6
  95. data/lib/fog/aws/requests/rds/reboot_db_instance.rb +6 -5
  96. data/lib/fog/aws/requests/storage/get_object.rb +45 -2
  97. data/lib/fog/aws/requests/storage/upload_part.rb +1 -0
  98. data/lib/fog/aws/signaturev4.rb +73 -0
  99. data/lib/fog/aws/sqs.rb +2 -6
  100. data/lib/fog/bare_metal_cloud/compute.rb +3 -1
  101. data/lib/fog/bare_metal_cloud/requests/compute/add_server_by_configuration.rb +33 -0
  102. data/lib/fog/bare_metal_cloud/requests/compute/get_server.rb +17 -12
  103. data/lib/fog/bare_metal_cloud/requests/compute/list_configurations.rb +27 -0
  104. data/lib/fog/bare_metal_cloud/requests/compute/list_images.rb +4 -4
  105. data/lib/fog/bare_metal_cloud/requests/compute/list_plans.rb +7 -7
  106. data/lib/fog/bare_metal_cloud/requests/compute/list_servers.rb +2 -2
  107. data/lib/fog/bin.rb +7 -0
  108. data/lib/fog/bin/atmos.rb +31 -0
  109. data/lib/fog/bin/aws.rb +4 -0
  110. data/lib/fog/bin/ecloud.rb +4 -0
  111. data/lib/fog/bin/rackspace.rb +7 -0
  112. data/lib/fog/bin/serverlove.rb +31 -0
  113. data/lib/fog/bluebox/requests/compute/create_block.rb +18 -4
  114. data/lib/fog/brightbox/compute.rb +52 -0
  115. data/lib/fog/brightbox/models/compute/cloud_ip.rb +2 -0
  116. data/lib/fog/brightbox/models/compute/image.rb +1 -0
  117. data/lib/fog/brightbox/models/compute/server.rb +46 -3
  118. data/lib/fog/brightbox/requests/compute/create_cloud_ip.rb +3 -3
  119. data/lib/fog/cloudstack/compute.rb +4 -1
  120. data/lib/fog/cloudstack/models/compute/images.rb +15 -6
  121. data/lib/fog/cloudstack/models/compute/job.rb +1 -1
  122. data/lib/fog/cloudstack/requests/compute/attach_volume.rb +1 -1
  123. data/lib/fog/cloudstack/requests/compute/register_template.rb +35 -0
  124. data/lib/fog/compute.rb +15 -3
  125. data/lib/fog/core/errors.rb +1 -0
  126. data/lib/fog/core/time.rb +4 -0
  127. data/lib/fog/dynect/dns.rb +5 -5
  128. data/lib/fog/ecloud.rb +6 -0
  129. data/lib/fog/ecloud/compute.rb +3 -1
  130. data/lib/fog/ecloud/models/compute/ip_addresses.rb +1 -0
  131. data/lib/fog/ecloud/models/compute/networks.rb +1 -0
  132. data/lib/fog/ecloud/models/compute/server.rb +31 -1
  133. data/lib/fog/ecloud/requests/compute/virtual_machine_add_ip.rb +40 -0
  134. data/lib/fog/ecloud/requests/compute/virtual_machine_upload_file.rb +31 -0
  135. data/lib/fog/google/models/storage/directory.rb +2 -2
  136. data/lib/fog/google/models/storage/file.rb +2 -2
  137. data/lib/fog/google/requests/storage/get_bucket.rb +1 -2
  138. data/lib/fog/google/requests/storage/put_object.rb +1 -2
  139. data/lib/fog/google/storage.rb +1 -1
  140. data/lib/fog/hp/models/compute/image.rb +1 -1
  141. data/lib/fog/hp/models/compute/server.rb +4 -0
  142. data/lib/fog/hp/requests/compute/delete_security_group_rule.rb +4 -4
  143. data/lib/fog/hp/requests/storage/get_object.rb +8 -2
  144. data/lib/fog/hp/storage.rb +1 -0
  145. data/lib/fog/libvirt/models/compute/server.rb +1 -1
  146. data/lib/fog/libvirt/models/compute/templates/server.xml.erb +1 -1
  147. data/lib/fog/openstack.rb +7 -0
  148. data/lib/fog/openstack/compute.rb +4 -1
  149. data/lib/fog/openstack/models/compute/server.rb +1 -1
  150. data/lib/fog/openstack/requests/compute/create_server.rb +8 -2
  151. data/lib/fog/openstack/requests/identity/list_roles_for_user_on_tenant.rb +1 -1
  152. data/lib/fog/openstack/requests/identity/list_tenants.rb +1 -0
  153. data/lib/fog/providers.rb +2 -0
  154. data/lib/fog/rackspace.rb +9 -7
  155. data/lib/fog/rackspace/block_storage.rb +114 -0
  156. data/lib/fog/rackspace/compute_v2.rb +123 -0
  157. data/lib/fog/rackspace/models/block_storage/snapshot.rb +46 -0
  158. data/lib/fog/rackspace/models/block_storage/snapshots.rb +25 -0
  159. data/lib/fog/rackspace/models/block_storage/volume.rb +58 -0
  160. data/lib/fog/rackspace/models/block_storage/volume_type.rb +14 -0
  161. data/lib/fog/rackspace/models/block_storage/volume_types.rb +25 -0
  162. data/lib/fog/rackspace/models/block_storage/volumes.rb +25 -0
  163. data/lib/fog/rackspace/models/compute_v2/attachment.rb +34 -0
  164. data/lib/fog/rackspace/models/compute_v2/attachments.rb +25 -0
  165. data/lib/fog/rackspace/models/compute_v2/flavor.rb +17 -0
  166. data/lib/fog/rackspace/models/compute_v2/flavors.rb +25 -0
  167. data/lib/fog/rackspace/models/compute_v2/image.rb +30 -0
  168. data/lib/fog/rackspace/models/compute_v2/images.rb +25 -0
  169. data/lib/fog/rackspace/models/compute_v2/server.rb +147 -0
  170. data/lib/fog/rackspace/models/compute_v2/servers.rb +25 -0
  171. data/lib/fog/rackspace/models/storage/directory.rb +3 -3
  172. data/lib/fog/rackspace/requests/block_storage/create_snapshot.rb +26 -0
  173. data/lib/fog/rackspace/requests/block_storage/create_volume.rb +27 -0
  174. data/lib/fog/rackspace/requests/block_storage/delete_snapshot.rb +15 -0
  175. data/lib/fog/rackspace/requests/block_storage/delete_volume.rb +15 -0
  176. data/lib/fog/rackspace/requests/block_storage/get_snapshot.rb +15 -0
  177. data/lib/fog/rackspace/requests/block_storage/get_volume.rb +15 -0
  178. data/lib/fog/rackspace/requests/block_storage/get_volume_type.rb +15 -0
  179. data/lib/fog/rackspace/requests/block_storage/list_snapshots.rb +15 -0
  180. data/lib/fog/rackspace/requests/block_storage/list_volume_types.rb +15 -0
  181. data/lib/fog/rackspace/requests/block_storage/list_volumes.rb +15 -0
  182. data/lib/fog/rackspace/requests/compute_v2/attach_volume.rb +23 -0
  183. data/lib/fog/rackspace/requests/compute_v2/change_server_password.rb +22 -0
  184. data/lib/fog/rackspace/requests/compute_v2/confirm_resize_server.rb +20 -0
  185. data/lib/fog/rackspace/requests/compute_v2/create_server.rb +28 -0
  186. data/lib/fog/rackspace/requests/compute_v2/delete_attachment.rb +15 -0
  187. data/lib/fog/rackspace/requests/compute_v2/delete_server.rb +15 -0
  188. data/lib/fog/rackspace/requests/compute_v2/get_attachment.rb +15 -0
  189. data/lib/fog/rackspace/requests/compute_v2/get_flavor.rb +15 -0
  190. data/lib/fog/rackspace/requests/compute_v2/get_image.rb +15 -0
  191. data/lib/fog/rackspace/requests/compute_v2/get_server.rb +15 -0
  192. data/lib/fog/rackspace/requests/compute_v2/list_attachments.rb +15 -0
  193. data/lib/fog/rackspace/requests/compute_v2/list_flavors.rb +15 -0
  194. data/lib/fog/rackspace/requests/compute_v2/list_images.rb +15 -0
  195. data/lib/fog/rackspace/requests/compute_v2/list_servers.rb +15 -0
  196. data/lib/fog/rackspace/requests/compute_v2/reboot_server.rb +22 -0
  197. data/lib/fog/rackspace/requests/compute_v2/rebuild_server.rb +22 -0
  198. data/lib/fog/rackspace/requests/compute_v2/resize_server.rb +22 -0
  199. data/lib/fog/rackspace/requests/compute_v2/revert_resize_server.rb +20 -0
  200. data/lib/fog/rackspace/requests/compute_v2/update_server.rb +22 -0
  201. data/lib/fog/rackspace/requests/storage/delete_object.rb +1 -1
  202. data/lib/fog/rackspace/requests/storage/get_object_https_url.rb +51 -0
  203. data/lib/fog/rackspace/requests/storage/post_set_meta_temp_url_key.rb +37 -0
  204. data/lib/fog/rackspace/storage.rb +4 -0
  205. data/lib/fog/serverlove.rb +10 -0
  206. data/lib/fog/serverlove/compute.rb +97 -0
  207. data/lib/fog/serverlove/models/compute/image.rb +57 -0
  208. data/lib/fog/serverlove/models/compute/images.rb +26 -0
  209. data/lib/fog/serverlove/models/compute/server.rb +72 -0
  210. data/lib/fog/serverlove/models/compute/servers.rb +26 -0
  211. data/lib/fog/serverlove/requests/compute/create_image.rb +32 -0
  212. data/lib/fog/serverlove/requests/compute/create_server.rb +34 -0
  213. data/lib/fog/serverlove/requests/compute/destroy_image.rb +13 -0
  214. data/lib/fog/serverlove/requests/compute/destroy_server.rb +13 -0
  215. data/lib/fog/serverlove/requests/compute/get_image.rb +13 -0
  216. data/lib/fog/serverlove/requests/compute/get_images.rb +13 -0
  217. data/lib/fog/serverlove/requests/compute/get_server.rb +13 -0
  218. data/lib/fog/serverlove/requests/compute/get_servers.rb +13 -0
  219. data/lib/fog/serverlove/requests/compute/load_standard_image.rb +13 -0
  220. data/lib/fog/serverlove/requests/compute/reset_server.rb +13 -0
  221. data/lib/fog/serverlove/requests/compute/shutdown_server.rb +13 -0
  222. data/lib/fog/serverlove/requests/compute/start_server.rb +13 -0
  223. data/lib/fog/serverlove/requests/compute/stop_server.rb +13 -0
  224. data/lib/fog/serverlove/requests/compute/update_image.rb +15 -0
  225. data/lib/fog/serverlove/requests/compute/update_server.rb +15 -0
  226. data/lib/fog/serverlove/util/compute/password_generator.rb +11 -0
  227. data/lib/fog/storage.rb +3 -0
  228. data/lib/fog/terremark/models/shared/image.rb +22 -0
  229. data/lib/fog/terremark/models/shared/images.rb +48 -0
  230. data/lib/fog/terremark/models/shared/internetservice.rb +67 -0
  231. data/lib/fog/terremark/models/shared/internetservices.rb +42 -0
  232. data/lib/fog/terremark/models/shared/nodeservice.rb +52 -0
  233. data/lib/fog/terremark/models/shared/nodeservices.rb +32 -0
  234. data/lib/fog/terremark/models/shared/server.rb +114 -15
  235. data/lib/fog/terremark/models/shared/servers.rb +7 -8
  236. data/lib/fog/terremark/models/shared/vdc.rb +6 -1
  237. data/lib/fog/terremark/parsers/shared/get_catalog.rb +7 -2
  238. data/lib/fog/terremark/parsers/shared/get_keys_list.rb +56 -0
  239. data/lib/fog/terremark/requests/shared/add_internet_service.rb +10 -9
  240. data/lib/fog/terremark/requests/shared/add_node_service.rb +10 -12
  241. data/lib/fog/terremark/requests/shared/configure_vapp.rb +61 -0
  242. data/lib/fog/terremark/requests/shared/create_internet_service.rb +16 -11
  243. data/lib/fog/terremark/requests/shared/delete_internet_service.rb +2 -1
  244. data/lib/fog/terremark/requests/shared/delete_node_service.rb +2 -1
  245. data/lib/fog/terremark/requests/shared/delete_public_ip.rb +2 -1
  246. data/lib/fog/terremark/requests/shared/get_internet_services.rb +2 -1
  247. data/lib/fog/terremark/requests/shared/get_keys_list.rb +36 -0
  248. data/lib/fog/terremark/requests/shared/get_node_services.rb +2 -1
  249. data/lib/fog/terremark/requests/shared/instantiate_vapp_template.rb +11 -1
  250. data/lib/fog/terremark/shared.rb +19 -1
  251. data/lib/fog/terremark/vcloud.rb +10 -1
  252. data/lib/fog/vcloud/compute.rb +13 -13
  253. data/lib/fog/vcloud/models/compute/catalog_items.rb +6 -2
  254. data/lib/fog/vcloud/models/compute/organizations.rb +1 -2
  255. data/lib/fog/vcloud/models/compute/server.rb +37 -3
  256. data/lib/fog/vcloud/models/compute/vapps.rb +1 -1
  257. data/lib/fog/vcloud/requests/compute/configure_org_network.rb +141 -0
  258. data/lib/fog/vcloud/requests/compute/configure_vm_cpus.rb +38 -0
  259. data/lib/fog/vcloud/requests/compute/configure_vm_memory.rb +11 -12
  260. data/lib/fog/vcloud/requests/compute/configure_vm_password.rb +39 -0
  261. data/lib/fog/vcloud/requests/compute/undeploy.rb +9 -1
  262. data/lib/fog/vsphere/requests/compute/vm_reboot.rb +1 -1
  263. data/tests/atmos/models/storage/file_update_tests.rb +19 -0
  264. data/tests/atmos/models/storage/nested_directories_tests.rb +23 -0
  265. data/tests/aws/models/compute/security_group_tests.rb +21 -12
  266. data/tests/aws/models/dns/records_tests.rb +8 -2
  267. data/tests/aws/models/glacier/model_tests.rb +47 -0
  268. data/tests/aws/models/iam/policies_tests.rb +2 -2
  269. data/tests/aws/models/rds/server_tests.rb +5 -2
  270. data/tests/aws/models/storage/directory_tests.rb +1 -1
  271. data/tests/aws/models/storage/file_tests.rb +1 -1
  272. data/tests/aws/models/storage/files_tests.rb +1 -1
  273. data/tests/aws/models/storage/url_tests.rb +8 -8
  274. data/tests/aws/models/storage/version_tests.rb +1 -1
  275. data/tests/aws/models/storage/versions_tests.rb +1 -1
  276. data/tests/aws/requests/auto_scaling/auto_scaling_tests.rb +5 -0
  277. data/tests/aws/requests/auto_scaling/helper.rb +2 -1
  278. data/tests/aws/requests/compute/instance_tests.rb +17 -23
  279. data/tests/aws/requests/compute/spot_instance_tests.rb +2 -1
  280. data/tests/aws/requests/compute/tag_tests.rb +1 -0
  281. data/tests/aws/requests/compute/volume_tests.rb +45 -4
  282. data/tests/aws/requests/elb/helper.rb +2 -2
  283. data/tests/aws/requests/elb/listener_tests.rb +2 -2
  284. data/tests/aws/requests/elb/load_balancer_tests.rb +1 -1
  285. data/tests/aws/requests/glacier/archive_tests.rb +13 -0
  286. data/tests/aws/requests/glacier/multipart_upload_tests.rb +30 -0
  287. data/tests/aws/requests/glacier/tree_hash_tests.rb +63 -0
  288. data/tests/aws/requests/glacier/vault_tests.rb +35 -0
  289. data/tests/aws/requests/rds/helper.rb +11 -5
  290. data/tests/aws/requests/rds/instance_tests.rb +0 -2
  291. data/tests/aws/requests/storage/acl_utils_tests.rb +1 -1
  292. data/tests/aws/requests/storage/bucket_tests.rb +1 -1
  293. data/tests/aws/requests/storage/multipart_upload_tests.rb +1 -1
  294. data/tests/aws/requests/storage/object_tests.rb +8 -0
  295. data/tests/aws/requests/storage/versioning_tests.rb +1 -1
  296. data/tests/aws/signaturev4_tests.rb +41 -0
  297. data/tests/brightbox/compute_tests.rb +9 -0
  298. data/tests/brightbox/requests/compute/helper.rb +21 -6
  299. data/tests/cloudstack/compute/models/volume_tests.rb +1 -1
  300. data/tests/cloudstack/requests/volume_tests.rb +1 -1
  301. data/tests/compute/helper.rb +10 -4
  302. data/tests/dynect/requests/dns/dns_tests.rb +39 -0
  303. data/tests/google/requests/storage/bucket_tests.rb +2 -3
  304. data/tests/google/requests/storage/object_tests.rb +1 -1
  305. data/tests/helper.rb +10 -3
  306. data/tests/helpers/formats_helper.rb +4 -2
  307. data/tests/helpers/formats_helper_tests.rb +9 -0
  308. data/tests/helpers/mock_helper.rb +6 -1
  309. data/tests/helpers/model_helper.rb +0 -3
  310. data/tests/hp/models/compute/address_tests.rb +1 -1
  311. data/tests/hp/models/compute/addresses_tests.rb +1 -1
  312. data/tests/hp/models/compute/key_pair_tests.rb +1 -1
  313. data/tests/hp/models/compute/key_pairs_tests.rb +1 -1
  314. data/tests/hp/models/compute/security_group_tests.rb +1 -1
  315. data/tests/hp/models/compute/security_groups_tests.rb +1 -1
  316. data/tests/hp/requests/cdn/container_tests.rb +1 -1
  317. data/tests/hp/requests/compute/address_tests.rb +1 -1
  318. data/tests/hp/requests/compute/flavor_tests.rb +1 -1
  319. data/tests/hp/requests/compute/image_tests.rb +1 -1
  320. data/tests/hp/requests/compute/key_pair_tests.rb +1 -1
  321. data/tests/hp/requests/compute/security_group_rule_tests.rb +1 -1
  322. data/tests/hp/requests/compute/security_group_tests.rb +1 -1
  323. data/tests/hp/requests/compute/server_address_tests.rb +1 -1
  324. data/tests/hp/requests/compute/server_tests.rb +1 -1
  325. data/tests/hp/requests/storage/container_tests.rb +1 -1
  326. data/tests/hp/requests/storage/object_tests.rb +1 -1
  327. data/tests/local/models/file_tests.rb +1 -1
  328. data/tests/rackspace/models/block_storage/snapshot_tests.rb +20 -0
  329. data/tests/rackspace/models/block_storage/snapshots_tests.rb +20 -0
  330. data/tests/rackspace/models/block_storage/volume_tests.rb +27 -0
  331. data/tests/rackspace/models/block_storage/volume_types_tests.rb +20 -0
  332. data/tests/rackspace/models/block_storage/volumes_tests.rb +11 -0
  333. data/tests/rackspace/models/compute_v2/flavors_tests.rb +20 -0
  334. data/tests/rackspace/models/compute_v2/images_tests.rb +22 -0
  335. data/tests/rackspace/models/compute_v2/server_tests.rb +62 -0
  336. data/tests/rackspace/models/compute_v2/servers_tests.rb +14 -0
  337. data/tests/rackspace/requests/block_storage/snapshot_tests.rb +81 -0
  338. data/tests/rackspace/requests/block_storage/volume_tests.rb +61 -0
  339. data/tests/rackspace/requests/block_storage/volume_type_tests.rb +31 -0
  340. data/tests/rackspace/requests/compute_v2/attachment_tests.rb +68 -0
  341. data/tests/rackspace/requests/compute_v2/flavor_tests.rb +43 -0
  342. data/tests/rackspace/requests/compute_v2/image_tests.rb +47 -0
  343. data/tests/rackspace/requests/compute_v2/server_tests.rb +147 -0
  344. data/tests/rackspace/requests/storage/account_tests.rb +17 -0
  345. data/tests/rackspace/requests/storage/container_tests.rb +1 -1
  346. data/tests/rackspace/requests/storage/large_object_tests.rb +1 -1
  347. data/tests/rackspace/requests/storage/object_tests.rb +41 -2
  348. data/tests/serverlove/requests/compute/image_tests.rb +57 -0
  349. data/tests/serverlove/requests/compute/server_tests.rb +85 -0
  350. data/tests/serverlove/util/compute/password_generator_tests.rb +19 -0
  351. data/tests/storage/models/directories_tests.rb +1 -1
  352. data/tests/storage/models/directory_test.rb +1 -1
  353. data/tests/storage/models/file_tests.rb +1 -1
  354. data/tests/storage/models/files_tests.rb +1 -1
  355. metadata +188 -3
@@ -83,12 +83,8 @@ module Fog
83
83
  setup_credentials(options)
84
84
  @connection_options = options[:connection_options] || {}
85
85
  options[:region] ||= 'us-east-1'
86
- @host = options[:host] || case options[:region]
87
- when 'us-east-1'
88
- 'queue.amazonaws.com'
89
- else
90
- "#{options[:region]}.queue.amazonaws.com"
91
- end
86
+ @host = options[:host] || "sqs.#{options[:region]}.amazonaws.com"
87
+
92
88
  @path = options[:path] || '/'
93
89
  @persistent = options[:persistent] || false
94
90
  @port = options[:port] || 443
@@ -12,11 +12,13 @@ module Fog
12
12
 
13
13
  request_path 'fog/bare_metal_cloud/requests/compute'
14
14
  request :add_server
15
+ request :add_server_by_configuration
15
16
  request :cancel_server
16
17
  request :get_server
17
18
  request :list_images
18
19
  request :list_plans
19
20
  request :list_servers
21
+ request :list_configurations
20
22
  request :reboot_server
21
23
 
22
24
  class Mock
@@ -53,7 +55,7 @@ module Fog
53
55
  @bare_metal_cloud_password = options[:bare_metal_cloud_password]
54
56
  @bare_metal_cloud_username = options[:bare_metal_cloud_username]
55
57
  @connection_options = options[:connection_options] || {}
56
- @host = options[:host] || "noc.baremetalcloud.com"
58
+ @host = options[:host] || "noc.newservers.com"
57
59
  @persistent = options[:persistent] || false
58
60
  @port = options[:port] || 443
59
61
  @scheme = options[:scheme] || 'https'
@@ -0,0 +1,33 @@
1
+ module Fog
2
+ module Compute
3
+ class BareMetalCloud
4
+ class Real
5
+
6
+ # Boot a new server by configuration
7
+ #
8
+ # ==== Parameters
9
+ # * config<~String> - The Hardware configuration string
10
+ # * options<~Hash>: optional extra arguments
11
+ # * imageName<~String> - Optional imageName to be installed
12
+ # * name<~String> - Optional server Name
13
+ #
14
+ # ==== Returns
15
+ # * response<~Excon::Response>:
16
+ # * body<~Hash>:
17
+ # * 'server'<~Hash>:
18
+ # * 'id'<~String> - Id of the image
19
+ #
20
+ def add_server_by_configuration(config, options = {})
21
+ request(
22
+ :expects => 200,
23
+ :method => 'GET',
24
+ :parser => Fog::ToHashDocument.new,
25
+ :path => 'api/addServerByConfiguration',
26
+ :query => {'configuration' => config}.merge!(options)
27
+ )
28
+ end
29
+
30
+ end
31
+ end
32
+ end
33
+ end
@@ -5,20 +5,25 @@ module Fog
5
5
 
6
6
  # List servers
7
7
  #
8
+ # ==== Parameters
9
+ # * serverId<~String> - Id of the server
10
+ #
8
11
  # ==== Returns
9
12
  # * response<~Excon::Response>:
10
- # * server<~Hash>:
11
- # * 'id'<~String> - Id of the server
12
- # * 'ip'<~Hash>:
13
- # * 'address'<~String> - Address of the ip
14
- # * 'name'<~String> - Name of the ip
15
- # * 'login'<~Hash>:
16
- # * 'name'<~String> - Name of the login
17
- # * 'password'<~String> - Password of the login
18
- # * 'username'<~String> - Username of the login
19
- # * 'name'<~String> - Name of the server
20
- # * 'notes'<~String> - Notes about the server
21
- # * 'state'<~String> - State of the server
13
+ # * body<~Has>:
14
+ # * server<~Hash>:
15
+ # * 'id'<~String> - Id of the server
16
+ # * 'mac-address'<~String> - mac-address of the server
17
+ # * 'ip'<~Hash>:
18
+ # * 'address'<~String> - Address of the ip
19
+ # * 'name'<~String> - Name of the ip
20
+ # * 'login'<~Hash>:
21
+ # * 'name'<~String> - Name of the login
22
+ # * 'password'<~String> - Password of the login
23
+ # * 'username'<~String> - Username of the login
24
+ # * 'name'<~String> - Name of the server
25
+ # * 'notes'<~String> - Notes about the server
26
+ # * 'state'<~String> - State of the server
22
27
  #
23
28
  def get_server(server_id)
24
29
  request(
@@ -0,0 +1,27 @@
1
+ module Fog
2
+ module Compute
3
+ class BareMetalCloud
4
+ class Real
5
+
6
+ # List Configurations
7
+ #
8
+ # ==== Returns
9
+ # * response<~Excon::Response>:
10
+ # * body<~Hash>:
11
+ # * available-server<~Array>:
12
+ # * 'configuration'<~String> - Hardware Configuration string
13
+ # * 'quantity'<~String>: - quantity of servers to a certain configuration
14
+ #
15
+ def list_configurations
16
+ request(
17
+ :expects => 200,
18
+ :method => 'GET',
19
+ :parser => Fog::ToHashDocument.new,
20
+ :path => 'api/listConfigurations'
21
+ )
22
+ end
23
+
24
+ end
25
+ end
26
+ end
27
+ end
@@ -7,10 +7,10 @@ module Fog
7
7
  #
8
8
  # ==== Returns
9
9
  # * response<~Excon::Response>:
10
- # * body<~Array>:
11
- # * 'id'<~String> - Id of the image
12
- # * 'name'<~String> - Name of the image
13
- # * 'size'<~String> - Size of the image
10
+ # * body<~Hash>:
11
+ # * 'image'<~Array>
12
+ # * 'Size'<~String> - Size of the image
13
+ # * 'Name'<~String> - Name of the image
14
14
  #
15
15
  def list_images
16
16
  request(
@@ -7,13 +7,13 @@ module Fog
7
7
  #
8
8
  # ==== Returns
9
9
  # * response<~Excon::Response>:
10
- # * body<~Array>:
11
- # * 'description'<~String> - Description of the plan
12
- # * 'id'<~String> - Id of the plan
13
- # * 'name'<~String> - Name of the plan
14
- # * 'rate'<~String> - Cost per hour of the plan
15
- # * 'os'<~String> - Operating system of the plan
16
- # * 'config'<~String> - Configuration of the plan
10
+ # * body<~Hash>:
11
+ # * 'plan'<~Array>
12
+ # * 'id'<~String> - Id of the plan
13
+ # * 'name'<~String> - Name of the plan
14
+ # * 'rate'<~String> - Cost per hour of the plan
15
+ # * 'os'<~String> - Operating system of the plan
16
+ # * 'config'<~String> - Configuration of the plan
17
17
  #
18
18
  def list_plans
19
19
  request(
@@ -7,8 +7,8 @@ module Fog
7
7
  #
8
8
  # ==== Returns
9
9
  # * response<~Excon::Response>:
10
- # * body<~Array>:
11
- # * server<~Hash>:
10
+ # * body<~Hash>:
11
+ # * server<~Array>:
12
12
  # * 'id'<~String> - Id of the server
13
13
  # * 'ip'<~Hash>:
14
14
  # * 'address'<~String> - Address of the ip
@@ -4,9 +4,14 @@ module Fog
4
4
  class << self
5
5
 
6
6
  def available_providers
7
+ Kernel.const_get('Ninefold')
7
8
  @available_providers ||= Fog.providers.values.select {|provider| Kernel.const_get(provider).available?}.sort
8
9
  end
9
10
 
11
+ def registered_providers
12
+ @registered_providers ||= Fog.providers.values.sort
13
+ end
14
+
10
15
  end
11
16
 
12
17
  class Bin
@@ -52,6 +57,7 @@ module Fog
52
57
 
53
58
  end
54
59
 
60
+ require 'fog/bin/atmos'
55
61
  require 'fog/bin/aws'
56
62
  require 'fog/bin/bluebox'
57
63
  require 'fog/bin/brightbox'
@@ -75,6 +81,7 @@ require 'fog/bin/ninefold'
75
81
  require 'fog/bin/rackspace'
76
82
  require 'fog/bin/openstack'
77
83
  require 'fog/bin/ovirt'
84
+ require 'fog/bin/serverlove'
78
85
  require 'fog/bin/stormondemand'
79
86
  require 'fog/bin/terremark'
80
87
  require 'fog/bin/vcloud'
@@ -0,0 +1,31 @@
1
+ class Atmos < Fog::Bin
2
+ class << self
3
+
4
+ def class_for(key)
5
+ case key
6
+ when :storage
7
+ Fog::Storage::Atmos
8
+ else
9
+ raise ArgumentError, "Unsupported #{self} service: #{key}"
10
+ end
11
+ end
12
+
13
+ def [](service)
14
+ @@connections ||= Hash.new do |hash, key|
15
+ hash[key] = case key
16
+ when :storage
17
+ Fog::Logger.warning("Atmos[:storage] is not recommended, use Storage[:atmos] for portability")
18
+ Fog::Storage.new(:provider => 'Atmos')
19
+ else
20
+ raise ArgumentError, "Unrecognized service: #{service}"
21
+ end
22
+ end
23
+ @@connections[service]
24
+ end
25
+
26
+ def services
27
+ Fog::Atmos.services
28
+ end
29
+
30
+ end
31
+ end
@@ -25,6 +25,8 @@ class AWS < Fog::Bin
25
25
  Fog::AWS::ELB
26
26
  when :emr
27
27
  Fog::AWS::EMR
28
+ when :glacier
29
+ Fog::AWS::Glacier
28
30
  when :iam
29
31
  Fog::AWS::IAM
30
32
  when :sdb, :simpledb
@@ -77,6 +79,8 @@ class AWS < Fog::Bin
77
79
  Fog::AWS::ELB.new
78
80
  when :emr
79
81
  Fog::AWS::EMR.new
82
+ when :glacier
83
+ Fog::AWS::Glacier.new
80
84
  when :iam
81
85
  Fog::AWS::IAM.new
82
86
  when :rds
@@ -1,6 +1,10 @@
1
1
  class Ecloud < Fog::Bin
2
2
  class << self
3
3
 
4
+ def available?
5
+ Fog::Ecloud::ECLOUD_OPTIONS.all? {|requirement| Fog.credentials.include?(requirement)}
6
+ end
7
+
4
8
  def class_for(key)
5
9
  case key
6
10
  when :compute
@@ -3,10 +3,14 @@ class Rackspace < Fog::Bin
3
3
 
4
4
  def class_for(key)
5
5
  case key
6
+ when :block_storage
7
+ Fog::Rackspace::BlockStorage
6
8
  when :cdn
7
9
  Fog::CDN::Rackspace
8
10
  when :compute
9
11
  Fog::Compute::Rackspace
12
+ when :compute_v2
13
+ Fog::Compute::RackspaceV2
10
14
  when :storage
11
15
  Fog::Storage::Rackspace
12
16
  when :load_balancers
@@ -31,6 +35,9 @@ class Rackspace < Fog::Bin
31
35
  when :compute
32
36
  Fog::Logger.warning("Rackspace[:compute] is not recommended, use Compute[:rackspace] for portability")
33
37
  Fog::Compute.new(:provider => 'Rackspace')
38
+ when :compute_v2
39
+ Fog::Logger.warning("Rackspace[:compute] is not recommended, use Compute[:rackspace] for portability")
40
+ Fog::Compute.new(:provider => 'Rackspace', :version => 'v2')
34
41
  when :dns
35
42
  Fog::DNS.new(:provider => 'Rackspace')
36
43
  when :load_balancers
@@ -0,0 +1,31 @@
1
+ class Serverlove < Fog::Bin
2
+ class << self
3
+
4
+ def class_for(key)
5
+ case key
6
+ when :compute
7
+ Fog::Compute::Serverlove
8
+ else
9
+ raise ArgumentError, "Unrecognized service: #{key}"
10
+ end
11
+ end
12
+
13
+ def [](service)
14
+ @@connections ||= Hash.new do |hash, key|
15
+ hash[key] = case key
16
+ when :compute
17
+ Fog::Logger.warning("Serverlove[:compute] is not recommended, use Compute[:serverlove] for portability")
18
+ Fog::Compute.new(:provider => 'Serverlove')
19
+ else
20
+ raise ArgumentError, "Unrecognized service: #{key.inspect}"
21
+ end
22
+ end
23
+ @@connections[service]
24
+ end
25
+
26
+ def services
27
+ Fog::Serverlove.services
28
+ end
29
+
30
+ end
31
+ end
@@ -6,8 +6,9 @@ module Fog
6
6
  # Create a new block
7
7
  #
8
8
  # ==== Parameters
9
- # * product_id<~Integer> - Id of product to create block with
10
- # * template_id<~Integer> - Id of template to create block with
9
+ # * product_id<~String> - ID of product to create block with
10
+ # * template_id<~String> - ID of template to create block with
11
+ # * location_id<~String> - ID of location to create block in
11
12
  # * options<~Hash>:
12
13
  # * password<~String> - Password for block
13
14
  # or
@@ -17,13 +18,26 @@ module Fog
17
18
  # ==== Returns
18
19
  # * response<~Excon::Response>:
19
20
  # * body<~Hash>:
20
- # TODO
21
21
  def create_block(product_id, template_id, location_id, options = {})
22
+
23
+ unless options.has_key?(:password) || options.has_key?(:ssh_key)
24
+ raise ArgumentError, 'Either password or ssh_key must be supplied'
25
+ end
26
+
27
+ query = {
28
+ 'product' => product_id,
29
+ 'template' => template_id,
30
+ 'location' => location_id
31
+ }
32
+
33
+ body = URI.encode options.map {|k,v| "#{k}=#{v}"}.join('&')
34
+
22
35
  request(
23
36
  :expects => 200,
24
37
  :method => 'POST',
25
38
  :path => '/api/blocks.json',
26
- :query => {'product' => product_id, 'template' => template_id, 'location' => location_id}.merge!(options)
39
+ :query => query,
40
+ :body => URI.encode(body)
27
41
  )
28
42
  end
29
43
 
@@ -101,7 +101,24 @@ module Fog
101
101
  request :update_server_group
102
102
  request :update_user
103
103
 
104
+ module Shared
105
+ # Returns an identifier for the default image for use
106
+ #
107
+ # Currently tries to find the latest version Ubuntu LTS (i686) widening
108
+ # up to the latest, official version of Ubuntu available.
109
+ #
110
+ # Highly recommended that you actually select the image you want to run
111
+ # on your servers yourself!
112
+ #
113
+ # @return [String, nil]
114
+ def default_image
115
+ return @default_image_id unless @default_image_id.nil?
116
+ @default_image_id = Fog.credentials[:brightbox_default_image] || select_default_image
117
+ end
118
+ end
119
+
104
120
  class Mock
121
+ include Shared
105
122
 
106
123
  def initialize(options)
107
124
  @brightbox_client_id = options[:brightbox_client_id] || Fog.credentials[:brightbox_client_id]
@@ -111,9 +128,15 @@ module Fog
111
128
  def request(options)
112
129
  raise "Not implemented"
113
130
  end
131
+
132
+ private
133
+ def select_default_image
134
+ "img-mockd"
135
+ end
114
136
  end
115
137
 
116
138
  class Real
139
+ include Shared
117
140
 
118
141
  def initialize(options)
119
142
  # Currently authentication and api endpoints are the same but may change
@@ -180,7 +203,36 @@ module Fog
180
203
  options[:headers] = headers
181
204
  @connection.request(options)
182
205
  end
206
+
207
+ # Queries the API and tries to select the most suitable official Image
208
+ # to use if the user chooses not to select their own.
209
+ def select_default_image
210
+ return @default_image_id unless @default_image_id.nil?
211
+
212
+ all_images = Fog::Compute[:brightbox].list_images
213
+ official_images = all_images.select {|img| img["official"] == true}
214
+ ubuntu_lts_images = official_images.select {|img| img["name"] =~ /Ubuntu.*LTS/}
215
+ ubuntu_lts_i686_images = ubuntu_lts_images.select {|img| img["arch"] == "i686"}
216
+
217
+ if ubuntu_lts_i686_images.empty?
218
+ # Accept other architectures
219
+ if ubuntu_lts_images.empty?
220
+ # Accept non-LTS versions of Ubuntu
221
+ unsorted_images = official_images.select {|img| img["name"] =~ /Ubuntu/}
222
+ else
223
+ unsorted_images = ubuntu_lts_images
224
+ end
225
+ else
226
+ unsorted_images = ubuntu_lts_i686_images
227
+ end
228
+
229
+ # Get the latest and use it's ID for the default image
230
+ @default_image_id = unsorted_images.sort {|a,b| a["created_at"] <=> b["created_at"]}.first["id"]
231
+ rescue
232
+ nil
233
+ end
183
234
  end
235
+
184
236
  end
185
237
  end
186
238
  end