fog 1.10.1 → 1.11.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (319) hide show
  1. checksums.yaml +7 -0
  2. data/.travis.yml +1 -0
  3. data/Gemfile +2 -0
  4. data/README.md +4 -3
  5. data/changelog.txt +207 -0
  6. data/fog.gemspec +4 -3
  7. data/lib/fog/aws.rb +0 -2
  8. data/lib/fog/aws/dynamodb.rb +1 -1
  9. data/lib/fog/aws/elasticache.rb +0 -2
  10. data/lib/fog/aws/iam.rb +1 -0
  11. data/lib/fog/aws/models/compute/volume.rb +1 -0
  12. data/lib/fog/aws/models/iam/user.rb +1 -0
  13. data/lib/fog/aws/models/storage/directories.rb +1 -1
  14. data/lib/fog/aws/models/storage/directory.rb +20 -17
  15. data/lib/fog/aws/models/storage/file.rb +4 -5
  16. data/lib/fog/aws/parsers/iam/get_user.rb +2 -0
  17. data/lib/fog/aws/parsers/iam/list_users.rb +2 -0
  18. data/lib/fog/aws/requests/cdn/delete_streaming_distribution.rb +2 -2
  19. data/lib/fog/aws/requests/cdn/put_distribution_config.rb +3 -3
  20. data/lib/fog/aws/requests/cloud_formation/update_stack.rb +3 -3
  21. data/lib/fog/aws/requests/cloud_formation/validate_template.rb +5 -5
  22. data/lib/fog/aws/requests/iam/create_user.rb +5 -4
  23. data/lib/fog/aws/requests/iam/get_user.rb +5 -4
  24. data/lib/fog/aws/requests/iam/list_users.rb +5 -4
  25. data/lib/fog/aws/requests/rds/create_db_instance.rb +25 -25
  26. data/lib/fog/aws/requests/storage/abort_multipart_upload.rb +3 -3
  27. data/lib/fog/aws/requests/storage/complete_multipart_upload.rb +2 -2
  28. data/lib/fog/aws/requests/storage/copy_object.rb +2 -2
  29. data/lib/fog/aws/requests/storage/delete_bucket.rb +1 -1
  30. data/lib/fog/aws/requests/storage/delete_bucket_cors.rb +1 -1
  31. data/lib/fog/aws/requests/storage/delete_bucket_lifecycle.rb +1 -1
  32. data/lib/fog/aws/requests/storage/delete_bucket_policy.rb +1 -1
  33. data/lib/fog/aws/requests/storage/delete_bucket_website.rb +1 -1
  34. data/lib/fog/aws/requests/storage/delete_multiple_objects.rb +1 -1
  35. data/lib/fog/aws/requests/storage/delete_object.rb +1 -1
  36. data/lib/fog/aws/requests/storage/get_bucket.rb +1 -1
  37. data/lib/fog/aws/requests/storage/get_bucket_acl.rb +1 -1
  38. data/lib/fog/aws/requests/storage/get_bucket_cors.rb +1 -1
  39. data/lib/fog/aws/requests/storage/get_bucket_lifecycle.rb +1 -1
  40. data/lib/fog/aws/requests/storage/get_bucket_location.rb +1 -1
  41. data/lib/fog/aws/requests/storage/get_bucket_logging.rb +1 -1
  42. data/lib/fog/aws/requests/storage/get_bucket_object_versions.rb +1 -1
  43. data/lib/fog/aws/requests/storage/get_bucket_policy.rb +1 -1
  44. data/lib/fog/aws/requests/storage/get_bucket_versioning.rb +1 -1
  45. data/lib/fog/aws/requests/storage/get_bucket_website.rb +1 -1
  46. data/lib/fog/aws/requests/storage/get_object.rb +2 -2
  47. data/lib/fog/aws/requests/storage/get_object_acl.rb +2 -2
  48. data/lib/fog/aws/requests/storage/get_object_http_url.rb +1 -19
  49. data/lib/fog/aws/requests/storage/get_object_torrent.rb +2 -2
  50. data/lib/fog/aws/requests/storage/get_object_url.rb +5 -14
  51. data/lib/fog/aws/requests/storage/get_request_payment.rb +1 -1
  52. data/lib/fog/aws/requests/storage/head_object.rb +2 -2
  53. data/lib/fog/aws/requests/storage/initiate_multipart_upload.rb +2 -2
  54. data/lib/fog/aws/requests/storage/list_multipart_uploads.rb +7 -8
  55. data/lib/fog/aws/requests/storage/list_parts.rb +2 -2
  56. data/lib/fog/aws/requests/storage/put_bucket.rb +1 -1
  57. data/lib/fog/aws/requests/storage/put_bucket_acl.rb +1 -1
  58. data/lib/fog/aws/requests/storage/put_bucket_cors.rb +1 -1
  59. data/lib/fog/aws/requests/storage/put_bucket_lifecycle.rb +1 -1
  60. data/lib/fog/aws/requests/storage/put_bucket_logging.rb +1 -1
  61. data/lib/fog/aws/requests/storage/put_bucket_policy.rb +1 -1
  62. data/lib/fog/aws/requests/storage/put_bucket_versioning.rb +1 -1
  63. data/lib/fog/aws/requests/storage/put_bucket_website.rb +1 -1
  64. data/lib/fog/aws/requests/storage/put_object.rb +2 -2
  65. data/lib/fog/aws/requests/storage/put_object_acl.rb +8 -8
  66. data/lib/fog/aws/requests/storage/put_object_url.rb +5 -7
  67. data/lib/fog/aws/requests/storage/put_request_payment.rb +1 -1
  68. data/lib/fog/aws/requests/storage/upload_part.rb +2 -2
  69. data/lib/fog/aws/storage.rb +201 -97
  70. data/lib/fog/bin/google.rb +47 -1
  71. data/lib/fog/bluebox/models/compute/server.rb +3 -1
  72. data/lib/fog/brightbox/compute.rb +11 -26
  73. data/lib/fog/brightbox/compute/image_selector.rb +45 -0
  74. data/lib/fog/cloudstack/compute.rb +70 -2
  75. data/lib/fog/cloudstack/models/compute/disk_offering.rb +46 -0
  76. data/lib/fog/cloudstack/models/compute/disk_offerings.rb +27 -0
  77. data/lib/fog/cloudstack/models/compute/image.rb +1 -1
  78. data/lib/fog/cloudstack/models/compute/servers.rb +3 -2
  79. data/lib/fog/cloudstack/requests/compute/create_disk_offering.rb +51 -0
  80. data/lib/fog/cloudstack/requests/compute/delete_disk_offering.rb +31 -0
  81. data/lib/fog/cloudstack/requests/compute/delete_snapshot.rb +44 -2
  82. data/lib/fog/cloudstack/requests/compute/list_disk_offerings.rb +9 -0
  83. data/lib/fog/cloudstack/requests/compute/list_os_types.rb +9 -0
  84. data/lib/fog/cloudstack/requests/compute/list_snapshots.rb +21 -0
  85. data/lib/fog/core/errors.rb +3 -0
  86. data/lib/fog/core/json.rb +48 -7
  87. data/lib/fog/core/model.rb +11 -10
  88. data/lib/fog/core/service.rb +1 -1
  89. data/lib/fog/digitalocean/CHANGELOG.md +1 -1
  90. data/lib/fog/dreamhost/dns.rb +1 -3
  91. data/lib/fog/google.rb +1 -0
  92. data/lib/fog/google/compute.rb +131 -0
  93. data/lib/fog/google/models/compute/flavor.rb +24 -0
  94. data/lib/fog/google/models/compute/flavors.rb +28 -0
  95. data/lib/fog/google/models/compute/image.rb +19 -0
  96. data/lib/fog/google/models/compute/images.rb +28 -0
  97. data/lib/fog/google/models/compute/server.rb +80 -0
  98. data/lib/fog/google/models/compute/servers.rb +61 -0
  99. data/lib/fog/google/requests/compute/delete_disk.rb +31 -0
  100. data/lib/fog/google/requests/compute/delete_firewall.rb +30 -0
  101. data/lib/fog/google/requests/compute/delete_image.rb +30 -0
  102. data/lib/fog/google/requests/compute/delete_network.rb +30 -0
  103. data/lib/fog/google/requests/compute/delete_operation.rb +30 -0
  104. data/lib/fog/google/requests/compute/delete_server.rb +40 -0
  105. data/lib/fog/google/requests/compute/get_disk.rb +31 -0
  106. data/lib/fog/google/requests/compute/get_firewall.rb +30 -0
  107. data/lib/fog/google/requests/compute/get_image.rb +30 -0
  108. data/lib/fog/google/requests/compute/get_machine_type.rb +30 -0
  109. data/lib/fog/google/requests/compute/get_network.rb +30 -0
  110. data/lib/fog/google/requests/compute/get_server.rb +31 -0
  111. data/lib/fog/google/requests/compute/get_zone.rb +30 -0
  112. data/lib/fog/google/requests/compute/insert_disk.rb +35 -0
  113. data/lib/fog/google/requests/compute/insert_firewall.rb +37 -0
  114. data/lib/fog/google/requests/compute/insert_image.rb +38 -0
  115. data/lib/fog/google/requests/compute/insert_network.rb +34 -0
  116. data/lib/fog/google/requests/compute/insert_server.rb +49 -0
  117. data/lib/fog/google/requests/compute/list_disks.rb +30 -0
  118. data/lib/fog/google/requests/compute/list_firewalls.rb +29 -0
  119. data/lib/fog/google/requests/compute/list_global_operations.rb +28 -0
  120. data/lib/fog/google/requests/compute/list_images.rb +29 -0
  121. data/lib/fog/google/requests/compute/list_machine_types.rb +29 -0
  122. data/lib/fog/google/requests/compute/list_networks.rb +29 -0
  123. data/lib/fog/google/requests/compute/list_servers.rb +30 -0
  124. data/lib/fog/google/requests/compute/list_zone_operations.rb +28 -0
  125. data/lib/fog/google/requests/compute/list_zones.rb +29 -0
  126. data/lib/fog/google/requests/compute/set_metadata.rb +36 -0
  127. data/lib/fog/hp.rb +1 -1
  128. data/lib/fog/hp/storage.rb +1 -1
  129. data/lib/fog/internet_archive/models/storage/ia_attributes.rb +1 -1
  130. data/lib/fog/internet_archive/requests/storage/head_object.rb +1 -2
  131. data/lib/fog/internet_archive/requests/storage/list_multipart_uploads.rb +5 -6
  132. data/lib/fog/openstack.rb +29 -1
  133. data/lib/fog/openstack/CHANGELOG.md +1 -1
  134. data/lib/fog/openstack/compute.rb +3 -2
  135. data/lib/fog/openstack/identity.rb +1 -5
  136. data/lib/fog/openstack/image.rb +8 -9
  137. data/lib/fog/openstack/models/compute/server.rb +24 -0
  138. data/lib/fog/openstack/network.rb +7 -28
  139. data/lib/fog/openstack/requests/compute/allocate_address.rb +1 -1
  140. data/lib/fog/openstack/requests/compute/attach_volume.rb +11 -6
  141. data/lib/fog/openstack/requests/compute/boot_from_snapshot.rb +1 -1
  142. data/lib/fog/openstack/requests/compute/create_flavor.rb +1 -1
  143. data/lib/fog/openstack/requests/compute/create_key_pair.rb +1 -1
  144. data/lib/fog/openstack/requests/compute/create_security_group.rb +1 -1
  145. data/lib/fog/openstack/requests/compute/create_security_group_rule.rb +1 -1
  146. data/lib/fog/openstack/requests/compute/create_volume.rb +15 -14
  147. data/lib/fog/openstack/requests/compute/create_volume_snapshot.rb +1 -1
  148. data/lib/fog/openstack/requests/compute/delete_volume.rb +9 -2
  149. data/lib/fog/openstack/requests/compute/detach_volume.rb +7 -2
  150. data/lib/fog/openstack/requests/compute/get_server_volumes.rb +10 -0
  151. data/lib/fog/openstack/requests/compute/get_volume_details.rb +7 -16
  152. data/lib/fog/openstack/requests/compute/list_tenants.rb +1 -1
  153. data/lib/fog/openstack/requests/compute/list_volumes.rb +4 -26
  154. data/lib/fog/openstack/requests/compute/revert_resize_server.rb +2 -2
  155. data/lib/fog/openstack/requests/compute/update_quota.rb +1 -1
  156. data/lib/fog/openstack/requests/identity/create_ec2_credential.rb +1 -1
  157. data/lib/fog/openstack/requests/identity/create_role.rb +1 -1
  158. data/lib/fog/openstack/requests/identity/create_user.rb +1 -1
  159. data/lib/fog/openstack/requests/identity/update_user.rb +1 -1
  160. data/lib/fog/openstack/requests/image/update_image_members.rb +1 -1
  161. data/lib/fog/openstack/requests/volume/create_volume.rb +1 -1
  162. data/lib/fog/openstack/requests/volume/create_volume_snapshot.rb +1 -1
  163. data/lib/fog/openstack/requests/volume/get_quota.rb +31 -0
  164. data/lib/fog/openstack/requests/volume/get_quota_defaults.rb +31 -0
  165. data/lib/fog/openstack/requests/volume/update_quota.rb +32 -0
  166. data/lib/fog/openstack/volume.rb +11 -7
  167. data/lib/fog/rackspace.rb +11 -5
  168. data/lib/fog/rackspace/block_storage.rb +2 -1
  169. data/lib/fog/rackspace/cdn.rb +15 -15
  170. data/lib/fog/rackspace/compute.rb +2 -2
  171. data/lib/fog/rackspace/compute_v2.rb +8 -5
  172. data/lib/fog/rackspace/databases.rb +2 -1
  173. data/lib/fog/rackspace/dns.rb +2 -1
  174. data/lib/fog/rackspace/errors.rb +27 -0
  175. data/lib/fog/rackspace/load_balancers.rb +2 -1
  176. data/lib/fog/rackspace/mock_data.rb +5 -6
  177. data/lib/fog/rackspace/models/block_storage/snapshot.rb +8 -8
  178. data/lib/fog/rackspace/models/block_storage/snapshots.rb +8 -8
  179. data/lib/fog/rackspace/models/block_storage/volume.rb +16 -16
  180. data/lib/fog/rackspace/models/block_storage/volume_types.rb +8 -8
  181. data/lib/fog/rackspace/models/block_storage/volumes.rb +8 -8
  182. data/lib/fog/rackspace/models/compute_v2/attachment.rb +8 -8
  183. data/lib/fog/rackspace/models/compute_v2/attachments.rb +8 -8
  184. data/lib/fog/rackspace/models/compute_v2/flavors.rb +8 -8
  185. data/lib/fog/rackspace/models/compute_v2/image.rb +8 -8
  186. data/lib/fog/rackspace/models/compute_v2/images.rb +8 -8
  187. data/lib/fog/rackspace/models/compute_v2/metadata.rb +12 -12
  188. data/lib/fog/rackspace/models/compute_v2/metadatum.rb +8 -8
  189. data/lib/fog/rackspace/models/compute_v2/server.rb +94 -55
  190. data/lib/fog/rackspace/models/compute_v2/servers.rb +12 -12
  191. data/lib/fog/rackspace/models/dns/records.rb +1 -1
  192. data/lib/fog/rackspace/models/dns/zones.rb +1 -1
  193. data/lib/fog/rackspace/models/storage/account.rb +8 -8
  194. data/lib/fog/rackspace/models/storage/directories.rb +8 -8
  195. data/lib/fog/rackspace/models/storage/directory.rb +32 -32
  196. data/lib/fog/rackspace/models/storage/file.rb +36 -36
  197. data/lib/fog/rackspace/models/storage/files.rb +20 -20
  198. data/lib/fog/rackspace/requests/block_storage/create_snapshot.rb +4 -4
  199. data/lib/fog/rackspace/requests/block_storage/create_volume.rb +4 -4
  200. data/lib/fog/rackspace/requests/block_storage/delete_snapshot.rb +4 -4
  201. data/lib/fog/rackspace/requests/block_storage/delete_volume.rb +4 -4
  202. data/lib/fog/rackspace/requests/block_storage/get_snapshot.rb +4 -4
  203. data/lib/fog/rackspace/requests/block_storage/get_volume.rb +4 -4
  204. data/lib/fog/rackspace/requests/block_storage/get_volume_type.rb +4 -4
  205. data/lib/fog/rackspace/requests/block_storage/list_snapshots.rb +4 -4
  206. data/lib/fog/rackspace/requests/block_storage/list_volume_types.rb +4 -4
  207. data/lib/fog/rackspace/requests/block_storage/list_volumes.rb +4 -4
  208. data/lib/fog/rackspace/requests/cdn/delete_object.rb +4 -4
  209. data/lib/fog/rackspace/requests/cdn/get_containers.rb +4 -4
  210. data/lib/fog/rackspace/requests/cdn/head_container.rb +4 -4
  211. data/lib/fog/rackspace/requests/cdn/post_container.rb +4 -4
  212. data/lib/fog/rackspace/requests/cdn/put_container.rb +4 -4
  213. data/lib/fog/rackspace/requests/compute/delete_image.rb +1 -1
  214. data/lib/fog/rackspace/requests/compute_v2/attach_volume.rb +4 -4
  215. data/lib/fog/rackspace/requests/compute_v2/change_server_password.rb +4 -4
  216. data/lib/fog/rackspace/requests/compute_v2/confirm_resize_server.rb +4 -4
  217. data/lib/fog/rackspace/requests/compute_v2/create_image.rb +4 -4
  218. data/lib/fog/rackspace/requests/compute_v2/create_server.rb +11 -5
  219. data/lib/fog/rackspace/requests/compute_v2/delete_attachment.rb +4 -4
  220. data/lib/fog/rackspace/requests/compute_v2/delete_image.rb +5 -4
  221. data/lib/fog/rackspace/requests/compute_v2/delete_metadata_item.rb +4 -4
  222. data/lib/fog/rackspace/requests/compute_v2/delete_server.rb +4 -4
  223. data/lib/fog/rackspace/requests/compute_v2/get_attachment.rb +4 -4
  224. data/lib/fog/rackspace/requests/compute_v2/get_flavor.rb +4 -4
  225. data/lib/fog/rackspace/requests/compute_v2/get_image.rb +4 -4
  226. data/lib/fog/rackspace/requests/compute_v2/get_metadata_item.rb +4 -4
  227. data/lib/fog/rackspace/requests/compute_v2/get_server.rb +4 -4
  228. data/lib/fog/rackspace/requests/compute_v2/list_addresses.rb +4 -4
  229. data/lib/fog/rackspace/requests/compute_v2/list_addresses_by_network.rb +4 -4
  230. data/lib/fog/rackspace/requests/compute_v2/list_attachments.rb +4 -4
  231. data/lib/fog/rackspace/requests/compute_v2/list_flavors.rb +4 -4
  232. data/lib/fog/rackspace/requests/compute_v2/list_images.rb +4 -4
  233. data/lib/fog/rackspace/requests/compute_v2/list_metadata.rb +4 -4
  234. data/lib/fog/rackspace/requests/compute_v2/list_servers.rb +4 -4
  235. data/lib/fog/rackspace/requests/compute_v2/reboot_server.rb +4 -4
  236. data/lib/fog/rackspace/requests/compute_v2/rebuild_server.rb +4 -4
  237. data/lib/fog/rackspace/requests/compute_v2/rescue_server.rb +43 -0
  238. data/lib/fog/rackspace/requests/compute_v2/resize_server.rb +4 -4
  239. data/lib/fog/rackspace/requests/compute_v2/revert_resize_server.rb +4 -4
  240. data/lib/fog/rackspace/requests/compute_v2/set_metadata.rb +4 -4
  241. data/lib/fog/rackspace/requests/compute_v2/set_metadata_item.rb +4 -4
  242. data/lib/fog/rackspace/requests/compute_v2/unrescue_server.rb +40 -0
  243. data/lib/fog/rackspace/requests/compute_v2/update_metadata.rb +4 -4
  244. data/lib/fog/rackspace/requests/compute_v2/update_server.rb +4 -4
  245. data/lib/fog/rackspace/requests/storage/copy_object.rb +4 -4
  246. data/lib/fog/rackspace/requests/storage/delete_container.rb +4 -4
  247. data/lib/fog/rackspace/requests/storage/delete_object.rb +4 -4
  248. data/lib/fog/rackspace/requests/storage/get_container.rb +4 -4
  249. data/lib/fog/rackspace/requests/storage/get_containers.rb +4 -4
  250. data/lib/fog/rackspace/requests/storage/get_object.rb +4 -4
  251. data/lib/fog/rackspace/requests/storage/get_object_https_url.rb +4 -4
  252. data/lib/fog/rackspace/requests/storage/head_container.rb +4 -4
  253. data/lib/fog/rackspace/requests/storage/head_containers.rb +4 -4
  254. data/lib/fog/rackspace/requests/storage/head_object.rb +4 -4
  255. data/lib/fog/rackspace/requests/storage/post_set_meta_temp_url_key.rb +4 -4
  256. data/lib/fog/rackspace/requests/storage/put_container.rb +4 -4
  257. data/lib/fog/rackspace/requests/storage/put_object.rb +4 -4
  258. data/lib/fog/rackspace/requests/storage/put_object_manifest.rb +4 -4
  259. data/lib/fog/rackspace/service.rb +1 -1
  260. data/lib/fog/rackspace/storage.rb +12 -6
  261. data/lib/fog/riakcs.rb +3 -3
  262. data/lib/fog/riakcs/provisioning.rb +1 -3
  263. data/lib/fog/riakcs/requests/provisioning/create_user.rb +2 -2
  264. data/lib/fog/riakcs/requests/provisioning/get_user.rb +1 -1
  265. data/lib/fog/riakcs/requests/provisioning/list_users.rb +1 -1
  266. data/lib/fog/riakcs/requests/usage/get_usage.rb +1 -1
  267. data/lib/fog/riakcs/usage.rb +0 -1
  268. data/lib/fog/version.rb +1 -1
  269. data/lib/fog/vsphere/compute.rb +21 -14
  270. data/lib/fog/vsphere/models/compute/networks.rb +2 -2
  271. data/lib/fog/vsphere/models/compute/server.rb +10 -0
  272. data/lib/fog/vsphere/requests/compute/get_resource_pool.rb +1 -1
  273. data/lib/fog/vsphere/requests/compute/get_template.rb +16 -0
  274. data/lib/fog/vsphere/requests/compute/list_datacenters.rb +1 -1
  275. data/lib/fog/vsphere/requests/compute/list_templates.rb +49 -0
  276. data/lib/fog/vsphere/requests/compute/list_virtual_machines.rb +9 -6
  277. data/lib/fog/vsphere/requests/compute/vm_clone.rb +41 -27
  278. data/lib/fog/xenserver/CHANGELOG.md +1 -1
  279. data/lib/fog/xenserver/models/compute/network.rb +2 -2
  280. data/lib/tasks/changelog_task.rb +2 -1
  281. data/tests/aws/models/storage/directory_tests.rb +41 -5
  282. data/tests/aws/models/storage/file_tests.rb +1 -2
  283. data/tests/aws/models/storage/files_tests.rb +6 -4
  284. data/tests/aws/models/storage/url_tests.rb +7 -5
  285. data/tests/aws/models/storage/version_tests.rb +2 -2
  286. data/tests/aws/models/storage/versions_tests.rb +5 -5
  287. data/tests/aws/requests/iam/user_tests.rb +10 -8
  288. data/tests/aws/requests/storage/multipart_upload_tests.rb +1 -1
  289. data/tests/aws/requests/storage/object_tests.rb +15 -13
  290. data/tests/brightbox/compute/image_selector_tests.rb +103 -0
  291. data/tests/cloudstack/compute/models/disk_offering_tests.rb +5 -0
  292. data/tests/cloudstack/compute/models/snapshot_tests.rb +5 -20
  293. data/tests/cloudstack/requests/disk_offering_tests.rb +3 -3
  294. data/tests/cloudstack/requests/os_type_tests.rb +2 -3
  295. data/tests/compute/helper.rb +9 -0
  296. data/tests/core/json_tests.rb +62 -0
  297. data/tests/dynect/requests/dns/dns_tests.rb +0 -3
  298. data/tests/google/models/compute/server_tests.rb +24 -0
  299. data/tests/google/requests/compute/disk_tests.rb +88 -0
  300. data/tests/google/requests/compute/firewall_tests.rb +85 -0
  301. data/tests/google/requests/compute/image_tests.rb +80 -0
  302. data/tests/google/requests/compute/network_tests.rb +74 -0
  303. data/tests/google/requests/compute/operation_tests.rb +19 -0
  304. data/tests/google/requests/compute/server_tests.rb +84 -0
  305. data/tests/google/requests/compute/zone_tests.rb +46 -0
  306. data/tests/helpers/mock_helper.rb +4 -0
  307. data/tests/openstack/models/compute/server_tests.rb +91 -1
  308. data/tests/openstack/requests/compute/volume_tests.rb +11 -9
  309. data/tests/openstack/requests/volume/quota_tests.rb +51 -0
  310. data/tests/openstack/version_tests.rb +55 -0
  311. data/tests/rackspace/helper.rb +10 -0
  312. data/tests/rackspace/models/compute_v2/server_tests.rb +26 -1
  313. data/tests/rackspace/requests/compute/image_tests.rb +1 -1
  314. data/tests/rackspace/requests/compute_v2/image_tests.rb +2 -2
  315. data/tests/rackspace/requests/compute_v2/server_tests.rb +13 -0
  316. data/tests/rackspace/requests/dns/dns_tests.rb +1 -1
  317. data/tests/rackspace/requests/dns/records_tests.rb +3 -3
  318. data/tests/vsphere/requests/compute/vm_clone_tests.rb +10 -0
  319. metadata +109 -747
