fog 1.18.0 → 1.19.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (366) hide show
  1. data/.gitignore +1 -0
  2. data/.travis.yml +6 -0
  3. data/CONTRIBUTING.md +22 -0
  4. data/LICENSE.md +20 -0
  5. data/README.md +41 -60
  6. data/Rakefile +2 -0
  7. data/changelog.txt +262 -0
  8. data/fog.gemspec +3 -3
  9. data/lib/fog/aws.rb +9 -7
  10. data/lib/fog/aws/cloud_watch.rb +0 -1
  11. data/lib/fog/aws/compute.rb +2 -0
  12. data/lib/fog/aws/dns.rb +2 -1
  13. data/lib/fog/aws/elb.rb +2 -0
  14. data/lib/fog/aws/models/auto_scaling/configuration.rb +4 -0
  15. data/lib/fog/aws/models/compute/address.rb +6 -5
  16. data/lib/fog/aws/models/compute/flavors.rb +10 -0
  17. data/lib/fog/aws/models/compute/spot_request.rb +1 -1
  18. data/lib/fog/aws/models/compute/subnet.rb +4 -0
  19. data/lib/fog/aws/models/compute/vpc.rb +5 -0
  20. data/lib/fog/aws/models/dns/records.rb +1 -3
  21. data/lib/fog/aws/models/elb/load_balancer.rb +10 -0
  22. data/lib/fog/aws/models/glacier/vault.rb +1 -1
  23. data/lib/fog/aws/models/rds/server.rb +5 -2
  24. data/lib/fog/aws/models/rds/subnet_group.rb +15 -1
  25. data/lib/fog/aws/models/storage/file.rb +2 -2
  26. data/lib/fog/aws/parsers/auto_scaling/describe_launch_configurations.rb +6 -0
  27. data/lib/fog/aws/parsers/compute/assign_private_ip_addresses.rb +25 -0
  28. data/lib/fog/aws/parsers/compute/describe_addresses.rb +1 -1
  29. data/lib/fog/aws/parsers/elb/describe_load_balancer_attributes.rb +40 -0
  30. data/lib/fog/aws/parsers/rds/delete_db_subnet_group.rb +35 -0
  31. data/lib/fog/aws/rds.rb +3 -3
  32. data/lib/fog/aws/requests/auto_scaling/create_launch_configuration.rb +2 -0
  33. data/lib/fog/aws/requests/auto_scaling/describe_notification_configurations.rb +1 -1
  34. data/lib/fog/aws/requests/compute/assign_private_ip_addresses.rb +60 -0
  35. data/lib/fog/aws/requests/compute/create_route.rb +1 -1
  36. data/lib/fog/aws/requests/compute/describe_images.rb +1 -1
  37. data/lib/fog/aws/requests/compute/describe_subnets.rb +8 -0
  38. data/lib/fog/aws/requests/compute/describe_vpcs.rb +8 -0
  39. data/lib/fog/aws/requests/compute/modify_vpc_attribute.rb +59 -0
  40. data/lib/fog/aws/requests/dns/change_resource_record_sets.rb +26 -9
  41. data/lib/fog/aws/requests/dns/create_hosted_zone.rb +12 -3
  42. data/lib/fog/aws/requests/dns/delete_hosted_zone.rb +33 -0
  43. data/lib/fog/aws/requests/dns/get_change.rb +26 -0
  44. data/lib/fog/aws/requests/dns/get_hosted_zone.rb +1 -1
  45. data/lib/fog/aws/requests/dns/list_hosted_zones.rb +3 -8
  46. data/lib/fog/aws/requests/dns/list_resource_record_sets.rb +68 -0
  47. data/lib/fog/aws/requests/elb/create_load_balancer.rb +1 -0
  48. data/lib/fog/aws/requests/elb/describe_load_balancer_attributes.rb +54 -0
  49. data/lib/fog/aws/requests/elb/modify_load_balancer_attributes.rb +59 -0
  50. data/lib/fog/aws/requests/rds/create_db_instance.rb +7 -1
  51. data/lib/fog/aws/requests/rds/create_db_subnet_group.rb +7 -1
  52. data/lib/fog/aws/requests/rds/delete_db_subnet_group.rb +42 -0
  53. data/lib/fog/aws/requests/storage/delete_multiple_objects.rb +6 -4
  54. data/lib/fog/aws/requests/storage/put_bucket.rb +4 -1
  55. data/lib/fog/aws/sqs.rb +2 -4
  56. data/lib/fog/aws/storage.rb +14 -1
  57. data/lib/fog/bluebox/compute.rb +1 -1
  58. data/lib/fog/brightbox/compute.rb +7 -9
  59. data/lib/fog/brightbox/compute/image_selector.rb +1 -1
  60. data/lib/fog/brightbox/compute/shared.rb +8 -10
  61. data/lib/fog/brightbox/models/compute/api_client.rb +1 -1
  62. data/lib/fog/brightbox/models/compute/application.rb +1 -4
  63. data/lib/fog/brightbox/models/compute/cloud_ip.rb +8 -5
  64. data/lib/fog/brightbox/models/compute/collaboration.rb +0 -2
  65. data/lib/fog/brightbox/models/compute/collaborations.rb +1 -1
  66. data/lib/fog/brightbox/models/compute/firewall_policy.rb +2 -4
  67. data/lib/fog/brightbox/models/compute/firewall_rule.rb +1 -1
  68. data/lib/fog/brightbox/models/compute/image.rb +1 -3
  69. data/lib/fog/brightbox/models/compute/load_balancer.rb +11 -8
  70. data/lib/fog/brightbox/models/compute/server.rb +28 -20
  71. data/lib/fog/brightbox/models/compute/server_group.rb +9 -11
  72. data/lib/fog/brightbox/models/compute/zone.rb +1 -1
  73. data/lib/fog/brightbox/oauth2.rb +3 -3
  74. data/lib/fog/brightbox/requests/compute/update_server.rb +1 -1
  75. data/lib/fog/cloudstack.rb +1 -1
  76. data/lib/fog/compute.rb +2 -2
  77. data/lib/fog/core.rb +1 -1
  78. data/lib/fog/core/connection.rb +1 -2
  79. data/lib/fog/core/errors.rb +3 -3
  80. data/lib/fog/core/hmac.rb +3 -3
  81. data/lib/fog/core/mock.rb +9 -2
  82. data/lib/fog/core/scp.rb +1 -1
  83. data/lib/fog/core/wait_for.rb +1 -1
  84. data/lib/fog/core/{timeout.rb → wait_for_defaults.rb} +10 -0
  85. data/lib/fog/digitalocean/models/compute/server.rb +4 -0
  86. data/lib/fog/digitalocean/requests/compute/create_server.rb +2 -0
  87. data/lib/fog/dnsimple/dns.rb +1 -1
  88. data/lib/fog/dreamhost/dns.rb +2 -4
  89. data/lib/fog/ecloud/compute.rb +1 -1
  90. data/lib/fog/ecloud/models/compute/environments.rb +5 -3
  91. data/lib/fog/google/compute.rb +105 -68
  92. data/lib/fog/google/examples/create.rb +1 -0
  93. data/lib/fog/google/models/compute/disk.rb +7 -1
  94. data/lib/fog/google/models/compute/operation.rb +42 -0
  95. data/lib/fog/google/models/compute/operations.rb +26 -0
  96. data/lib/fog/google/models/compute/server.rb +18 -2
  97. data/lib/fog/google/models/compute/servers.rb +2 -1
  98. data/lib/fog/google/models/compute/zones.rb +1 -1
  99. data/lib/fog/google/models/storage/file.rb +1 -1
  100. data/lib/fog/google/models/storage/files.rb +1 -1
  101. data/lib/fog/google/requests/compute/delete_disk.rb +22 -2
  102. data/lib/fog/google/requests/compute/delete_global_operation.rb +29 -0
  103. data/lib/fog/google/requests/compute/delete_server.rb +13 -9
  104. data/lib/fog/google/requests/compute/delete_zone_operation.rb +33 -0
  105. data/lib/fog/google/requests/compute/get_disk.rb +26 -2
  106. data/lib/fog/google/requests/compute/{delete_operation.rb → get_global_operation.rb} +5 -6
  107. data/lib/fog/google/requests/compute/get_image.rb +3 -3
  108. data/lib/fog/google/requests/compute/get_server.rb +1 -0
  109. data/lib/fog/google/requests/compute/get_zone_operation.rb +58 -0
  110. data/lib/fog/google/requests/compute/insert_disk.rb +43 -3
  111. data/lib/fog/google/requests/compute/insert_firewall.rb +2 -1
  112. data/lib/fog/google/requests/compute/insert_image.rb +2 -2
  113. data/lib/fog/google/requests/compute/insert_server.rb +64 -35
  114. data/lib/fog/google/requests/compute/list_disks.rb +8 -2
  115. data/lib/fog/google/requests/compute/list_images.rb +2 -2
  116. data/lib/fog/google/requests/compute/list_machine_types.rb +2 -2
  117. data/lib/fog/google/requests/compute/list_servers.rb +2 -2
  118. data/lib/fog/google/requests/compute/list_zone_operations.rb +2 -1
  119. data/lib/fog/google/requests/compute/list_zones.rb +1 -1
  120. data/lib/fog/google/requests/storage/copy_object.rb +1 -1
  121. data/lib/fog/hp.rb +1 -1
  122. data/lib/fog/hp/README.md +57 -0
  123. data/lib/fog/hp/articles/auth_caching.md +23 -0
  124. data/lib/fog/hp/docs/connect.md +152 -0
  125. data/lib/fog/hp/docs/install.md +133 -0
  126. data/lib/fog/hp/examples/block_storage.md +296 -0
  127. data/lib/fog/hp/examples/block_storage_v2.md +446 -0
  128. data/lib/fog/hp/examples/cdn.md +54 -0
  129. data/lib/fog/hp/examples/compute.md +794 -0
  130. data/lib/fog/hp/examples/compute_v2.md +848 -0
  131. data/lib/fog/hp/examples/getting_started_examples.md +30 -0
  132. data/lib/fog/hp/examples/networking.md +472 -0
  133. data/lib/fog/hp/examples/object_storage.md +387 -0
  134. data/lib/fog/json.rb +6 -3
  135. data/lib/fog/local/models/storage/directories.rb +8 -4
  136. data/lib/fog/openstack/compute.rb +3 -0
  137. data/lib/fog/openstack/examples/compute/basics.rb +74 -0
  138. data/lib/fog/openstack/identity.rb +2 -3
  139. data/lib/fog/openstack/image.rb +1 -4
  140. data/lib/fog/openstack/metering.rb +1 -4
  141. data/lib/fog/openstack/models/compute/host.rb +5 -1
  142. data/lib/fog/openstack/models/compute/security_group.rb +18 -4
  143. data/lib/fog/openstack/models/compute/security_group_rule.rb +32 -0
  144. data/lib/fog/openstack/models/compute/security_group_rules.rb +22 -0
  145. data/lib/fog/openstack/models/volume/volume_type.rb +20 -0
  146. data/lib/fog/openstack/models/volume/volume_types.rb +26 -0
  147. data/lib/fog/openstack/network.rb +34 -6
  148. data/lib/fog/openstack/requests/compute/add_flavor_access.rb +1 -1
  149. data/lib/fog/openstack/requests/compute/allocate_address.rb +1 -1
  150. data/lib/fog/openstack/requests/compute/attach_volume.rb +1 -1
  151. data/lib/fog/openstack/requests/compute/boot_from_snapshot.rb +1 -1
  152. data/lib/fog/openstack/requests/compute/create_flavor.rb +1 -1
  153. data/lib/fog/openstack/requests/compute/create_key_pair.rb +1 -1
  154. data/lib/fog/openstack/requests/compute/create_security_group.rb +4 -4
  155. data/lib/fog/openstack/requests/compute/create_security_group_rule.rb +2 -2
  156. data/lib/fog/openstack/requests/compute/create_server.rb +12 -5
  157. data/lib/fog/openstack/requests/compute/create_volume.rb +1 -1
  158. data/lib/fog/openstack/requests/compute/create_volume_snapshot.rb +1 -1
  159. data/lib/fog/openstack/requests/compute/delete_security_group.rb +1 -1
  160. data/lib/fog/openstack/requests/compute/delete_security_group_rule.rb +2 -0
  161. data/lib/fog/openstack/requests/compute/get_security_group.rb +14 -24
  162. data/lib/fog/openstack/requests/compute/get_security_group_rule.rb +38 -0
  163. data/lib/fog/openstack/requests/compute/list_hosts.rb +3 -3
  164. data/lib/fog/openstack/requests/compute/list_tenants.rb +1 -1
  165. data/lib/fog/openstack/requests/compute/remove_flavor_access.rb +1 -1
  166. data/lib/fog/openstack/requests/compute/update_quota.rb +1 -1
  167. data/lib/fog/openstack/requests/identity/create_ec2_credential.rb +1 -1
  168. data/lib/fog/openstack/requests/identity/create_role.rb +1 -1
  169. data/lib/fog/openstack/requests/identity/create_user.rb +1 -1
  170. data/lib/fog/openstack/requests/identity/update_user.rb +1 -1
  171. data/lib/fog/openstack/requests/image/update_image_members.rb +1 -1
  172. data/lib/fog/openstack/requests/orchestration/create_stack.rb +2 -2
  173. data/lib/fog/openstack/requests/orchestration/update_stack.rb +1 -1
  174. data/lib/fog/openstack/requests/storage/get_object_http_url.rb +13 -0
  175. data/lib/fog/openstack/requests/storage/get_object_https_url.rb +0 -14
  176. data/lib/fog/openstack/requests/volume/create_volume.rb +1 -1
  177. data/lib/fog/openstack/requests/volume/create_volume_snapshot.rb +1 -1
  178. data/lib/fog/openstack/requests/volume/get_volume_type_details.rb +32 -0
  179. data/lib/fog/openstack/requests/volume/list_volume_types.rb +41 -0
  180. data/lib/fog/openstack/storage.rb +2 -0
  181. data/lib/fog/openstack/volume.rb +9 -5
  182. data/lib/fog/rackspace/compute.rb +1 -4
  183. data/lib/fog/rackspace/compute_v2.rb +1 -0
  184. data/lib/fog/rackspace/docs/auto_scale.md +9 -9
  185. data/lib/fog/rackspace/docs/getting_started.md +1 -0
  186. data/lib/fog/rackspace/docs/queues.md +312 -0
  187. data/lib/fog/rackspace/examples/queues/claim_messages.rb +60 -0
  188. data/lib/fog/rackspace/examples/queues/create_queue.rb +45 -0
  189. data/lib/fog/rackspace/examples/queues/delete_message.rb +72 -0
  190. data/lib/fog/rackspace/examples/queues/delete_queue.rb +53 -0
  191. data/lib/fog/rackspace/examples/queues/list_messages.rb +64 -0
  192. data/lib/fog/rackspace/examples/queues/post_message.rb +59 -0
  193. data/lib/fog/rackspace/models/compute_v2/key_pairs.rb +1 -1
  194. data/lib/fog/rackspace/models/compute_v2/server.rb +9 -3
  195. data/lib/fog/rackspace/models/compute_v2/servers.rb +2 -2
  196. data/lib/fog/rackspace/models/identity/service_catalog.rb +44 -59
  197. data/lib/fog/rackspace/models/queues/claim.rb +41 -1
  198. data/lib/fog/rackspace/models/queues/claims.rb +25 -0
  199. data/lib/fog/rackspace/models/queues/message.rb +43 -5
  200. data/lib/fog/rackspace/models/queues/messages.rb +37 -0
  201. data/lib/fog/rackspace/models/queues/queue.rb +66 -3
  202. data/lib/fog/rackspace/models/queues/queues.rb +15 -0
  203. data/lib/fog/rackspace/models/storage/file.rb +8 -1
  204. data/lib/fog/rackspace/requests/compute_v2/delete_keypair.rb +1 -1
  205. data/lib/fog/rackspace/requests/compute_v2/get_keypair.rb +1 -1
  206. data/lib/fog/rackspace/requests/queues/create_claim.rb +15 -0
  207. data/lib/fog/rackspace/requests/queues/create_message.rb +15 -0
  208. data/lib/fog/rackspace/requests/queues/create_queue.rb +11 -0
  209. data/lib/fog/rackspace/requests/queues/delete_claim.rb +12 -0
  210. data/lib/fog/rackspace/requests/queues/delete_message.rb +14 -0
  211. data/lib/fog/rackspace/requests/queues/delete_queue.rb +10 -0
  212. data/lib/fog/rackspace/requests/queues/get_claim.rb +11 -0
  213. data/lib/fog/rackspace/requests/queues/get_message.rb +12 -0
  214. data/lib/fog/rackspace/requests/queues/get_queue.rb +10 -0
  215. data/lib/fog/rackspace/requests/queues/get_queue_stats.rb +10 -0
  216. data/lib/fog/rackspace/requests/queues/list_messages.rb +26 -0
  217. data/lib/fog/rackspace/requests/queues/list_queues.rb +17 -2
  218. data/lib/fog/rackspace/requests/queues/update_claim.rb +7 -0
  219. data/lib/fog/rackspace/service.rb +6 -2
  220. data/lib/fog/rackspace/storage.rb +1 -4
  221. data/lib/fog/riakcs.rb +2 -2
  222. data/lib/fog/riakcs/provisioning.rb +1 -3
  223. data/lib/fog/riakcs/requests/provisioning/create_user.rb +2 -2
  224. data/lib/fog/riakcs/requests/provisioning/get_user.rb +1 -1
  225. data/lib/fog/riakcs/requests/provisioning/list_users.rb +1 -1
  226. data/lib/fog/riakcs/requests/usage/get_usage.rb +1 -1
  227. data/lib/fog/riakcs/usage.rb +0 -2
  228. data/lib/fog/vcloud_director/README.md +2 -0
  229. data/lib/fog/vcloud_director/compute.rb +79 -8
  230. data/lib/fog/vcloud_director/generators/compute/org_vdc_network.rb +91 -0
  231. data/lib/fog/vcloud_director/generators/compute/vapp.rb +30 -0
  232. data/lib/fog/vcloud_director/generators/compute/vm.rb +33 -0
  233. data/lib/fog/vcloud_director/models/compute/medias.rb +1 -1
  234. data/lib/fog/vcloud_director/models/compute/vm_customization.rb +2 -0
  235. data/lib/fog/vcloud_director/parsers/compute/vm_customization.rb +2 -0
  236. data/lib/fog/vcloud_director/requests/compute/delete_network.rb +64 -0
  237. data/lib/fog/vcloud_director/requests/compute/get_execute_query.rb +433 -333
  238. data/lib/fog/vcloud_director/requests/compute/get_vapp_metadata.rb +3 -1
  239. data/lib/fog/vcloud_director/requests/compute/post_attach_disk.rb +1 -1
  240. data/lib/fog/vcloud_director/requests/compute/post_configure_edge_gateway_services.rb +20 -2
  241. data/lib/fog/vcloud_director/requests/compute/post_create_org_vdc_network.rb +176 -0
  242. data/lib/fog/vcloud_director/requests/compute/post_detach_disk.rb +1 -1
  243. data/lib/fog/vcloud_director/requests/compute/post_eject_cd_rom.rb +1 -1
  244. data/lib/fog/vcloud_director/requests/compute/post_insert_cd_rom.rb +1 -1
  245. data/lib/fog/vcloud_director/requests/compute/put_guest_customization_section_vapp.rb +1 -0
  246. data/lib/fog/vcloud_director/requests/compute/put_vapp_name_and_description.rb +37 -0
  247. data/lib/fog/vcloud_director/requests/compute/put_vm.rb +39 -0
  248. data/lib/fog/version.rb +1 -1
  249. data/lib/fog/vsphere/compute.rb +3 -0
  250. data/lib/fog/vsphere/models/compute/datastore.rb +1 -0
  251. data/lib/fog/vsphere/models/compute/interface.rb +50 -2
  252. data/lib/fog/vsphere/models/compute/interfaces.rb +25 -10
  253. data/lib/fog/vsphere/models/compute/scsicontroller.rb +19 -0
  254. data/lib/fog/vsphere/models/compute/server.rb +27 -8
  255. data/lib/fog/vsphere/requests/compute/create_vm.rb +34 -8
  256. data/lib/fog/vsphere/requests/compute/get_vm_first_scsi_controller.rb +26 -0
  257. data/lib/fog/vsphere/requests/compute/list_datastores.rb +9 -8
  258. data/lib/fog/vsphere/requests/compute/modify_vm_interface.rb +9 -6
  259. data/lib/fog/vsphere/requests/compute/set_vm_customvalue.rb +19 -0
  260. data/lib/fog/xenserver.rb +2 -1
  261. data/lib/fog/xenserver/compute.rb +37 -1
  262. data/lib/fog/xenserver/models/compute/blob.rb +22 -0
  263. data/lib/fog/xenserver/models/compute/blobs.rb +25 -0
  264. data/lib/fog/xenserver/models/compute/bond.rb +23 -0
  265. data/lib/fog/xenserver/models/compute/bonds.rb +25 -0
  266. data/lib/fog/xenserver/models/compute/console.rb +3 -1
  267. data/lib/fog/xenserver/models/compute/crash_dump.rb +19 -0
  268. data/lib/fog/xenserver/models/compute/crash_dumps.rb +25 -0
  269. data/lib/fog/xenserver/models/compute/dr_task.rb +17 -0
  270. data/lib/fog/xenserver/models/compute/dr_tasks.rb +25 -0
  271. data/lib/fog/xenserver/models/compute/gpu_group.rb +22 -0
  272. data/lib/fog/xenserver/models/compute/gpu_groups.rb +25 -0
  273. data/lib/fog/xenserver/models/compute/guest_metrics.rb +2 -1
  274. data/lib/fog/xenserver/models/compute/host.rb +41 -8
  275. data/lib/fog/xenserver/models/compute/host_cpu.rb +2 -1
  276. data/lib/fog/xenserver/models/compute/host_crash_dump.rb +20 -0
  277. data/lib/fog/xenserver/models/compute/host_crash_dumps.rb +25 -0
  278. data/lib/fog/xenserver/models/compute/host_metrics.rb +1 -1
  279. data/lib/fog/xenserver/models/compute/host_patch.rb +25 -0
  280. data/lib/fog/xenserver/models/compute/host_patchs.rb +25 -0
  281. data/lib/fog/xenserver/models/compute/network.rb +7 -6
  282. data/lib/fog/xenserver/models/compute/pbd.rb +3 -1
  283. data/lib/fog/xenserver/models/compute/pci.rb +22 -0
  284. data/lib/fog/xenserver/models/compute/pcis.rb +25 -0
  285. data/lib/fog/xenserver/models/compute/pgpu.rb +20 -0
  286. data/lib/fog/xenserver/models/compute/pgpus.rb +25 -0
  287. data/lib/fog/xenserver/models/compute/pif.rb +19 -8
  288. data/lib/fog/xenserver/models/compute/pif_metrics.rb +28 -0
  289. data/lib/fog/xenserver/models/compute/pifs_metrics.rb +25 -0
  290. data/lib/fog/xenserver/models/compute/pool.rb +18 -1
  291. data/lib/fog/xenserver/models/compute/pool_patch.rb +24 -0
  292. data/lib/fog/xenserver/models/compute/pool_patchs.rb +25 -0
  293. data/lib/fog/xenserver/models/compute/role.rb +19 -0
  294. data/lib/fog/xenserver/models/compute/roles.rb +25 -0
  295. data/lib/fog/xenserver/models/compute/server.rb +59 -26
  296. data/lib/fog/xenserver/models/compute/server_appliance.rb +21 -0
  297. data/lib/fog/xenserver/models/compute/server_appliances.rb +25 -0
  298. data/lib/fog/xenserver/models/compute/storage_manager.rb +28 -0
  299. data/lib/fog/xenserver/models/compute/storage_managers.rb +25 -0
  300. data/lib/fog/xenserver/models/compute/storage_repository.rb +4 -1
  301. data/lib/fog/xenserver/models/compute/tunnel.rb +20 -0
  302. data/lib/fog/xenserver/models/compute/tunnels.rb +25 -0
  303. data/lib/fog/xenserver/models/compute/vbd.rb +3 -2
  304. data/lib/fog/xenserver/models/compute/vbd_metrics.rb +1 -1
  305. data/lib/fog/xenserver/models/compute/vdi.rb +4 -1
  306. data/lib/fog/xenserver/models/compute/vif.rb +11 -2
  307. data/lib/fog/xenserver/models/compute/vlan.rb +2 -1
  308. data/lib/fog/xenserver/models/compute/vmpp.rb +35 -0
  309. data/lib/fog/xenserver/models/compute/vmpps.rb +25 -0
  310. data/lib/fog/xenserver/models/compute/vtpm.rb +18 -0
  311. data/lib/fog/xenserver/models/compute/vtpms.rb +25 -0
  312. data/lib/fog/xenserver/requests/compute/reboot_server.rb +1 -1
  313. data/lib/tasks/changelog_task.rb +0 -1
  314. data/tests/aws/models/dns/record_tests.rb +1 -2
  315. data/tests/aws/models/dns/records_tests.rb +2 -7
  316. data/tests/aws/models/dns/zone_tests.rb +1 -1
  317. data/tests/aws/models/dns/zones_tests.rb +1 -1
  318. data/tests/aws/models/elb/model_tests.rb +10 -0
  319. data/tests/aws/models/storage/file_tests.rb +4 -0
  320. data/tests/aws/requests/compute/assign_private_ip_tests.rb +52 -0
  321. data/tests/aws/requests/compute/vpc_tests.rb +17 -1
  322. data/tests/aws/requests/dns/dns_tests.rb +1 -26
  323. data/tests/aws/requests/elb/load_balancer_tests.rb +6 -0
  324. data/tests/aws/requests/rds/{subnet_groups_test.rb → subnet_groups_tests.rb} +4 -0
  325. data/tests/aws/requests/storage/bucket_tests.rb +17 -0
  326. data/tests/aws/requests/storage/delete_multiple_objects_tests.rb +12 -0
  327. data/tests/brightbox/compute/schema.rb +0 -13
  328. data/tests/brightbox/models/compute/server_tests.rb +7 -9
  329. data/tests/brightbox/requests/compute/interface_tests.rb +7 -19
  330. data/tests/digitalocean/models/compute/server_tests.rb +4 -3
  331. data/tests/google/models/compute/disk_tests.rb +5 -0
  332. data/tests/google/models/compute/disks_tests.rb +5 -0
  333. data/tests/google/models/compute/server_tests.rb +5 -1
  334. data/tests/google/models/compute/servers_tests.rb +5 -0
  335. data/tests/google/requests/compute/disk_tests.rb +2 -1
  336. data/tests/google/requests/compute/firewall_tests.rb +1 -0
  337. data/tests/google/requests/compute/image_tests.rb +3 -0
  338. data/tests/google/requests/compute/network_tests.rb +1 -0
  339. data/tests/google/requests/compute/operation_tests.rb +1 -0
  340. data/tests/google/requests/compute/server_tests.rb +2 -3
  341. data/tests/google/requests/compute/zone_tests.rb +1 -6
  342. data/tests/helpers/collection_helper.rb +10 -2
  343. data/tests/helpers/mock_helper.rb +4 -5
  344. data/tests/local/models/directories_tests.rb +17 -0
  345. data/tests/openstack/models/compute/security_group_tests.rb +54 -0
  346. data/tests/openstack/requests/compute/security_group_tests.rb +22 -20
  347. data/tests/openstack/requests/network/network_tests.rb +8 -8
  348. data/tests/rackspace/compute_tests.rb +0 -5
  349. data/tests/rackspace/helper.rb +9 -4
  350. data/tests/rackspace/models/compute_v2/server_tests.rb +29 -1
  351. data/tests/rackspace/models/identity/service_catalog_tests.rb +87 -39
  352. data/tests/rackspace/models/queues/message_tests.rb +16 -0
  353. data/tests/rackspace/models/storage/file_tests.rb +29 -0
  354. data/tests/rackspace/requests/compute_v2/address_tests.rb +3 -1
  355. data/tests/rackspace/requests/compute_v2/metadata_tests.rb +4 -2
  356. data/tests/rackspace/requests/compute_v2/server_tests.rb +3 -6
  357. data/tests/vcloud_director/models/compute/media_tests.rb +18 -5
  358. data/tests/vcloud_director/models/compute/vapp_tests.rb +3 -1
  359. data/tests/vcloud_director/models/compute/vms_tests.rb +2 -1
  360. data/tests/vcloud_director/requests/compute/edge_gateway_tests.rb +19 -10
  361. data/tests/vcloud_director/requests/compute/network_tests.rb +64 -3
  362. data/tests/vcloud_director/requests/compute/query_tests.rb +67 -2
  363. data/tests/vsphere/requests/compute/set_vm_customvalue_tests.rb +21 -0
  364. metadata +112 -11
  365. data/fogkeytest1.pem +0 -27
  366. data/lib/fog/hp/README_HP.rdoc +0 -61
