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
@@ -121,6 +121,7 @@ module Fog
121
121
  },
122
122
  'Instances' => [],
123
123
  'ListenerDescriptions' => listeners,
124
+ 'LoadBalancerAttributes' => {'CrossZoneLoadBalancing' => {'Enabled' => false}},
124
125
  'LoadBalancerName' => lb_name,
125
126
  'Policies' => {
126
127
  'AppCookieStickinessPolicies' => [],
@@ -0,0 +1,54 @@
1
+ module Fog
2
+ module AWS
3
+ class ELB
4
+ class Real
5
+
6
+ require 'fog/aws/parsers/elb/describe_load_balancer_attributes'
7
+
8
+ # Describe the load balancer attributes
9
+ # http://docs.aws.amazon.com/ElasticLoadBalancing/latest/APIReference/API_DescribeLoadBalancerAttributes.html
10
+ # ==== Parameters
11
+ # * lb_name<~String> - The mnemonic name associated with the LoadBalancer.
12
+ #
13
+ # ==== Returns
14
+ # * response<~Excon::Response>:
15
+ # * body<~Hash>:
16
+ # * 'ResponseMetadata'<~Hash>:
17
+ # * 'RequestId'<~String> - Id of request
18
+ # * 'DescribeLoadBalancerAttributesResult'<~Hash>:
19
+ # * 'LoadBalancerAttributes'<~Hash>
20
+ # * 'CrossZoneLoadBalancing'<~Hash>
21
+ # * 'Enabled'<~Boolean> - whether crosszone load balancing is enabled
22
+ def describe_load_balancer_attributes(lb_name)
23
+ request({
24
+ 'Action' => 'DescribeLoadBalancerAttributes',
25
+ 'LoadBalancerName' => lb_name,
26
+ :parser => Fog::Parsers::AWS::ELB::DescribeLoadBalancerAttributes.new
27
+ })
28
+ end
29
+
30
+ end
31
+
32
+ class Mock
33
+ def describe_load_balancer_attributes(lb_name = nil, names = [])
34
+ raise Fog::AWS::ELB::NotFound unless load_balancer = self.data[:load_balancers][lb_name]
35
+ attributes = load_balancer['LoadBalancerAttributes']
36
+
37
+ response = Excon::Response.new
38
+ response.status = 200
39
+
40
+ response.body = {
41
+ 'ResponseMetadata' => {
42
+ 'RequestId' => Fog::AWS::Mock.request_id
43
+ },
44
+ 'DescribeLoadBalancerAttributesResult' => {
45
+ 'LoadBalancerAttributes' => attributes
46
+ }
47
+ }
48
+
49
+ response
50
+ end
51
+ end
52
+ end
53
+ end
54
+ end
@@ -0,0 +1,59 @@
1
+ module Fog
2
+ module AWS
3
+ class ELB
4
+ class Real
5
+
6
+ require 'fog/aws/parsers/elb/empty'
7
+
8
+
9
+ # Sets attributes of the load balancer
10
+ #
11
+ # Currently the only attribute that can be set is whether CrossZoneLoadBalancing
12
+ # is enabled
13
+ #
14
+ # http://docs.aws.amazon.com/ElasticLoadBalancing/latest/APIReference/API_ModifyLoadBalancerAttributes.html
15
+ # ==== Parameters
16
+ # * lb_name<~String> - Name of the ELB
17
+ # * options<~Hash>
18
+ # * 'CrossZoneLoadBalancing'<~Hash>:
19
+ # * 'Enabled'<~Boolean> whether to enable cross zone load balancing
20
+ #
21
+ # ==== Returns
22
+ # * response<~Excon::Response>:
23
+ # * body<~Hash>:
24
+ # * 'ResponseMetadata'<~Hash>:
25
+ # * 'RequestId'<~String> - Id of request
26
+ def modify_load_balancer_attributes(lb_name, options)
27
+ attributes = Fog::AWS.serialize_keys 'LoadBalancerAttributes', options
28
+ request(attributes.merge(
29
+ 'Action' => 'ModifyLoadBalancerAttributes',
30
+ 'LoadBalancerName' => lb_name,
31
+ :parser => Fog::Parsers::AWS::ELB::Empty.new
32
+ ))
33
+ end
34
+
35
+ end
36
+
37
+ class Mock
38
+ def modify_load_balancer_attributes(lb_name, attributes)
39
+ raise Fog::AWS::ELB::NotFound unless load_balancer = self.data[:load_balancers][lb_name]
40
+
41
+ if attributes['CrossZoneLoadBalancing']
42
+ load_balancer['LoadBalancerAttributes'].merge! attributes
43
+ end
44
+
45
+ response = Excon::Response.new
46
+
47
+ response.status = 200
48
+ response.body = {
49
+ "ResponseMetadata" => {
50
+ "RequestId" => Fog::AWS::Mock.request_id
51
+ }
52
+ }
53
+
54
+ response
55
+ end
56
+ end
57
+ end
58
+ end
59
+ end
@@ -26,6 +26,7 @@ module Fog
26
26
  # @param PreferredMaintenanceWindow [String] The weekly time range (in UTC) during which system maintenance can occur, which may result in an outage
27
27
  # @param DBSubnetGroupName [String] The name, if any, of the VPC subnet for this RDS instance
28
28
  # @param PubliclyAcccesible [Boolean] Whether an RDS instance inside of the VPC subnet should have a public-facing endpoint
29
+ # @param VpcSecurityGroups [Array] A list of VPC Security Groups to authorize on this DB instance
29
30
  #
30
31
  # @return [Excon::Response]:
31
32
  # * body [Hash]:
@@ -37,6 +38,10 @@ module Fog
37
38
  options.merge!(Fog::AWS.indexed_param('DBSecurityGroups.member.%d', [*security_groups]))
38
39
  end
39
40
 
41
+ if vpc_security_groups = options.delete('VpcSecurityGroups')
42
+ options.merge!(Fog::AWS.indexed_param('VpcSecurityGroupIds.member.%d', [*vpc_security_groups]))
43
+ end
44
+
40
45
  request({
41
46
  'Action' => 'CreateDBInstance',
42
47
  'DBInstanceIdentifier' => db_name,
@@ -105,7 +110,8 @@ module Fog
105
110
  # "LatestRestorableTime" => nil,
106
111
  "AvailabilityZone" => options["AvailabilityZone"],
107
112
  "DBSubnetGroupName" => options["DBSubnetGroupName"],
108
- "PubliclyAccessible" => options["PubliclyAccessible"]
113
+ "PubliclyAccessible" => options["PubliclyAccessible"],
114
+ "VpcSecurityGroups" => options["VpcSecurityGroups"],
109
115
  }
110
116
 
111
117
 
@@ -33,7 +33,13 @@ module Fog
33
33
  raise Fog::AWS::RDS::IdentifierTaken.new("DBSubnetGroupAlreadyExists => The subnet group '#{name}' already exists")
34
34
  end
35
35
 
36
- subnets = subnet_ids.map { |snid| Fog::Compute[:aws].subnets.get(snid) }
36
+ # collection = Fog::Compute::AWS.new(:aws_access_key_id => 'mock key', :aws_secret_access_key => 'mock secret')
37
+ collection = Fog::Compute[:aws]
38
+ subnets = subnet_ids.map do |snid|
39
+ subnet = collection.subnets.get(snid)
40
+ raise Fog::AWS::RDS::NotFound.new("InvalidSubnet => The subnet '#{snid}' was not found") if subnet.nil?
41
+ subnet
42
+ end
37
43
  vpc_id = subnets.first.vpc_id
38
44
 
39
45
  data = {
@@ -0,0 +1,42 @@
1
+ module Fog
2
+ module AWS
3
+ class RDS
4
+ class Real
5
+
6
+ require 'fog/aws/parsers/rds/delete_db_subnet_group'
7
+
8
+ # Deletes a db subnet group
9
+ # http://docs.aws.amazon.com/AmazonRDS/2013-09-09/APIReference/API_DeleteDBSubnetGroup.html
10
+ # ==== Parameters
11
+ # * DBSubnetGroupName <~String> - The name for the DB Subnet Group. This value is stored as a lowercase string. Must contain no more than 255 alphanumeric characters or hyphens. Must not be "Default".
12
+ # ==== Returns
13
+ # * response<~Excon::Response>:
14
+ # * body<~Hash>:
15
+ def delete_db_subnet_group(name)
16
+ params = { 'Action' => 'DeleteDBSubnetGroup',
17
+ 'DBSubnetGroupName' => name,
18
+ :parser => Fog::Parsers::AWS::RDS::DeleteDBSubnetGroup.new }
19
+ request(params)
20
+ end
21
+
22
+ end
23
+
24
+ class Mock
25
+
26
+ def delete_db_subnet_group(name)
27
+ response = Excon::Response.new
28
+ unless self.data[:subnet_groups] && self.data[:subnet_groups][name]
29
+ raise Fog::AWS::RDS::NotFound.new("DBSubnetGroupNotFound => The subnet group '#{name}' doesn't exists")
30
+ end
31
+
32
+ response.body = {
33
+ 'ResponseMetadata'=>{ 'RequestId'=> Fog::AWS::Mock.request_id },
34
+ 'return' => true,
35
+ }
36
+ response
37
+ end
38
+
39
+ end
40
+ end
41
+ end
42
+ end
@@ -32,9 +32,10 @@ module Fog
32
32
  # @see http://docs.amazonwebservices.com/AmazonS3/latest/API/multiobjectdeleteapi.html
33
33
 
34
34
  def delete_multiple_objects(bucket_name, object_names, options = {})
35
+ headers = options.dup
35
36
  data = "<Delete>"
36
- data << "<Quiet>true</Quiet>" if options.delete(:quiet)
37
- version_ids = options.delete('versionId')
37
+ data << "<Quiet>true</Quiet>" if headers.delete(:quiet)
38
+ version_ids = headers.delete('versionId')
38
39
  object_names.each do |object_name|
39
40
  data << "<Object>"
40
41
  data << "<Key>#{CGI.escapeHTML(object_name)}</Key>"
@@ -46,7 +47,6 @@ module Fog
46
47
  end
47
48
  data << "</Delete>"
48
49
 
49
- headers = options
50
50
  headers['Content-Length'] = data.length
51
51
  headers['Content-MD5'] = Base64.encode64(Digest::MD5.digest(data)).
52
52
  gsub("\n", '')
@@ -67,11 +67,13 @@ module Fog
67
67
  class Mock # :nodoc:all
68
68
 
69
69
  def delete_multiple_objects(bucket_name, object_names, options = {})
70
+ headers = options.dup
71
+ headers.delete(:quiet)
70
72
  response = Excon::Response.new
71
73
  if bucket = self.data[:buckets][bucket_name]
72
74
  response.status = 200
73
75
  response.body = { 'DeleteResult' => [] }
74
- version_ids = options.delete('versionId')
76
+ version_ids = headers.delete('versionId')
75
77
  object_names.each do |object_name|
76
78
  object_version = version_ids.nil? ? nil : version_ids[object_name]
77
79
  response.body['DeleteResult'] << delete_object_helper(bucket,
@@ -62,8 +62,11 @@ DATA
62
62
  else
63
63
  bucket['LocationConstraint'] = nil
64
64
  end
65
- unless self.data[:buckets][bucket_name]
65
+ if !self.data[:buckets][bucket_name] || self.region == 'us-east-1'
66
66
  self.data[:buckets][bucket_name] = bucket
67
+ else
68
+ response.status = 409
69
+ raise(Excon::Errors.status_error({:expects => 200}, response))
67
70
  end
68
71
  response
69
72
  end
@@ -4,7 +4,7 @@ module Fog
4
4
  module AWS
5
5
  class SQS < Fog::Service
6
6
  extend Fog::AWS::CredentialFetcher::ServiceMethods
7
-
7
+
8
8
  requires :aws_access_key_id, :aws_secret_access_key
9
9
  recognizes :region, :host, :path, :port, :scheme, :persistent, :aws_session_token, :use_iam_profile, :aws_credentials_expire_at
10
10
 
@@ -30,7 +30,7 @@ module Fog
30
30
  end
31
31
  end
32
32
  end
33
-
33
+
34
34
  def self.reset
35
35
  @data = nil
36
36
  end
@@ -123,9 +123,7 @@ module Fog
123
123
  :aws_access_key_id => @aws_access_key_id,
124
124
  :aws_session_token => @aws_session_token,
125
125
  :hmac => @hmac,
126
- :host => @host,
127
126
  :path => path || @path,
128
- :port => @port,
129
127
  :version => '2009-02-01'
130
128
  }
131
129
  )
@@ -140,6 +140,10 @@ module Fog
140
140
 
141
141
  def signed_url(params, expires)
142
142
  expires = expires.to_i
143
+ if @aws_session_token
144
+ params[:headers]||= {}
145
+ params[:headers]['x-amz-security-token'] = @aws_session_token
146
+ end
143
147
  signature = signature(params, expires)
144
148
  params = request_params(params)
145
149
 
@@ -174,6 +178,14 @@ module Fog
174
178
 
175
179
  # NOTE: differs from Fog::AWS.escape by NOT escaping `/`
176
180
  def escape(string)
181
+ unless @unf_loaded_or_warned
182
+ begin
183
+ require('unf/normalizer')
184
+ rescue LoadError
185
+ Fog::Logger.warning("Unable to load the 'unf' gem. Your AWS strings may not be properly encoded.")
186
+ end
187
+ @unf_loaded_or_warned = true
188
+ end
177
189
  string = defined?(::UNF::Normalizer) ? ::UNF::Normalizer.normalize(string, :nfc) : string
178
190
  string.gsub(/([^a-zA-Z0-9_.\-~\/]+)/) {
179
191
  "%" + $1.unpack("H2" * $1.bytesize).join("%").upcase
@@ -405,6 +417,8 @@ module Fog
405
417
  @connection_options = options[:connection_options] || {}
406
418
  @persistent = options.fetch(:persistent, false)
407
419
 
420
+ @path_style = options[:path_style] || false
421
+
408
422
  if @endpoint = options[:endpoint]
409
423
  endpoint = URI.parse(@endpoint)
410
424
  @host = endpoint.host
@@ -415,7 +429,6 @@ module Fog
415
429
  @host = options[:host] || region_to_host(@region)
416
430
  @scheme = options[:scheme] || DEFAULT_SCHEME
417
431
  @port = options[:port] || DEFAULT_SCHEME_PORT[@scheme]
418
- @path_style = options[:path_style] || false
419
432
  end
420
433
  end
421
434
 
@@ -83,7 +83,7 @@ module Fog
83
83
  })
84
84
 
85
85
  begin
86
- response = @connection.request(params.merge!({:host => @host}))
86
+ response = @connection.request(params)
87
87
  rescue Excon::Errors::HTTPStatusError => error
88
88
  raise case error
89
89
  when Excon::Errors::NotFound
@@ -166,7 +166,7 @@ module Fog
166
166
  _request
167
167
  end
168
168
 
169
- private
169
+ private
170
170
 
171
171
  def _request
172
172
  raise Fog::Errors::MockNotImplemented
@@ -236,7 +236,7 @@ module Fog
236
236
  _wrapped_request(method, path, expected_responses, parameters)
237
237
  end
238
238
 
239
- private
239
+ private
240
240
 
241
241
  # Wrapped request is the non-standard form of request introduced by mistake
242
242
  #
@@ -256,20 +256,18 @@ module Fog
256
256
 
257
257
  # Select the account to scope for this request
258
258
  account = scoped_account(parameters.fetch(:account_id, nil))
259
- if account
260
- request_options[:query] = { :account_id => account }
261
- end
259
+ request_options[:query] = { :account_id => account } if account
262
260
 
263
261
  request_options[:body] = Fog::JSON.encode(parameters) unless parameters.empty?
264
262
 
265
263
  response = make_request(request_options)
266
264
 
267
- # FIXME We should revert to returning the Excon::Request after a suitable
265
+ # FIXME: We should revert to returning the Excon::Request after a suitable
268
266
  # configuration option is in place to switch back to this incorrect behaviour
269
- unless response.body.empty?
270
- Fog::JSON.decode(response.body)
271
- else
267
+ if response.body.empty?
272
268
  response
269
+ else
270
+ Fog::JSON.decode(response.body)
273
271
  end
274
272
  end
275
273
 
@@ -32,7 +32,7 @@ module Fog
32
32
  img["official"] == true &&
33
33
  img["arch"] == "i686" &&
34
34
  img["name"] =~ /ubuntu/i
35
- end.sort do |a,b|
35
+ end.sort do |a, b|
36
36
  # Reverse sort so "raring" > "precise" and "13.10" > "13.04"
37
37
  b["name"].downcase <=> a["name"].downcase
38
38
  end.first["id"]
@@ -63,7 +63,7 @@ module Fog
63
63
  # Request account can be changed at anytime and changes behaviour of future requests
64
64
  @scoped_account = @configured_account
65
65
 
66
- credential_options = {:username => username, :password => password}
66
+ credential_options = { :username => username, :password => password }
67
67
  @credentials = CredentialSet.new(client_id, client_secret, credential_options)
68
68
 
69
69
  # If existing tokens have been cached, allow continued use of them in the service
@@ -175,7 +175,7 @@ module Fog
175
175
  @default_image_id = Fog.credentials[:brightbox_default_image] || select_default_image
176
176
  end
177
177
 
178
- private
178
+ private
179
179
 
180
180
  # This makes a request of the API based on the configured setting for
181
181
  # token management.
@@ -200,13 +200,11 @@ module Fog
200
200
  #
201
201
  # @return [Excon::Response]
202
202
  def managed_token_request(options)
203
- begin
204
- get_access_token unless access_token_available?
205
- response = authenticated_request(options)
206
- rescue Excon::Errors::Unauthorized
207
- get_access_token
208
- response = authenticated_request(options)
209
- end
203
+ get_access_token unless access_token_available?
204
+ authenticated_request(options)
205
+ rescue Excon::Errors::Unauthorized
206
+ get_access_token
207
+ authenticated_request(options)
210
208
  end
211
209
 
212
210
  # This request makes an authenticated request of the API using currently
@@ -221,7 +219,7 @@ module Fog
221
219
  headers = options[:headers] || {}
222
220
  headers.merge!("Authorization" => "OAuth #{@credentials.access_token}", "Content-Type" => "application/json")
223
221
  options[:headers] = headers
224
- # TODO This is just a wrapper around a call to Excon::Connection#request
222
+ # TODO: This is just a wrapper around a call to Excon::Connection#request
225
223
  # so can be extracted from Compute by passing in the connection,
226
224
  # credentials and options
227
225
  @connection.request(options)
@@ -14,7 +14,7 @@ module Fog
14
14
  options = {
15
15
  :name => name,
16
16
  :description => description
17
- }.delete_if {|k,v| v.nil? || v == "" }
17
+ }.delete_if { |k, v| v.nil? || v == "" }
18
18
  data = service.create_api_client(options)
19
19
  merge_attributes(data)
20
20
  true