@@ -22,7 +22,10 @@ module Fog
22
22
  def list_all_virtual_machines_in_folder(path, datacenter_name)
23
23
  folder = get_raw_vmfolder(path, datacenter_name)
24
24
 
25
- folder.children.grep(RbVmomi::VIM::VirtualMachine).map(&method(:convert_vm_mob_ref_to_attr_hash))
25
+ vms = folder.children.grep(RbVmomi::VIM::VirtualMachine)
26
+ # remove all template based virtual machines
27
+ vms.delete_if { |v| v.config.nil? or v.config.template }
28
+ vms.map(&method(:convert_vm_mob_ref_to_attr_hash))
26
29
  end
27
30
 
28
31
  def list_all_virtual_machines(options = { })
@@ -35,12 +38,12 @@ module Fog
35
38
  :recursive => true
36
39
  }).view
37
40
  end.flatten
38
- # remove all template based virtual machines
39
- vms.delete_if { |v| v.config.template }
40
41
 
41
- vms.map do |vm_mob|
42
- convert_vm_mob_ref_to_attr_hash(vm_mob)
43
- end
42
+ vms = convert_vm_view_to_attr_hash(vms)
43
+
44
+ # remove all template based virtual machines
45
+ vms.delete_if { |v| v['template'] }
46
+ vms
44
47
  end