@@ -11,13 +11,15 @@ module Fog
11
11
  # @see http://pubs.vmware.com/vcd-51/topic/com.vmware.vcloud.api.reference.doc_51/doc/operations/GET-VAppMetadata.html
12
12
  # @since vCloud API version 1.5
13
13
  def get_vapp_metadata(id)
14
- request(
14
+ response = request(
15
15
  :expects => 200,
16
16
  :idempotent => true,
17
17
  :method => 'GET',
18
18
  :parser => Fog::ToHashDocument.new,
19
19
  :path => "vApp/#{id}/metadata/"
20
20
  )
21
+ ensure_list! response.body, :MetadataEntry
22
+ response
21
23
  end
22
24
  end
23
25
  end
@@ -26,7 +26,7 @@ module Fog
26
26
  :xmlns => 'http://www.vmware.com/vcloud/v1.5'
27
27
  }
28
28
  DiskAttachOrDetachParams(attrs) {
29
- Disk(:href => "#{@end_point}disk/#{media_id}")
29
+ Disk(:href => "#{end_point}disk/#{disk_id}")
30
30
  if options.key?(:BusNumber)
31
31
  BusNumber options[:BusNumber]
32
32
  end
@@ -42,8 +42,26 @@ module Fog
42
42
  "No access to entity \"(com.vmware.vcloud.entity.edgegateway:#{id})\"."
43
43
  )
