fog 1.34.0 → 1.35.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (350) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +10 -24
  3. data/CHANGELOG.md +84 -0
  4. data/CONTRIBUTING.md +1 -1
  5. data/README.md +4 -20
  6. data/fog.gemspec +7 -5
  7. data/lib/fog.rb +1 -0
  8. data/lib/fog/bin.rb +1 -0
  9. data/lib/fog/digitalocean/compute_v2.rb +108 -0
  10. data/lib/fog/digitalocean/models/compute_v2/flavor.rb +17 -0
  11. data/lib/fog/digitalocean/models/compute_v2/flavors.rb +21 -0
  12. data/lib/fog/digitalocean/models/compute_v2/image.rb +25 -0
  13. data/lib/fog/digitalocean/models/compute_v2/images.rb +36 -0
  14. data/lib/fog/digitalocean/models/compute_v2/region.rb +13 -0
  15. data/lib/fog/digitalocean/models/compute_v2/regions.rb +21 -0
  16. data/lib/fog/digitalocean/models/compute_v2/server.rb +166 -0
  17. data/lib/fog/digitalocean/models/compute_v2/servers.rb +39 -0
  18. data/lib/fog/digitalocean/models/compute_v2/ssh_key.rb +30 -0
  19. data/lib/fog/digitalocean/models/compute_v2/ssh_keys.rb +35 -0
  20. data/lib/fog/digitalocean/requests/compute_v2/change_kernel.rb +44 -0
  21. data/lib/fog/digitalocean/requests/compute_v2/convert_to_snapshot.rb +44 -0
  22. data/lib/fog/digitalocean/requests/compute_v2/create_server.rb +93 -0
  23. data/lib/fog/digitalocean/requests/compute_v2/create_ssh_key.rb +47 -0
  24. data/lib/fog/digitalocean/requests/compute_v2/delete_server.rb +28 -0
  25. data/lib/fog/digitalocean/requests/compute_v2/delete_ssh_key.rb +28 -0
  26. data/lib/fog/digitalocean/requests/compute_v2/disable_backups.rb +45 -0
  27. data/lib/fog/digitalocean/requests/compute_v2/enable_ipv6.rb +44 -0
  28. data/lib/fog/digitalocean/requests/compute_v2/enable_private_networking.rb +44 -0
  29. data/lib/fog/digitalocean/requests/compute_v2/get_droplet_action.rb +36 -0
  30. data/lib/fog/digitalocean/requests/compute_v2/get_image_details.rb +43 -0
  31. data/lib/fog/digitalocean/requests/compute_v2/get_server_details.rb +84 -0
  32. data/lib/fog/digitalocean/requests/compute_v2/get_ssh_key.rb +34 -0
  33. data/lib/fog/digitalocean/requests/compute_v2/list_droplet_actions.rb +38 -0
  34. data/lib/fog/digitalocean/requests/compute_v2/list_flavors.rb +131 -0
  35. data/lib/fog/digitalocean/requests/compute_v2/list_images.rb +50 -0
  36. data/lib/fog/digitalocean/requests/compute_v2/list_regions.rb +94 -0
  37. data/lib/fog/digitalocean/requests/compute_v2/list_servers.rb +28 -0
  38. data/lib/fog/digitalocean/requests/compute_v2/list_ssh_keys.rb +26 -0
  39. data/lib/fog/digitalocean/requests/compute_v2/password_reset.rb +44 -0
  40. data/lib/fog/digitalocean/requests/compute_v2/power_cycle.rb +44 -0
  41. data/lib/fog/digitalocean/requests/compute_v2/power_off.rb +44 -0
  42. data/lib/fog/digitalocean/requests/compute_v2/power_on.rb +44 -0
  43. data/lib/fog/digitalocean/requests/compute_v2/reboot_server.rb +44 -0
  44. data/lib/fog/digitalocean/requests/compute_v2/rebuild.rb +44 -0
  45. data/lib/fog/digitalocean/requests/compute_v2/rename.rb +44 -0
  46. data/lib/fog/digitalocean/requests/compute_v2/resize.rb +48 -0
  47. data/lib/fog/digitalocean/requests/compute_v2/restore.rb +44 -0
  48. data/lib/fog/digitalocean/requests/compute_v2/shutdown.rb +44 -0
  49. data/lib/fog/digitalocean/requests/compute_v2/snapshot.rb +44 -0
  50. data/lib/fog/digitalocean/requests/compute_v2/transfer_image.rb +44 -0
  51. data/lib/fog/digitalocean/requests/compute_v2/update_ssh_key.rb +46 -0
  52. data/lib/fog/digitalocean/requests/compute_v2/upgrade.rb +44 -0
  53. data/lib/fog/digitalocean/service.rb +51 -0
  54. data/lib/fog/linode/models/compute/kernels.rb +1 -1
  55. data/lib/fog/opennebula/models/compute/flavor.rb +13 -13
  56. data/lib/fog/opennebula/requests/compute/template_pool.rb +14 -11
  57. data/lib/fog/openstack.rb +2 -0
  58. data/lib/fog/openstack/core.rb +30 -3
  59. data/lib/fog/openstack/identity.rb +8 -7
  60. data/lib/fog/openstack/identity_v3.rb +1 -0
  61. data/lib/fog/openstack/image.rb +35 -130
  62. data/lib/fog/openstack/image_v1.rb +142 -0
  63. data/lib/fog/openstack/image_v2.rb +137 -0
  64. data/lib/fog/openstack/models/image_v1/image.rb +78 -0
  65. data/lib/fog/openstack/models/image_v1/images.rb +70 -0
  66. data/lib/fog/openstack/models/image_v2/image.rb +149 -0
  67. data/lib/fog/openstack/models/image_v2/images.rb +67 -0
  68. data/lib/fog/openstack/models/orchestration/stack.rb +5 -0
  69. data/lib/fog/openstack/models/volume/volume_type.rb +25 -0
  70. data/lib/fog/openstack/orchestration.rb +1 -0
  71. data/lib/fog/openstack/requests/compute/server_actions.rb +14 -3
  72. data/lib/fog/openstack/requests/{image → image_v1}/add_member_to_image.rb +2 -0
  73. data/lib/fog/openstack/requests/image_v1/create_image.rb +78 -0
  74. data/lib/fog/openstack/requests/image_v1/delete_image.rb +25 -0
  75. data/lib/fog/openstack/requests/image_v1/get_image.rb +47 -0
  76. data/lib/fog/openstack/requests/image_v1/get_image_by_id.rb +34 -0
  77. data/lib/fog/openstack/requests/image_v1/get_image_members.rb +31 -0
  78. data/lib/fog/openstack/requests/image_v1/get_shared_images.rb +31 -0
  79. data/lib/fog/openstack/requests/image_v1/list_public_images.rb +35 -0
  80. data/lib/fog/openstack/requests/image_v1/list_public_images_detailed.rb +37 -0
  81. data/lib/fog/openstack/requests/image_v1/remove_member_from_image.rb +25 -0
  82. data/lib/fog/openstack/requests/image_v1/set_tenant.rb +21 -0
  83. data/lib/fog/openstack/requests/image_v1/update_image.rb +66 -0
  84. data/lib/fog/openstack/requests/image_v1/update_image_members.rb +39 -0
  85. data/lib/fog/openstack/requests/image_v2/add_member_to_image.rb +26 -0
  86. data/lib/fog/openstack/requests/image_v2/add_tag_to_image.rb +25 -0
  87. data/lib/fog/openstack/requests/image_v2/create_image.rb +54 -0
  88. data/lib/fog/openstack/requests/image_v2/deactivate_image.rb +25 -0
  89. data/lib/fog/openstack/requests/image_v2/delete_image.rb +25 -0
  90. data/lib/fog/openstack/requests/image_v2/download_image.rb +29 -0
  91. data/lib/fog/openstack/requests/image_v2/get_image.rb +47 -0
  92. data/lib/fog/openstack/requests/image_v2/get_image_by_id.rb +34 -0
  93. data/lib/fog/openstack/requests/image_v2/get_image_members.rb +31 -0
  94. data/lib/fog/openstack/requests/image_v2/get_member_details.rb +33 -0
  95. data/lib/fog/openstack/requests/image_v2/get_shared_images.rb +31 -0
  96. data/lib/fog/openstack/requests/image_v2/list_images.rb +35 -0
  97. data/lib/fog/openstack/requests/image_v2/reactivate_image.rb +25 -0
  98. data/lib/fog/openstack/requests/image_v2/remove_member_from_image.rb +25 -0
  99. data/lib/fog/openstack/requests/image_v2/remove_tag_from_image.rb +25 -0
  100. data/lib/fog/openstack/requests/image_v2/set_tenant.rb +21 -0
  101. data/lib/fog/openstack/requests/image_v2/update_image.rb +49 -0
  102. data/lib/fog/openstack/requests/image_v2/update_image_member.rb +34 -0
  103. data/lib/fog/openstack/requests/image_v2/upload_image.rb +30 -0
  104. data/lib/fog/openstack/requests/orchestration/patch_stack.rb +37 -0
  105. data/lib/fog/openstack/requests/volume/create_volume_type.rb +41 -0
  106. data/lib/fog/openstack/requests/{image/delete_image.rb → volume/delete_volume_type.rb} +6 -6
  107. data/lib/fog/openstack/requests/volume/get_quota_usage.rb +44 -0
  108. data/lib/fog/openstack/requests/volume/get_volume_type_details.rb +1 -1
  109. data/lib/fog/openstack/requests/volume/update_volume_type.rb +41 -0
  110. data/lib/fog/openstack/volume.rb +5 -0
  111. data/lib/fog/rackspace/models/compute_v2/server.rb +11 -1
  112. data/lib/fog/rackspace/models/compute_v2/servers.rb +2 -2
  113. data/lib/fog/rackspace/requests/compute_v2/create_server.rb +7 -2
  114. data/lib/fog/vcloud_director/requests/compute/get_execute_query.rb +13 -10
  115. data/lib/fog/version.rb +1 -1
  116. data/lib/fog/vsphere/models/compute/server.rb +1 -1
  117. data/lib/tasks/changelog_task.rb +1 -0
  118. data/spec/fog/openstack/identity_v3/authv3_a.yml +45 -52
  119. data/spec/fog/openstack/identity_v3/authv3_b.yml +45 -52
  120. data/spec/fog/openstack/identity_v3/authv3_c.yml +95 -101
  121. data/spec/fog/openstack/identity_v3/authv3_project.yml +68 -75
  122. data/spec/fog/openstack/identity_v3/authv3_token.yml +212 -174
  123. data/spec/fog/openstack/identity_v3/authv3_unscoped.yml +278 -266
  124. data/spec/fog/openstack/identity_v3/authv3_unscoped_reauth.yml +190 -202
  125. data/spec/fog/openstack/identity_v3/common_setup.yml +67 -445
  126. data/spec/fog/openstack/identity_v3/idv3_credential.yml +56 -26
  127. data/spec/fog/openstack/identity_v3/idv3_credential_crud.yml +292 -152
  128. data/spec/fog/openstack/identity_v3/idv3_domain.yml +99 -49
  129. data/spec/fog/openstack/identity_v3/idv3_domain_crud.yml +239 -119
  130. data/spec/fog/openstack/identity_v3/idv3_domain_group_roles_mutation.yml +414 -205
  131. data/spec/fog/openstack/identity_v3/idv3_domain_roles_mutation.yml +259 -136
  132. data/spec/fog/openstack/identity_v3/idv3_endpoint.yml +474 -472
  133. data/spec/fog/openstack/identity_v3/idv3_endpoints_crud.yml +679 -626
  134. data/spec/fog/openstack/identity_v3/idv3_group_crud_mutation.yml +536 -269
  135. data/spec/fog/openstack/identity_v3/idv3_policy.yml +76 -36
  136. data/spec/fog/openstack/identity_v3/idv3_policy_crud.yml +197 -97
  137. data/spec/fog/openstack/identity_v3/idv3_project.yml +135 -85
  138. data/spec/fog/openstack/identity_v3/idv3_project_crud.yml +237 -127
  139. data/spec/fog/openstack/identity_v3/idv3_project_group_user_roles_mutation.yml +625 -295
  140. data/spec/fog/openstack/identity_v3/idv3_project_hier_crud_list.yml +716 -355
  141. data/spec/fog/openstack/identity_v3/idv3_role.yml +134 -88
  142. data/spec/fog/openstack/identity_v3/idv3_role_crud.yml +312 -118
  143. data/spec/fog/openstack/identity_v3/idv3_service.yml +179 -133
  144. data/spec/fog/openstack/identity_v3/idv3_services_crud.yml +306 -212
  145. data/spec/fog/openstack/identity_v3/idv3_token.yml +213 -177
  146. data/spec/fog/openstack/identity_v3/idv3_user_crud.yml +345 -188
  147. data/spec/fog/openstack/identity_v3/idv3_users.yml +182 -116
  148. data/spec/fog/openstack/identity_v3_spec.rb +103 -85
  149. data/spec/fog/openstack/{identity_v3/idv3_other_region.yml → image_v1/common_setup.yml} +50 -93
  150. data/spec/fog/openstack/image_v1/list_images.yml +54 -0
  151. data/spec/fog/openstack/image_v1_spec.rb +24 -0
  152. data/spec/fog/openstack/image_v2/common_setup.yml +144 -0
  153. data/spec/fog/openstack/image_v2/image_schema.json +190 -0
  154. data/spec/fog/openstack/image_v2/image_v2_activation.yml +3988 -0
  155. data/spec/fog/openstack/image_v2/image_v2_create_id.yml +291 -0
  156. data/spec/fog/openstack/image_v2/image_v2_crud.yml +437 -0
  157. data/spec/fog/openstack/image_v2/image_v2_member_crudl.yml +451 -0
  158. data/spec/fog/openstack/image_v2/image_v2_tags.yml +532 -0
  159. data/spec/fog/openstack/image_v2/image_v2_upload_download.yml +3966 -0
  160. data/spec/fog/openstack/image_v2/minimal.ova +0 -0
  161. data/spec/fog/openstack/image_v2_spec.rb +285 -0
  162. data/spec/fog/openstack/image_v2_upload_spec.rb +74 -0
  163. data/spec/fog/openstack/shared_context.rb +14 -10
  164. data/tests/compute/helper.rb +0 -3
  165. data/tests/digitalocean/requests/compute_v2/list_flavors_tests.rb +25 -0
  166. data/tests/digitalocean/requests/compute_v2/list_images_tests.rb +25 -0
  167. data/tests/digitalocean/requests/compute_v2/list_regions_tests.rb +21 -0
  168. data/tests/digitalocean/requests/compute_v2/server_tests.rb +77 -0
  169. data/tests/helpers/mock_helper.rb +1 -0
  170. data/tests/opennebula/models/compute/flavor_tests.rb +1 -1
  171. data/tests/openstack/requests/orchestration/stack_tests.rb +5 -1
  172. data/tests/openstack/requests/volume/volume_type_tests.rb +32 -0
  173. data/tests/rackspace/models/compute_v2/server_tests.rb +7 -7
  174. metadata +160 -236
  175. data/gemfiles/Gemfile-ruby-1.8.7 +0 -17
  176. data/lib/fog/bin/xenserver.rb +0 -29
  177. data/lib/fog/openstack/models/image/image.rb +0 -76
  178. data/lib/fog/openstack/models/image/images.rb +0 -67
  179. data/lib/fog/openstack/requests/image/create_image.rb +0 -76
  180. data/lib/fog/openstack/requests/image/get_image.rb +0 -45
  181. data/lib/fog/openstack/requests/image/get_image_by_id.rb +0 -32
  182. data/lib/fog/openstack/requests/image/get_image_members.rb +0 -29
  183. data/lib/fog/openstack/requests/image/get_shared_images.rb +0 -29
  184. data/lib/fog/openstack/requests/image/list_public_images.rb +0 -33
  185. data/lib/fog/openstack/requests/image/list_public_images_detailed.rb +0 -35
  186. data/lib/fog/openstack/requests/image/remove_member_from_image.rb +0 -23
  187. data/lib/fog/openstack/requests/image/set_tenant.rb +0 -19
  188. data/lib/fog/openstack/requests/image/update_image.rb +0 -64
  189. data/lib/fog/openstack/requests/image/update_image_members.rb +0 -37
  190. data/lib/fog/xenserver.rb +0 -1
  191. data/lib/fog/xenserver/CHANGELOG.md +0 -77
  192. data/lib/fog/xenserver/compute.rb +0 -186
  193. data/lib/fog/xenserver/core.rb +0 -94
  194. data/lib/fog/xenserver/examples/README.md +0 -11
  195. data/lib/fog/xenserver/examples/chage_default_storage_repository.md +0 -99
  196. data/lib/fog/xenserver/examples/creating_servers.md +0 -168
  197. data/lib/fog/xenserver/examples/getting_started.md +0 -163
  198. data/lib/fog/xenserver/examples/networks-and-vlans.rb +0 -44
  199. data/lib/fog/xenserver/examples/storage_repositories.md +0 -94
  200. data/lib/fog/xenserver/models/compute/blob.rb +0 -22
  201. data/lib/fog/xenserver/models/compute/blobs.rb +0 -25
  202. data/lib/fog/xenserver/models/compute/bond.rb +0 -23
  203. data/lib/fog/xenserver/models/compute/bonds.rb +0 -25
  204. data/lib/fog/xenserver/models/compute/console.rb +0 -29
  205. data/lib/fog/xenserver/models/compute/consoles.rb +0 -25
  206. data/lib/fog/xenserver/models/compute/crash_dump.rb +0 -19
  207. data/lib/fog/xenserver/models/compute/crash_dumps.rb +0 -25
  208. data/lib/fog/xenserver/models/compute/dr_task.rb +0 -17
  209. data/lib/fog/xenserver/models/compute/dr_tasks.rb +0 -25
  210. data/lib/fog/xenserver/models/compute/gpu_group.rb +0 -22
  211. data/lib/fog/xenserver/models/compute/gpu_groups.rb +0 -25
  212. data/lib/fog/xenserver/models/compute/guest_metrics.rb +0 -26
  213. data/lib/fog/xenserver/models/compute/host.rb +0 -156
  214. data/lib/fog/xenserver/models/compute/host_cpu.rb +0 -34
  215. data/lib/fog/xenserver/models/compute/host_crash_dump.rb +0 -20
  216. data/lib/fog/xenserver/models/compute/host_crash_dumps.rb +0 -25
  217. data/lib/fog/xenserver/models/compute/host_metrics.rb +0 -26
  218. data/lib/fog/xenserver/models/compute/host_patch.rb +0 -25
  219. data/lib/fog/xenserver/models/compute/host_patchs.rb +0 -25
  220. data/lib/fog/xenserver/models/compute/hosts.rb +0 -25
  221. data/lib/fog/xenserver/models/compute/network.rb +0 -93
  222. data/lib/fog/xenserver/models/compute/networks.rb +0 -29
  223. data/lib/fog/xenserver/models/compute/pbd.rb +0 -37
  224. data/lib/fog/xenserver/models/compute/pbds.rb +0 -29
  225. data/lib/fog/xenserver/models/compute/pci.rb +0 -22
  226. data/lib/fog/xenserver/models/compute/pcis.rb +0 -25
  227. data/lib/fog/xenserver/models/compute/pgpu.rb +0 -20
  228. data/lib/fog/xenserver/models/compute/pgpus.rb +0 -25
  229. data/lib/fog/xenserver/models/compute/pif.rb +0 -54
  230. data/lib/fog/xenserver/models/compute/pif_metrics.rb +0 -28
  231. data/lib/fog/xenserver/models/compute/pifs.rb +0 -29
  232. data/lib/fog/xenserver/models/compute/pifs_metrics.rb +0 -25
  233. data/lib/fog/xenserver/models/compute/pool.rb +0 -75
  234. data/lib/fog/xenserver/models/compute/pool_patch.rb +0 -24
  235. data/lib/fog/xenserver/models/compute/pool_patchs.rb +0 -25
  236. data/lib/fog/xenserver/models/compute/pools.rb +0 -29
  237. data/lib/fog/xenserver/models/compute/role.rb +0 -19
  238. data/lib/fog/xenserver/models/compute/roles.rb +0 -25
  239. data/lib/fog/xenserver/models/compute/server.rb +0 -251
  240. data/lib/fog/xenserver/models/compute/server_appliance.rb +0 -21
  241. data/lib/fog/xenserver/models/compute/server_appliances.rb +0 -25
  242. data/lib/fog/xenserver/models/compute/servers.rb +0 -64
  243. data/lib/fog/xenserver/models/compute/storage_manager.rb +0 -28
  244. data/lib/fog/xenserver/models/compute/storage_managers.rb +0 -25
  245. data/lib/fog/xenserver/models/compute/storage_repositories.rb +0 -27
  246. data/lib/fog/xenserver/models/compute/storage_repository.rb +0 -90
  247. data/lib/fog/xenserver/models/compute/tunnel.rb +0 -20
  248. data/lib/fog/xenserver/models/compute/tunnels.rb +0 -25
  249. data/lib/fog/xenserver/models/compute/vbd.rb +0 -88
  250. data/lib/fog/xenserver/models/compute/vbd_metrics.rb +0 -25
  251. data/lib/fog/xenserver/models/compute/vbds.rb +0 -29
  252. data/lib/fog/xenserver/models/compute/vdi.rb +0 -102
  253. data/lib/fog/xenserver/models/compute/vdis.rb +0 -25
  254. data/lib/fog/xenserver/models/compute/vif.rb +0 -56
  255. data/lib/fog/xenserver/models/compute/vifs.rb +0 -25
  256. data/lib/fog/xenserver/models/compute/vlan.rb +0 -78
  257. data/lib/fog/xenserver/models/compute/vlans.rb +0 -35
  258. data/lib/fog/xenserver/models/compute/vmpp.rb +0 -35
  259. data/lib/fog/xenserver/models/compute/vmpps.rb +0 -25
  260. data/lib/fog/xenserver/models/compute/vtpm.rb +0 -18
  261. data/lib/fog/xenserver/models/compute/vtpms.rb +0 -25
  262. data/lib/fog/xenserver/parser.rb +0 -34
  263. data/lib/fog/xenserver/parsers/get_hosts.rb +0 -16
  264. data/lib/fog/xenserver/parsers/get_networks.rb +0 -16
  265. data/lib/fog/xenserver/parsers/get_pools.rb +0 -16
  266. data/lib/fog/xenserver/parsers/get_records.rb +0 -16
  267. data/lib/fog/xenserver/parsers/get_storage_repositories.rb +0 -16
  268. data/lib/fog/xenserver/parsers/get_vbds.rb +0 -16
  269. data/lib/fog/xenserver/parsers/get_vifs.rb +0 -16
  270. data/lib/fog/xenserver/parsers/get_vms.rb +0 -16
  271. data/lib/fog/xenserver/requests/compute/clone_server.rb +0 -30
  272. data/lib/fog/xenserver/requests/compute/create_network.rb +0 -46
  273. data/lib/fog/xenserver/requests/compute/create_server.rb +0 -144
  274. data/lib/fog/xenserver/requests/compute/create_sr.rb +0 -88
  275. data/lib/fog/xenserver/requests/compute/create_vbd.rb +0 -43
  276. data/lib/fog/xenserver/requests/compute/create_vdi.rb +0 -57
  277. data/lib/fog/xenserver/requests/compute/create_vif.rb +0 -62
  278. data/lib/fog/xenserver/requests/compute/create_vlan.rb +0 -43
  279. data/lib/fog/xenserver/requests/compute/destroy_network.rb +0 -31
  280. data/lib/fog/xenserver/requests/compute/destroy_record.rb +0 -11
  281. data/lib/fog/xenserver/requests/compute/destroy_server.rb +0 -20
  282. data/lib/fog/xenserver/requests/compute/destroy_sr.rb +0 -28
  283. data/lib/fog/xenserver/requests/compute/destroy_vdi.rb +0 -20
  284. data/lib/fog/xenserver/requests/compute/destroy_vif.rb +0 -20
  285. data/lib/fog/xenserver/requests/compute/destroy_vlan.rb +0 -30
  286. data/lib/fog/xenserver/requests/compute/disable_host.rb +0 -23
  287. data/lib/fog/xenserver/requests/compute/eject_vbd.rb +0 -17
  288. data/lib/fog/xenserver/requests/compute/enable_host.rb +0 -22
  289. data/lib/fog/xenserver/requests/compute/get_record.rb +0 -31
  290. data/lib/fog/xenserver/requests/compute/get_records.rb +0 -24
  291. data/lib/fog/xenserver/requests/compute/insert_vbd.rb +0 -17
  292. data/lib/fog/xenserver/requests/compute/provision_server.rb +0 -17
  293. data/lib/fog/xenserver/requests/compute/reboot_host.rb +0 -17
  294. data/lib/fog/xenserver/requests/compute/reboot_server.rb +0 -17
  295. data/lib/fog/xenserver/requests/compute/scan_sr.rb +0 -17
  296. data/lib/fog/xenserver/requests/compute/set_affinity.rb +0 -19
  297. data/lib/fog/xenserver/requests/compute/set_attribute.rb +0 -19
  298. data/lib/fog/xenserver/requests/compute/shutdown_host.rb +0 -17
  299. data/lib/fog/xenserver/requests/compute/shutdown_server.rb +0 -17
  300. data/lib/fog/xenserver/requests/compute/snapshot_revert.rb +0 -24
  301. data/lib/fog/xenserver/requests/compute/snapshot_server.rb +0 -17
  302. data/lib/fog/xenserver/requests/compute/start_server.rb +0 -17
  303. data/lib/fog/xenserver/requests/compute/start_vm.rb +0 -19
  304. data/lib/fog/xenserver/requests/compute/unplug_pbd.rb +0 -20
  305. data/lib/fog/xenserver/requests/compute/unplug_vbd.rb +0 -25
  306. data/lib/fog/xenserver/utilities.rb +0 -8
  307. data/tests/xenserver/README +0 -21
  308. data/tests/xenserver/compute_tests.rb +0 -51
  309. data/tests/xenserver/helper.rb +0 -36
  310. data/tests/xenserver/models/compute/console_test.rb +0 -35
  311. data/tests/xenserver/models/compute/consoles_test.rb +0 -19
  312. data/tests/xenserver/models/compute/host_cpu_tests.rb +0 -58
  313. data/tests/xenserver/models/compute/host_metrics_tests.rb +0 -48
  314. data/tests/xenserver/models/compute/host_tests.rb +0 -98
  315. data/tests/xenserver/models/compute/hosts_tests.rb +0 -22
  316. data/tests/xenserver/models/compute/network_tests.rb +0 -79
  317. data/tests/xenserver/models/compute/networks_tests.rb +0 -22
  318. data/tests/xenserver/models/compute/pbd_tests.rb +0 -76
  319. data/tests/xenserver/models/compute/pbds_tests.rb +0 -22
  320. data/tests/xenserver/models/compute/pif_tests.rb +0 -58
  321. data/tests/xenserver/models/compute/pifs_tests.rb +0 -22
  322. data/tests/xenserver/models/compute/pool_tests.rb +0 -56
  323. data/tests/xenserver/models/compute/pools_tests.rb +0 -30
  324. data/tests/xenserver/models/compute/server_tests.rb +0 -184
  325. data/tests/xenserver/models/compute/servers_tests.rb +0 -89
  326. data/tests/xenserver/models/compute/storage_repositories_tests.rb +0 -30
  327. data/tests/xenserver/models/compute/storage_repository_tests.rb +0 -114
  328. data/tests/xenserver/models/compute/vbd_tests.rb +0 -115
  329. data/tests/xenserver/models/compute/vbds_tests.rb +0 -22
  330. data/tests/xenserver/models/compute/vif_tests.rb +0 -53
  331. data/tests/xenserver/models/compute/vifs_tests.rb +0 -22
  332. data/tests/xenserver/models/compute/vlan_tests.rb +0 -76
  333. data/tests/xenserver/models/compute/vlans_tests.rb +0 -36
  334. data/tests/xenserver/requests/compute/clone_server_tests.rb +0 -32
  335. data/tests/xenserver/requests/compute/create_network_tests.rb +0 -20
  336. data/tests/xenserver/requests/compute/create_server_tests.rb +0 -129
  337. data/tests/xenserver/requests/compute/create_sr_tests.rb +0 -54
  338. data/tests/xenserver/requests/compute/create_vdi_tests.rb +0 -80
  339. data/tests/xenserver/requests/compute/create_vif_tests.rb +0 -88
  340. data/tests/xenserver/requests/compute/create_vlan_tests.rb +0 -36
  341. data/tests/xenserver/requests/compute/destroy_network_tests.rb +0 -13
  342. data/tests/xenserver/requests/compute/destroy_sr_tests.rb +0 -46
  343. data/tests/xenserver/requests/compute/destroy_vdi_tests.rb +0 -25
  344. data/tests/xenserver/requests/compute/destroy_vlan_tests.rb +0 -36
  345. data/tests/xenserver/requests/compute/disable_host_tests.rb +0 -16
  346. data/tests/xenserver/requests/compute/enable_host_tests.rb +0 -16
  347. data/tests/xenserver/requests/compute/get_record_tests.rb +0 -15
  348. data/tests/xenserver/requests/compute/set_attribute_tests.rb +0 -66
  349. data/tests/xenserver/requests/compute/unplug_pbd_tests.rb +0 -48
  350. data/tests/xenserver/xenserver_tests.rb +0 -33
