aviator 0.0.5 → 0.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (220) hide show
  1. checksums.yaml +8 -8
  2. data/README.md +1 -204
  3. data/aviator.gemspec +3 -2
  4. data/lib/aviator/core/cli/describer.rb +99 -48
  5. data/lib/aviator/core/cli.rb +1 -0
  6. data/lib/aviator/core/request.rb +46 -9
  7. data/lib/aviator/core/request_builder.rb +82 -30
  8. data/lib/aviator/core/response.rb +15 -23
  9. data/lib/aviator/core/service.rb +43 -17
  10. data/lib/aviator/core.rb +1 -0
  11. data/lib/aviator/openstack/common/v2/admin/base.rb +9 -0
  12. data/lib/aviator/openstack/common/v2/public/base.rb +43 -0
  13. data/lib/aviator/openstack/compute/v2/admin/confirm_server_resize.rb +4 -14
  14. data/lib/aviator/openstack/compute/v2/admin/create_network.rb +56 -0
  15. data/lib/aviator/openstack/compute/v2/admin/get_host_details.rb +4 -15
  16. data/lib/aviator/openstack/compute/v2/admin/list_hosts.rb +5 -16
  17. data/lib/aviator/openstack/compute/v2/admin/lock_server.rb +34 -0
  18. data/lib/aviator/openstack/compute/v2/admin/migrate_server.rb +34 -0
  19. data/lib/aviator/openstack/compute/v2/admin/reset_server.rb +39 -0
  20. data/lib/aviator/openstack/compute/v2/admin/resize_server.rb +5 -15
  21. data/lib/aviator/openstack/compute/v2/admin/unlock_server.rb +34 -0
  22. data/lib/aviator/openstack/compute/v2/public/change_admin_password.rb +14 -24
  23. data/lib/aviator/openstack/compute/v2/public/create_image.rb +4 -14
  24. data/lib/aviator/openstack/compute/v2/public/create_server.rb +9 -19
  25. data/lib/aviator/openstack/compute/v2/public/delete_image.rb +4 -15
  26. data/lib/aviator/openstack/compute/v2/public/delete_server.rb +4 -14
  27. data/lib/aviator/openstack/compute/v2/public/get_flavor_details.rb +29 -0
  28. data/lib/aviator/openstack/compute/v2/public/get_image_details.rb +4 -15
  29. data/lib/aviator/openstack/compute/v2/public/get_network_details.rb +30 -0
  30. data/lib/aviator/openstack/compute/v2/public/get_server.rb +9 -20
  31. data/lib/aviator/openstack/compute/v2/public/list_addresses.rb +5 -17
  32. data/lib/aviator/openstack/compute/v2/public/list_flavors.rb +8 -28
  33. data/lib/aviator/openstack/compute/v2/public/list_images.rb +6 -26
  34. data/lib/aviator/openstack/compute/v2/public/list_networks.rb +27 -0
  35. data/lib/aviator/openstack/compute/v2/public/list_servers.rb +14 -25
  36. data/lib/aviator/openstack/compute/v2/public/pause_server.rb +34 -0
  37. data/lib/aviator/openstack/compute/v2/public/reboot_server.rb +4 -14
  38. data/lib/aviator/openstack/compute/v2/public/rebuild_server.rb +8 -18
  39. data/lib/aviator/openstack/compute/v2/public/resume_server.rb +34 -0
  40. data/lib/aviator/openstack/compute/v2/public/root.rb +4 -14
  41. data/lib/aviator/openstack/compute/v2/public/suspend_server.rb +34 -0
  42. data/lib/aviator/openstack/compute/v2/public/unpause_server.rb +34 -0
  43. data/lib/aviator/openstack/compute/v2/public/update_server.rb +6 -16
  44. data/lib/aviator/openstack/identity/v2/admin/add_role_to_user_on_tenant.rb +5 -18
  45. data/lib/aviator/openstack/identity/v2/admin/create_tenant.rb +4 -14
  46. data/lib/aviator/openstack/identity/v2/admin/create_user.rb +1 -1
  47. data/lib/aviator/openstack/identity/v2/admin/delete_role_from_user_on_tenant.rb +6 -18
  48. data/lib/aviator/openstack/identity/v2/admin/delete_tenant.rb +4 -15
  49. data/lib/aviator/openstack/identity/v2/admin/list_tenants.rb +5 -24
  50. data/lib/aviator/openstack/identity/v2/admin/update_tenant.rb +4 -14
  51. data/lib/aviator/openstack/identity/v2/admin/update_user.rb +1 -1
  52. data/lib/aviator/openstack/identity/v2/public/create_token.rb +6 -11
  53. data/lib/aviator/openstack/identity/v2/public/list_tenants.rb +5 -24
  54. data/lib/aviator/openstack/identity/v2/public/root.rb +5 -14
  55. data/lib/aviator/openstack/image/v1/public/root.rb +5 -14
  56. data/lib/aviator/openstack/metering/v1/admin/list_projects.rb +4 -11
  57. data/lib/aviator/openstack/volume/v1/public/create_volume.rb +47 -0
  58. data/lib/aviator/openstack/volume/v1/public/delete_volume.rb +25 -0
  59. data/lib/aviator/openstack/volume/v1/public/get_volume.rb +28 -0
  60. data/lib/aviator/openstack/volume/v1/public/list_volume_types.rb +29 -0
  61. data/lib/aviator/openstack/volume/v1/public/list_volumes.rb +37 -0
  62. data/lib/aviator/openstack/volume/v1/public/root.rb +6 -14
  63. data/lib/aviator/openstack/volume/v1/public/update_volume.rb +43 -0
  64. data/lib/aviator/version.rb +1 -1
  65. data/test/aviator/core/cli/describer_test.rb +236 -114
  66. data/test/aviator/core/request_builder_test.rb +133 -12
  67. data/test/aviator/core/request_test.rb +64 -0
  68. data/test/aviator/core/service_test.rb +18 -0
  69. data/test/aviator/openstack/common/v2/public/base_test.rb +109 -0
  70. data/test/aviator/openstack/compute/v2/admin/create_network_test.rb +163 -0
  71. data/test/aviator/openstack/compute/v2/admin/lock_server_test.rb +125 -0
  72. data/test/aviator/openstack/compute/v2/admin/migrate_server_test.rb +125 -0
  73. data/test/aviator/openstack/compute/v2/admin/reset_server_test.rb +141 -0
  74. data/test/aviator/openstack/compute/v2/admin/resize_server_test.rb +9 -0
  75. data/test/aviator/openstack/compute/v2/admin/unlock_server_test.rb +125 -0
  76. data/test/aviator/openstack/compute/v2/public/change_admin_password_test.rb +9 -0
  77. data/test/aviator/openstack/compute/v2/public/create_server_test.rb +14 -1
  78. data/test/aviator/openstack/compute/v2/public/get_flavor_details_test.rb +126 -0
  79. data/test/aviator/openstack/compute/v2/public/get_image_details_test.rb +1 -1
  80. data/test/aviator/openstack/compute/v2/public/get_network_details_test.rb +123 -0
  81. data/test/aviator/openstack/compute/v2/public/get_server_test.rb +35 -35
  82. data/test/aviator/openstack/compute/v2/public/list_addresses_test.rb +9 -0
  83. data/test/aviator/openstack/compute/v2/public/list_flavors_test.rb +50 -40
  84. data/test/aviator/openstack/compute/v2/public/list_images_test.rb +42 -33
  85. data/test/aviator/openstack/compute/v2/public/list_networks_test.rb +100 -0
  86. data/test/aviator/openstack/compute/v2/public/list_servers_test.rb +9 -1
  87. data/test/aviator/openstack/compute/v2/public/pause_server_test.rb +125 -0
  88. data/test/aviator/openstack/compute/v2/public/rebuild_server_test.rb +12 -0
  89. data/test/aviator/openstack/compute/v2/public/resume_server_test.rb +125 -0
  90. data/test/aviator/openstack/compute/v2/public/suspend_server_test.rb +125 -0
  91. data/test/aviator/openstack/compute/v2/public/unpause_server_test.rb +125 -0
  92. data/test/aviator/openstack/compute/v2/public/update_server_test.rb +37 -27
  93. data/test/aviator/openstack/identity/v2/admin/create_user_test.rb +9 -0
  94. data/test/aviator/openstack/identity/v2/admin/update_user_test.rb +9 -0
  95. data/test/aviator/openstack/identity/v2/public/create_token_test.rb +16 -5
  96. data/test/aviator/openstack/identity/v2/public/list_tenants_test.rb +131 -0
  97. data/test/aviator/openstack/volume/v1/public/create_volume_test.rb +126 -0
  98. data/test/aviator/openstack/volume/v1/public/delete_volume_test.rb +131 -0
  99. data/test/aviator/openstack/volume/v1/public/get_volume_test.rb +141 -0
  100. data/test/aviator/openstack/volume/v1/public/list_volume_types_test.rb +91 -0
  101. data/test/aviator/openstack/volume/v1/public/list_volumes_test.rb +154 -0
  102. data/test/aviator/openstack/volume/v1/public/update_volume_test.rb +130 -0
  103. data/test/cassettes/openstack/common/v2/public/base/returns_the_correct_value_for_headers_.yml +62 -0
  104. data/test/cassettes/openstack/compute/v2/admin/create_network/leads_to_a_valid_response_when_invalid_parameters_are_provided.yml +98 -0
  105. data/test/cassettes/openstack/compute/v2/admin/create_network/leads_to_a_valid_response_when_valid_parameters_are_provided.yml +103 -0
  106. data/test/cassettes/openstack/compute/v2/admin/create_network/returns_the_correct_value_for_headers_.yml +64 -0
  107. data/test/cassettes/openstack/compute/v2/admin/create_network/returns_the_correct_value_for_http_method_.yml +64 -0
  108. data/test/cassettes/openstack/compute/v2/admin/create_network/returns_the_correct_value_for_url_.yml +64 -0
  109. data/test/cassettes/openstack/compute/v2/admin/lock_server/leads_to_a_valid_response_when_invalid_server_id_is_provided.yml +98 -0
  110. data/test/cassettes/openstack/compute/v2/admin/lock_server/leads_to_a_valid_response_when_valid_params_are_provided.yml +131 -0
  111. data/test/cassettes/openstack/compute/v2/admin/lock_server/returns_the_correct_value_for_body_.yml +64 -0
  112. data/test/cassettes/openstack/compute/v2/admin/lock_server/returns_the_correct_value_for_headers_.yml +64 -0
  113. data/test/cassettes/openstack/compute/v2/admin/lock_server/returns_the_correct_value_for_http_method_.yml +64 -0
  114. data/test/cassettes/openstack/compute/v2/admin/lock_server/returns_the_correct_value_for_url_.yml +64 -0
  115. data/test/cassettes/openstack/compute/v2/admin/migrate_server/leads_to_a_valid_response_when_invalid_server_id_is_provided.yml +98 -0
  116. data/test/cassettes/openstack/compute/v2/admin/migrate_server/leads_to_a_valid_response_when_valid_params_are_provided.yml +131 -0
  117. data/test/cassettes/openstack/compute/v2/admin/migrate_server/returns_the_correct_value_for_body_.yml +64 -0
  118. data/test/cassettes/openstack/compute/v2/admin/migrate_server/returns_the_correct_value_for_headers_.yml +64 -0
  119. data/test/cassettes/openstack/compute/v2/admin/migrate_server/returns_the_correct_value_for_http_method_.yml +64 -0
  120. data/test/cassettes/openstack/compute/v2/admin/migrate_server/returns_the_correct_value_for_url_.yml +64 -0
  121. data/test/cassettes/openstack/compute/v2/admin/reset_server/leads_to_a_valid_response_when_invalid_server_id_is_provided.yml +98 -0
  122. data/test/cassettes/openstack/compute/v2/admin/reset_server/leads_to_a_valid_response_when_valid_params_are_provided.yml +131 -0
  123. data/test/cassettes/openstack/compute/v2/admin/reset_server/returns_the_correct_value_for_body_.yml +64 -0
  124. data/test/cassettes/openstack/compute/v2/admin/reset_server/returns_the_correct_value_for_headers_.yml +64 -0
  125. data/test/cassettes/openstack/compute/v2/admin/reset_server/returns_the_correct_value_for_http_method_.yml +64 -0
  126. data/test/cassettes/openstack/compute/v2/admin/reset_server/returns_the_correct_value_for_url_.yml +64 -0
  127. data/test/cassettes/openstack/compute/v2/admin/unlock_server/leads_to_a_valid_response_when_invalid_server_id_is_provided.yml +98 -0
  128. data/test/cassettes/openstack/compute/v2/admin/unlock_server/leads_to_a_valid_response_when_valid_params_are_provided.yml +131 -0
  129. data/test/cassettes/openstack/compute/v2/admin/unlock_server/returns_the_correct_value_for_body_.yml +64 -0
  130. data/test/cassettes/openstack/compute/v2/admin/unlock_server/returns_the_correct_value_for_headers_.yml +64 -0
  131. data/test/cassettes/openstack/compute/v2/admin/unlock_server/returns_the_correct_value_for_http_method_.yml +64 -0
  132. data/test/cassettes/openstack/compute/v2/admin/unlock_server/returns_the_correct_value_for_url_.yml +64 -0
  133. data/test/cassettes/openstack/compute/v2/public/get_flavor_details/leads_to_a_valid_response_when_invalid_parameters_are_provided.yml +96 -0
  134. data/test/cassettes/openstack/compute/v2/public/get_flavor_details/leads_to_a_valid_response_when_parameters_are_provided.yml +99 -0
  135. data/test/cassettes/openstack/compute/v2/public/get_flavor_details/returns_the_correct_value_for_body_.yml +62 -0
  136. data/test/cassettes/openstack/compute/v2/public/get_flavor_details/returns_the_correct_value_for_headers_.yml +62 -0
  137. data/test/cassettes/openstack/compute/v2/public/get_flavor_details/returns_the_correct_value_for_http_method_.yml +62 -0
  138. data/test/cassettes/openstack/compute/v2/public/get_flavor_details/returns_the_correct_value_for_url_.yml +62 -0
  139. data/test/cassettes/openstack/compute/v2/public/get_network_details/leads_to_a_valid_response_when_invalid_network_id_is_provided.yml +99 -0
  140. data/test/cassettes/openstack/compute/v2/public/get_network_details/leads_to_a_valid_response_when_valid_network_id_is_provided.yml +136 -0
  141. data/test/cassettes/openstack/compute/v2/public/get_network_details/returns_the_correct_value_for_body_.yml +65 -0
  142. data/test/cassettes/openstack/compute/v2/public/get_network_details/returns_the_correct_value_for_headers_.yml +65 -0
  143. data/test/cassettes/openstack/compute/v2/public/get_network_details/returns_the_correct_value_for_http_method_.yml +65 -0
  144. data/test/cassettes/openstack/compute/v2/public/get_network_details/returns_the_correct_value_for_url_.yml +65 -0
  145. data/test/cassettes/openstack/compute/v2/public/list_networks/leads_to_a_valid_response_when_no_parameters_are_provided.yml +101 -0
  146. data/test/cassettes/openstack/compute/v2/public/list_networks/returns_the_correct_value_for_body_.yml +65 -0
  147. data/test/cassettes/openstack/compute/v2/public/list_networks/returns_the_correct_value_for_headers_.yml +65 -0
  148. data/test/cassettes/openstack/compute/v2/public/list_networks/returns_the_correct_value_for_http_method_.yml +65 -0
  149. data/test/cassettes/openstack/compute/v2/public/list_networks/returns_the_correct_value_for_url_.yml +65 -0
  150. data/test/cassettes/openstack/compute/v2/public/pause_server/leads_to_a_valid_response_when_invalid_server_id_is_provided.yml +99 -0
  151. data/test/cassettes/openstack/compute/v2/public/pause_server/leads_to_a_valid_response_when_valid_params_are_provided.yml +132 -0
  152. data/test/cassettes/openstack/compute/v2/public/pause_server/returns_the_correct_value_for_body_.yml +65 -0
  153. data/test/cassettes/openstack/compute/v2/public/pause_server/returns_the_correct_value_for_headers_.yml +65 -0
  154. data/test/cassettes/openstack/compute/v2/public/pause_server/returns_the_correct_value_for_http_method_.yml +65 -0
  155. data/test/cassettes/openstack/compute/v2/public/pause_server/returns_the_correct_value_for_url_.yml +65 -0
  156. data/test/cassettes/openstack/compute/v2/public/resume_server/leads_to_a_valid_response_when_invalid_server_id_is_provided.yml +99 -0
  157. data/test/cassettes/openstack/compute/v2/public/resume_server/leads_to_a_valid_response_when_valid_params_are_provided.yml +132 -0
  158. data/test/cassettes/openstack/compute/v2/public/resume_server/returns_the_correct_value_for_body_.yml +65 -0
  159. data/test/cassettes/openstack/compute/v2/public/resume_server/returns_the_correct_value_for_headers_.yml +65 -0
  160. data/test/cassettes/openstack/compute/v2/public/resume_server/returns_the_correct_value_for_http_method_.yml +65 -0
  161. data/test/cassettes/openstack/compute/v2/public/resume_server/returns_the_correct_value_for_url_.yml +65 -0
  162. data/test/cassettes/openstack/compute/v2/public/suspend_server/leads_to_a_valid_response_when_invalid_server_id_is_provided.yml +99 -0
  163. data/test/cassettes/openstack/compute/v2/public/suspend_server/leads_to_a_valid_response_when_valid_params_are_provided.yml +132 -0
  164. data/test/cassettes/openstack/compute/v2/public/suspend_server/returns_the_correct_value_for_body_.yml +65 -0
  165. data/test/cassettes/openstack/compute/v2/public/suspend_server/returns_the_correct_value_for_headers_.yml +65 -0
  166. data/test/cassettes/openstack/compute/v2/public/suspend_server/returns_the_correct_value_for_http_method_.yml +65 -0
  167. data/test/cassettes/openstack/compute/v2/public/suspend_server/returns_the_correct_value_for_url_.yml +65 -0
  168. data/test/cassettes/openstack/compute/v2/public/unpause_server/leads_to_a_valid_response_when_invalid_server_id_is_provided.yml +99 -0
  169. data/test/cassettes/openstack/compute/v2/public/unpause_server/leads_to_a_valid_response_when_valid_params_are_provided.yml +132 -0
  170. data/test/cassettes/openstack/compute/v2/public/unpause_server/returns_the_correct_value_for_body_.yml +65 -0
  171. data/test/cassettes/openstack/compute/v2/public/unpause_server/returns_the_correct_value_for_headers_.yml +65 -0
  172. data/test/cassettes/openstack/compute/v2/public/unpause_server/returns_the_correct_value_for_http_method_.yml +65 -0
  173. data/test/cassettes/openstack/compute/v2/public/unpause_server/returns_the_correct_value_for_url_.yml +65 -0
  174. data/test/cassettes/openstack/identity/v2/public/list_tenants/leads_to_a_valid_response_when_no_parameters_are_provided.yml +143 -0
  175. data/test/cassettes/openstack/identity/v2/public/list_tenants/leads_to_a_valid_response_when_session_is_using_a_default_token.yml +74 -0
  176. data/test/cassettes/openstack/identity/v2/public/list_tenants/returns_the_correct_value_for_body_.yml +62 -0
  177. data/test/cassettes/openstack/identity/v2/public/list_tenants/returns_the_correct_value_for_headers_.yml +62 -0
  178. data/test/cassettes/openstack/identity/v2/public/list_tenants/returns_the_correct_value_for_http_method_.yml +62 -0
  179. data/test/cassettes/openstack/identity/v2/public/list_tenants/returns_the_correct_value_for_url_.yml +62 -0
  180. data/test/cassettes/openstack/volume/v1/public/create_volume/leads_to_a_valid_response_when_parameters_are_provided.yml +101 -0
  181. data/test/cassettes/openstack/volume/v1/public/create_volume/returns_the_correct_value_for_body_.yml +62 -0
  182. data/test/cassettes/openstack/volume/v1/public/create_volume/returns_the_correct_value_for_headers_.yml +62 -0
  183. data/test/cassettes/openstack/volume/v1/public/create_volume/returns_the_correct_value_for_http_method_.yml +62 -0
  184. data/test/cassettes/openstack/volume/v1/public/create_volume/returns_the_correct_value_for_url_.yml +62 -0
  185. data/test/cassettes/openstack/volume/v1/public/delete_volume/leads_to_a_valid_response_when_invalid_volume_id_is_provided.yml +96 -0
  186. data/test/cassettes/openstack/volume/v1/public/delete_volume/leads_to_a_valid_response_when_valid_volume_id_is_provided.yml +167 -0
  187. data/test/cassettes/openstack/volume/v1/public/delete_volume/returns_the_correct_value_for_body_.yml +62 -0
  188. data/test/cassettes/openstack/volume/v1/public/delete_volume/returns_the_correct_value_for_headers_.yml +62 -0
  189. data/test/cassettes/openstack/volume/v1/public/delete_volume/returns_the_correct_value_for_http_method_.yml +62 -0
  190. data/test/cassettes/openstack/volume/v1/public/delete_volume/returns_the_correct_value_for_url_.yml +62 -0
  191. data/test/cassettes/openstack/volume/v1/public/get_volume/leads_to_a_valid_response_when_a_valid_volume_id_is_provided.yml +213 -0
  192. data/test/cassettes/openstack/volume/v1/public/get_volume/leads_to_a_valid_response_when_an_invalid_volume_id_is_provided.yml +96 -0
  193. data/test/cassettes/openstack/volume/v1/public/get_volume/returns_the_correct_value_for_body_.yml +62 -0
  194. data/test/cassettes/openstack/volume/v1/public/get_volume/returns_the_correct_value_for_headers_.yml +62 -0
  195. data/test/cassettes/openstack/volume/v1/public/get_volume/returns_the_correct_value_for_http_method_.yml +62 -0
  196. data/test/cassettes/openstack/volume/v1/public/get_volume/returns_the_correct_value_for_url_.yml +62 -0
  197. data/test/cassettes/openstack/volume/v1/public/list_volume_types/leads_to_a_valid_response_when_no_parameters_are_provided.yml +95 -0
  198. data/test/cassettes/openstack/volume/v1/public/list_volume_types/returns_the_correct_value_for_body_.yml +62 -0
  199. data/test/cassettes/openstack/volume/v1/public/list_volume_types/returns_the_correct_value_for_headers_.yml +62 -0
  200. data/test/cassettes/openstack/volume/v1/public/list_volume_types/returns_the_correct_value_for_http_method_.yml +62 -0
  201. data/test/cassettes/openstack/volume/v1/public/list_volumes/leads_to_a_valid_response_when_no_parameters_are_provided.yml +178 -0
  202. data/test/cassettes/openstack/volume/v1/public/list_volumes/leads_to_a_valid_response_when_parameters_are_invalid.yml +95 -0
  203. data/test/cassettes/openstack/volume/v1/public/list_volumes/leads_to_a_valid_response_when_parameters_are_valid.yml +170 -0
  204. data/test/cassettes/openstack/volume/v1/public/list_volumes/returns_the_correct_value_for_body_.yml +62 -0
  205. data/test/cassettes/openstack/volume/v1/public/list_volumes/returns_the_correct_value_for_headers_.yml +62 -0
  206. data/test/cassettes/openstack/volume/v1/public/list_volumes/returns_the_correct_value_for_http_method_.yml +62 -0
  207. data/test/cassettes/openstack/volume/v1/public/root/leads_to_a_valid_response_when_no_parameters_are_provided.yml +36 -39
  208. data/test/cassettes/openstack/volume/v1/public/root/returns_the_correct_value_for_body_.yml +28 -31
  209. data/test/cassettes/openstack/volume/v1/public/root/returns_the_correct_value_for_headers_.yml +28 -31
  210. data/test/cassettes/openstack/volume/v1/public/root/returns_the_correct_value_for_http_method_.yml +28 -31
  211. data/test/cassettes/openstack/volume/v1/public/root/returns_the_correct_value_for_url_.yml +28 -31
  212. data/test/cassettes/openstack/volume/v1/public/update_volume/leads_to_a_valid_response_when_invalid_volume_id_is_provided.yml +96 -0
  213. data/test/cassettes/openstack/volume/v1/public/update_volume/leads_to_a_valid_response_when_valid_volume_id_is_provided.yml +179 -0
  214. data/test/cassettes/openstack/volume/v1/public/update_volume/returns_the_correct_value_for_body_.yml +62 -0
  215. data/test/cassettes/openstack/volume/v1/public/update_volume/returns_the_correct_value_for_headers_.yml +62 -0
  216. data/test/cassettes/openstack/volume/v1/public/update_volume/returns_the_correct_value_for_http_method_.yml +62 -0
  217. data/test/cassettes/openstack/volume/v1/public/update_volume/returns_the_correct_value_for_url_.yml +62 -0
  218. data/test/support/vcr_setup.rb +3 -3
  219. metadata +297 -4
  220. data/README.md.orig +0 -217