44
44
  end
45
- data[:edge_gateways][id][:Configuration][:EdgeGatewayServiceConfiguration] = configuration
46
- Excon::Response.new(:body => {:name => 'mock_task', :href => '/10000000000000000000000000000000' })
45
+
46
+ owner = {:href => '', :name => nil, :type => nil} #known-bug: admin-api does not return owner.
47
+ task_id = enqueue_task(
48
+ "Configuring edgegateway(#{id})", 'networkConfigureEdgeGatewayServices', owner,
49
+ :on_success => lambda do
50
+ data[:edge_gateways][id][:Configuration][:EdgeGatewayServiceConfiguration] = configuration
51
+ end
52
+ )
53
+
54
+ body = {
55
+ :xmlns => xmlns,
56
+ :xmlns_xsi => xmlns_xsi,
57
+ :xsi_schemaLocation => xsi_schema_location,
58
+ }.merge(task_body(task_id))
59
+
60
+ Excon::Response.new(
61
+ :status => 202,
62
+ :headers => {'Content-Type' => "#{body[:type]};version=#{api_version}"},
63
+ :body => body
64
+ )
47
65
  end
48
66
  end
49
67
  end
@@ -0,0 +1,176 @@
1
+ module Fog
2
+ module Compute
3
+ class VcloudDirector
4
+ class Real
5
+
6
+ require 'fog/vcloud_director/generators/compute/org_vdc_network'
7
+
8
+ # Create an Org vDC network.
9
+ #
10
+ # This operation is asynchronous and returns a task that you can
11
+ # monitor to track the progress of the request.
12
+ #
13
+ # Produce media type(s):
14
+ # application/vnd.vmware.vcloud.orgVdcNetwork+xml
15
+ # Output type:
16
+ # OrgVdcNetworkType
17
+ #
18
+ # @param [String] vdc_id Object identifier of the vDC
19
+ # @param [String] name The name of the entity.
20
+ # @param [Hash] options
21
+ # @option options [String] :Description Optional description.
22
+ # @option options [Hash] :Configuration Network configuration.
23
+ # @option options [Hash] :EdgeGateway EdgeGateway that connects this
24
+ # Org vDC network. Applicable only for routed networks.
25
+ # @option options [Hash] :ServiceConfig Specifies the service
26
+ # configuration for an isolated Org vDC networks.
27
+ # @option options [Boolean] :IsShared True if this network is shared
28
+ # to multiple Org vDCs.
29
+ # * :Configuration<~Hash>: NetworkConfigurationType
30
+ # * :IpScopes<~Hash>:
31
+ # * :IpScope<~Hash>:
32
+ # * :IsInherited<~Boolean>: ?
33
+ # * :Gateway<~String>: IP address of gw
34
+ # * :Netmask<~String>: Subnet mask of network
35
+ # * :Dns1<~String>: Primary DNS server.
36
+ # * :Dns2<~String>: Secondary DNS server.
37
+ # * :DnsSuffix<~String>: DNS suffix.
38
+ # * :IsEnabled<~String>: Indicates if subnet is enabled or not.
39
+ # Default value is True.
40
+ # * :IpRanges<~Array>: IP ranges used for static pool allocation
41
+ # in the network. Array of Hashes of:
42
+ # * :StartAddress - start IP in range
43
+ # * :EndAddress - end IP in range
44
+ # * :EdgeGateway<~Hash>: EdgeGateway that connects this Org vDC
45
+ # network. Applicable only for routed networks.
46
+ # * :ServiceConfig<~Hash>: Specifies the service configuration for an
47
+ # isolated network
48
+ #
49
+ # @return [Excon::Response]
50
+ # * body<~Hash>:
51
+ #
52
+ # @see http://pubs.vmware.com/vcd-51/topic/com.vmware.vcloud.api.reference.doc_51/doc/operations/POST-CreateOrgVdcNetwork.html
53
+ # @since vCloud API version 5.1
54
+ def post_create_org_vdc_network(vdc_id, name, options={})
55
+
56
+ body = Fog::Generators::Compute::VcloudDirector::OrgVdcNetwork.new(options.merge(:name => name)).generate_xml
57
+
58
+ request(
59
+ :body => body,
60
+ :expects => 201,
61
+ :headers => {'Content-Type' => 'application/vnd.vmware.vcloud.orgVdcNetwork+xml'},
62
+ :method => 'POST',
63
+ :parser => Fog::ToHashDocument.new,
64
+ :path => "admin/vdc/#{vdc_id}/networks"
65
+ )
66
+
67
+ end
68
+ end
69
+
70
+ class Mock
71
+
72
+ def post_create_org_vdc_network(vdc_id, name, options={})
73
+ unless data[:vdcs][vdc_id]
74
+ raise Fog::Compute::VcloudDirector::Forbidden.new(
75
+ "No access to entity \"(com.vmware.vcloud.entity.vdc:#{vdc_id})\"."
76
+ )
77
+ end
78
+
79
+ type = 'network'
80
+ id = uuid
81
+
82
+ # Description
83
+ # Configuration
84
+ # IpScopes
85
+ # IpScope
86
+ # IsInherited
87
+ # Gateway
88
+ # Netmask
89
+ # Dns1
90
+ # Dns2
91
+ # DnsSuffix
92
+ # IsEnabled
93
+ # IpRanges
94
+ # IpRange
95
+ # StartAddress
96
+ # EndAddress
97
+ # FenceMode
98
+ # EdgeGateway
99
+ # IsShared
100
+
101
+ network_body = {
102
+ :name => name,
103
+ :vdc => vdc_id,
104
+ }
105
+
106
+ [:Description, :IsShared].each do |key|
107
+ network_body[key] = options[key] if options.key?(key)
108
+ end
109
+
110
+ if options.key?(:EdgeGateway)
111
+ network_body[:EdgeGateway] =
112
+ options[:EdgeGateway][:href].split('/').last
113
+ end
114
+
115
+ if configuration = options[:Configuration]
116
+ if ip_scopes = configuration[:IpScopes]
117
+ if ip_scope = ip_scopes[:IpScope]
118
+ [:IsInherited, :Gateway, :Netmask,
119
+ :Dns1, :Dns2, :DnsSuffix, :IsEnabled].each do |key|
120
+ network_body[key] = ip_scope[key] if ip_scope.key?(key)
121
+ end
122
+ if ip_ranges = ip_scope[:IpRanges]
123
+ network_body[:IpRanges] = []
124
+ ip_ranges.each do |ipr|
125
+ network_body[:IpRanges] << {
126
+ :StartAddress => ipr[:IpRange][:StartAddress],
127
+ :EndAddress => ipr[:IpRange][:EndAddress]
128
+ }
129
+ end
130
+ end
131
+ end
132
+ end
133
+ network_body[:FenceMode] = configuration[:FenceMode] if ip_scope.key?(:FenceMode)
134
+ end
135
+
136
+ owner = {
137
+ :href => make_href("#{type}/#{id}"),
138
+ :type => "application/vnd.vmware.vcloud.#{type}+xml"
139
+ }
140
+ task_id = enqueue_task(
141
+ "Adding #{type} #{name} (#{id})", 'CreateOrgVdcNetwork', owner,
142
+ :on_success => lambda do
143
+ data[:networks][id] = network_body
144
+ end
145
+ )
146
+
147
+ body = {
148
+ :xmlns => xmlns,
149
+ :xmlns_xsi => xmlns_xsi,
150
+ :xsi_schemaLocation => xsi_schema_location,
151
+ :href => make_href("admin/network/#{id}"),
152
+ :name => name,
153
+ :id => "urn:vcloud:network:#{id}",
154
+ :type => "application/vnd.vmware.vcloud.orgVdcNetwork+xml",
155
+ :Link => [
156
+ {:rel=>"up", :type=>"application/vnd.vmware.vcloud.vdc+xml", :href=>make_href("vdc/#{vdc_id}")},
157
+ {:rel=>"down", :type=>"application/vnd.vmware.vcloud.metadata+xml", :href=>make_href("admin/network/#{id}/metadata")},
158
+ {:rel=>"down", :type=>"application/vnd.vmware.vcloud.allocatedNetworkAddress+xml", :href=>make_href("admin/network/#{id}/allocatedAddresses/")},
159
+ ],
160
+ }.merge(options)
161
+
162
+ body[:Tasks] = {
163
+ :Task => task_body(task_id)
164
+ }
165
+
166
+ Excon::Response.new(
167
+ :status => 201,
168
+ :headers => {'Content-Type' => "#{body[:type]};version=#{api_version}"},
169
+ :body => body
170
+ )
171
+
172
+ end
173
+ end
174
+ end
175
+ end
176
+ end
@@ -20,7 +20,7 @@ module Fog
20
20
  :xmlns => 'http://www.vmware.com/vcloud/v1.5'