45
48
 
46
49
  def get_folder_path(folder, root = nil)
@@ -18,7 +18,7 @@ module Fog
18
18
  raise ArgumentError, "#{required_options.join(', ')} are required" unless options.has_key? param
19
19
  end
20
20
  # TODO This is ugly and needs to rethink mocks
21
- unless ENV['FOG_MOCK']
21
+ unless Fog.mock?
22
22
  raise ArgumentError, "#{options["datacenter"]} Doesn't Exist!" unless get_datacenter(options["datacenter"])
23
23
  raise ArgumentError, "#{options["template_path"]} Doesn't Exist!" unless get_virtual_machine(options["template_path"], options["datacenter"])
24
24
  end
@@ -29,54 +29,55 @@ module Fog
29
29
  class Real
30
30
  include Shared
31
31
 
32
- # Clones a VM from a template or existing machine on your vSphere
33
- # Server.
32
+ # Clones a VM from a template or existing machine on your vSphere
33
+ # Server.
34
34
  #
35
35
  # ==== Parameters
36
36
  # * options<~Hash>:
37
- # * 'datacenter'<~String> - *REQUIRED* Datacenter name your cloning
37
+ # * 'datacenter'<~String> - *REQUIRED* Datacenter name your cloning
38
38
  # in. Make sure this datacenter exists, should if you're using