@@ -0,0 +1,44 @@
1
+ module Fog
2
+ module Compute
3
+ class DigitalOceanV2
4
+ class Real
5
+ def upgrade(id)
6
+ body = { :type => "upgrade" }
7
+
8
+ encoded_body = Fog::JSON.encode(body)
9
+
10
+ request(
11
+ :expects => [201],
12
+ :headers => {
13
+ 'Content-Type' => "application/json; charset=UTF-8",
14
+ },
15
+ :method => 'POST',
16
+ :path => "v2/droplets/#{id}/actions",
17
+ :body => encoded_body,
18
+ )
19
+ end
20
+ end
21
+
22
+ class Mock
23
+ def upgrade(id)
24
+ response = Excon::Response.new
25
+ response.status = 201
26
+ response.body = {
27
+ 'action' => {
28
+ 'id' => Fog::Mock.random_numbers(1).to_i,
29
+ 'status' => "in-progress",
30
+ 'type' => "upgrade",
31
+ 'started_at' => "2014-11-14T16:31:00Z",
32
+ 'completed_at' => null,
33
+ 'resource_id' => id,
34
+ 'resource_type' => "droplet",
35
+ 'region' => "nyc3",
36
+ 'region_slug' => "nyc3"
37
+ }
38
+ }
39
+ response
40
+ end
41
+ end
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,51 @@
1
+ module Fog
2
+ module DigitalOcean
3
+ class Service
4
+
5
+ def request(params, parse_json = true)
6
+ first_attempt = true
7
+ begin
8
+ response = @connection.request(request_params(params))
9
+ rescue Excon::Errors::Unauthorized => error
10
+ raise error unless first_attempt
11
+ first_attempt = false
12
+ authenticate
13
+ retry
14
+ end
15
+
16
+ process_response(response) if parse_json
17
+ response
18
+ end
19
+
20
+ private
21
+
22
+ def process_response(response)
23
+ if response &&
24
+ response.body &&
25
+ response.body.is_a?(String) &&
26
+ !response.body.strip.empty?
27
+ begin
28
+ response.body = Fog::JSON.decode(response.body)
29
+ rescue Fog::JSON::DecodeError => e
30
+ Fog::Logger.warning("Error Parsing response json - #{e}")
31
+ response.body = {}
32
+ end
33
+ end
34
+ end
35
+
36
+ def headers(options={})
37
+ {'Content-Type' => 'application/json',
38
+ 'Accept' => 'application/json',
39
+ }.merge(options[:headers] || {})
40
+ end
41
+
42
+ def request_params(params)
43
+ params.merge({
44
+ :headers => headers(params),
45
+ :path => "#{params[:path]}"
46
+ })
47
+ end
48
+
49
+ end
50
+ end
51
+ end
@@ -12,7 +12,7 @@ module Fog
12
12
  end