21
21
  }
22
22
  DiskAttachOrDetachParams(attrs) {
23
- Disk(:href => "#{@end_point}disk/#{media_id}")
23
+ Disk(:href => "#{end_point}disk/#{disk_id}")
24
24
  }
25
25
  end.to_xml
26
26
 
@@ -20,7 +20,7 @@ module Fog
20
20
  :xmlns => 'http://www.vmware.com/vcloud/v1.5'
21
21
  }
22
22
  MediaInsertOrEjectParams(attrs) {
23
- Media(:href => "#{@end_point}media/#{media_id}")
23
+ Media(:href => "#{end_point}media/#{media_id}")
24
24
  }
25
25
  end.to_xml
26
26
 
@@ -20,7 +20,7 @@ module Fog
20
20
  :xmlns => 'http://www.vmware.com/vcloud/v1.5'
21
21
  }
22
22
  MediaInsertOrEjectParams(attrs) {
23
- Media(:href => "#{@end_point}media/#{media_id}")
23
+ Media(:href => "#{end_point}media/#{media_id}")
24
24
  }
25
25
  end.to_xml
26
26
 
@@ -62,6 +62,7 @@ module Fog
62
62
  :change_sid => :ChangeSid,
63
63
  :join_domain_enabled => :JoinDomainEnabled,