@@ -1,39 +1,31 @@
1
1
  module Aviator
2
2
 
3
3
  class Response
4
+ extend Forwardable
4
5
 
5
-
6
- def body
7
- @body ||= if response.body.length > 0
8
- JSON.parse(response.body).with_indifferent_access
9
- else
10
- {}
11
- end
12
-
13
- @body.dup
14
- end
6
+ def_delegators :@response, :headers, :status
15
7
 
8
+ attr_reader :request
16
9
 
17
- def method_missing(name, *args)
18
- case name
19
- when :headers, :status
20
- response.send(name)
21
- when :request
22
- request
10
+ def initialize(response, request)
11
+ @response = response
12
+ @request = request
13
+ end
14
+
15
+
16
+ def body
17
+ if raw_body.length > 0
18
+ JSON.parse(raw_body).with_indifferent_access
23
19
  else
24
- super(name, *args)
20
+ {}
25
21
  end
26
22
  end
27
23
 
28
24
 
29
25
  private
30
26
 
31
- attr_reader :response,
32
- :request
33
-
34
- def initialize(response, request)
35
- @response = response
36
- @request = request
27
+ def raw_body
28
+ @response.body
37
29
  end
38
30
 
39
31
  end
@@ -35,7 +35,24 @@ module Aviator
35
35
  end
