aviator 0.0.7 → 0.0.8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (576) hide show
  1. checksums.yaml +5 -13
  2. data/.travis.yml +1 -8
  3. data/Gemfile +1 -0
  4. data/LICENSE.txt +2 -2
  5. data/README.md +2 -3
  6. data/aviator.gemspec +1 -8
  7. data/lib/aviator/core/cli/describer.rb +1 -1
  8. data/lib/aviator/core/request_builder.rb +19 -6
  9. data/lib/aviator/core/response.rb +6 -1
  10. data/lib/aviator/core/service.rb +15 -68
  11. data/lib/aviator/core/session.rb +31 -22
  12. data/lib/aviator/{compatibility.rb → core/utils/compatibility.rb} +0 -0
  13. data/lib/aviator/{hashish.rb → core/utils/hashish.rb} +19 -3
  14. data/lib/aviator/core/utils/string.rb +24 -0
  15. data/lib/aviator/core.rb +4 -3
  16. data/lib/aviator/openstack/common/requests/v0/public/base.rb +119 -0
  17. data/lib/aviator/openstack/common/{v2 → requests/v2}/admin/base.rb +0 -0
  18. data/lib/aviator/openstack/common/requests/v2/public/base.rb +9 -0
  19. data/lib/aviator/openstack/common/requests/v3/public/base.rb +9 -0
  20. data/lib/aviator/openstack/compute/{v2 → requests/v2}/admin/confirm_server_resize.rb +0 -0
  21. data/lib/aviator/openstack/compute/{v2 → requests/v2}/admin/create_network.rb +0 -0
  22. data/lib/aviator/openstack/compute/{v2 → requests/v2}/admin/get_host_details.rb +0 -0
  23. data/lib/aviator/openstack/compute/{v2 → requests/v2}/admin/list_hosts.rb +0 -0
  24. data/lib/aviator/openstack/compute/{v2 → requests/v2}/admin/lock_server.rb +0 -0
  25. data/lib/aviator/openstack/compute/{v2 → requests/v2}/admin/migrate_server.rb +0 -0
  26. data/lib/aviator/openstack/compute/{v2 → requests/v2}/admin/reset_server.rb +0 -0
  27. data/lib/aviator/openstack/compute/{v2 → requests/v2}/admin/resize_server.rb +0 -0
  28. data/lib/aviator/openstack/compute/{v2 → requests/v2}/admin/revert_server_resize.rb +2 -2
  29. data/lib/aviator/openstack/compute/{v2 → requests/v2}/admin/unlock_server.rb +0 -0
  30. data/lib/aviator/openstack/compute/{v2 → requests/v2}/public/change_admin_password.rb +0 -0
  31. data/lib/aviator/openstack/compute/{v2 → requests/v2}/public/create_image.rb +0 -0
  32. data/lib/aviator/openstack/compute/{v2 → requests/v2}/public/create_server.rb +0 -0
  33. data/lib/aviator/openstack/compute/{v2 → requests/v2}/public/delete_image.rb +0 -0
  34. data/lib/aviator/openstack/compute/{v2 → requests/v2}/public/delete_image_metadata_item.rb +0 -0
  35. data/lib/aviator/openstack/compute/{v2 → requests/v2}/public/delete_server.rb +0 -0
  36. data/lib/aviator/openstack/compute/{v2 → requests/v2}/public/delete_server_metadata_item.rb +0 -0
  37. data/lib/aviator/openstack/compute/{v2 → requests/v2}/public/get_flavor_details.rb +0 -0
  38. data/lib/aviator/openstack/compute/{v2 → requests/v2}/public/get_image_details.rb +0 -0
  39. data/lib/aviator/openstack/compute/{v2 → requests/v2}/public/get_image_metadata_item.rb +0 -0
  40. data/lib/aviator/openstack/compute/{v2 → requests/v2}/public/get_network_details.rb +0 -0
  41. data/lib/aviator/openstack/compute/{v2 → requests/v2}/public/get_server.rb +0 -0
  42. data/lib/aviator/openstack/compute/{v2 → requests/v2}/public/get_server_metadata_item.rb +0 -0
  43. data/lib/aviator/openstack/compute/{v2 → requests/v2}/public/list_addresses.rb +0 -0
  44. data/lib/aviator/openstack/compute/{v2 → requests/v2}/public/list_flavors.rb +0 -0
  45. data/lib/aviator/openstack/compute/{v2 → requests/v2}/public/list_image_metadata.rb +0 -0
  46. data/lib/aviator/openstack/compute/{v2 → requests/v2}/public/list_images.rb +0 -0
  47. data/lib/aviator/openstack/compute/{v2 → requests/v2}/public/list_networks.rb +0 -0
  48. data/lib/aviator/openstack/compute/{v2 → requests/v2}/public/list_server_metadata.rb +0 -0
  49. data/lib/aviator/openstack/compute/{v2 → requests/v2}/public/list_servers.rb +0 -0
  50. data/lib/aviator/openstack/compute/{v2 → requests/v2}/public/pause_server.rb +0 -0
  51. data/lib/aviator/openstack/compute/{v2 → requests/v2}/public/reboot_server.rb +0 -0
  52. data/lib/aviator/openstack/compute/{v2 → requests/v2}/public/rebuild_server.rb +0 -0
  53. data/lib/aviator/openstack/compute/{v2 → requests/v2}/public/resume_server.rb +0 -0
  54. data/lib/aviator/openstack/compute/{v2 → requests/v2}/public/root.rb +0 -0
  55. data/lib/aviator/openstack/compute/{v2 → requests/v2}/public/set_image_metadata.rb +0 -0
  56. data/lib/aviator/openstack/compute/{v2 → requests/v2}/public/set_server_metadata.rb +0 -0
  57. data/lib/aviator/openstack/compute/{v2 → requests/v2}/public/suspend_server.rb +0 -0
  58. data/lib/aviator/openstack/compute/{v2 → requests/v2}/public/unpause_server.rb +0 -0
  59. data/lib/aviator/openstack/compute/{v2 → requests/v2}/public/update_image_metadata.rb +0 -0
  60. data/lib/aviator/openstack/compute/{v2 → requests/v2}/public/update_server.rb +0 -0
  61. data/lib/aviator/openstack/compute/{v2 → requests/v2}/public/update_server_metadata.rb +0 -0
  62. data/lib/aviator/openstack/identity/{v2 → requests/v2}/admin/add_role_to_user_on_tenant.rb +0 -0
  63. data/lib/aviator/openstack/identity/{v2 → requests/v2}/admin/create_tenant.rb +0 -0
  64. data/lib/aviator/openstack/identity/{v2 → requests/v2}/admin/create_user.rb +2 -2
  65. data/lib/aviator/openstack/identity/{v2 → requests/v2}/admin/delete_role_from_user_on_tenant.rb +0 -0
  66. data/lib/aviator/openstack/identity/{v2 → requests/v2}/admin/delete_tenant.rb +0 -0
  67. data/lib/aviator/openstack/identity/{v2 → requests/v2}/admin/delete_user.rb +2 -2
  68. data/lib/aviator/openstack/identity/{v2 → requests/v2}/admin/get_tenant_by_id.rb +0 -0
  69. data/lib/aviator/openstack/identity/{v2 → requests/v2}/admin/list_tenants.rb +0 -0
  70. data/lib/aviator/openstack/identity/{v2 → requests/v2}/admin/list_users.rb +2 -2
  71. data/lib/aviator/openstack/identity/{v2 → requests/v2}/admin/update_tenant.rb +1 -1
  72. data/lib/aviator/openstack/identity/{v2 → requests/v2}/admin/update_user.rb +2 -2
  73. data/lib/aviator/openstack/identity/{v2 → requests/v2}/public/create_token.rb +0 -0
  74. data/lib/aviator/openstack/identity/{v2 → requests/v2}/public/list_tenants.rb +0 -0
  75. data/lib/aviator/openstack/identity/{v2 → requests/v2}/public/root.rb +0 -0
  76. data/lib/aviator/openstack/identity/requests/v3/public/create_token.rb +126 -0
  77. data/lib/aviator/openstack/image/{v1 → requests/v1}/public/list_public_images.rb +0 -0
  78. data/lib/aviator/openstack/image/{v1 → requests/v1}/public/root.rb +0 -0
  79. data/lib/aviator/openstack/metering/{v1 → requests/v1}/admin/list_projects.rb +0 -0
  80. data/lib/aviator/openstack/provider.rb +131 -0
  81. data/lib/aviator/openstack/volume/{v1 → requests/v1}/public/create_volume.rb +0 -0
  82. data/lib/aviator/openstack/volume/{v1 → requests/v1}/public/delete_volume.rb +0 -0
  83. data/lib/aviator/openstack/volume/{v1 → requests/v1}/public/get_volume.rb +0 -0
  84. data/lib/aviator/openstack/volume/{v1 → requests/v1}/public/list_volume_types.rb +0 -0
  85. data/lib/aviator/openstack/volume/{v1 → requests/v1}/public/list_volumes.rb +0 -0
  86. data/lib/aviator/openstack/volume/{v1 → requests/v1}/public/root.rb +0 -0
  87. data/lib/aviator/openstack/volume/{v1 → requests/v1}/public/update_volume.rb +0 -0
  88. data/lib/aviator/version.rb +1 -1
  89. data/lib/aviator.rb +1 -0
  90. data/test/aviator/core/cli/describer_test.rb +1 -1
  91. data/test/aviator/core/request_builder_test.rb +12 -11
  92. data/test/aviator/core/request_test.rb +125 -125
  93. data/test/aviator/core/service_test.rb +17 -73
  94. data/test/aviator/core/session_test.rb +8 -8
  95. data/test/aviator/openstack/common/requests/v0/public/base_test.rb +172 -0
  96. data/test/aviator/openstack/compute/{v2 → requests/v2}/admin/confirm_server_resize_test.rb +5 -5
  97. data/test/aviator/openstack/compute/{v2 → requests/v2}/admin/create_network_test.rb +4 -5
  98. data/test/aviator/openstack/compute/{v2 → requests/v2}/admin/get_host_details_test.rb +4 -4
  99. data/test/aviator/openstack/compute/{v2 → requests/v2}/admin/list_hosts_test.rb +4 -4
  100. data/test/aviator/openstack/compute/{v2 → requests/v2}/admin/lock_server_test.rb +4 -4
  101. data/test/aviator/openstack/compute/{v2 → requests/v2}/admin/migrate_server_test.rb +4 -4
  102. data/test/aviator/openstack/compute/{v2 → requests/v2}/admin/reset_server_test.rb +4 -4
  103. data/test/aviator/openstack/compute/{v2 → requests/v2}/admin/resize_server_test.rb +5 -5
  104. data/test/aviator/openstack/compute/{v2 → requests/v2}/admin/revert_server_resize_test.rb +5 -5
  105. data/test/aviator/openstack/compute/{v2 → requests/v2}/admin/unlock_server_test.rb +4 -4
  106. data/test/aviator/openstack/compute/{v2 → requests/v2}/public/change_admin_password_test.rb +4 -4
  107. data/test/aviator/openstack/compute/{v2 → requests/v2}/public/create_image_test.rb +4 -4
  108. data/test/aviator/openstack/compute/{v2 → requests/v2}/public/create_server_test.rb +4 -4
  109. data/test/aviator/openstack/compute/{v2 → requests/v2}/public/delete_image_metadata_item_test.rb +4 -4
  110. data/test/aviator/openstack/compute/{v2 → requests/v2}/public/delete_image_test.rb +4 -4
  111. data/test/aviator/openstack/compute/{v2 → requests/v2}/public/delete_server_metadata_item_test.rb +4 -4
  112. data/test/aviator/openstack/compute/{v2 → requests/v2}/public/delete_server_test.rb +4 -4
  113. data/test/aviator/openstack/compute/{v2 → requests/v2}/public/get_flavor_details_test.rb +4 -4
  114. data/test/aviator/openstack/compute/{v2 → requests/v2}/public/get_image_details_test.rb +4 -4
  115. data/test/aviator/openstack/compute/{v2 → requests/v2}/public/get_image_metadata_item_test.rb +4 -4
  116. data/test/aviator/openstack/compute/{v2 → requests/v2}/public/get_network_details_test.rb +4 -4
  117. data/test/aviator/openstack/compute/{v2 → requests/v2}/public/get_server_metadata_item_test.rb +4 -4
  118. data/test/aviator/openstack/compute/{v2 → requests/v2}/public/get_server_test.rb +4 -4
  119. data/test/aviator/openstack/compute/{v2 → requests/v2}/public/list_addresses_test.rb +4 -4
  120. data/test/aviator/openstack/compute/{v2 → requests/v2}/public/list_flavors_test.rb +4 -4
  121. data/test/aviator/openstack/compute/{v2 → requests/v2}/public/list_image_metadata_test.rb +4 -4
  122. data/test/aviator/openstack/compute/{v2 → requests/v2}/public/list_images_test.rb +7 -4
  123. data/test/aviator/openstack/compute/{v2 → requests/v2}/public/list_networks_test.rb +4 -4
  124. data/test/aviator/openstack/compute/{v2 → requests/v2}/public/list_server_metadata_test.rb +4 -4
  125. data/test/aviator/openstack/compute/{v2 → requests/v2}/public/list_servers_test.rb +8 -5
  126. data/test/aviator/openstack/compute/{v2 → requests/v2}/public/pause_server_test.rb +4 -4
  127. data/test/aviator/openstack/compute/{v2 → requests/v2}/public/reboot_server_test.rb +4 -4
  128. data/test/aviator/openstack/compute/{v2 → requests/v2}/public/rebuild_server_test.rb +4 -4
  129. data/test/aviator/openstack/compute/{v2 → requests/v2}/public/resume_server_test.rb +4 -4
  130. data/test/aviator/openstack/compute/{v2 → requests/v2}/public/root_test.rb +4 -4
  131. data/test/aviator/openstack/compute/{v2 → requests/v2}/public/set_image_metadata_test.rb +4 -4
  132. data/test/aviator/openstack/compute/{v2 → requests/v2}/public/set_server_metadata_test.rb +4 -4
  133. data/test/aviator/openstack/compute/{v2 → requests/v2}/public/suspend_server_test.rb +4 -4
  134. data/test/aviator/openstack/compute/{v2 → requests/v2}/public/unpause_server_test.rb +4 -4
  135. data/test/aviator/openstack/compute/{v2 → requests/v2}/public/update_image_metadata_test.rb +4 -4
  136. data/test/aviator/openstack/compute/{v2 → requests/v2}/public/update_server_metadata_test.rb +4 -4
  137. data/test/aviator/openstack/compute/{v2 → requests/v2}/public/update_server_test.rb +4 -4
  138. data/test/aviator/openstack/identity/{v2 → requests/v2}/admin/add_role_to_user_on_tenant_test.rb +4 -4
  139. data/test/aviator/openstack/identity/{v2 → requests/v2}/admin/create_tenant_test.rb +16 -13
  140. data/test/aviator/openstack/identity/{v2 → requests/v2}/admin/create_user_test.rb +4 -4
  141. data/test/aviator/openstack/identity/{v2 → requests/v2}/admin/delete_role_from_user_on_tenant_test.rb +4 -4
  142. data/test/aviator/openstack/identity/{v2 → requests/v2}/admin/delete_tenant_test.rb +4 -4
  143. data/test/aviator/openstack/identity/{v2 → requests/v2}/admin/delete_user_test.rb +4 -4
  144. data/test/aviator/openstack/identity/{v2 → requests/v2}/admin/get_tenant_by_id_test.rb +4 -4
  145. data/test/aviator/openstack/identity/requests/v2/admin/list_tenants_test.rb +131 -0
  146. data/test/aviator/openstack/identity/{v2 → requests/v2}/admin/list_users_test.rb +4 -4
  147. data/test/aviator/openstack/identity/{v2 → requests/v2}/admin/update_tenant_test.rb +4 -4
  148. data/test/aviator/openstack/identity/{v2 → requests/v2}/admin/update_user_test.rb +4 -4
  149. data/test/aviator/openstack/identity/{v2 → requests/v2}/public/create_token_test.rb +1 -1
  150. data/test/aviator/openstack/identity/{v2 → requests/v2}/public/list_tenants_test.rb +4 -4
  151. data/test/aviator/openstack/identity/{v2 → requests/v2}/public/root_test.rb +4 -4
  152. data/test/aviator/openstack/identity/requests/v3/public/create_token_test.rb +188 -0
  153. data/test/aviator/openstack/image/{v1 → requests/v1}/public/list_public_images_test.rb +3 -3
  154. data/test/aviator/openstack/image/{v1 → requests/v1}/public/root_test.rb +4 -4
  155. data/test/aviator/openstack/metering/{v1 → requests/v1}/admin/list_projects_test.rb +4 -4
  156. data/test/aviator/openstack/provider_test.rb +226 -0
  157. data/test/aviator/openstack/volume/{v1 → requests/v1}/public/create_volume_test.rb +4 -4
  158. data/test/aviator/openstack/volume/{v1 → requests/v1}/public/delete_volume_test.rb +4 -4
  159. data/test/aviator/openstack/volume/{v1 → requests/v1}/public/get_volume_test.rb +4 -4
  160. data/test/aviator/openstack/volume/{v1 → requests/v1}/public/list_volume_types_test.rb +3 -3
  161. data/test/aviator/openstack/volume/{v1 → requests/v1}/public/list_volumes_test.rb +3 -3
  162. data/test/aviator/openstack/volume/{v1 → requests/v1}/public/root_test.rb +4 -4
  163. data/test/aviator/openstack/volume/{v1 → requests/v1}/public/update_volume_test.rb +4 -4
  164. data/test/cassettes/openstack/common/requests/v0/public/base/c_base_url/must_know_how_to_extract_the_base_url_from_a_Keystone_v2_session_data.yml +70 -0
  165. data/test/cassettes/openstack/common/requests/v0/public/base/c_base_url/must_know_how_to_extract_the_base_url_from_a_Keystone_v3_session_data.yml +100 -0
  166. data/test/cassettes/openstack/common/requests/v0/public/base/i_headers/must_know_to_extract_token_from_a_Keystone_v2_auth_info.yml +70 -0
  167. data/test/cassettes/openstack/common/requests/v0/public/base/i_headers/must_know_to_extract_token_from_a_Keystone_v3_auth_info.yml +100 -0
  168. data/test/cassettes/openstack/compute/{v2 → requests/v2}/admin/confirm_server_resize/leads_to_a_valid_response_when_parameters_are_provided.yml +0 -0
  169. data/test/cassettes/openstack/compute/{v2 → requests/v2}/admin/confirm_server_resize/leads_to_a_valid_response_when_the_id_parameter_is_invalid.yml +0 -0
  170. data/test/cassettes/openstack/compute/{v2 → requests/v2}/admin/confirm_server_resize/returns_the_correct_value_for_body_.yml +0 -0
  171. data/test/cassettes/openstack/compute/{v2 → requests/v2}/admin/confirm_server_resize/returns_the_correct_value_for_headers_.yml +0 -0
  172. data/test/cassettes/openstack/compute/{v2 → requests/v2}/admin/confirm_server_resize/returns_the_correct_value_for_http_method_.yml +0 -0
  173. data/test/cassettes/openstack/compute/{v2 → requests/v2}/admin/confirm_server_resize/returns_the_correct_value_for_url_.yml +0 -0
  174. data/test/cassettes/openstack/compute/{v2 → requests/v2}/admin/create_network/leads_to_a_valid_response_when_invalid_parameters_are_provided.yml +0 -0
  175. data/test/cassettes/openstack/compute/{v2 → requests/v2}/admin/create_network/leads_to_a_valid_response_when_valid_parameters_are_provided.yml +0 -0
  176. data/test/cassettes/openstack/compute/{v2 → requests/v2}/admin/create_network/returns_the_correct_value_for_headers_.yml +0 -0
  177. data/test/cassettes/openstack/compute/{v2 → requests/v2}/admin/create_network/returns_the_correct_value_for_http_method_.yml +0 -0
  178. data/test/cassettes/openstack/compute/{v2 → requests/v2}/admin/create_network/returns_the_correct_value_for_url_.yml +0 -0
  179. data/test/cassettes/openstack/compute/{v2 → requests/v2}/admin/get_host_details/leads_to_a_valid_response_when_invalid_params_are_provided.yml +0 -0
  180. data/test/cassettes/openstack/compute/{v2 → requests/v2}/admin/get_host_details/leads_to_a_valid_response_when_valid_params_are_provided.yml +0 -0
  181. data/test/cassettes/openstack/compute/{v2 → requests/v2}/admin/get_host_details/returns_the_correct_value_for_body_.yml +0 -0
  182. data/test/cassettes/openstack/compute/{v2 → requests/v2}/admin/get_host_details/returns_the_correct_value_for_headers_.yml +0 -0
  183. data/test/cassettes/openstack/compute/{v2 → requests/v2}/admin/get_host_details/returns_the_correct_value_for_http_method_.yml +0 -0
  184. data/test/cassettes/openstack/compute/{v2 → requests/v2}/admin/get_host_details/returns_the_correct_value_for_url_.yml +0 -0
  185. data/test/cassettes/openstack/compute/{v2 → requests/v2}/admin/list_hosts/leads_to_a_valid_response_when_invalid_zone_parameter_is_provided.yml +0 -0
  186. data/test/cassettes/openstack/compute/{v2 → requests/v2}/admin/list_hosts/leads_to_a_valid_response_when_no_parameters_are_provided.yml +0 -0
  187. data/test/cassettes/openstack/compute/{v2 → requests/v2}/admin/list_hosts/leads_to_a_valid_response_when_valid_zone_parameter_is_provided.yml +0 -0
  188. data/test/cassettes/openstack/compute/{v2 → requests/v2}/admin/list_hosts/returns_the_correct_value_for_body_.yml +0 -0
  189. data/test/cassettes/openstack/compute/{v2 → requests/v2}/admin/list_hosts/returns_the_correct_value_for_headers_.yml +0 -0
  190. data/test/cassettes/openstack/compute/{v2 → requests/v2}/admin/list_hosts/returns_the_correct_value_for_http_method_.yml +0 -0
  191. data/test/cassettes/openstack/compute/{v2 → requests/v2}/admin/list_hosts/returns_the_correct_value_for_url_.yml +0 -0
  192. data/test/cassettes/openstack/compute/{v2 → requests/v2}/admin/lock_server/leads_to_a_valid_response_when_invalid_server_id_is_provided.yml +0 -0
  193. data/test/cassettes/openstack/compute/{v2 → requests/v2}/admin/lock_server/leads_to_a_valid_response_when_valid_params_are_provided.yml +0 -0
  194. data/test/cassettes/openstack/compute/{v2 → requests/v2}/admin/lock_server/returns_the_correct_value_for_body_.yml +0 -0
  195. data/test/cassettes/openstack/compute/{v2 → requests/v2}/admin/lock_server/returns_the_correct_value_for_headers_.yml +0 -0
  196. data/test/cassettes/openstack/compute/{v2 → requests/v2}/admin/lock_server/returns_the_correct_value_for_http_method_.yml +0 -0
  197. data/test/cassettes/openstack/compute/{v2 → requests/v2}/admin/lock_server/returns_the_correct_value_for_url_.yml +0 -0
  198. data/test/cassettes/openstack/compute/{v2 → requests/v2}/admin/migrate_server/leads_to_a_valid_response_when_invalid_server_id_is_provided.yml +0 -0
  199. data/test/cassettes/openstack/compute/{v2 → requests/v2}/admin/migrate_server/leads_to_a_valid_response_when_valid_params_are_provided.yml +0 -0
  200. data/test/cassettes/openstack/compute/{v2 → requests/v2}/admin/migrate_server/returns_the_correct_value_for_body_.yml +0 -0
  201. data/test/cassettes/openstack/compute/{v2 → requests/v2}/admin/migrate_server/returns_the_correct_value_for_headers_.yml +0 -0
  202. data/test/cassettes/openstack/compute/{v2 → requests/v2}/admin/migrate_server/returns_the_correct_value_for_http_method_.yml +0 -0
  203. data/test/cassettes/openstack/compute/{v2 → requests/v2}/admin/migrate_server/returns_the_correct_value_for_url_.yml +0 -0
  204. data/test/cassettes/openstack/compute/{v2 → requests/v2}/admin/reset_server/leads_to_a_valid_response_when_invalid_server_id_is_provided.yml +0 -0
  205. data/test/cassettes/openstack/compute/{v2 → requests/v2}/admin/reset_server/leads_to_a_valid_response_when_valid_params_are_provided.yml +0 -0
  206. data/test/cassettes/openstack/compute/{v2 → requests/v2}/admin/reset_server/returns_the_correct_value_for_body_.yml +0 -0
  207. data/test/cassettes/openstack/compute/{v2 → requests/v2}/admin/reset_server/returns_the_correct_value_for_headers_.yml +0 -0
  208. data/test/cassettes/openstack/compute/{v2 → requests/v2}/admin/reset_server/returns_the_correct_value_for_http_method_.yml +0 -0
  209. data/test/cassettes/openstack/compute/{v2 → requests/v2}/admin/reset_server/returns_the_correct_value_for_url_.yml +0 -0
  210. data/test/cassettes/openstack/compute/{v2 → requests/v2}/admin/resize_server/leads_to_a_valid_response_when_parameters_are_provided.yml +0 -0
  211. data/test/cassettes/openstack/compute/{v2 → requests/v2}/admin/resize_server/leads_to_a_valid_response_when_the_flavorRef_parameter_is_invalid.yml +0 -0
  212. data/test/cassettes/openstack/compute/{v2 → requests/v2}/admin/resize_server/leads_to_a_valid_response_when_the_id_parameter_is_invalid.yml +0 -0
  213. data/test/cassettes/openstack/compute/{v2 → requests/v2}/admin/resize_server/returns_the_correct_value_for_body_.yml +0 -0
  214. data/test/cassettes/openstack/compute/{v2 → requests/v2}/admin/resize_server/returns_the_correct_value_for_headers_.yml +0 -0
  215. data/test/cassettes/openstack/compute/{v2 → requests/v2}/admin/resize_server/returns_the_correct_value_for_http_method_.yml +0 -0
  216. data/test/cassettes/openstack/compute/{v2 → requests/v2}/admin/resize_server/returns_the_correct_value_for_url_.yml +0 -0
  217. data/test/cassettes/openstack/compute/{v2 → requests/v2}/admin/revert_server_resize/leads_to_a_valid_response_when_parameters_are_provided.yml +0 -0
  218. data/test/cassettes/openstack/compute/{v2 → requests/v2}/admin/revert_server_resize/leads_to_a_valid_response_when_the_id_parameter_is_invalid.yml +0 -0
  219. data/test/cassettes/openstack/compute/{v2 → requests/v2}/admin/revert_server_resize/returns_the_correct_value_for_body_.yml +0 -0
  220. data/test/cassettes/openstack/compute/{v2 → requests/v2}/admin/revert_server_resize/returns_the_correct_value_for_headers_.yml +0 -0
  221. data/test/cassettes/openstack/compute/{v2 → requests/v2}/admin/revert_server_resize/returns_the_correct_value_for_http_method_.yml +0 -0
  222. data/test/cassettes/openstack/compute/{v2 → requests/v2}/admin/revert_server_resize/returns_the_correct_value_for_url_.yml +0 -0
  223. data/test/cassettes/openstack/compute/{v2 → requests/v2}/admin/unlock_server/leads_to_a_valid_response_when_invalid_server_id_is_provided.yml +0 -0
  224. data/test/cassettes/openstack/compute/{v2 → requests/v2}/admin/unlock_server/leads_to_a_valid_response_when_valid_params_are_provided.yml +0 -0
  225. data/test/cassettes/openstack/compute/{v2 → requests/v2}/admin/unlock_server/returns_the_correct_value_for_body_.yml +0 -0
  226. data/test/cassettes/openstack/compute/{v2 → requests/v2}/admin/unlock_server/returns_the_correct_value_for_headers_.yml +0 -0
  227. data/test/cassettes/openstack/compute/{v2 → requests/v2}/admin/unlock_server/returns_the_correct_value_for_http_method_.yml +0 -0
  228. data/test/cassettes/openstack/compute/{v2 → requests/v2}/admin/unlock_server/returns_the_correct_value_for_url_.yml +0 -0
  229. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/change_admin_password/leads_to_a_valid_response_when_invalid_server_id_is_provided.yml +0 -0
  230. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/change_admin_password/leads_to_a_valid_response_when_valid_params_are_provided.yml +0 -0
  231. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/change_admin_password/returns_the_correct_value_for_body_.yml +0 -0
  232. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/change_admin_password/returns_the_correct_value_for_headers_.yml +0 -0
  233. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/change_admin_password/returns_the_correct_value_for_http_method_.yml +0 -0
  234. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/change_admin_password/returns_the_correct_value_for_url_.yml +0 -0
  235. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/create_image/leads_to_a_valid_response_when_invalid_server_id_is_provided.yml +0 -0
  236. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/create_image/leads_to_a_valid_response_when_valid_params_are_provided.yml +0 -0
  237. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/create_image/returns_the_correct_value_for_body_.yml +0 -0
  238. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/create_image/returns_the_correct_value_for_headers_.yml +0 -0
  239. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/create_image/returns_the_correct_value_for_http_method_.yml +0 -0
  240. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/create_image/returns_the_correct_value_for_url_.yml +0 -0
  241. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/create_server/leads_to_a_valid_response_when_parameters_are_provided.yml +0 -0
  242. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/create_server/leads_to_a_valid_response_when_the_adminPass_parameter_is_provided.yml +0 -0
  243. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/create_server/leads_to_a_valid_response_when_the_flavorRef_parameter_is_invalid.yml +0 -0
  244. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/create_server/returns_the_correct_value_for_body_.yml +0 -0
  245. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/create_server/returns_the_correct_value_for_headers_.yml +0 -0
  246. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/create_server/returns_the_correct_value_for_http_method_.yml +0 -0
  247. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/create_server/returns_the_correct_value_for_url_.yml +0 -0
  248. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/delete_image/leads_to_a_valid_response_when_invalid_params_are_provided.yml +0 -0
  249. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/delete_image/leads_to_a_valid_response_when_valid_params_are_provided.yml +0 -0
  250. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/delete_image/returns_the_correct_value_for_body_.yml +0 -0
  251. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/delete_image/returns_the_correct_value_for_headers_.yml +0 -0
  252. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/delete_image/returns_the_correct_value_for_http_method_.yml +0 -0
  253. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/delete_image/returns_the_correct_value_for_url_.yml +0 -0
  254. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/delete_image_metadata_item/leads_to_a_valid_response_when_invalid_image_id_is_provided.yml +0 -0
  255. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/delete_image_metadata_item/leads_to_a_valid_response_when_invalid_metadata_key_is_provided.yml +0 -0
  256. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/delete_image_metadata_item/leads_to_a_valid_response_when_valid_image_id_and_metadata_key_are_provided.yml +0 -0
  257. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/delete_image_metadata_item/returns_the_correct_value_for_body_.yml +0 -0
  258. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/delete_image_metadata_item/returns_the_correct_value_for_headers_.yml +0 -0
  259. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/delete_image_metadata_item/returns_the_correct_value_for_http_method_.yml +0 -0
  260. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/delete_image_metadata_item/returns_the_correct_value_for_url_.yml +0 -0
  261. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/delete_server/leads_to_a_valid_response_when_invalid_server_id_is_provided.yml +0 -0
  262. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/delete_server/leads_to_a_valid_response_when_valid_server_id_is_provided.yml +0 -0
  263. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/delete_server/returns_the_correct_value_for_body_.yml +0 -0
  264. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/delete_server/returns_the_correct_value_for_headers_.yml +0 -0
  265. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/delete_server/returns_the_correct_value_for_http_method_.yml +0 -0
  266. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/delete_server/returns_the_correct_value_for_url_.yml +0 -0
  267. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/delete_server_metadata_item/leads_to_a_valid_response_when_invalid_metadata_key_is_provided.yml +0 -0
  268. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/delete_server_metadata_item/leads_to_a_valid_response_when_invalid_server_id_is_provided.yml +0 -0
  269. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/delete_server_metadata_item/leads_to_a_valid_response_when_valid_server_id_and_metadata_key_are_provided.yml +0 -0
  270. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/delete_server_metadata_item/returns_the_correct_value_for_body_.yml +0 -0
  271. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/delete_server_metadata_item/returns_the_correct_value_for_headers_.yml +0 -0
  272. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/delete_server_metadata_item/returns_the_correct_value_for_http_method_.yml +0 -0
  273. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/delete_server_metadata_item/returns_the_correct_value_for_url_.yml +0 -0
  274. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/get_flavor_details/leads_to_a_valid_response_when_invalid_parameters_are_provided.yml +0 -0
  275. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/get_flavor_details/leads_to_a_valid_response_when_parameters_are_provided.yml +0 -0
  276. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/get_flavor_details/returns_the_correct_value_for_body_.yml +0 -0
  277. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/get_flavor_details/returns_the_correct_value_for_headers_.yml +0 -0
  278. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/get_flavor_details/returns_the_correct_value_for_http_method_.yml +0 -0
  279. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/get_flavor_details/returns_the_correct_value_for_url_.yml +0 -0
  280. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/get_image_details/leads_to_a_valid_response_when_invalid_params_are_provided.yml +0 -0
  281. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/get_image_details/leads_to_a_valid_response_when_valid_params_are_provided.yml +0 -0
  282. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/get_image_details/returns_the_correct_value_for_body_.yml +0 -0
  283. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/get_image_details/returns_the_correct_value_for_headers_.yml +0 -0
  284. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/get_image_details/returns_the_correct_value_for_http_method_.yml +0 -0
  285. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/get_image_details/returns_the_correct_value_for_url_.yml +0 -0
  286. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/get_image_metadata_item/leads_to_a_valid_response_when_invalid_image_id_is_provided.yml +0 -0
  287. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/get_image_metadata_item/leads_to_a_valid_response_when_invalid_metadata_key_is_provided.yml +0 -0
  288. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/get_image_metadata_item/leads_to_a_valid_response_when_valid_image_id_and_metadata_key_are_provided.yml +0 -0
  289. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/get_image_metadata_item/returns_the_correct_value_for_body_.yml +0 -0
  290. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/get_image_metadata_item/returns_the_correct_value_for_headers_.yml +0 -0
  291. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/get_image_metadata_item/returns_the_correct_value_for_http_method_.yml +0 -0
  292. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/get_image_metadata_item/returns_the_correct_value_for_url_.yml +0 -0
  293. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/get_network_details/leads_to_a_valid_response_when_invalid_network_id_is_provided.yml +0 -0
  294. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/get_network_details/leads_to_a_valid_response_when_valid_network_id_is_provided.yml +0 -0
  295. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/get_network_details/returns_the_correct_value_for_body_.yml +0 -0
  296. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/get_network_details/returns_the_correct_value_for_headers_.yml +0 -0
  297. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/get_network_details/returns_the_correct_value_for_http_method_.yml +0 -0
  298. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/get_network_details/returns_the_correct_value_for_url_.yml +0 -0
  299. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/get_server/leads_to_a_valid_response_when_a_valid_server_id_is_provided.yml +0 -0
  300. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/get_server/leads_to_a_valid_response_when_an_invalid_server_id_is_provided.yml +0 -0
  301. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/get_server/returns_the_correct_value_for_body_.yml +0 -0
  302. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/get_server/returns_the_correct_value_for_headers_.yml +0 -0
  303. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/get_server/returns_the_correct_value_for_http_method_.yml +0 -0
  304. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/get_server/returns_the_correct_value_for_url_.yml +0 -0
  305. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/get_server_metadata_item/leads_to_a_valid_response_when_invalid_metadata_key_is_provided.yml +0 -0
  306. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/get_server_metadata_item/leads_to_a_valid_response_when_invalid_server_id_and_metadata_key_are_provided.yml +0 -0
  307. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/get_server_metadata_item/leads_to_a_valid_response_when_valid_server_id_and_metadata_key_are_provided.yml +0 -0
  308. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/get_server_metadata_item/returns_the_correct_value_for_body_.yml +0 -0
  309. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/get_server_metadata_item/returns_the_correct_value_for_headers_.yml +0 -0
  310. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/get_server_metadata_item/returns_the_correct_value_for_http_method_.yml +0 -0
  311. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/get_server_metadata_item/returns_the_correct_value_for_url_.yml +0 -0
  312. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/list_addresses/leads_to_a_valid_response_when_a_networkID_parameter_is_provided.yml +0 -0
  313. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/list_addresses/leads_to_a_valid_response_when_a_valid_server_id_is_provided.yml +0 -0
  314. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/list_addresses/leads_to_a_valid_response_when_an_invalid_server_id_is_provided.yml +0 -0
  315. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/list_addresses/returns_the_correct_value_for_body_.yml +0 -0
  316. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/list_addresses/returns_the_correct_value_for_headers_.yml +0 -0
  317. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/list_addresses/returns_the_correct_value_for_http_method_.yml +0 -0
  318. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/list_addresses/returns_the_correct_value_for_url_.yml +0 -0
  319. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/list_flavors/leads_to_a_valid_response_when_no_parameters_are_provided.yml +0 -0
  320. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/list_flavors/leads_to_a_valid_response_when_the_details_filter_is_provided.yml +0 -0
  321. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/list_flavors/leads_to_a_valid_response_when_the_minDisk_filter_is_provided.yml +0 -0
  322. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/list_flavors/returns_the_correct_value_for_body_.yml +0 -0
  323. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/list_flavors/returns_the_correct_value_for_headers_.yml +0 -0
  324. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/list_flavors/returns_the_correct_value_for_http_method_.yml +0 -0
  325. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/list_flavors/returns_the_correct_value_for_url_.yml +0 -0
  326. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/list_image_metadata/leads_to_a_valid_response_when_invalid_image_id_is_provided.yml +0 -0
  327. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/list_image_metadata/leads_to_a_valid_response_when_valid_image_id_is_provided.yml +0 -0
  328. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/list_image_metadata/returns_the_correct_value_for_body_.yml +0 -0
  329. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/list_image_metadata/returns_the_correct_value_for_headers_.yml +0 -0
  330. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/list_image_metadata/returns_the_correct_value_for_http_method_.yml +0 -0
  331. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/list_image_metadata/returns_the_correct_value_for_url_.yml +0 -0
  332. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/list_images/leads_to_a_valid_response_when_no_parameters_are_provided.yml +0 -0
  333. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/list_images/leads_to_a_valid_response_when_parameters_are_invalid.yml +0 -0
  334. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/list_images/leads_to_a_valid_response_when_parameters_are_valid.yml +0 -0
  335. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/list_images/returns_the_correct_value_for_body_.yml +0 -0
  336. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/list_images/returns_the_correct_value_for_headers_.yml +0 -0
  337. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/list_images/returns_the_correct_value_for_http_method_.yml +0 -0
  338. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/list_images/returns_the_correct_value_for_url_.yml +0 -0
  339. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/list_networks/leads_to_a_valid_response_when_no_parameters_are_provided.yml +0 -0
  340. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/list_networks/returns_the_correct_value_for_body_.yml +0 -0
  341. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/list_networks/returns_the_correct_value_for_headers_.yml +0 -0
  342. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/list_networks/returns_the_correct_value_for_http_method_.yml +0 -0
  343. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/list_networks/returns_the_correct_value_for_url_.yml +0 -0
  344. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/list_server_metadata/leads_to_a_valid_response_when_invalid_server_id_is_provided.yml +0 -0
  345. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/list_server_metadata/leads_to_a_valid_response_when_valid_server_id_is_provided.yml +0 -0
  346. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/list_server_metadata/returns_the_correct_value_for_body_.yml +0 -0
  347. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/list_server_metadata/returns_the_correct_value_for_headers_.yml +0 -0
  348. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/list_server_metadata/returns_the_correct_value_for_http_method_.yml +0 -0
  349. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/list_server_metadata/returns_the_correct_value_for_url_.yml +0 -0
  350. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/list_servers/leads_to_a_valid_response_when_no_parameters_are_provided.yml +0 -0
  351. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/list_servers/leads_to_a_valid_response_when_parameters_are_invalid.yml +0 -0
  352. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/list_servers/leads_to_a_valid_response_when_parameters_are_valid.yml +0 -0
  353. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/list_servers/leads_to_a_valid_response_when_the_all_tenants_parameter_is_provided.yml +0 -0
  354. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/list_servers/returns_the_correct_value_for_body_.yml +0 -0
  355. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/list_servers/returns_the_correct_value_for_headers_.yml +0 -0
  356. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/list_servers/returns_the_correct_value_for_http_method_.yml +0 -0
  357. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/list_servers/returns_the_correct_value_for_url_.yml +0 -0
  358. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/pause_server/leads_to_a_valid_response_when_invalid_server_id_is_provided.yml +0 -0
  359. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/pause_server/leads_to_a_valid_response_when_valid_params_are_provided.yml +0 -0
  360. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/pause_server/returns_the_correct_value_for_body_.yml +0 -0
  361. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/pause_server/returns_the_correct_value_for_headers_.yml +0 -0
  362. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/pause_server/returns_the_correct_value_for_http_method_.yml +0 -0
  363. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/pause_server/returns_the_correct_value_for_url_.yml +0 -0
  364. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/reboot_server/leads_to_a_valid_response_when_invalid_server_id_is_provided.yml +0 -0
  365. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/reboot_server/leads_to_a_valid_response_when_valid_params_are_provided.yml +0 -0
  366. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/reboot_server/returns_the_correct_value_for_body_.yml +0 -0
  367. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/reboot_server/returns_the_correct_value_for_headers_.yml +0 -0
  368. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/reboot_server/returns_the_correct_value_for_http_method_.yml +0 -0
  369. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/reboot_server/returns_the_correct_value_for_url_.yml +0 -0
  370. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/rebuild_server/leads_to_a_valid_response_when_invalid_image_id_is_provided.yml +0 -0
  371. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/rebuild_server/leads_to_a_valid_response_when_invalid_server_id_is_provided.yml +0 -0
  372. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/rebuild_server/leads_to_a_valid_response_when_valid_params_are_provided.yml +0 -0
  373. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/rebuild_server/returns_the_correct_value_for_body_.yml +0 -0
  374. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/rebuild_server/returns_the_correct_value_for_headers_.yml +0 -0
  375. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/rebuild_server/returns_the_correct_value_for_http_method_.yml +0 -0
  376. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/rebuild_server/returns_the_correct_value_for_url_.yml +0 -0
  377. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/resume_server/leads_to_a_valid_response_when_invalid_server_id_is_provided.yml +0 -0
  378. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/resume_server/leads_to_a_valid_response_when_valid_params_are_provided.yml +0 -0
  379. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/resume_server/returns_the_correct_value_for_body_.yml +0 -0
  380. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/resume_server/returns_the_correct_value_for_headers_.yml +0 -0
  381. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/resume_server/returns_the_correct_value_for_http_method_.yml +0 -0
  382. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/resume_server/returns_the_correct_value_for_url_.yml +0 -0
  383. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/root/leads_to_a_valid_response_when_no_parameters_are_provided.yml +0 -0
  384. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/root/returns_the_correct_value_for_body_.yml +0 -0
  385. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/root/returns_the_correct_value_for_headers_.yml +0 -0
  386. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/root/returns_the_correct_value_for_http_method_.yml +0 -0
  387. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/root/returns_the_correct_value_for_url_.yml +0 -0
  388. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/set_image_metadata/leads_to_a_valid_response_when_invalid_image_id_is_provided.yml +0 -0
  389. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/set_image_metadata/leads_to_a_valid_response_when_valid_image_id_is_provided.yml +0 -0
  390. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/set_image_metadata/returns_the_correct_value_for_body_.yml +0 -0
  391. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/set_image_metadata/returns_the_correct_value_for_headers_.yml +0 -0
  392. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/set_image_metadata/returns_the_correct_value_for_http_method_.yml +0 -0
  393. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/set_image_metadata/returns_the_correct_value_for_url_.yml +0 -0
  394. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/set_server_metadata/leads_to_a_valid_response_when_invalid_server_id_is_provided.yml +0 -0
  395. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/set_server_metadata/leads_to_a_valid_response_when_valid_server_id_is_provided.yml +0 -0
  396. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/set_server_metadata/returns_the_correct_value_for_body_.yml +0 -0
  397. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/set_server_metadata/returns_the_correct_value_for_headers_.yml +0 -0
  398. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/set_server_metadata/returns_the_correct_value_for_http_method_.yml +0 -0
  399. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/set_server_metadata/returns_the_correct_value_for_url_.yml +0 -0
  400. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/suspend_server/leads_to_a_valid_response_when_invalid_server_id_is_provided.yml +0 -0
  401. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/suspend_server/leads_to_a_valid_response_when_valid_params_are_provided.yml +0 -0
  402. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/suspend_server/returns_the_correct_value_for_body_.yml +0 -0
  403. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/suspend_server/returns_the_correct_value_for_headers_.yml +0 -0
  404. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/suspend_server/returns_the_correct_value_for_http_method_.yml +0 -0
  405. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/suspend_server/returns_the_correct_value_for_url_.yml +0 -0
  406. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/unpause_server/leads_to_a_valid_response_when_invalid_server_id_is_provided.yml +0 -0
  407. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/unpause_server/leads_to_a_valid_response_when_valid_params_are_provided.yml +0 -0
  408. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/unpause_server/returns_the_correct_value_for_body_.yml +0 -0
  409. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/unpause_server/returns_the_correct_value_for_headers_.yml +0 -0
  410. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/unpause_server/returns_the_correct_value_for_http_method_.yml +0 -0
  411. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/unpause_server/returns_the_correct_value_for_url_.yml +0 -0
  412. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/update_image_metadata/leads_to_a_valid_response_when_invalid_image_id_is_provided.yml +0 -0
  413. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/update_image_metadata/leads_to_a_valid_response_when_valid_image_id_is_provided.yml +0 -0
  414. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/update_image_metadata/returns_the_correct_value_for_body_.yml +0 -0
  415. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/update_image_metadata/returns_the_correct_value_for_headers_.yml +0 -0
  416. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/update_image_metadata/returns_the_correct_value_for_http_method_.yml +0 -0
  417. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/update_image_metadata/returns_the_correct_value_for_url_.yml +0 -0
  418. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/update_server/leads_to_a_valid_response_when_invalid_server_id_is_provided.yml +0 -0
  419. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/update_server/leads_to_a_valid_response_when_valid_server_id_is_provided.yml +0 -0
  420. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/update_server/returns_the_correct_value_for_body_.yml +0 -0
  421. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/update_server/returns_the_correct_value_for_headers_.yml +0 -0
  422. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/update_server/returns_the_correct_value_for_http_method_.yml +0 -0
  423. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/update_server/returns_the_correct_value_for_url_.yml +0 -0
  424. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/update_server_metadata/leads_to_a_valid_response_when_invalid_server_id_is_provided.yml +0 -0
  425. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/update_server_metadata/leads_to_a_valid_response_when_valid_server_id_is_provided.yml +0 -0
  426. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/update_server_metadata/returns_the_correct_value_for_body_.yml +0 -0
  427. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/update_server_metadata/returns_the_correct_value_for_headers_.yml +0 -0
  428. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/update_server_metadata/returns_the_correct_value_for_http_method_.yml +0 -0
  429. data/test/cassettes/openstack/compute/{v2 → requests/v2}/public/update_server_metadata/returns_the_correct_value_for_url_.yml +0 -0
  430. data/test/cassettes/openstack/identity/{v2 → requests/v2}/admin/add_role_to_user_on_tenant/leads_to_a_valid_response_when_invalid_role_id_is_provided.yml +0 -0
  431. data/test/cassettes/openstack/identity/{v2 → requests/v2}/admin/add_role_to_user_on_tenant/leads_to_a_valid_response_when_invalid_tenant_id_is_provided.yml +0 -0
  432. data/test/cassettes/openstack/identity/{v2 → requests/v2}/admin/add_role_to_user_on_tenant/leads_to_a_valid_response_when_invalid_user_id_is_provided.yml +0 -0
  433. data/test/cassettes/openstack/identity/{v2 → requests/v2}/admin/add_role_to_user_on_tenant/leads_to_a_valid_response_when_valid_ids_are_provided.yml +0 -0
  434. data/test/cassettes/openstack/identity/{v2 → requests/v2}/admin/add_role_to_user_on_tenant/returns_the_correct_value_for_body_.yml +0 -0
  435. data/test/cassettes/openstack/identity/{v2 → requests/v2}/admin/add_role_to_user_on_tenant/returns_the_correct_value_for_headers_.yml +0 -0
  436. data/test/cassettes/openstack/identity/{v2 → requests/v2}/admin/add_role_to_user_on_tenant/returns_the_correct_value_for_http_method_.yml +0 -0
  437. data/test/cassettes/openstack/identity/{v2 → requests/v2}/admin/add_role_to_user_on_tenant/returns_the_correct_value_for_url_.yml +0 -0
  438. data/test/cassettes/openstack/identity/{v2 → requests/v2}/admin/create_tenant/leads_to_a_valid_response_when_params_are_invalid.yml +0 -0
  439. data/test/cassettes/openstack/identity/{v2 → requests/v2}/admin/create_tenant/leads_to_a_valid_response_when_params_are_valid.yml +0 -0
  440. data/test/cassettes/openstack/identity/{v2 → requests/v2}/admin/create_user/leads_to_a_valid_response_when_invalid_param_is_provided.yml +0 -0
  441. data/test/cassettes/openstack/identity/{v2 → requests/v2}/admin/create_user/leads_to_a_valid_response_when_params_are_valid.yml +0 -0
  442. data/test/cassettes/openstack/identity/{v2 → requests/v2}/admin/create_user/returns_the_correct_value_for_body_.yml +0 -0
  443. data/test/cassettes/openstack/identity/{v2 → requests/v2}/admin/create_user/returns_the_correct_value_for_headers_.yml +0 -0
  444. data/test/cassettes/openstack/identity/{v2 → requests/v2}/admin/create_user/returns_the_correct_value_for_http_method_.yml +0 -0
  445. data/test/cassettes/openstack/identity/{v2 → requests/v2}/admin/create_user/returns_the_correct_value_for_url_.yml +0 -0
  446. data/test/cassettes/openstack/identity/{v2 → requests/v2}/admin/delete_role_from_user_on_tenant/leads_to_a_valid_response_when_invalid_role_id_is_provided.yml +0 -0
  447. data/test/cassettes/openstack/identity/{v2 → requests/v2}/admin/delete_role_from_user_on_tenant/leads_to_a_valid_response_when_invalid_tenant_id_is_provided.yml +0 -0
  448. data/test/cassettes/openstack/identity/{v2 → requests/v2}/admin/delete_role_from_user_on_tenant/leads_to_a_valid_response_when_invalid_user_id_is_provided.yml +0 -0
  449. data/test/cassettes/openstack/identity/{v2 → requests/v2}/admin/delete_role_from_user_on_tenant/leads_to_a_valid_response_when_valid_ids_are_provided.yml +0 -0
  450. data/test/cassettes/openstack/identity/{v2 → requests/v2}/admin/delete_role_from_user_on_tenant/returns_the_correct_value_for_headers_.yml +0 -0
  451. data/test/cassettes/openstack/identity/{v2 → requests/v2}/admin/delete_role_from_user_on_tenant/returns_the_correct_value_for_http_method_.yml +0 -0
  452. data/test/cassettes/openstack/identity/{v2 → requests/v2}/admin/delete_role_from_user_on_tenant/returns_the_correct_value_for_url_.yml +0 -0
  453. data/test/cassettes/openstack/identity/{v2 → requests/v2}/admin/delete_tenant/leads_to_a_valid_response_when_invalid_params_are_provided.yml +0 -0
  454. data/test/cassettes/openstack/identity/{v2 → requests/v2}/admin/delete_tenant/leads_to_a_valid_response_when_valid_params_are_provided.yml +0 -0
  455. data/test/cassettes/openstack/identity/{v2 → requests/v2}/admin/delete_tenant/returns_the_correct_value_for_body_.yml +0 -0
  456. data/test/cassettes/openstack/identity/{v2 → requests/v2}/admin/delete_tenant/returns_the_correct_value_for_headers_.yml +0 -0
  457. data/test/cassettes/openstack/identity/{v2 → requests/v2}/admin/delete_tenant/returns_the_correct_value_for_http_method_.yml +0 -0
  458. data/test/cassettes/openstack/identity/{v2 → requests/v2}/admin/delete_tenant/returns_the_correct_value_for_url_.yml +0 -0
  459. data/test/cassettes/openstack/identity/{v2 → requests/v2}/admin/delete_user/leads_to_a_valid_response_when_invalid_params_are_provided.yml +0 -0
  460. data/test/cassettes/openstack/identity/{v2 → requests/v2}/admin/delete_user/leads_to_a_valid_response_when_valid_params_are_provided.yml +0 -0
  461. data/test/cassettes/openstack/identity/{v2 → requests/v2}/admin/delete_user/returns_the_correct_value_for_body_.yml +0 -0
  462. data/test/cassettes/openstack/identity/{v2 → requests/v2}/admin/delete_user/returns_the_correct_value_for_headers_.yml +0 -0
  463. data/test/cassettes/openstack/identity/{v2 → requests/v2}/admin/delete_user/returns_the_correct_value_for_http_method_.yml +0 -0
  464. data/test/cassettes/openstack/identity/{v2 → requests/v2}/admin/delete_user/returns_the_correct_value_for_url_.yml +0 -0
  465. data/test/cassettes/openstack/identity/{v2 → requests/v2}/admin/get_tenant_by_id/leads_to_a_valid_response_when_a_valid_tenant_id_is_provided.yml +0 -0
  466. data/test/cassettes/openstack/identity/{v2 → requests/v2}/admin/get_tenant_by_id/returns_the_correct_value_for_body_.yml +0 -0
  467. data/test/cassettes/openstack/identity/{v2 → requests/v2}/admin/get_tenant_by_id/returns_the_correct_value_for_headers_.yml +0 -0
  468. data/test/cassettes/openstack/identity/{v2 → requests/v2}/admin/get_tenant_by_id/returns_the_correct_value_for_http_method_.yml +0 -0
  469. data/test/cassettes/openstack/identity/{v2 → requests/v2}/admin/get_tenant_by_id/returns_the_correct_value_for_url_.yml +0 -0
  470. data/test/cassettes/openstack/identity/requests/v2/admin/list_tenants/leads_to_a_valid_response_when_no_parameters_are_provided.yml +104 -0
  471. data/test/cassettes/openstack/identity/requests/v2/admin/list_tenants/leads_to_a_valid_response_when_session_is_using_a_default_token.yml +73 -0
  472. data/test/cassettes/openstack/identity/requests/v2/admin/list_tenants/returns_the_correct_value_for_body_.yml +70 -0
  473. data/test/cassettes/openstack/identity/requests/v2/admin/list_tenants/returns_the_correct_value_for_headers_.yml +70 -0
  474. data/test/cassettes/openstack/identity/requests/v2/admin/list_tenants/returns_the_correct_value_for_http_method_.yml +70 -0
  475. data/test/cassettes/openstack/identity/requests/v2/admin/list_tenants/returns_the_correct_value_for_url_.yml +70 -0
  476. data/test/cassettes/openstack/identity/{v2 → requests/v2}/admin/list_users/leads_to_a_valid_response_when_no_parameters_are_provided.yml +0 -0
  477. data/test/cassettes/openstack/identity/{v2 → requests/v2}/admin/list_users/returns_the_correct_value_for_body_.yml +0 -0
  478. data/test/cassettes/openstack/identity/{v2 → requests/v2}/admin/list_users/returns_the_correct_value_for_headers_.yml +0 -0
  479. data/test/cassettes/openstack/identity/{v2 → requests/v2}/admin/list_users/returns_the_correct_value_for_http_method_.yml +0 -0
  480. data/test/cassettes/openstack/identity/{v2 → requests/v2}/admin/list_users/returns_the_correct_value_for_url_.yml +0 -0
  481. data/test/cassettes/openstack/identity/{v2 → requests/v2}/admin/update_tenant/leads_to_a_valid_response_when_invalid_tenant_id_is_provided.yml +0 -0
  482. data/test/cassettes/openstack/identity/{v2 → requests/v2}/admin/update_tenant/leads_to_a_valid_response_when_valid_tenant_id_is_provided.yml +0 -0
  483. data/test/cassettes/openstack/identity/{v2 → requests/v2}/admin/update_tenant/returns_the_correct_value_for_body_.yml +0 -0
  484. data/test/cassettes/openstack/identity/{v2 → requests/v2}/admin/update_tenant/returns_the_correct_value_for_headers_.yml +0 -0
  485. data/test/cassettes/openstack/identity/{v2 → requests/v2}/admin/update_tenant/returns_the_correct_value_for_http_method_.yml +0 -0
  486. data/test/cassettes/openstack/identity/{v2 → requests/v2}/admin/update_tenant/returns_the_correct_value_for_url_.yml +0 -0
  487. data/test/cassettes/openstack/identity/{v2 → requests/v2}/admin/update_user/leads_to_a_valid_response_when_invalid_user_id_is_provided.yml +0 -0
  488. data/test/cassettes/openstack/identity/{v2 → requests/v2}/admin/update_user/leads_to_a_valid_response_when_valid_user_id_is_provided.yml +0 -0
  489. data/test/cassettes/openstack/identity/{v2 → requests/v2}/admin/update_user/returns_the_correct_value_for_body_.yml +0 -0
  490. data/test/cassettes/openstack/identity/{v2 → requests/v2}/admin/update_user/returns_the_correct_value_for_headers_.yml +0 -0
  491. data/test/cassettes/openstack/identity/{v2 → requests/v2}/admin/update_user/returns_the_correct_value_for_http_method_.yml +0 -0
  492. data/test/cassettes/openstack/identity/{v2 → requests/v2}/admin/update_user/returns_the_correct_value_for_url_.yml +0 -0
  493. data/test/cassettes/openstack/identity/{v2 → requests/v2}/public/create_token/leads_to_a_valid_response_when_parameters_are_invalid.yml +0 -0
  494. data/test/cassettes/openstack/identity/{v2 → requests/v2}/public/create_token/leads_to_a_valid_response_when_parameters_are_valid.yml +0 -0
  495. data/test/cassettes/openstack/identity/{v2 → requests/v2}/public/create_token/leads_to_a_valid_response_when_provided_with_a_token.yml +0 -0
  496. data/test/cassettes/openstack/identity/{v2 → requests/v2}/public/list_tenants/leads_to_a_valid_response_when_no_parameters_are_provided.yml +0 -0
  497. data/test/cassettes/openstack/identity/{v2 → requests/v2}/public/list_tenants/leads_to_a_valid_response_when_session_is_using_a_default_token.yml +0 -0
  498. data/test/cassettes/openstack/identity/{v2 → requests/v2}/public/list_tenants/returns_the_correct_value_for_body_.yml +0 -0
  499. data/test/cassettes/openstack/identity/{v2 → requests/v2}/public/list_tenants/returns_the_correct_value_for_headers_.yml +0 -0
  500. data/test/cassettes/openstack/identity/{v2 → requests/v2}/public/list_tenants/returns_the_correct_value_for_http_method_.yml +0 -0
  501. data/test/cassettes/openstack/identity/{v2 → requests/v2}/public/list_tenants/returns_the_correct_value_for_url_.yml +0 -0
  502. data/test/cassettes/openstack/identity/{v2 → requests/v2}/public/root/leads_to_a_valid_response_when_no_parameters_are_provided.yml +0 -0
  503. data/test/cassettes/openstack/identity/{v2 → requests/v2}/public/root/returns_the_correct_value_for_body_.yml +0 -0
  504. data/test/cassettes/openstack/identity/{v2 → requests/v2}/public/root/returns_the_correct_value_for_headers_.yml +0 -0
  505. data/test/cassettes/openstack/identity/{v2 → requests/v2}/public/root/returns_the_correct_value_for_http_method_.yml +0 -0
  506. data/test/cassettes/openstack/identity/{v2 → requests/v2}/public/root/returns_the_correct_value_for_url_.yml +0 -0
  507. data/test/cassettes/openstack/identity/requests/v3/public/create_token/leads_to_a_valid_response_when_parameters_are_invalid.yml +35 -0
  508. data/test/cassettes/openstack/identity/requests/v3/public/create_token/leads_to_a_valid_response_when_parameters_are_valid.yml +100 -0
  509. data/test/cassettes/openstack/identity/requests/v3/public/create_token/leads_to_a_valid_response_when_provided_with_a_token.yml +200 -0
  510. data/test/cassettes/openstack/image/{v1 → requests/v1}/public/list_public_images/leads_to_a_valid_response_when_filtering_with_matches.yml +0 -0
  511. data/test/cassettes/openstack/image/{v1 → requests/v1}/public/list_public_images/leads_to_a_valid_response_when_filtering_with_no_matches.yml +0 -0
  512. data/test/cassettes/openstack/image/{v1 → requests/v1}/public/list_public_images/leads_to_a_valid_response_when_no_parameters_are_provided.yml +0 -0
  513. data/test/cassettes/openstack/image/{v1 → requests/v1}/public/list_public_images/returns_the_correct_value_for_body_.yml +0 -0
  514. data/test/cassettes/openstack/image/{v1 → requests/v1}/public/list_public_images/returns_the_correct_value_for_headers_.yml +0 -0
  515. data/test/cassettes/openstack/image/{v1 → requests/v1}/public/list_public_images/returns_the_correct_value_for_http_method_.yml +0 -0
  516. data/test/cassettes/openstack/image/{v1 → requests/v1}/public/root/leads_to_a_valid_response_when_no_parameters_are_provided.yml +0 -0
  517. data/test/cassettes/openstack/image/{v1 → requests/v1}/public/root/returns_the_correct_value_for_body_.yml +0 -0
  518. data/test/cassettes/openstack/image/{v1 → requests/v1}/public/root/returns_the_correct_value_for_headers_.yml +0 -0
  519. data/test/cassettes/openstack/image/{v1 → requests/v1}/public/root/returns_the_correct_value_for_http_method_.yml +0 -0
  520. data/test/cassettes/openstack/image/{v1 → requests/v1}/public/root/returns_the_correct_value_for_url_.yml +0 -0
  521. data/test/cassettes/openstack/metering/{v1 → requests/v1}/admin/projects/leads_to_a_valid_response_when_no_parameters_are_provided.yml +0 -0
  522. data/test/cassettes/openstack/metering/{v1 → requests/v1}/admin/projects/returns_the_correct_value_for_body_.yml +0 -0
  523. data/test/cassettes/openstack/metering/{v1 → requests/v1}/admin/projects/returns_the_correct_value_for_headers_.yml +0 -0
  524. data/test/cassettes/openstack/metering/{v1 → requests/v1}/admin/projects/returns_the_correct_value_for_http_method_.yml +0 -0
  525. data/test/cassettes/openstack/metering/{v1 → requests/v1}/admin/projects/returns_the_correct_value_for_url_.yml +0 -0
  526. data/test/cassettes/openstack/provider/i_find_request/v2_can_find_the_correct_request_based_on_non-bootstrapped_session_data.yml +70 -0
  527. data/test/cassettes/openstack/provider/i_find_request/v2_throws_an_error_if_there_is_more_than_one_service_info_found.yml +70 -0
  528. data/test/cassettes/openstack/provider/i_find_request/v3_can_find_the_correct_request_based_on_non-bootstrapped_data_suffixed_.yml +104 -0
  529. data/test/cassettes/openstack/provider/i_find_request/v3_can_find_the_correct_request_based_on_non-bootstrapped_session_data.yml +104 -0
  530. data/test/cassettes/openstack/provider/i_find_request/v3_throws_an_error_if_there_is_more_than_one_service_info_found.yml +104 -0
  531. data/test/cassettes/openstack/volume/{v1 → requests/v1}/public/create_volume/leads_to_a_valid_response_when_parameters_are_provided.yml +0 -0
  532. data/test/cassettes/openstack/volume/{v1 → requests/v1}/public/create_volume/returns_the_correct_value_for_body_.yml +0 -0
  533. data/test/cassettes/openstack/volume/{v1 → requests/v1}/public/create_volume/returns_the_correct_value_for_headers_.yml +0 -0
  534. data/test/cassettes/openstack/volume/{v1 → requests/v1}/public/create_volume/returns_the_correct_value_for_http_method_.yml +0 -0
  535. data/test/cassettes/openstack/volume/{v1 → requests/v1}/public/create_volume/returns_the_correct_value_for_url_.yml +0 -0
  536. data/test/cassettes/openstack/volume/{v1 → requests/v1}/public/delete_volume/leads_to_a_valid_response_when_invalid_volume_id_is_provided.yml +0 -0
  537. data/test/cassettes/openstack/volume/{v1 → requests/v1}/public/delete_volume/leads_to_a_valid_response_when_valid_volume_id_is_provided.yml +0 -0
  538. data/test/cassettes/openstack/volume/{v1 → requests/v1}/public/delete_volume/returns_the_correct_value_for_body_.yml +0 -0
  539. data/test/cassettes/openstack/volume/{v1 → requests/v1}/public/delete_volume/returns_the_correct_value_for_headers_.yml +0 -0
  540. data/test/cassettes/openstack/volume/{v1 → requests/v1}/public/delete_volume/returns_the_correct_value_for_http_method_.yml +0 -0
  541. data/test/cassettes/openstack/volume/{v1 → requests/v1}/public/delete_volume/returns_the_correct_value_for_url_.yml +0 -0
  542. data/test/cassettes/openstack/volume/{v1 → requests/v1}/public/get_volume/leads_to_a_valid_response_when_a_valid_volume_id_is_provided.yml +0 -0
  543. data/test/cassettes/openstack/volume/{v1 → requests/v1}/public/get_volume/leads_to_a_valid_response_when_an_invalid_volume_id_is_provided.yml +0 -0
  544. data/test/cassettes/openstack/volume/{v1 → requests/v1}/public/get_volume/returns_the_correct_value_for_body_.yml +0 -0
  545. data/test/cassettes/openstack/volume/{v1 → requests/v1}/public/get_volume/returns_the_correct_value_for_headers_.yml +0 -0
  546. data/test/cassettes/openstack/volume/{v1 → requests/v1}/public/get_volume/returns_the_correct_value_for_http_method_.yml +0 -0
  547. data/test/cassettes/openstack/volume/{v1 → requests/v1}/public/get_volume/returns_the_correct_value_for_url_.yml +0 -0
  548. data/test/cassettes/openstack/volume/{v1 → requests/v1}/public/list_volume_types/leads_to_a_valid_response_when_no_parameters_are_provided.yml +0 -0
  549. data/test/cassettes/openstack/volume/{v1 → requests/v1}/public/list_volume_types/returns_the_correct_value_for_body_.yml +0 -0
  550. data/test/cassettes/openstack/volume/{v1 → requests/v1}/public/list_volume_types/returns_the_correct_value_for_headers_.yml +0 -0
  551. data/test/cassettes/openstack/volume/{v1 → requests/v1}/public/list_volume_types/returns_the_correct_value_for_http_method_.yml +0 -0
  552. data/test/cassettes/openstack/volume/{v1 → requests/v1}/public/list_volumes/leads_to_a_valid_response_when_all_tenants_param_is_true.yml +0 -0
  553. data/test/cassettes/openstack/volume/{v1 → requests/v1}/public/list_volumes/leads_to_a_valid_response_when_no_parameters_are_provided.yml +0 -0
  554. data/test/cassettes/openstack/volume/{v1 → requests/v1}/public/list_volumes/leads_to_a_valid_response_when_parameters_are_invalid.yml +0 -0
  555. data/test/cassettes/openstack/volume/{v1 → requests/v1}/public/list_volumes/leads_to_a_valid_response_when_parameters_are_valid.yml +0 -0
  556. data/test/cassettes/openstack/volume/{v1 → requests/v1}/public/list_volumes/returns_the_correct_value_for_body_.yml +0 -0
  557. data/test/cassettes/openstack/volume/{v1 → requests/v1}/public/list_volumes/returns_the_correct_value_for_headers_.yml +0 -0
  558. data/test/cassettes/openstack/volume/{v1 → requests/v1}/public/list_volumes/returns_the_correct_value_for_http_method_.yml +0 -0
  559. data/test/cassettes/openstack/volume/{v1 → requests/v1}/public/root/leads_to_a_valid_response_when_no_parameters_are_provided.yml +0 -0
  560. data/test/cassettes/openstack/volume/{v1 → requests/v1}/public/root/returns_the_correct_value_for_body_.yml +0 -0
  561. data/test/cassettes/openstack/volume/{v1 → requests/v1}/public/root/returns_the_correct_value_for_headers_.yml +0 -0
  562. data/test/cassettes/openstack/volume/{v1 → requests/v1}/public/root/returns_the_correct_value_for_http_method_.yml +0 -0
  563. data/test/cassettes/openstack/volume/{v1 → requests/v1}/public/root/returns_the_correct_value_for_url_.yml +0 -0
  564. data/test/cassettes/openstack/volume/{v1 → requests/v1}/public/update_volume/leads_to_a_valid_response_when_invalid_volume_id_is_provided.yml +0 -0
  565. data/test/cassettes/openstack/volume/{v1 → requests/v1}/public/update_volume/leads_to_a_valid_response_when_valid_volume_id_is_provided.yml +0 -0
  566. data/test/cassettes/openstack/volume/{v1 → requests/v1}/public/update_volume/returns_the_correct_value_for_body_.yml +0 -0
  567. data/test/cassettes/openstack/volume/{v1 → requests/v1}/public/update_volume/returns_the_correct_value_for_headers_.yml +0 -0
  568. data/test/cassettes/openstack/volume/{v1 → requests/v1}/public/update_volume/returns_the_correct_value_for_http_method_.yml +0 -0
  569. data/test/cassettes/openstack/volume/{v1 → requests/v1}/public/update_volume/returns_the_correct_value_for_url_.yml +0 -0
  570. data/test/environment.yml.example +31 -14
  571. data/test/support/request_helper.rb +37 -33
  572. data/test/support/test_environment.rb +1 -1
  573. metadata +1056 -1025
  574. data/lib/aviator/openstack/common/v2/public/base.rb +0 -47
  575. data/test/aviator/openstack/common/v2/public/base_test.rb +0 -109
  576. data/test/cassettes/openstack/common/v2/public/base/returns_the_correct_value_for_headers_.yml +0 -62