39
39
  # the clone function in server.rb model.
40
- # * 'template_path'<~String> - *REQUIRED* The path to the machine you
40
+ # * 'template_path'<~String> - *REQUIRED* The path to the machine you
41
41
  # want to clone FROM. Relative to Datacenter (Example:
42
42
  # "FolderNameHere/VMNameHere")
43
- # * 'name'<~String> - *REQUIRED* The VMName of the Destination
43
+ # * 'name'<~String> - *REQUIRED* The VMName of the Destination
44
44
  # * 'dest_folder'<~String> - Destination Folder of where 'name' will
45
45
  # be placed on your cluster. Relative Path to Datacenter E.G.
46
46
  # "FolderPlaceHere/anotherSub Folder/onemore"
47
- # * 'power_on'<~Boolean> - Whether to power on machine after clone.
47
+ # * 'power_on'<~Boolean> - Whether to power on machine after clone.
48
48
  # Defaults to true.
49
49
  # * 'wait'<~Boolean> - Whether the method should wait for the virtual
50
- # machine to finish cloning before returning information from
50
+ # machine to finish cloning before returning information from
51
51
  # vSphere. Broken right now as you cannot return a model of a serer
52
52
  # that isn't finished cloning. Defaults to True
53
- # * 'resource_pool'<~Array> - The resource pool on your datacenter
53
+ # * 'resource_pool'<~Array> - The resource pool on your datacenter
54
54
  # cluster you want to use. Only works with clusters within same