36
36
 
37
37
 
38
- class Logger < Faraday::Response::Logger
38
+ class MissingServiceEndpointError < StandardError
39
+ def initialize(service_name, request_name)
40
+ request_name = request_name.to_s.split('::').last.underscore
41
+ super "The session's service catalog does not have an entry for the #{ service_name } "\
42
+ "service. Therefore, I don't know to which base URL the request should be sent. "\
43
+ "This may be because you are using a default or unscoped token. If this is not your "\
44
+ "intention, please authenticate with a scoped token. If using a default token is your "\
45
+ "intention, make sure to provide a base url when you call the request. For example: \n\n"\
46
+ "session.#{ service_name }_service.request :#{ request_name }, base_url: 'http://myenv.com:9999/v2.0' do |params|\n"\
47
+ " params[:example1] = 'example1'\n"\
48
+ " params[:example2] = 'example2'\n"\
49
+ "end\n\n"
50
+ end
51
+ end
52
+
53
+
54
+
55
+ class Logger < Faraday::Response::Logger
39
56
  def initialize(app, logger=nil)
40
57
  super(app)
41
58
  @logger = logger || begin
@@ -50,7 +67,7 @@ module Aviator
50
67
 
51
68
  attr_reader :service,
52
69
  :provider
53
-
70
+
54
71
 