checksums.yaml CHANGED
@@ -1,15 +1,7 @@
1
1
  ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- ZGVhYTFmYzUyMjc5MGY4OWU0MDM2YzViZTM3N2ViNzEzNjljOGIyNA==
5
- data.tar.gz: !binary |-
6
- MzYyY2MwNTM5NDRmZTJhZWU2Mzg1ZmUxODNmNGVlZWI5MDgzMWY5MQ==
2
+ SHA1:
3
+ metadata.gz: 50c59bcfabe57baf9c0e21fcab0370bc31855e4a
4
+ data.tar.gz: 41e8ce7fed1ed7ddee839142d005d66c02a6665f
7
5
  SHA512:
8
- metadata.gz: !binary |-
9
- NjBmYWUyY2Q0NjFhODg5MjBhYWEwZTA4NTFhYTY5YjczMDE2OWRmZGZkMTNh
10
- ZTRkMGI1YjBmNjY3OWY3MzA2NGQxNjlhNGE0NDVhY2E0ZmQ3NTg3OThkNjcy
11
- YjFjNWUxZjJiZmZkYWIzZjQ2NDRmNDg4MzY0NjFjOWI4Nzg0YzY=
12
- data.tar.gz: !binary |-
13
- NDAyMjlkNGQ1MzRhNmE5YzVlNThlNzA0M2M2YWFkNDM5ODNhNTQ2MzkxZDg3
14
- MjcwMDZhYmE4MGJmZjIyZTljMDAxOGY4NTJiY2QzZWFkNDQwOTA5NTA0NGUw
15
- NGI0NTFlODM2NmI1OGU4M2VkYzVkNjVhMDg2YWM5ZjdjOWM2ZDk=
6
+ metadata.gz: 7fafc12e4cea11cb1e7fff20f13bfdb953614729f74865f1d16e5ca9273abb3c686c79578500232860394169b45283e90a6892abeaff38496e41071231aec36e
7
+ data.tar.gz: a9645737bdc80f20516b8b5f499ae15fe8cae7e189268925e207696c55ad0dba1b44125415e74b34316d9f3d0e136b89790533232696792ddd19c0a99bb868e9
data/.travis.yml CHANGED
@@ -3,15 +3,8 @@ rvm:
3
3
  - 1.8.7