55
55
  # same datacenter as where you're cloning from. Datacenter grabbed
56
- # from template_path option.
56
+ # from template_path option.
57
57
  # Example: ['cluster_name_here','resource_pool_name_here']
58
58
  # * 'datastore'<~String> - The datastore you'd like to use.
59
59
  # (datacenterObj.datastoreFolder.find('name') in API)
60
60
  # * 'transform'<~String> - Not documented - see http://www.vmware.com/support/developer/vc-sdk/visdk41pubs/ApiReference/vim.vm.RelocateSpec.html
61
+ # * 'numCPUs'<~Integer> - the number of Virtual CPUs of the Destination VM
62
+ # * 'memoryMB'<~Integer> - the size of memory of the Destination VM in MB
61
63
  # * customization_spec<~Hash>: Options are marked as required if you
62
64
  # use this customization_spec. Static IP Settings not configured.
63
65
  # This only support cloning and setting DHCP on the first interface
64
- # * 'domain'<~String> - *REQUIRED* This is put into
66
+ # * 'domain'<~String> - *REQUIRED* This is put into
65
67
  # /etc/resolve.conf (we hope)
66
- # * 'hostname'<~String> - Hostname of the Guest Os - default is
68
+ # * 'hostname'<~String> - Hostname of the Guest Os - default is
67
69
  # options['name']