13
13
 
14
14
  def get(id)
15
- new kernels(id).first
15
+ new kernels(id).select {|kernel| kernel[:id] == id }.first
16
16
  rescue Fog::Compute::Linode::NotFound
17
17
  nil
18
18
  end
@@ -48,24 +48,24 @@ module Fog
48
48
  return "CPU=#{vcpu.to_f/10}\n" unless cpu
49
49
  return "CPU=#{vcpu}\n" if cpu.to_i > vcpu.to_i
50
50
  "CPU=#{cpu}\n"
51
- end
51
+ end
52
52
 
53
53
  def get_vcpu
54
54
  self.vcpu = 1 unless vcpu
55
55
  "VCPU=#{vcpu}\n"
56
- end
56
+ end
57
57
 
58
58
  def get_memory
59
59
  self.memory = 128 unless memory
60
60
  "MEMORY=#{memory}\n"
61
- end
61
+ end
62
62
 
63
63
  def get_raw
64
64
  return "" unless raw
65
65
  ret = "RAW=#{raw}\n"
66
66
  ret.gsub!(/\{/, '[')
67
67
  ret.gsub!(/\}/, ']')
68
- ret.gsub!(/>/,'')
68
+ ret.gsub!(/=>/,'=')
69
69
  ret
70
70
  end