55
72
  def initialize(opts={})
56
73
  @provider = opts[:provider] || (raise ProviderNotDefinedError.new)
@@ -67,6 +84,10 @@ module Aviator
67
84
  session_data = options[:session_data] || default_session_data
68
85
 
69
86
  raise SessionDataNotProvidedError.new unless session_data
87
+
88
+ [:base_url].each do |k|
89
+ session_data[k] = options[k] if options[k]
90
+ end
70
91
 
71
92
  request_class = find_request(request_name, session_data, options[:endpoint_type])
72
93
 
@@ -88,8 +109,8 @@ module Aviator
88
109
  def request_classes
89
110
  @request_classes
90
111
  end
91
-
92
-
112
+
113
+
93
114
  private
94
115
 
95
116
 
@@ -117,20 +138,20 @@ module Aviator
117
138
  end
118
139
 
119
140
  namespace = Aviator.const_get(provider.camelize)
120
- .const_get(service.camelize)
141
+ .const_get(service.camelize)
142
+
143
+ version = infer_version(session_data, name).to_s.camelize
121
144
 
122
- version = infer_version(session_data).to_s.camelize
123
-
124
145
  return nil unless version && namespace.const_defined?(version)
125
146
 
126
- namespace = namespace.const_get(version)
147
+ namespace = namespace.const_get(version, name)
127
148
 