68
- # * 'hw_utc_clock'<~Boolean> - *REQUIRED* Is hardware clock UTC?
70
+ # * 'hw_utc_clock'<~Boolean> - *REQUIRED* Is hardware clock UTC?
69
71
  # Default true
70
- # * 'time_zone'<~String> - *REQUIRED* Only valid linux options
72
+ # * 'time_zone'<~String> - *REQUIRED* Only valid linux options
71
73
  # are valid - example: 'America/Denver'
72
- #
73
74
  def vm_clone(options = {})
74
75
  # Option handling
75
76
  options = vm_clone_check_options(options)
76
77
 
77
78
  # Added for people still using options['path']
78
79
  template_path = options['path'] || options['template_path']
79
-
80
+
80
81
  # Default wait enabled
81
82
  options['wait'] = true
82
83
 
@@ -107,16 +108,17 @@ module Fog
107
108
  # If the vm given did return a valid resource pool, default to using it for the clone.
108
109
  # Even if specific pools aren't implemented in this environment, we will still get back
109
110
  # at least the cluster or host we can pass on to the clone task
110
- # This catches if resource_pool option is set but comes back nil and if resourcePool is
111
- # already set.
111
+ # This catches if resource_pool option is set but comes back nil and if resourcePool is
112
+ # already set.
112
113
  resource_pool ||= vm_mob_ref.resourcePool.nil? ? esx_host.parent.resourcePool : vm_mob_ref.resourcePool
113
-
114
+
114
115
  # Options['datastore']<~String>
115
116
  # Grab the datastore object if option is set
116
117
  datastore_obj = get_raw_datastore(options['datastore'], options['datacenter']) if options.has_key?('datastore')
117
118
  # confirm nil if nil or option is not set
118
119
  datastore_obj ||= nil
119
-
120
+ virtual_machine_config_spec = RbVmomi::VIM::VirtualMachineConfigSpec()
121
+
120
122
  # Options['network']
121
123
  # Build up the config spec
122
124
  if ( options.has_key?('network_label') )
@@ -137,10 +139,13 @@ module Fog
137
139
  device_spec = RbVmomi::VIM::VirtualDeviceConfigSpec(
138
140
  :operation => config_spec_operation,
139
141
  :device => device)
140
- virtual_machine_config_spec = RbVmomi::VIM::VirtualMachineConfigSpec(
141
- :deviceChange => [device_spec])
142
+ virtual_machine_config_spec.deviceChange = [device_spec]
142
143
  end
143
-
144
+ # Options['numCPUs'] or Options['memoryMB']
145
+ # Build up the specification for Hardware, for more details see ____________
146
+ # https://github.com/rlane/rbvmomi/blob/master/test/test_serialization.rb
147
+ virtual_machine_config_spec.numCPUs = options['numCPUs'] if ( options.has_key?('numCPUs') )
148
+ virtual_machine_config_spec.memoryMB = options['memoryMB'] if ( options.has_key?('memoryMB') )
144
149
  # Options['customization_spec']
145
150
  # Build up all the crappy tiered objects like the perl method
146
151
  # Collect your variables ifset (writing at 11pm revist me)
@@ -186,7 +191,16 @@ module Fog
186
191
  :nicSettingMap => cust_adapter_mapping)
187
192
  end
188
193
  customization_spec ||= nil
189
-
194
+
195
+ # FIXME: pad this out with the rest of the useful things in VirtualMachineConfigSpec
196
+ # http://www.vmware.com/support/developer/vc-sdk/visdk41pubs/ApiReference/vim.vm.ConfigSpec.html
197
+ if options.has_key?('memoryMB') || options.has_key?('numCPUs')
198
+ virtual_machine_config_spec = {
199
+ :memoryMB => options['memoryMB'],
200
+ :numCPUs => options['numCPUs']
201
+ }
202
+ end
203
+
190
204
  relocation_spec=nil
191
205
  if ( options['linked_clone'] )
192
206
  # cribbed heavily from the rbvmomi clone_vm.rb
@@ -221,7 +235,7 @@ module Fog
221
235
  :pool => resource_pool,
222
236
  :diskMoveType => :moveChildMostDiskBacking)
223
237
  else
224
- relocation_spec = RbVmomi::VIM.VirtualMachineRelocateSpec(:datastore => datastore_obj,
238
+ relocation_spec = RbVmomi::VIM.VirtualMachineRelocateSpec(:datastore => datastore_obj,
225
239
  :pool => resource_pool,
226
240
  :transform => options['transform'] || 'sparse')
227
241
  end
@@ -231,7 +245,7 @@ module Fog
231
245
  :customization => customization_spec,
232
246
  :powerOn => options.has_key?('power_on') ? options['power_on'] : true,
233
247
  :template => false)
234
-
248
+
235
249
  # Perform the actual Clone Task