64
64
  :use_org_settings => :UseOrgSettings,
65
+ :admin_password => :AdminPassword,
65
66
  :admin_password_enabled => :AdminPasswordEnabled,
66
67
  :admin_password_auto => :AdminPasswordAuto,
67
68
  :reset_password_required => :ResetPasswordRequired,
@@ -0,0 +1,37 @@
1
+ module Fog
2
+ module Compute
3
+ class VcloudDirector
4
+ class Real
5
+
6
+ require 'fog/vcloud_director/generators/compute/vapp'
7
+
8
+ # Modify the name or description of a vApp.
9
+ #
10
+ # This operation is asynchronous and returns a task that you can monitor
11
+ # to track the progress of the request.
12
+ #
13
+ #
14
+ # @param [String] id Object identifier of the vApp.
15
+ # @param [String] name of the vApp.
16
+ # @param [Hash] options
17
+ # * :Description<~String>: - description to be assigned (optional)
18
+ # @return [Excon::Response]
19
+ # * body<~Hash>:
20
+ #
21
+ # @see http://pubs.vmware.com/vcd-55/topic/com.vmware.vcloud.api.reference.doc_55/doc/operations/PUT-VAppNameAndDescription.html
22
+ # @since vCloud API version 0.9
23
+ def put_vapp_name_and_description(id, name, options={})
24
+ body = Fog::Generators::Compute::VcloudDirector::Vapp.new(name, options).generate_xml
25
+ request(
26
+ :body => body,
27
+ :expects => 202,
28
+ :headers => {'Content-Type' => 'application/vnd.vmware.vcloud.vApp+xml'},
29
+ :method => 'PUT',
30
+ :parser => Fog::ToHashDocument.new,
31
+ :path => "vApp/#{id}"
32
+ )
33
+ end
34
+ end
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,39 @@
1
+ module Fog
2
+ module Compute
3
+ class VcloudDirector
4
+ class Real
5
+
6
+ require 'fog/vcloud_director/generators/compute/vm'
7
+
8
+ # Update the name, description and storage profile for VM.
9
+ #
10
+ # This operation is asynchronous and returns a task that you can
11
+ # monitor to track the progress of the request.
12
+ #
13
+ # @param [String] id Object identifier of the VM.
14
+ # @param [String] name of the VM.
15
+ # @param [Hash] options
16
+ # * :Description<~String>: - description to be assigned.
17
+ # * :StorageProfile<~Hash>: - storage profile to be assigned.
18
+ # * :name<~String>
19
+ # * :href<~String>
20
+ # @return [Excon::Response]
21
+ # * body<~Hash>:
22
+ #
23
+ # @see http://pubs.vmware.com/vcd-51/topic/com.vmware.vcloud.api.reference.doc_51/doc/operations/PUT-Vm.html
24
+ # @since vCloud API version 0.9
25
+ def put_vm(id, name, options)
26
+ body = Fog::Generators::Compute::VcloudDirector::Vm.new(options.merge(:name => name)).generate_xml
27
+ request(
28
+ :body => body,
29
+ :expects => 202,
30
+ :headers => {'Content-Type' => 'application/vnd.vmware.vcloud.vm+xml'},
31
+ :method => 'PUT',
32
+ :parser => Fog::ToHashDocument.new,
33
+ :path => "vApp/#{id}"
34
+ )
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
@@ -1,3 +1,3 @@
1
1
  module Fog