128
149
  endpoint_types.each do |endpoint_type|
129
150
  name = name.to_s.camelize
130
-
151
+
131
152
  next unless namespace.const_defined?(endpoint_type)
132
153
  next unless namespace.const_get(endpoint_type).const_defined?(name)
133
-
154
+
134
155
  return namespace.const_get(endpoint_type).const_get(name)
135
156
  end
136
157
 
@@ -139,7 +160,7 @@ module Aviator
139
160
 
140
161
 
141
162
  # Candidate for extraction to aviator/openstack
142
- def infer_version(session_data)
163
+ def infer_version(session_data, request_name='sample_request')
143
164
  if session_data.has_key?(:auth_service) && session_data[:auth_service][:api_version]
144
165
  session_data[:auth_service][:api_version].to_sym
145
166
 
@@ -147,8 +168,13 @@ module Aviator
147
168
  m = session_data[:auth_service][:host_uri].match(/(v\d+)\.?\d*/)
148
169
  return m[1].to_sym unless m.nil?
149
170
 
171
+ elsif session_data.has_key? :base_url
172
+ m = session_data[:base_url].match(/(v\d+)\.?\d*/)
173
+ return m[1].to_sym unless m.nil?
174
+
150
175
  elsif session_data.has_key? :access
151
176
  service_spec = session_data[:access][:serviceCatalog].find{|s| s[:type] == service }