236
250
  task = vm_mob_ref.CloneVM_Task(:folder => dest_folder,
237
251
  :name => options['name'],
@@ -260,7 +274,7 @@ module Fog
260
274
  nil
261
275
  end
262
276
  end
263
-
277
+
264
278
  # Return hash
265
279
  {
266
280
  'vm_ref' => new_vm ? new_vm._ref : nil,
@@ -1,4 +1,4 @@
1
- # 1.11.0 2013/04/04
1
+ # 1.10.1 2013/04/04
2
2
 
3
3
  * It's now possible to manage XS/XCP VLANs and Networks
4
4
 
@@ -59,7 +59,7 @@ module Fog
59
59
  # net = service.networks.create :name => 'foonet',
60
60
  # :description => 'test network'
61
61
  #
62
- # @returns [Boolean]
62
+ # @return [Boolean]
63
63
  #
64
64
  def save
65
65
  requires :name
@@ -77,7 +77,7 @@ module Fog
77
77
  # net = service.networks.find { |net| net.name == 'foonet' }
78
78
  # net.destroy
79
79
  #
80
- # @returns [Boolean]
80
+ # @return [Boolean]
81
81
  #
82
82
  def destroy
83
83
  requires :reference
@@ -14,7 +14,6 @@ module Fog
14
14
  changelog << ('=' * changelog[0].length)
15
15
  changelog << ''
16
16
 
17
- require 'multi_json'
18
17
  github_repo_data = Fog::JSON.decode(Excon.get('https://api.github.com/repos/fog/fog').body)
19
18
  data = github_repo_data.reject {|key, value| !['forks', 'open_issues', 'watchers'].include?(key)}
20
19
  github_collaborator_data = Fog::JSON.decode(Excon.get('https://api.github.com/repos/fog/fog/collaborators').body)
@@ -61,9 +60,11 @@ module Fog
61
60
  'geemus',
62
61
  'Henry Addison',
63
62
  'Kevin Menard',
63
+ 'Kyle Rames',
64
64
  'Lincoln Stoll',
65
65
  'Luqman Amjad',
66
66
  'Michael Zeng',
67
+ 'Nat Welch',
67
68
  'Nick Osborn',
68
69
  'nightshade427',
69
70
  'Patrick Debois',
@@ -1,7 +1,43 @@
1
1
  Shindo.tests("Storage[:aws] | directory", ["aws"]) do
2
2
 
3
3
  directory_attributes = {
4
- :key => 'fogdirectorytests'
4
+ :key => uniq_id('fogdirectorytests')
5
+ }
6
+
7
+ model_tests(Fog::Storage[:aws].directories, directory_attributes, Fog.mocking?) do
8
+ tests("#public_url").returns(nil) do
9
+ @instance.public_url
10
+ end
11
+
12
+ @instance.acl = 'public-read'
13
+ @instance.save
14
+
15
+ tests("#public_url").returns(true) do
16
+ if @instance.public_url =~ %r[\Ahttps://fogdirectorytests-[\da-f]+\.s3\.amazonaws\.com/\z]
17
+ true
18
+ else
19
+ @instance.public_url
20
+ end
21
+ end
22
+ end
23
+
24
+ directory_attributes = {
25
+ :key => uniq_id('different-region'),
26
+ :location => 'eu-west-1',
27
+ }
28
+
29
+ model_tests(Fog::Storage[:aws].directories, directory_attributes, Fog.mocking?) do
30
+ tests("#location").returns('eu-west-1') do
31
+ @instance.location
32
+ end
33
+
34
+ tests("#location").returns('eu-west-1') do
35
+ Fog::Storage[:aws].directories.get(@instance.identity).location
36
+ end
37
+ end
38
+
39
+ directory_attributes = {
40
+ :key => uniq_id('fogdirectorytests')
5
41
  }
6
42
 
7
43
  model_tests(Fog::Storage[:aws].directories, directory_attributes, Fog.mocking?) do
@@ -13,7 +49,7 @@ Shindo.tests("Storage[:aws] | directory", ["aws"]) do
13
49
 
14
50
  tests("#versioning=(true) sets versioning to 'Enabled'").returns('Enabled') do
15
51
  @instance.versioning = true
16
- @instance.connection.get_bucket_versioning(@instance.key).body['VersioningConfiguration']['Status']
52
+ @instance.service.get_bucket_versioning(@instance.key).body['VersioningConfiguration']['Status']
17
53
  end
18
54
 
19
55
  tests("#versioning=(false)").succeeds do
@@ -22,7 +58,7 @@ Shindo.tests("Storage[:aws] | directory", ["aws"]) do
22
58
 
23
59
  tests("#versioning=(false) sets versioning to 'Suspended'").returns('Suspended') do
24
60
  @instance.versioning = false
25
- @instance.connection.get_bucket_versioning(@instance.key).body['VersioningConfiguration']['Status']
61
+ @instance.service.get_bucket_versioning(@instance.key).body['VersioningConfiguration']['Status']
26
62
  end
27
63
  end
28
64
 
@@ -36,12 +72,12 @@ Shindo.tests("Storage[:aws] | directory", ["aws"]) do
36
72
  end
37
73
 
38
74
  tests("#versioning? true if enabled").returns(true) do
39
- @instance.connection.put_bucket_versioning(@instance.key, 'Enabled')
75
+ @instance.service.put_bucket_versioning(@instance.key, 'Enabled')
40
76
  @instance.versioning?
41
77
  end
42
78
 
43
79
  tests("#versioning? false if suspended").returns(false) do
44
- @instance.connection.put_bucket_versioning(@instance.key, 'Suspended')
80
+ @instance.service.put_bucket_versioning(@instance.key, 'Suspended')
45
81
  @instance.versioning?
46
82
  end
47
83
  end
@@ -9,8 +9,7 @@ Shindo.tests("Storage[:aws] | file", ["aws"]) do
9
9
  }
10
10
 
11
11
  directory_attributes = {
12
- # Add a random suffix to prevent collision
13
- :key => "fogfilestests-#{rand(65536)}"
12
+ :key => uniq_id("fogfilestests")
14
13
  }
15
14
 
16
15
  @directory = Fog::Storage[:aws].directories.create(directory_attributes)
@@ -7,7 +7,7 @@ Shindo.tests("Storage[:aws] | files", ["aws"]) do
7
7
  }
8
8
 
9
9
  directory_attributes = {
10
- :key => 'fogfilestests'
10
+ :key => uniq_id('fogfilestests')
11
11
  }
12
12
 
13
13
  @directory = Fog::Storage[:aws].directories.create(directory_attributes)
@@ -16,9 +16,9 @@ Shindo.tests("Storage[:aws] | files", ["aws"]) do
16
16
  model_tests(@directory.files, file_attributes, Fog.mocking?) do
17
17
 
18
18
  v1 = @instance.version
19
- v2 = @directory.connection.put_object(@directory.key, @instance.key, 'version 2 content').headers['x-amz-version-id']
20
- v3 = @directory.connection.delete_object(@directory.key, @instance.key).headers['x-amz-version-id']
21
- v4 = @directory.connection.put_object(@directory.key, @instance.key, 'version 3 content').headers['x-amz-version-id']
19
+ v2 = @directory.service.put_object(@directory.key, @instance.key, 'version 2 content').headers['x-amz-version-id']
20
+ v3 = @directory.service.delete_object(@directory.key, @instance.key).headers['x-amz-version-id']
21
+ v4 = @directory.service.put_object(@directory.key, @instance.key, 'version 3 content').headers['x-amz-version-id']
22
22
 
23
23
  tests("#get") do
24
24
  tests("#get without version fetches the latest version").returns(v4) do
@@ -30,6 +30,7 @@ Shindo.tests("Storage[:aws] | files", ["aws"]) do
30
30
  end
31
31
 
32
32
  tests("#get with a deleted version returns nil").returns(nil) do
33
+ pending # getting 405 Method Not Allowed
33
34
  @directory.files.get(@instance.key, 'versionId' => v3)
34
35
  end
35
36
  end
@@ -44,6 +45,7 @@ Shindo.tests("Storage[:aws] | files", ["aws"]) do
44
45
  end
45
46
 
46
47
  tests("#head with a deleted version returns nil").returns(nil) do
48
+ pending # getting 405 Method Not Allowed
47
49
  @directory.files.head(@instance.key, 'versionId' => v3)
48
50
  end
49
51
  end
@@ -14,15 +14,17 @@ Shindo.tests('AWS | url', ["aws"]) do
14
14
  @file = @storage.directories.new(:key => 'fognonbucket').files.new(:key => 'test.txt')
15
15
 
16
16
  if Fog.mock?
17
- signature = Fog::Storage::AWS.new.signature(nil)
17
+ signature = Fog::Storage::AWS.new.signature(nil, nil)
18
18
  else
19
19
  signature = 'tajHIhKHAdFYsigmzybCpaq8N0Q%3D'
20
20
  end
21
21
 
22
- tests('#url w/ response-cache-control').returns(
23
- "https://fognonbucket.s3.amazonaws.com/test.txt?response-cache-control=No-cache&AWSAccessKeyId=123&Signature=#{signature}&Expires=1356998400"
24
- ) do
25
- @file.url(@expires, :query => { 'response-cache-control' => 'No-cache' })
22
+ if RUBY_VERSION > '1.8.7' # ruby 1.8.x doesn't provide hash ordering
23
+ tests('#url w/ response-cache-control').returns(
24
+ "https://fognonbucket.s3.amazonaws.com/test.txt?response-cache-control=No-cache&AWSAccessKeyId=123&Signature=#{signature}&Expires=1356998400"
25
+ ) do
26
+ @file.url(@expires, :query => { 'response-cache-control' => 'No-cache' })
27
+ end
26
28
  end
27
29
 
28
30
  end
@@ -7,7 +7,7 @@ Shindo.tests("Storage[:aws] | version", ["aws"]) do
7
7
  }