2
- VERSION = '1.18.0'
2
+ VERSION = '1.19.0'
3
3
  end
@@ -37,6 +37,7 @@ module Fog
37
37
  collection :customvalues
38
38
  model :customfield
39
39
  collection :customfields
40
+ model :scsicontroller
40
41
 
41
42
  request_path 'fog/vsphere/requests/compute'
42
43
  request :current_time
@@ -78,6 +79,8 @@ module Fog
78
79
  request :get_interface_type
79
80
  request :list_vm_customvalues
80
81
  request :list_customfields
82
+ request :get_vm_first_scsi_controller
83
+ request :set_vm_customvalue
81
84
 
82
85
  module Shared
83
86
 
@@ -12,6 +12,7 @@ module Fog
12
12
  attribute :freespace
13
13
  attribute :accessible # reachable by at least one hypervisor
14
14
  attribute :capacity
15
+ attribute :uncommitted
15
16
 
16
17
  def to_s
17
18
  name
@@ -4,6 +4,8 @@ module Fog
4
4
 
5
5
  class Interface < Fog::Model
6
6
 
7
+ SAVE_MUTEX = Mutex.new
8
+
7
9
  identity :mac
8
10
  alias :id :mac
9
11
 
@@ -14,11 +16,18 @@ module Fog
14
16
  attribute :type