177
+ raise MissingServiceEndpointError.new(service.to_s, request_name) unless service_spec
152
178
  version = service_spec[:endpoints][0][:publicURL].match(/(v\d+)\.?\d*/)
153
179
  version ? version[1].to_sym : :v1
154
180
  end
@@ -169,21 +195,21 @@ module Aviator
169
195
  )
170
196
 
171
197
  request_file_paths.each{ |path| require path }
172
-
198
+
173
199
  constant_parts = request_file_paths
174
200
  .map{|rf| rf.to_s.match(/#{provider}\/#{service}\/([\w\/]+)\.rb$/) }
175
201
  .map{|rf| rf[1].split('/').map{|c| c.camelize }.join('::') }
176
-
177
- @request_classes = constant_parts.map do |cp|
202
+
203
+ @request_classes = constant_parts.map do |cp|
178
204
  "Aviator::#{provider.camelize}::#{service.camelize}::#{cp}".constantize
179
205
  end
180
206
  end
181
-
182
-
207
+
208
+
183
209
  def log_file
184
210
  @log_file
185
211
  end
186
-
212
+
187
213
  end
188
214
 
189
215
  end
data/lib/aviator/core.rb CHANGED
@@ -1,3 +1,4 @@
1
+ require 'yaml'
1
2
  require 'json'
2
3
  require 'active_support/inflector'
3
4
  require 'active_support/core_ext/hash/indifferent_access'
@@ -0,0 +1,9 @@
1
+ module Aviator
2
+
3
+ define_request :base, inherit: [:openstack, :common, :v2, :public, :base] do
4
+
5
+ meta :endpoint_type, :admin
6
+
7
+ end
8
+
9
+ end
@@ -0,0 +1,43 @@
1
+ module Aviator
2
+
3
+ define_request :base do
4
+
5
+ meta :provider, :openstack
6
+ meta :service, :common
7
+ meta :api_version, :v2
8
+ meta :endpoint_type, :public
9
+
10
+ def headers
11
+ {}.tap do |h|
12
+ h['X-Auth-Token'] = session_data[:access][:token][:id] unless self.anonymous?
13
+ end
14
+ end
15
+
16
+
17
+ private
18
+
19
+
20
+ def base_url
21
+ if session_data[:base_url]
22
+ session_data[:base_url]
23
+ else
24
+ service_spec = session_data[:access][:serviceCatalog].find { |s| s[:type] == service.to_s }
25
+ raise Aviator::Service::MissingServiceEndpointError.new(service.to_s, self.class) unless service_spec
26
+ service_spec[:endpoints][0]["#{ endpoint_type }URL".to_sym]
27
+ end
28
+ end
29
+
30
+
31
+ def params_to_querystring(param_names)
32
+ filters = []
33
+
34
+ param_names.each do |param_name|
35
+ filters << "#{ param_name }=#{ params[param_name] }" if params[param_name]
36
+ end
37
+
38
+ filters.empty? ? "" : "?#{ filters.join('&') }"
39
+ end
40
+
41
+ end
42
+
43
+ end
@@ -1,11 +1,8 @@
1
1
  module Aviator
2
2
 
3
- define_request :confirm_server_resize do
3
+ define_request :confirm_server_resize, inherit: [:openstack, :common, :v2, :admin, :base] do
4
4
 
5
- meta :provider, :openstack
6
- meta :service, :compute
7
- meta :api_version, :v2
8
- meta :endpoint_type, :admin
5
+ meta :service, :compute
9
6
 
10
7
  link 'documentation',
11
8
  'http://docs.openstack.org/api/openstack-compute/2/content/Confirm_Resized_Server-d1e3868.html'
@@ -21,13 +18,7 @@ module Aviator
21
18
 
22
19
 
23
20
  def headers
24
- h = {}
25
-
26
- unless self.anonymous?
27
- h['X-Auth-Token'] = session_data[:access][:token][:id]
28
- end
29
-
30
- h
21
+ super
31
22
  end
32
23
 
33
24
 
@@ -37,8 +28,7 @@ module Aviator
37
28
 
38
29
 
39
30
  def url
40
- service_spec = session_data[:access][:serviceCatalog].find{|s| s[:type] == service.to_s }
41
- "#{ service_spec[:endpoints][0][:adminURL] }/servers/#{ params[:id] }/action"
31
+ "#{ base_url }/servers/#{ params[:id] }/action"
42
32
  end
43
33
 
44
34
  end
@@ -0,0 +1,56 @@
1
+ module Aviator
2
+
3
+ define_request :create_network, inherit: [:openstack, :common, :v2, :admin, :base] do
4
+
5
+ meta :service, :compute
6
+
7
+ link 'documentation',
8
+ 'http://api.openstack.org/api-ref-compute.html#ext-os-networks'
9
+
10
+
11
+ param :label, required: true
12
+ param :bridge, required: false
13
+ param :bridge_interface, required: false
14
+ param :cidr, required: false
15
+ param :cidr_v6, required: false
16
+ param :dns1, required: false
17
+ param :dns2, required: false
18
+ param :gateway, required: false
19
+ param :gateway_v6, required: false
20
+ param :multi_host, required: false
21
+ param :project_id, required: false
22
+ param :vlan, required: false
23
+
24
+
25
+ def body
26
+ p = {
27
+ network: {
28
+ label: params[:label]
29
+ }
30
+ }
31
+
32
+ optional_params.each do |key|
33
+ p[:network][key] = params[key] if params[key]
34
+ end
35
+
36
+ p
37
+ end
38
+
39
+
40
+ def headers
41
+ super
42
+ end
43
+
44
+
45
+ def http_method
46
+ :post
47
+ end
48
+
49
+
50
+ def url
51
+ "#{ base_url }/os-networks"
52
+ end
53
+
54
+ end
55
+
56
+ end
@@ -1,11 +1,8 @@
1
1
  module Aviator
2
2
 
3
- define_request :get_host_details do
3
+ define_request :get_host_details, inherit: [:openstack, :common, :v2, :admin, :base] do
4
4
 
5
- meta :provider, :openstack
6
- meta :service, :compute
7
- meta :api_version, :v2
8
- meta :endpoint_type, :admin
5
+ meta :service, :compute
9
6
 
10
7
  link 'documentation',
11
8
  'http://api.openstack.org/api-ref.html#ext-os-hosts'
@@ -14,13 +11,7 @@ module Aviator
14
11
 
15
12
 
16
13
  def headers
17
- h = {}
18
-
19
- unless self.anonymous?
20
- h['X-Auth-Token'] = session_data[:access][:token][:id]
21
- end
22
-
23
- h
14
+ super
24
15
  end
25
16
 
26
17
 
@@ -30,9 +21,7 @@ module Aviator
30
21
 
31
22
 
32
23
  def url
33
- service_spec = session_data[:access][:serviceCatalog].find { |s| s[:type] == service.to_s }
34
-
35
- "#{ service_spec[:endpoints][0][:adminURL] }/os-hosts/#{ params[:host_name] }"
24
+ "#{ base_url }/os-hosts/#{ params[:host_name] }"
36
25
  end
37
26
 
38
27
  end
@@ -1,14 +1,11 @@
1
1
  module Aviator
2
2
 
3
- define_request :list_hosts do
3
+ define_request :list_hosts, inherit: [:openstack, :common, :v2, :admin, :base] do
4
4
 
5
- meta :provider, :openstack
6
- meta :service, :compute
7
- meta :api_version, :v2
8
- meta :endpoint_type, :admin
5
+ meta :service, :compute
9
6
 
10
7
  link 'documentation',
11
- 'http://api.openstack.org/api-ref.html#ext-os-hosts'
8
+ 'http://api.openstack.org/api-ref.html#ext-os-hosts'
12
9
 
13
10
  link 'documentation bug',
14
11
  'https://bugs.launchpad.net/nova/+bug/1224763'
@@ -18,13 +15,7 @@ module Aviator
18
15
 
19
16
 
20
17
  def headers
21
- h = {}
22
-
23
- unless self.anonymous?
24
- h['X-Auth-Token'] = session_data[:access][:token][:id]
25
- end
26
-
27
- h
18
+ super
28
19
  end
29
20
 
30
21
 
@@ -34,9 +25,7 @@ module Aviator
34
25
 
35
26
 
36
27
  def url
37
- service_spec = session_data[:access][:serviceCatalog].find { |s| s[:type] == service.to_s }
38
-
39
- url = "#{ service_spec[:endpoints][0][:adminURL] }/os-hosts"
28
+ url = "#{ base_url }/os-hosts"
40
29
 
41
30
  filters = []
42
31
 
@@ -0,0 +1,34 @@
1
+ module Aviator
2
+
3
+ define_request :lock_server, inherit: [:openstack, :common, :v2, :admin, :base] do
4
+
5
+ meta :service, :compute
6
+
7
+ link 'documentation',
8
+ 'http://docs.openstack.org/api/openstack-compute/2/content/POST_lock_v2__tenant_id__servers__server_id__action_ext-os-admin-actions.html'
9
+
10
+ param :id, required: true
11
+
12
+
13
+ def body
14
+ { lock: nil }
15
+ end
16
+
17
+
18
+ def headers
19
+ super
20
+ end
21
+
22
+
23
+ def http_method
24
+ :post
25
+ end
26
+
27
+
28
+ def url
29
+ "#{ base_url }/servers/#{ params[:id] }/action"
30
+ end
31
+
32
+ end
33
+
34
+ end
@@ -0,0 +1,34 @@
1
+ module Aviator
2
+
3
+ define_request :migrate_server, inherit: [:openstack, :common, :v2, :admin, :base] do
4
+
5
+ meta :service, :compute
6
+
7
+ link 'documentation',
8
+ 'http://docs.openstack.org/api/openstack-compute/2/content/POST_migrate_v2__tenant_id__servers__server_id__action_ext-os-admin-actions.html'
9
+
10
+ param :id, required: true
11
+
12
+
13
+ def body
14
+ { migrate: nil }
15
+ end
16
+
17
+
18
+ def headers
19
+ super
20
+ end
21
+
22
+
23
+ def http_method
24
+ :post
25
+ end
26
+
27
+
28
+ def url
29
+ "#{ base_url }/servers/#{ params[:id] }/action"
30
+ end
31
+
32
+ end
33
+
34
+ end
@@ -0,0 +1,39 @@
1
+ module Aviator
2
+
3
+ define_request :reset_server, inherit: [:openstack, :common, :v2, :admin, :base] do
4
+
5
+ meta :service, :compute
6
+
7
+ link 'documentation',
8
+ 'http://docs.openstack.org/api/openstack-compute/2/content/POST_os-resetState_v2__tenant_id__servers__server_id__action_ext-os-admin-actions.html'
9
+
10
+ param :id, required: true
11
+ param :state, required: true
12
+
13
+
14
+ def body
15
+ {
16
+ 'os-resetState' => {
17
+ 'state' => params[:state]
18
+ }
19
+ }
20
+ end
21
+
22
+
23
+ def headers
24
+ super
25
+ end
26
+
27
+
28
+ def http_method
29
+ :post
30
+ end
31
+
32
+
33
+ def url
34
+ "#{ base_url }/servers/#{ params[:id] }/action"
35
+ end
36
+
37
+ end
38
+
39
+ end
@@ -1,18 +1,15 @@
1
1
  module Aviator
2
2
 
3
- define_request :resize_server do
3
+ define_request :resize_server, inherit: [:openstack, :common, :v2, :admin, :base] do
4
4
 
5
- meta :provider, :openstack
6
- meta :service, :compute
7
- meta :api_version, :v2
8
- meta :endpoint_type, :admin
5
+ meta :service, :compute
9
6
 
10
7
  link 'documentation',
11
8
  'http://docs.openstack.org/api/openstack-compute/2/content/Resize_Server-d1e3707.html'
12
9
 
13
10
  param :id, required: true
14
11
  param :name, required: true
15
- param :flavorRef, required: true
12
+ param :flavorRef, required: true, alias: :flavor_ref
16
13
 
17
14
 
18
15
  def body
@@ -26,13 +23,7 @@ module Aviator
26
23
 
27
24
 
28
25
  def headers
29
- h = {}
30
-
31
- unless self.anonymous?
32
- h['X-Auth-Token'] = session_data[:access][:token][:id]
33
- end
34
-
35
- h
26
+ super
36
27
  end
37
28
 
38
29
 
@@ -42,8 +33,7 @@ module Aviator
42
33
 
43
34
 
44
35
  def url
45
- service_spec = session_data[:access][:serviceCatalog].find{|s| s[:type] == service.to_s }
46
- "#{ service_spec[:endpoints][0][:adminURL] }/servers/#{ params[:id] }/action"
36
+ "#{ base_url }/servers/#{ params[:id] }/action"
47
37
  end
48
38
 
49
39
  end
@@ -0,0 +1,34 @@
1
+ module Aviator
2
+
3
+ define_request :unlock_server, inherit: [:openstack, :common, :v2, :admin, :base] do
4
+
5
+ meta :service, :compute
6
+
7
+ link 'documentation',
8
+ 'http://docs.openstack.org/api/openstack-compute/2/content/POST_unlock_v2__tenant_id__servers__server_id__action_ext-os-admin-actions.html'
9
+
10
+ param :id, required: true
11
+
12
+
13
+ def body
14
+ { unlock: nil }
15
+ end
16
+
17
+
18
+ def headers
19
+ super
20
+ end
21
+
22
+
23
+ def http_method
24
+ :post
25
+ end
26
+
27
+
28
+ def url
29
+ "#{ base_url }/servers/#{ params[:id] }/action"
30
+ end
31
+
32
+ end
33
+
34
+ end
@@ -1,22 +1,19 @@
1
1
  module Aviator
2
2
 
3
- define_request :change_admin_password do
3
+ define_request :change_admin_password, inherit: [:openstack, :common, :v2, :public, :base] do
4
4
 
5
- meta :provider, :openstack
6
- meta :service, :compute
7
- meta :api_version, :v2
8
- meta :endpoint_type, :public
5
+ meta :service, :compute
9
6
 
10
7
  link 'documentation',
11
8
  'http://docs.openstack.org/api/openstack-compute/2/content/Change_Password-d1e3234.html'
12
-
9
+
13
10
  link 'additional spec',
14
11
  'https://answers.launchpad.net/nova/+question/228462'
15
12
 
16
- param :adminPass, required: true
13
+ param :adminPass, required: true, alias: :admin_pass
17
14
  param :id, required: true
18
-
19
-
15
+
16
+
20
17
  def body
21
18
  p = {
22
19
  changePassword: {
@@ -26,27 +23,20 @@ module Aviator
26
23
 
27
24
  p
28
25
  end
29
-
30
-
26
+
27
+
31
28
  def headers
32
- h = {}
33
-
34
- unless self.anonymous?
35
- h['X-Auth-Token'] = session_data[:access][:token][:id]
36
- end
37
-
38
- h
29
+ super
39
30
  end
40
-
41
-
31
+
32
+
42
33
  def http_method
43
34
  :post
44
35
  end
45
-
46
-
36
+
37
+
47
38
  def url
48
- service_spec = session_data[:access][:serviceCatalog].find{|s| s[:type] == service.to_s }
49
- "#{ service_spec[:endpoints][0][:publicURL] }/servers/#{ params[:id] }/action"
39
+ "#{ base_url }/servers/#{ params[:id] }/action"
50
40
  end
51
41
 
52
42
  end