71
71
 
@@ -82,7 +82,7 @@ module Fog
82
82
  ret.gsub!(/\{/, '[')
83
83
  ret.gsub!(/\}/, ']')
84
84
  ret.gsub!(/>/,'')
85
- ret
85
+ ret
86
86
  end
87
87
 
88
88
  def get_os
@@ -91,16 +91,16 @@ module Fog
91
91
  ret.gsub!(/\{/, '[')
92
92
  ret.gsub!(/\}/, ']')
93
93
  ret.gsub!(/>/,'')
94
- ret
94
+ ret
95
95
  end
96
96
 
97
97
  def get_graphics
98
- return "" unless graphics
98
+ return "" unless graphics
99
99
  ret = "GRAPHICS=#{graphics}\n"
100
100
  ret.gsub!(/\{/, '[')
101
101
  ret.gsub!(/\}/, ']')
102
102
  ret.gsub!(/>/,'')
103
- ret
103
+ ret
104
104
  end
105
105
 
106
106
  def get_nic
@@ -115,26 +115,26 @@ module Fog
115
115
  #ret.gsub!(/\{/, '[')
116
116
  #ret.gsub!(/\}/, ']')
117
117
  #ret.gsub!(/>/,'')
118
- ret
118
+ ret
119
119
  end
120
120
 