4
4
  - 1.9.3
5
5
  - 2.0.0
6
- branches:
7
- only:
8
- - master
9
- - develop
10
- - release
6
+ - 2.1.0
11
7
  bundler_args: --without development
12
8
  script:
13
9
  - cp test/environment.yml.travis-ci test/environment.yml
14
10
  - bundle exec rake
15
- after_script:
16
- - cat tmp/aviator.log
17
- - cat tmp/vcr.log
data/Gemfile CHANGED
@@ -9,6 +9,7 @@ gemspec
9
9
  group :test do
10
10
  if Aviator::Compatibility::RUBY_1_8_MODE
11
11
  gem 'mime-types', '~> 1.25.1'
12
+ gem 'rest-client', '~> 1.6.7'
12
13
  end
13
14
 
14
15
  gem 'rake'
data/LICENSE.txt CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2013 Mark Maglana
1
+ Copyright (c) 2014 Mark Maglana
2
2
 
3
3
  MIT License
4
4
 
@@ -19,4 +19,4 @@ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
19
  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
20
  LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
21
  OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md CHANGED
@@ -1,11 +1,10 @@
1
1
  ![Aviator](https://raw.github.com/aviator/www/gh-pages/images/logo-small.png)
2
- <br/>A lightweight library for communicating with the OpenStack API.
2
+ <br/>An elegantly designed OpenStack SDK for Ruby
3
3
 
4
4
  [![Build Status](https://travis-ci.org/aviator/aviator.png?branch=master)](https://travis-ci.org/aviator/aviator)
5
5
  [![Coverage Status](https://coveralls.io/repos/aviator/aviator/badge.png?branch=master)](https://coveralls.io/r/aviator/aviator?branch=master)
6
6
  [![Code Climate](https://codeclimate.com/github/aviator/aviator.png)](https://codeclimate.com/github/aviator/aviator)
7
7
  [![Gem Version](https://badge.fury.io/rb/aviator.png)](http://badge.fury.io/rb/aviator)
8
- [![Dependency Status](https://gemnasium.com/aviator/aviator.png)](https://gemnasium.com/aviator/aviator)
9
8
 
10
9
 
11
- <a href="http://aviator.github.io/www/">Usage and Installation</a>
10
+ <a href="http://aviator.github.io/www/">Usage and Installation</a>
data/aviator.gemspec CHANGED
@@ -3,7 +3,7 @@ lib = File.expand_path('../lib', __FILE__)
3
3
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
 
5
5
  require 'aviator/version'
6
- require 'aviator/compatibility'
6
+ require 'aviator/core/utils/compatibility'
7
7
  require 'rbconfig'
8
8
 
9
9
  Gem::Specification.new do |spec|
@@ -22,13 +22,6 @@ Gem::Specification.new do |spec|
22
22
  spec.require_paths = ["lib"]
23
23
 
24
24
  spec.add_dependency 'faraday', '0.8.8'
25
-
26
- if Aviator::Compatibility::RUBY_1_8_MODE
27
- spec.add_dependency 'activesupport', '~> 2.0'
28
- else
29
- spec.add_dependency 'activesupport', '>= 3.2.8'
30
- end
31
-
32
25
  spec.add_dependency 'thor', '~> 0.18.1'
33
26
  spec.add_dependency 'terminal-table', '>= 1.4.5'
34
27
 
@@ -26,7 +26,7 @@ module Aviator
26
26
 
27
27
  def self.describe_request(provider_name, service_name, api_version, endpoint_type, request_name)
28
28
  service = Aviator::Service.new :provider => provider_name, :service => service_name
29
- request_class = "Aviator::#{ provider_name.camelize }::#{ service_name.camelize }::"\
29
+ request_class = "Aviator::#{ provider_name.camelize }::#{ service_name.camelize }::Requests::"\
30
30
  "#{ api_version.camelize }::#{ endpoint_type.camelize }::#{ request_name.camelize }".constantize
31
31
 
32
32
  display = ":Request => #{ request_name }\n"
@@ -34,6 +34,7 @@ module Aviator
34
34
  namespace_arr = [
35
35
  klass.provider,
36
36
  klass.service,
37
+ 'Requests',
37
38
  klass.api_version,
38
39
  klass.endpoint_type
39
40
  ]
@@ -55,17 +56,29 @@ module Aviator
55
56
 
56
57
 
57
58
  def get_request_class(root_namespace, request_class_arr)
58
- request_class_arr.inject(root_namespace) do |namespace, sym|
59
+ provider_specific = request_class_arr != [:request]
60
+
61
+ if provider_specific
62
+ full_request_class_arr = request_class_arr.dup
63
+ full_request_class_arr.insert(2, :requests) if provider_specific
64
+ else
65
+ full_request_class_arr = request_class_arr
66
+ end
67
+
68
+ full_request_class_arr.inject(root_namespace) do |namespace, sym|
59
69
  namespace.const_get(sym.to_s.camelize, false)
60
70
  end
61
71
  rescue NameError => e
62
- arr = ['..', '..'] + request_class_arr
63
- arr[-1,1] = arr.last.to_s + '.rb'
64
- path = Pathname.new(__FILE__).join(*arr.map{|i| i.to_s }).expand_path
72
+ if Aviator.const_defined?(full_request_class_arr[0].to_s.camelize)
73
+ provider = "Aviator::#{ full_request_class_arr[0] }::Provider".constantize
74
+ arr = ['..'] + full_request_class_arr
75
+ arr[-1,1] = arr.last.to_s + '.rb'
76
+ path = Pathname.new(provider.root_dir).join(*arr.map{|i| i.to_s }).expand_path
77
+ end
65
78
 
66
- if path.exist?
79
+ if provider && path.exist?
67
80
  require path
68
- request_class_arr.inject(root_namespace) do |namespace, sym|
81
+ full_request_class_arr.inject(root_namespace) do |namespace, sym|
69
82
  namespace.const_get(sym.to_s.camelize, false)
70
83
  end
71
84
  else
@@ -3,7 +3,7 @@ module Aviator
3
3
  class Response
4
4
  extend Forwardable
5
5
 
6
- def_delegators :@response, :headers, :status
6
+ def_delegators :@response, :status
7
7
 
8
8
  attr_reader :request
9
9
 
@@ -28,6 +28,11 @@ module Aviator
28
28
  end
29
29
 
30
30
 
31
+ def headers
32
+ Hashish.new(@response.headers)
33
+ end
34
+
35
+
31
36
  private
32
37
 
33
38
  def raw_body
@@ -29,8 +29,8 @@ module Aviator
29
29
 
30
30
 
31
31
  class UnknownRequestError < StandardError
32
- def initialize(request_name)
33
- super "Unknown request #{ request_name }."
32
+ def initialize(request_name, options)
33
+ super "Unknown request #{ request_name } #{ options }."
34
34
  end
35
35
  end
36
36
 
@@ -60,6 +60,7 @@ module Aviator
60
60
  @provider = opts[:provider] || (raise ProviderNotDefinedError.new)
61
61
  @service = opts[:service] || (raise ServiceNameNotDefinedError.new)
62
62
  @log_file = opts[:log_file]
63
+ @default_options = opts[:default_options] || {}
63
64
 
64
65
  @default_session_data = opts[:default_session_data]
65
66
 
@@ -68,6 +69,10 @@ module Aviator
68
69
 
69
70
 
70
71
  def request(request_name, options={}, &params)
72
+ if options[:api_version].nil? && @default_options[:api_version]
73
+ options[:api_version] = @default_options[:api_version]
74
+ end
75
+
71
76
  session_data = options[:session_data] || default_session_data
72
77
 
73
78
  raise SessionDataNotProvidedError.new unless session_data
@@ -76,9 +81,9 @@ module Aviator
76
81
  session_data[k] = options[k] if options[k]
77
82
  end
78
83
 
79
- request_class = find_request(request_name, session_data, options[:endpoint_type])
84
+ request_class = provider_module.find_request(service, request_name, session_data, options)
80
85
 
81
- raise UnknownRequestError.new(request_name) unless request_class
86
+ raise UnknownRequestError.new(request_name, options) unless request_class
82
87
 
83
88
  request = request_class.new(session_data, &params)
84
89
 
@@ -111,71 +116,8 @@ module Aviator
111
116
  end
112
117
 
113
118
 
114
- # Candidate for extraction to aviator/openstack
115
- def find_request(name, session_data, endpoint_type=nil)
116
- endpoint_types = if endpoint_type
117
- [endpoint_type.to_s.camelize]
118
- else
119
- ['Public', 'Admin']
120
- end
121
-
122
- namespace = Aviator.const_get(provider.camelize) \
123
- .const_get(service.camelize)
124
-
125
- version = infer_version(session_data, name).to_s.camelize
126
-
127
- return nil unless version && namespace.const_defined?(version)
128
-
129
- namespace = namespace.const_get(version, name)
130
-
131
- endpoint_types.each do |endpoint_type|
132
- name = name.to_s.camelize
133
-
134
- next unless namespace.const_defined?(endpoint_type)
135
- next unless namespace.const_get(endpoint_type).const_defined?(name)
136
-
137
- return namespace.const_get(endpoint_type).const_get(name)
138
- end
139
-
140
- nil
141
- end
142
-
143
-
144
- # Candidate for extraction to aviator/openstack
145
- def infer_version(session_data, request_name='sample_request')
146
- if session_data.has_key?(:auth_service) && session_data[:auth_service][:api_version]
147
- session_data[:auth_service][:api_version].to_sym
148
-
149
- elsif session_data.has_key?(:auth_service) && session_data[:auth_service][:host_uri]
150
- m = session_data[:auth_service][:host_uri].match(/(v\d+)\.?\d*/)
151
- return m[1].to_sym unless m.nil?
152
-
153
- elsif session_data.has_key? :base_url
154
- m = session_data[:base_url].match(/(v\d+)\.?\d*/)
155
- return m[1].to_sym unless m.nil?
156
-
157
- elsif session_data.has_key? :access
158
- service_spec = session_data[:access][:serviceCatalog].find{|s| s[:type] == service }
159
- raise MissingServiceEndpointError.new(service.to_s, request_name) unless service_spec
160
- version = service_spec[:endpoints][0][:publicURL].match(/(v\d+)\.?\d*/)
161
- version ? version[1].to_sym : :v1
162
- end
163
- end
164
-
165
-
166
119
  def load_requests
167
- # :TODO => This should be determined by a provider-specific module.
168
- # e.g. Aviator::OpenStack::requests_base_dir
169
- request_file_paths = Dir.glob(Pathname.new(__FILE__).join(
170
- '..',
171
- '..',
172
- provider.to_s,
173
- service.to_s,
174
- '**',
175
- '*.rb'
176
- ).expand_path
177
- )
178
-
120
+ request_file_paths = provider_module.request_file_paths(service)
179
121
  request_file_paths.each{ |path| require path }
180
122
 
181
123
  constant_parts = request_file_paths \
@@ -192,6 +134,11 @@ module Aviator
192
134
  @log_file
193
135
  end
194
136
 
137
+
138
+ def provider_module
139
+ @provider_module ||= "Aviator::#{provider.camelize}::Provider".constantize
140
+ end
141
+
195
142
  end
196
143
 
197
144
  end
@@ -67,8 +67,11 @@ module Aviator
67
67
 
68
68
  response = auth_service.request environment[:auth_service][:request].to_sym, &block
69
69
 
70
- if response.status == 200
71
- @auth_info = response.body
70
+ if [200, 201].include? response.status
71
+ @auth_response = Hashish.new({
72
+ :headers => response.headers,
73
+ :body => response.body
74
+ })
72
75
  update_services_session_data
73
76
  else
74
77
  raise AuthenticationError.new(response.body)
@@ -77,14 +80,14 @@ module Aviator
77
80
 
78
81
 
79
82
  def authenticated?
80
- !auth_info.nil?
83
+ !auth_response.nil?
81
84
  end
82
85
 
83
86
 
84
87
  def dump
85
88
  JSON.generate({
86
- :environment => environment,
87
- :auth_info => auth_info
89
+ :environment => environment,
90
+ :auth_response => auth_response
88
91
  })
89
92
  end
90
93
 
@@ -118,10 +121,9 @@ module Aviator
118
121
  raise NotAuthenticatedError.new unless authenticated?
119
122
  raise ValidatorNotDefinedError.new unless environment[:auth_service][:validator]
120
123
 
121
- auth_with_bootstrap = auth_info.merge({ :auth_service => environment[:auth_service] })
124
+ auth_with_bootstrap = auth_response.merge({ :auth_service => environment[:auth_service] })
122
125
 
123
126
  response = auth_service.request environment[:auth_service][:validator].to_sym, :session_data => auth_with_bootstrap
124
-
125
127
  response.status == 200 || response.status == 203
126
128
  end
127
129
 
@@ -129,17 +131,17 @@ module Aviator
129
131
  private
130
132
 
131
133
 
132
- def auth_info
133
- @auth_info
134
+ def auth_response
135
+ @auth_response
134
136
  end
135
137
 
136
138
 
137
139
  def auth_service
138
140
  @auth_service ||= Service.new(
139
- :provider => environment[:provider],
140
- :service => environment[:auth_service][:name],
141
+ :provider => environment[:provider],
142
+ :service => environment[:auth_service][:name],
141
143
  :default_session_data => { :auth_service => environment[:auth_service] },
142
- :log_file => log_file
144
+ :log_file => log_file
143
145
  )
144
146
  end
145
147
 
@@ -154,12 +156,17 @@ module Aviator
154
156
 
155
157
  @services ||= {}
156
158
 
157
- @services[service_name] ||= Service.new(
158
- :provider => environment[:provider],
159
- :service => service_name,
160
- :default_session_data => auth_info,
161
- :log_file => log_file
162
- )
159
+ if @services[service_name].nil?
160
+ default_options = environment["#{ service_name }_service"]
161
+
162
+ @services[service_name] = Service.new(
163
+ :provider => environment[:provider],
164
+ :service => service_name,
165
+ :default_session_data => auth_response,
166
+ :default_options => default_options,
167
+ :log_file => log_file
168
+ )
169
+ end
163
170
 
164
171
  @services[service_name]
165
172
  end
@@ -177,15 +184,17 @@ module Aviator
177
184
 
178
185
 
179
186
  def initialize_with_dump(session_dump)
180
- session_info = Hashish.new(JSON.parse(session_dump))
181
- @environment = session_info[:environment]
182
- @auth_info = session_info[:auth_info]
187
+ session_info = Hashish.new(JSON.parse(session_dump))
188
+ @environment = session_info[:environment]
189
+ @auth_response = session_info[:auth_response]
183
190
  end
184
191
 
192
+
185
193
  def initialize_with_hash(hash_obj)
186
194
  @environment = Hashish.new(hash_obj)
187
195
  end
188
196
 
197
+
189
198
  def log_file
190
199
  @log_file
191
200
  end
@@ -195,7 +204,7 @@ module Aviator
195
204
  return unless @services
196
205
 
197
206
  @services.each do |name, obj|
198
- obj.default_session_data = auth_info
207
+ obj.default_session_data = auth_response
199
208
  end
200
209
  end
201
210
 
@@ -1,3 +1,5 @@
1
+ require 'json'
2
+
1
3
  # Hash-ish!
2
4
  #
3
5
  # This class is implemented using composition rather than inheritance so
@@ -6,7 +8,8 @@ class Hashish
6
8
  include Enumerable
7
9
 
8
10
  def initialize(hash={})
9
- @hash = hash
11
+ @hash = hash.dup
12
+ stringify_keys
10
13
  hashishify_values
11
14
  end
12
15
 
@@ -23,6 +26,10 @@ class Hashish
23
26
  @hash[normalize(key)] = value
24
27
  end
25
28
 
29
+ def dup
30
+ Hashish.new(JSON.parse(@hash.to_json))
31
+ end
32
+
26
33
  def each(&block)
27
34
  @hash.each(&block)
28
35
  end
@@ -96,11 +103,10 @@ class Hashish
96
103
  end
97
104
  end
98
105
 
106
+
99
107
  def normalize(key)
100
108
  if @hash.has_key? key
101
109
  key
102
- elsif key.is_a? String
103
- key.to_sym
104
110
  elsif key.is_a? Symbol
105
111
  key.to_s
106
112
  else
@@ -108,4 +114,14 @@ class Hashish
108
114
  end
109
115
  end
110
116
 
117
+
118
+ def stringify_keys
119
+ keys = @hash.keys
120
+ keys.each do |key|
121
+ if key.is_a? Symbol
122
+ @hash[key.to_s] = @hash.delete(key)
123
+ end
124
+ end
125
+ end
126
+
111
127
  end
@@ -0,0 +1,24 @@
1
+ class String
2
+
3
+ unless instance_methods.include? 'camelize'
4
+ define_method :camelize do
5
+ word = self.slice(0,1).capitalize + self.slice(1..-1)
6
+ word.gsub(/_([a-zA-Z\d])/) { "#{$1.capitalize}" }
7
+ end
8
+ end
9
+
10
+ unless instance_methods.include? 'constantize'
11
+ define_method :constantize do
12
+ self.split("::").inject(Object) do |namespace, sym|
13
+ namespace.const_get(sym.to_s.camelize, false)
14
+ end
15
+ end
16
+ end
17
+
18
+ unless instance_methods.include? 'underscore'
19
+ define_method :underscore do
20
+ self.gsub(/([a-z\d])([A-Z])/, '\1_\2').downcase
21
+ end
22
+ end
23
+
24
+ end
data/lib/aviator/core.rb CHANGED
@@ -1,11 +1,12 @@
1
1
  require 'yaml'
2
2
  require 'json'
3
- require 'active_support/inflector'
4
3
  require 'faraday'
4
+ require 'pathname'
5
5
 
6
6
  require "aviator/version"
7
- require "aviator/compatibility"
8
- require "aviator/hashish"
7
+ require "aviator/core/utils/string"
8
+ require "aviator/core/utils/compatibility"
9
+ require "aviator/core/utils/hashish"
9
10
  require "aviator/core/request"
10
11
  require "aviator/core/request_builder"
11
12
  require "aviator/core/response"
@@ -0,0 +1,119 @@
1
+ module Aviator
2
+
3
+ define_request :base do
4
+
5
+ meta :provider, :openstack
6
+ meta :service, :common
7
+ meta :api_version, :v0
8
+ meta :endpoint_type, :public
9
+
10
+ def headers
11
+ {}.tap do |h|
12
+ if self.anonymous?
13
+ # do nothing
14
+
15
+ elsif keystone_v2_style_session_data?
16
+ h['X-Auth-Token'] = session_data[:body][:access][:token][:id]
17
+
18
+ elsif keystone_v3_style_session_data?
19
+ h['X-Auth-Token'] = session_data[:headers]['x-subject-token']
20
+
21
+ else
22
+ raise "Unknown session data format!"
23
+
24
+ end
25
+ end
26
+ end
27
+
28
+
29
+ private
30
+
31
+ def base_url
32
+ if session_data[:base_url]
33
+ session_data[:base_url]
34
+
35
+ elsif keystone_v2_style_session_data? && keystone_v2_style_service_info?
36
+ extract_base_url_from_keystone_v2_session_data
37
+
38
+ elsif keystone_v3_style_session_data? && keystone_v3_style_service_info?
39
+ extract_base_url_from_keystone_v3_session_data
40
+
41
+ elsif session_data[:auth_service] && session_data[:auth_service][:host_uri] && session_data[:auth_service][:api_version]
42
+ version = session_data[:auth_service][:api_version].to_s == "v2" ? "v2.0" : session_data[:auth_service][:api_version]
43
+ "#{ session_data[:auth_service][:host_uri] }/#{ version }"
44
+
45
+ elsif session_data[:auth_service] && session_data[:auth_service][:host_uri]
46
+ session_data[:auth_service][:host_uri]
47
+
48
+ else
49
+ raise Aviator::Service::MissingServiceEndpointError.new(service.to_s, self.class)
50
+ end
51
+ end
52
+
53
+
54
+ def build_service_type_string
55
+ api_versions_without_a_suffix = [
56
+ [:compute, :v2],
57
+ [:ec2, :v1],
58
+ [:identity, :v2],
59
+ [:image, :v1],
60
+ [:metering, :v1],
61
+ [:s3, :v1],
62
+ [:volume, :v1]
63
+ ]
64
+
65
+ if api_versions_without_a_suffix.include? [service, api_version]
66
+ service.to_s
67
+ else
68
+ "#{ service }#{ api_version }"
69
+ end
70
+ end
71
+
72
+
73
+ def extract_base_url_from_keystone_v2_session_data
74
+ service_info = session_data[:body][:access][:serviceCatalog].find{ |s| s[:type] == build_service_type_string }
75
+ service_info[:endpoints][0]["#{ endpoint_type }URL".to_sym]
76
+ end
77
+
78
+
79
+ def extract_base_url_from_keystone_v3_session_data
80
+ service_info = session_data[:body][:token][:catalog].select{ |s| s[:type] == build_service_type_string }
81
+ endpoints = service_info.find{ |s| s.keys.include? "endpoints" }['endpoints']
82
+
83
+ endpoints.find{ |s| s['interface'] == endpoint_type.to_s }['url']
84
+ end
85
+
86
+
87
+ def keystone_v2_style_service_info?
88
+ not session_data[:body][:access][:serviceCatalog].find{ |s| s[:type] == build_service_type_string }.nil?
89
+ end
90
+
91
+
92
+ def keystone_v2_style_session_data?
93
+ session_data.has_key?(:body) && session_data[:body].has_key?(:access)
94
+ end
95
+
96
+
97
+ def keystone_v3_style_service_info?
98
+ not session_data[:body][:token][:catalog].find{ |s| s[:type] == build_service_type_string }.nil?
99
+ end
100
+
101
+
102
+ def keystone_v3_style_session_data?
103
+ session_data.has_key?(:headers) && session_data[:headers].has_key?("x-subject-token")
104
+ end
105
+
106
+
107
+ def params_to_querystring(param_names)
108
+ filters = []
109
+
110
+ param_names.each do |param_name|
111
+ filters << "#{ param_name }=#{ params[param_name] }" if params[param_name]
112
+ end
113
+
114
+ filters.empty? ? "" : "?#{ filters.join('&') }"
115
+ end
116
+
117
+ end
118
+
119
+ end
@@ -0,0 +1,9 @@
1
+ module Aviator
2
+
3
+ define_request :base, :inherit => [:openstack, :common, :v0, :public, :base] do
4
+
5
+ meta :api_version, :v2
6
+
7
+ end
8
+
9
+ end
@@ -0,0 +1,9 @@
1
+ module Aviator
2
+
3
+ define_request :base, :inherit => [:openstack, :common, :v0, :public, :base] do
4
+
5
+ meta :api_version, :v3
6
+
7
+ end
8
+
9
+ end