aviator 0.0.5 → 0.0.6

Sign up to get free protection for your applications and to get access to all the features.
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