121
121
  def get_sched_ds_requirements
122
- return "" unless sched_ds_requirements
122
+ return "" unless sched_ds_requirements
123
123
  %Q|SCHED_DS_REQUIREMENTS="#{sched_ds_requirements.gsub(/"/){ %q(\") }}"\n|
124
124
  end
125
125
 
126
126
  def get_sched_ds_rank
127
- return "" unless sched_ds_rank
127
+ return "" unless sched_ds_rank
128
128
  %Q|SCHED_DS_RANK="#{sched_ds_rank.gsub(/"/){ %q(\") }}"\n|
129
129
  end
130
130
 
131
131
  def get_sched_requirements
132
- return "" unless sched_requirements
132
+ return "" unless sched_requirements
133
133
  %Q|SCHED_REQUIREMENTS="#{sched_requirements.gsub(/"/){ %q(\") }}"\n|
134
134
  end
135
135
 
136
136
  def get_sched_rank
137
- return "" unless sched_rank
137
+ return "" unless sched_rank
138
138
  %Q|SCHED_RANK="#{sched_rank.gsub(/"/){ %q(\") }}"\n|
139
139
  end
140
140
 
@@ -21,6 +21,9 @@
21
21
  # OS=[
22
22
  # ARCH="x86_64",
23
23
  # BOOT="network,hd" ]
24
+ # RAW=[
25
+ # DATA="<cpu match='exact'><model fallback='allow'>core2duo</model></cpu>",
26
+ # TYPE="kvm" ]
24
27
 
25
28
 
26
29
  module Fog
@@ -37,7 +40,7 @@ module Fog
37
40
  templates.info!(-2, filter[:id], filter[:id])
38
41
  end # if filter[:id].nil?
39
42
 
40
- templates = templates.map do |t|
43
+ templates = templates.map do |t|
41
44
  # filtering by name
42
45
  # done here, because OpenNebula:TemplatePool does not support something like .delete_if
43
46
  if filter[:name] && filter[:name].is_a?(String) && !filter[:name].empty?
@@ -51,8 +54,8 @@ module Fog
51
54
  end
52
55
 
53
56
  h = Hash[
54
- :id => t.to_hash["VMTEMPLATE"]["ID"],
55
- :name => t.to_hash["VMTEMPLATE"]["NAME"],
57
+ :id => t.to_hash["VMTEMPLATE"]["ID"],
58
+ :name => t.to_hash["VMTEMPLATE"]["NAME"],
56
59
  :content => t.template_str,
57
60
  :USER_VARIABLES => "" # Default if not set in template
58
61
  ]
@@ -67,7 +70,7 @@ module Fog
67
70
  vnet = networks.get(n["NETWORK_ID"].to_s)
68
71
  elsif n["NETWORK"]
69
72
  vnet = networks.get_by_name(n["NETWORK"].to_s)
70
- else
73
+ else
71
74
  next
72
75
  end
73
76
  h["NIC"] << interfaces.new({ :vnet => vnet, :model => n["MODEL"] || "virtio" })
@@ -87,15 +90,15 @@ module Fog
87
90
  else
88
91
  # should i break?
89
92
  end
90
-
93
+
91
94
  # every key should be lowercase
92
95
  ret_hash = {}
93
- h.each_pair do |k,v|
94
- ret_hash.merge!({k.downcase => v})
96
+ h.each_pair do |k,v|
97
+ ret_hash.merge!({k.downcase => v})
95
98
  end
96
99
  ret_hash
97
100
  end
98
-
101
+
99
102
  templates.delete nil
100
103
  raise Fog::Compute::OpenNebula::NotFound, "Flavor/Template not found" if templates.empty?
101
104
  templates
@@ -107,7 +110,7 @@ module Fog
107
110
  nic1 = Mock_nic.new
108
111
  nic1.vnet = networks.first
109
112
 
110
- [
113
+ [
111
114
  {
112
115
  :content => %Q{
113
116
  NAME = mock-vm
@@ -131,14 +134,14 @@ module Fog
131
134
  'ARCH' => 'x86_64'
132
135
  },
133
136
  :graphics => {},
134
- :raw => {},
137
+ :raw => %|["DATA"=>"<cpu match='exact'><model fallback='allow'>core2duo</model></cpu>", "TYPE"=>"kvm"]|,
135
138
  :context => {},
136
139
  :user_variables => {}
137
140
  }
138
141
  ]
139
142
  end
140
143
 
141
- class Mock_nic
144
+ class Mock_nic
142
145
  attr_accessor :vnet
143
146
 
144
147
  def id
@@ -2,6 +2,8 @@ require 'fog/openstack/compute'
2
2
  require 'fog/openstack/identity_v2'
3
3
  require 'fog/openstack/identity_v3'
4
4
  require 'fog/openstack/image'
5
+ require 'fog/openstack/image_v1'
6
+ require 'fog/openstack/image_v2'
5
7
  require 'fog/openstack/metering'
6
8
  require 'fog/openstack/network'
7
9
  require 'fog/openstack/orchestration'
@@ -297,7 +297,7 @@ module Fog
297
297
 
298
298
  token, body = retrieve_tokens_v3 options, connection_options
299
299
 
300
- service = get_service_v3(body, service_type, service_name, openstack_region)
300
+ service = get_service_v3(body, service_type, service_name, openstack_region, options)
301
301
 
302
302
  options[:unscoped_token] = token
303
303
 
@@ -359,7 +359,7 @@ module Fog
359
359
  raise Fog::Errors::NotFound.new("Multiple regions available choose one of these '#{regions.join(',')}'")
360
360
  end
361
361
 
362
- identity_service = get_service_v3(body, identity_service_type, nil, nil, :endpoint_path_matches => /\/v3/) if identity_service_type
362
+ identity_service = get_service_v3(body, identity_service_type, nil, nil, :openstack_endpoint_path_matches => /\/v3/) if identity_service_type
363
363
 
364
364
  management_url = service['endpoints'].find { |e| e['interface']==endpoint_type }['url']
365
365
  identity_url = identity_service['endpoints'].find { |e| e['interface']=='public' }['url'] if identity_service
@@ -532,7 +532,7 @@ module Fog
532
532
 
533
533
  # Filter the found services by region (if specified) and whether the endpoint path matches the given regex (e.g. /\/v3/)
534
534
  services.find do |s|
535
- s['endpoints'].any? { |ep| endpoint_region?(ep, region) && endpoint_path_match?(ep, options[:endpoint_path_matches])}
535
+ s['endpoints'].any? { |ep| endpoint_region?(ep, region) && endpoint_path_match?(ep, options[:openstack_endpoint_path_matches])}
536
536
  end if services
537
537
 
538
538
  end
@@ -572,6 +572,33 @@ module Fog
572
572
  version
573
573
  end
574
574
 
575
+ def self.get_supported_version_path(supported_versions, uri, auth_token, connection_options = {})
576
+ connection = Fog::Core::Connection.new("#{uri.scheme}://#{uri.host}:#{uri.port}", false, connection_options)
577
+ response = connection.request({
578
+ :expects => [200, 204, 300],
579
+ :headers => {'Content-Type' => 'application/json',
580
+ 'Accept' => 'application/json',
581
+ 'X-Auth-Token' => auth_token},
582
+ :method => 'GET'
583
+ })
584
+
585
+ body = Fog::JSON.decode(response.body)
586
+ path = nil
587
+ unless body['versions'].empty?
588
+ supported_version = body['versions'].find do |x|
589
+ x["id"].match(supported_versions) &&
590
+ (x["status"] == "CURRENT" || x["status"] == "SUPPORTED")
591
+ end
592
+ path = URI.parse(supported_version['links'].first['href']).path if supported_version
593
+ end
594
+ if path.nil?
595
+ raise Fog::OpenStack::Errors::ServiceUnavailable.new(
596
+ "OpenStack service only supports API versions #{supported_versions.inspect}")
597
+ end
598
+
599
+ path.chomp '/'
600
+ end
601
+
575
602
  # CGI.escape, but without special treatment on spaces
576
603
  def self.escape(str, extra_exclude_chars = '')
577
604
  str.gsub(/([^a-zA-Z0-9_.-#{extra_exclude_chars}]+)/) do
@@ -7,20 +7,21 @@ module Fog
7
7
  # Fog::Identity::OpenStack.new() will return a Fog::Identity::OpenStack::V2 or a Fog::Identity::OpenStack::V3,
8
8
  # depending on whether the auth URL is for an OpenStack Identity V2 or V3 API endpoint
9
9
  def self.new(args = {})
10
+ @openstack_auth_uri = URI.parse(args[:openstack_auth_url]) if args[:openstack_auth_url]
10
11
  if self.inspect == 'Fog::Identity::OpenStack'
11
- if args[:openstack_auth_url]
12
- @openstack_auth_uri = URI.parse(args[:openstack_auth_url])
13
- if @openstack_auth_uri.path =~ /\/v3/
14
- service = Fog::Identity::OpenStack::V3.new(args)
15
- end
16
- end
17
- service ||= Fog::Identity::OpenStack::V2.new(args)
12
+ service = (is_v3? args) ? Fog::Identity::OpenStack::V3.new(args) : Fog::Identity::OpenStack::V2.new(args)
18
13
  else
19
14
  service = Fog::Service.new(args)
20
15
  end
21
16
  service
22
17
  end
23
18
 
19
+ private
20
+
21
+ def self.is_v3?(args)
22
+ @openstack_auth_uri && @openstack_auth_uri.path =~ /\/v3/
23
+ end
24
+
24
25
  module Common
25
26
  attr_reader :unscoped_token
26
27
 
@@ -160,6 +160,7 @@ module Fog
160
160
 
161
161
  @openstack_endpoint_type = options[:openstack_endpoint_type] || 'adminURL'
162
162
 
163
+ @openstack_endpoint_path_matches = options[:openstack_endpoint_path_matches] ||= /\/v3/
163
164
  authenticate
164
165
 
165
166
  @persistent = options[:persistent] || false
@@ -3,154 +3,59 @@ require 'fog/openstack/core'
3
3
  module Fog
4
4
  module Image
5
5
  class OpenStack < Fog::Service
6
- SUPPORTED_VERSIONS = /v1(\.(0|1))*/
7
6
 
8
- requires :openstack_auth_url
9
- recognizes :openstack_auth_token, :openstack_management_url,
10
- :persistent, :openstack_service_type, :openstack_service_name,
11
- :openstack_tenant, :openstack_tenant_id,
12
- :openstack_api_key, :openstack_username, :openstack_identity_endpoint,
13
- :current_user, :current_tenant, :openstack_region,
14
- :openstack_endpoint_type,
15
- :openstack_project_name, :openstack_project_id,
16
- :openstack_project_domain, :openstack_user_domain, :openstack_domain_name,
17
- :openstack_project_domain_id, :openstack_user_domain_id, :openstack_domain_id
18
-
19
- model_path 'fog/openstack/models/image'
20
-
21
- model :image
22
- collection :images
23
-
24
- request_path 'fog/openstack/requests/image'
25
-
26
- request :list_public_images
27
- request :list_public_images_detailed
28
- request :get_image
29
- request :create_image
30
- request :update_image
31
- request :get_image_members
32
- request :update_image_members
33
- request :get_shared_images
34
- request :add_member_to_image
35
- request :remove_member_from_image
36
- request :delete_image
37
- request :get_image_by_id
38
- request :set_tenant
39
-
40
- class Mock
41
- def self.data
42
- @data ||= Hash.new do |hash, key|
43
- hash[key] = {
44
- :images => {}
45
- }
46
- end
47
- end
48
-
49
- def self.reset
50
- @data = nil
51
- end
52
-
53
- def initialize(options={})
54
- @openstack_username = options[:openstack_username]
55
- @openstack_tenant = options[:openstack_tenant]
56
- @openstack_auth_uri = URI.parse(options[:openstack_auth_url])
57
-
58
- @auth_token = Fog::Mock.random_base64(64)
59
- @auth_token_expiration = (Time.now.utc + 86400).iso8601
60
-
61
- management_url = URI.parse(options[:openstack_auth_url])
62
- management_url.port = 9292
63
- management_url.path = '/v1'
64
- @openstack_management_url = management_url.to_s
65
-
66
- @data ||= { :users => {} }
67
- unless @data[:users].find {|u| u['name'] == options[:openstack_username]}
68
- id = Fog::Mock.random_numbers(6).to_s
69
- @data[:users][id] = {
70
- 'id' => id,
71
- 'name' => options[:openstack_username],
72
- 'email' => "#{options[:openstack_username]}@mock.com",
73
- 'tenantId' => Fog::Mock.random_numbers(6).to_s,
74
- 'enabled' => true
75
- }
76
- end
77
- end
78
-
79
- def data
80
- self.class.data[@openstack_username]
81
- end
82
-
83
- def reset_data
84
- self.class.data.delete(@openstack_username)
85
- end
86
-
87
- def credentials
88
- { :provider => 'openstack',
89
- :openstack_auth_url => @openstack_auth_uri.to_s,
90
- :openstack_auth_token => @auth_token,
91
- :openstack_region => @openstack_region,
92
- :openstack_management_url => @openstack_management_url }
93
- end
7
+ # Fog::Image::OpenStack.new() will return a Fog::Image::OpenStack::V2 or a Fog::Image::OpenStack::V3,
8
+ # choosing the latest available
9
+ def self.new(args = {})
10
+ @openstack_auth_uri = URI.parse(args[:openstack_auth_url]) if args[:openstack_auth_url]
11
+ if self.inspect == 'Fog::Image::OpenStack'
12
+ service = Fog::Image::OpenStack::V2.new(args) unless args.empty?
13
+ service ||= Fog::Image::OpenStack::V1.new(args)
14
+ else
15
+ service = Fog::Service.new(args)
16
+ end
17
+ service
94
18
  end
95
19
 
96
- class Real
97
- include Fog::OpenStack::Core
98
-
99
- def initialize(options={})
100
- initialize_identity options
101
-
102
- @openstack_service_type = options[:openstack_service_type] || ['image']
103
- @openstack_service_name = options[:openstack_service_name]
104
- @openstack_endpoint_type = options[:openstack_endpoint_type] || 'adminURL'
105
-
106
- @connection_options = options[:connection_options] || {}
107
-
108
- authenticate
109
-
110
- unless @path.match(SUPPORTED_VERSIONS)
111
- @path = "/" + Fog::OpenStack.get_supported_version(SUPPORTED_VERSIONS,
112
- @openstack_management_uri,
113
- @auth_token,
114
- @connection_options)
115
- end
20
+ module Common
21
+ attr_reader :unscoped_token
116
22
 
117
- @persistent = options[:persistent] || false
118
- @connection = Fog::Core::Connection.new("#{@scheme}://#{@host}:#{@port}", @persistent, @connection_options)
119
- end
23
+ include Fog::OpenStack::Core
120
24
 
121
25
  def request(params)
26
+ retried = false
122
27
  begin
123
- response = @connection.request(params.merge({
124
- :headers => {
28
+ std_headers = {
125
29
  'Content-Type' => 'application/json',
30
+ 'Accept' => 'application/json',
126
31
  'X-Auth-Token' => @auth_token
127
- }.merge!(params[:headers] || {}),
128
- :path => "#{@path}/#{params[:path]}"#,
32
+ }
33
+ param_headers = params.fetch(:headers,{})
34
+
35
+ response = @connection.request(params.merge({
36
+ :headers => std_headers.merge(param_headers),
37
+ :path => "#{@path}/#{params[:path]}"
129
38
  }))
130
39
  rescue Excon::Errors::Unauthorized => error
131
- if error.response.body != 'Bad username or password' # token expiration
132
- @openstack_must_reauthenticate = true
133
- authenticate
134
- retry
135
- else # bad credentials
136
- raise error
137
- end
40
+ raise if retried
41
+ retried = true
42
+
43
+ @openstack_must_reauthenticate = true
44
+ authenticate
45
+ retry
138
46
  rescue Excon::Errors::HTTPStatusError => error
139
47
  raise case error
140
- when Excon::Errors::NotFound
141
- Fog::Compute::OpenStack::NotFound.slurp(error)
142
- else
143
- error
144
- end
48
+ when Excon::Errors::NotFound
49
+ Fog::Image::OpenStack::NotFound.slurp(error)
50
+ else
51
+ error
52
+ end
145
53
  end
146
54
  unless response.body.empty?
147
- response.body = Fog::JSON.decode(response.body)
55
+ response.body = Fog::JSON.decode(response.body) unless params[:raw_body]
148
56
  end
149
57
  response
150
58
  end
151
-
152
- private
153
-
154
59
  end
155
60
  end
156
61
  end