15
17
  attribute :key
16
18
  attribute :virtualswitch
19
+ attribute :server_id
20
+
21
+ def initialize(attributes = {})
22
+ # Assign server first to prevent race condition with persisted?
23
+ self.server_id = attributes.delete(:server_id)
17
24
 
18
- def initialize(attributes={} )
19
25
  if attributes.has_key? :type and attributes[:type].is_a? String then
20
- attributes[:type]=Fog.class_from_string(attributes[:type], "RbVmomi::VIM")
26
+ attributes[:type] = Fog.class_from_string(attributes[:type], "RbVmomi::VIM")
27
+ else
28
+ attributes[:type] = Fog.class_from_string("VirtualE1000", "RbVmomi::VIM")
21
29
  end
30
+
22
31
  super defaults.merge(attributes)
23
32
  end
24
33
 
@@ -26,6 +35,45 @@ module Fog
26
35
  name
27
36
  end
28
37
 
38
+ def server
39
+ requires :server_id
40
+ service.servers.get(server_id)
41
+ end
42
+
43
+ def destroy
44
+ requires :server_id, :key, :type
45
+
46
+ service.destroy_vm_interface(server_id, :key => key, :type => type)
47
+ end
48
+
49
+ def save
50
+ raise Fog::Errors::Error.new('Resaving an existing object may create a duplicate') if persisted?
51
+ requires :server_id, :type, :network
52
+
53
+ # Our approach of finding the newly created interface is rough. We assume that the :key value always increments
54
+ # and thus the highest :key value must correspond to the created interface. Since this has an inherent race
55
+ # condition we need to gate the saves.
56
+ SAVE_MUTEX.synchronize do
57
+ data = service.add_vm_interface(server_id, attributes)
58
+
59
+ if data['task_state'] == 'success'
60
+ # We have to query vSphere to get the interface attributes since the task handle doesn't include that info.
61
+ created = server.interfaces.all.sort_by(&:key).last
62
+
63
+ self.mac = created.mac
64
+ self.name = created.name
65
+ self.status = created.status
66
+ self.summary = created.summary
67
+ self.key = created.key
68
+ self.virtualswitch = created.virtualswitch
69
+
70
+ true
71
+ else
72
+ false
73
+ end
74
+ end
75
+ end
76
+
29
77
  private
30
78
 
31
79
  def defaults