8
8
 
9
9
  directory_attributes = {
10
- :key => 'fogfilestests'
10
+ :key => uniq_id('fogfilestests')
11
11
  }
12
12
 
13
13
  @directory = Fog::Storage[:aws].directories.create(directory_attributes)
@@ -16,7 +16,7 @@ Shindo.tests("Storage[:aws] | version", ["aws"]) do
16
16
  model_tests(@directory.files, file_attributes, Fog.mocking?) do
17
17
 
18
18
  @version_instance = @instance.versions.first
19
- @directory.connection.put_object(@directory.key, @instance.key, 'second version content')
19
+ @directory.service.put_object(@directory.key, @instance.key, 'second version content')
20
20
 
21
21
  tests("#file") do
22
22
  tests("#file should return the object associated with the version").returns(@version_instance.version) do
@@ -7,24 +7,24 @@ Shindo.tests("Storage[:aws] | versions", ["aws"]) do
7
7
  }
8
8
 
9
9
  directory_attributes = {
10
- :key => 'fogfilestests'
10
+ :key => uniq_id('fogfilestests')
11
11
  }
12
12
 
13
13
  model_tests(Fog::Storage[:aws].directories, directory_attributes, Fog.mocking?) do
14
14
  @instance.versioning = true
15
15
 
16
16
  versions = []
17
- versions << @instance.connection.put_object(@instance.key, 'one', 'abcde').headers['x-amz-version-id']
17
+ versions << @instance.service.put_object(@instance.key, 'one', 'abcde').headers['x-amz-version-id']
18
18
 
19
19
  puts versions.first
20
20
 
21
- versions << @instance.connection.put_object(@instance.key, 'one', '32423').headers['x-amz-version-id']
22
- versions << @instance.connection.delete_object(@instance.key, 'one').headers['x-amz-version-id']
21
+ versions << @instance.service.put_object(@instance.key, 'one', '32423').headers['x-amz-version-id']
22
+ versions << @instance.service.delete_object(@instance.key, 'one').headers['x-amz-version-id']
23
23
  versions.reverse!
24
24
 
25
25
  puts versions.first
26
26
 
27
- versions << @instance.connection.put_object(@instance.key, 'two', 'aoeu').headers['x-amz-version-id']
27
+ versions << @instance.service.put_object(@instance.key, 'two', 'aoeu').headers['x-amz-version-id']
28
28
 
29
29
  tests('#versions') do
30
30
  tests('#versions.size includes versions (including DeleteMarkers) for all keys').returns(4) do
@@ -6,10 +6,11 @@ Shindo.tests('AWS::IAM | user requests', ['aws']) do
6
6
 
7
7
  @user_format = {
8
8
  'User' => {
9
- 'Arn' => String,
10
- 'Path' => String,
11
- 'UserId' => String,
12
- 'UserName' => String
9
+ 'Arn' => String,
10
+ 'Path' => String,
11
+ 'UserId' => String,
12
+ 'UserName' => String,
13
+ 'CreateDate' => Time
13
14
  },
14
15
  'RequestId' => String
15
16
  }
@@ -20,10 +21,11 @@ Shindo.tests('AWS::IAM | user requests', ['aws']) do
20
21
 
21
22
  @users_format = {
22
23
  'Users' => [{
23
- 'Arn' => String,
24
- 'Path' => String,
25
- 'UserId' => String,
26
- 'UserName' => String
24
+ 'Arn' => String,
25
+ 'Path' => String,
26
+ 'UserId' => String,
27
+ 'UserName' => String,
28
+ 'CreateDate' => Time
27
29
  }],
28
30
  'IsTruncated' => Fog::Boolean,
29
31
  'RequestId' => String