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,20 +1,14 @@
1
1
  module Aviator
2
2
 
3
- define_request :list_projects do
3
+ define_request :list_projects, inherit: [:openstack, :common, :v2, :admin, :base] do
4
4
 
5
- meta :provider, :openstack
6
5
  meta :service, :metering
7
6
  meta :api_version, :v1
8
7
  meta :endpoint_type, :admin
9
8
 
10
- def headers
11
- h = {}
12
-
13
- unless self.anonymous?
14
- h['X-Auth-Token'] = session_data[:access][:token][:id]
15
- end
16
9
 
17
- h
10
+ def headers
11
+ super
18
12
  end
19
13
 
20
14
 
@@ -24,8 +18,7 @@ module Aviator
24
18
 
25
19
 
26
20
  def url
27
- service_spec = session_data[:access][:serviceCatalog].find{|s| s[:type] == service.to_s }
28
- uri = URI(service_spec[:endpoints][0][:adminURL])
21
+ uri = URI(base_url)
29
22
  "#{ uri.scheme }://#{ uri.host }:#{ uri.port.to_s }/v1/projects"
30
23
  end
31
24
 
@@ -0,0 +1,47 @@
1
+ module Aviator
2
+
3
+ define_request :create_volume, inherit: [:openstack, :common, :v2, :public, :base] do
4
+
5
+ meta :service, :volume
6
+ meta :api_version, :v1
7
+
8
+ link 'documentation', 'http://docs.rackspace.com/cbs/api/v1.0/cbs-devguide/content/POST_createVolume_v1__tenant_id__volumes_v1__tenant_id__volumes.html'
9
+
10
+ param :display_name, required: true
11
+ param :display_description, required: true
12
+ param :size, required: true
13
+ param :volume_type, required: false
14
+ param :availability_zone, required: false
15
+ param :snapshot_id, required: false
16
+ param :metadata, required: false
17
+
18
+ def body
19
+ p = {
20
+ volume: {
21
+ display_name: params[:display_name],
22
+ display_description: params[:display_description],
23
+ size: params[:size]
24
+ }
25
+ }
26
+
27
+ [:availability_zone, :metadata].each do |key|
28
+ p[:volume][key] = params[key] if params[key]
29
+ end
30
+
31
+ p
32
+ end
33
+
34
+ def headers
35
+ super
36
+ end
37
+
38
+ def http_method
39
+ :post
40
+ end
41
+
42
+ def url
43
+ "#{ base_url }/volumes"
44
+ end
45
+ end
46
+
47
+ end
@@ -0,0 +1,25 @@
1
+ module Aviator
2
+
3
+ define_request :delete_volume, inherit: [:openstack, :common, :v2, :public, :base] do
4
+
5
+ meta :service, :volume
6
+ meta :api_version, :v1
7
+
8
+ link 'documentation', 'http://docs.rackspace.com/cbs/api/v1.0/cbs-devguide/content/DELETE_deleteVolume_v1__tenant_id__volumes__volume_id__v1__tenant_id__volumes.html'
9
+
10
+ param :id, required: true
11
+
12
+ def headers
13
+ super
14
+ end
15
+
16
+ def http_method
17
+ :delete
18
+ end
19
+
20
+ def url
21
+ "#{ base_url }/volumes/#{ params[:id] }"
22
+ end
23
+ end
24
+
25
+ end
@@ -0,0 +1,28 @@
1
+ module Aviator
2
+
3
+ define_request :get_volume, inherit: [:openstack, :common, :v2, :public, :base] do
4
+ meta :provider, :openstack
5
+ meta :service, :volume
6
+ meta :api_version, :v1
7
+ meta :endpoint_type, :public
8
+
9
+ link 'documentation', 'http://docs.rackspace.com/cbs/api/v1.0/cbs-devguide/content/GET_getVolume_v1__tenant_id__volumes__volume_id__v1__tenant_id__volumes.html'
10
+
11
+ param :id, required: true
12
+
13
+ def headers
14
+ super
15
+ end
16
+
17
+ def http_method
18
+ :get
19
+ end
20
+
21
+ def url
22
+ "#{ base_url }/volumes/#{ params[:id] }"
23
+ end
24
+
25
+
26
+ end
27
+
28
+ end
@@ -0,0 +1,29 @@
1
+ module Aviator
2
+
3
+ define_request :list_volume_types, inherit: [:openstack, :common, :v2, :public, :base] do
4
+
5
+ meta :provider, :openstack
6
+ meta :service, :volume
7
+ meta :api_version, :v1
8
+ meta :endpoint_type, :public
9
+
10
+ link 'documentation', 'http://docs.rackspace.com/cbs/api/v1.0/cbs-devguide/content/GET_getVolumeTypes_v1__tenant_id__types_v1__tenant_id__types.html'
11
+
12
+ param :extra_specs, required: false
13
+ param :name, required: false
14
+
15
+ def headers
16
+ super
17
+ end
18
+
19
+ def http_method
20
+ :get
21
+ end
22
+
23
+ def url
24
+ "#{ base_url }/types"
25
+ end
26
+
27
+ end
28
+
29
+ end
@@ -0,0 +1,37 @@
1
+ module Aviator
2
+
3
+ define_request :list_volumes, inherit: [:openstack, :common, :v2, :public, :base] do
4
+
5
+ meta :service, :volume
6
+ meta :api_version, :v1
7
+
8
+ link 'documentation', 'http://docs.rackspace.com/cbs/api/v1.0/cbs-devguide/content/GET_getVolumesSimple_v1__tenant_id__volumes_v1__tenant_id__volumes.html'
9
+
10
+ param :details, required: false
11
+ param :status, required: false
12
+ param :availability_zone, required: false
13
+ param :bootable, required: false
14
+ param :display_name, required: false
15
+ param :display_description, required: false
16
+ param :volume_type, required: false
17
+ param :snapshot_id, required: false
18
+ param :size, required: false
19
+
20
+
21
+ def headers
22
+ super
23
+ end
24
+
25
+ def http_method
26
+ :get
27
+ end
28
+
29
+ def url
30
+ str = "#{ base_url }/volumes"
31
+ str += "/detail" if params[:details]
32
+ str += params_to_querystring(optional_params + required_params - [:details])
33
+ end
34
+
35
+ end
36
+
37
+ end
@@ -1,20 +1,13 @@
1
1
  module Aviator
2
2
 
3
- define_request :root do
3
+ define_request :root, inherit: [:openstack, :common, :v2, :public, :base] do
4
4
 
5
- meta :provider, :openstack
6
- meta :service, :volume
7
- meta :api_version, :v1
8
- meta :endpoint_type, :public
5
+ meta :service, :volume
6
+ meta :api_version, :v1
9
7
 
10
- def headers
11
- h = {}
12
-
13
- unless self.anonymous?
14
- h['X-Auth-Token'] = session_data[:access][:token][:id]
15
- end
16
8
 
17
- h
9
+ def headers
10
+ super
18
11
  end
19
12
 
20
13
 
@@ -24,8 +17,7 @@ module Aviator
24
17
 
25
18
 
26
19
  def url
27
- service_spec = session_data[:access][:serviceCatalog].find{|s| s[:type] == service.to_s }
28
- uri = URI(service_spec[:endpoints][0][:publicURL])
20
+ uri = URI(base_url)
29
21
  "#{ uri.scheme }://#{ uri.host }:#{ uri.port.to_s }/v1/"
30
22
  end
31
23
 
@@ -0,0 +1,43 @@
1
+ module Aviator
2
+
3
+ define_request :update_volume, inherit: [:openstack, :common, :v2, :public, :base] do
4
+
5
+ meta :service, :volume
6
+ meta :api_version, :v1
7
+
8
+ link 'documentation', 'http://docs.rackspace.com/cbs/api/v1.0/cbs-devguide/content/PUT_renameVolume_v1__tenant_id__volumes__volume_id__v1__tenant_id__volumes.html'
9
+
10
+ param :id, required: true
11
+ param :display_name, required: false
12
+ param :display_description, required: false
13
+
14
+
15
+ def body
16
+ p = { volume: {} }
17
+
18
+ [:display_name, :display_description].each do |key|
19
+ p[:volume][key] = params[key] if params[key]
20
+ end
21
+
22
+ p
23
+ end
24
+
25
+
26
+ def headers
27
+ super
28
+ end
29
+
30
+
31
+ def http_method
32
+ :put
33
+ end
34
+
35
+
36
+ def url
37
+ "#{ base_url }/volumes/#{ params[:id] }"
38
+ end
39
+
40
+ end
41
+
42
+
43
+ end
@@ -1,3 +1,3 @@
1
1
  module Aviator
2
- VERSION = "0.0.5"
2
+ VERSION = "0.0.6"
3
3
  end
@@ -1,140 +1,262 @@
1
1
  require 'test_helper'
2
2
 
3
3
  class Aviator::Test
4
-
4
+
5
5
  describe 'aviator/core/cli/describer' do
6
-
7
- def get_provider_names
8
- Pathname.new(__FILE__)
9
- .join('..', '..', '..', '..', '..', 'lib', 'aviator')
10
- .children
11
- .select{|c| c.directory? && c.basename.to_s != 'core' }
12
- .map{|c| c.basename.to_s }
6
+
7
+ def build_request(provider_name, service_name, request_name, &block)
8
+ base_name = :sample_base
9
+ base_ver = :v999
10
+ base_ept = :public
11
+
12
+ unless @base
13
+ request_path = [provider_name, service_name, base_ver, base_ept, base_name]
14
+
15
+ @base = request_path.inject(Aviator) do |namespace, sym|
16
+ const_name = sym.to_s.camelize
17
+
18
+ if namespace && namespace.const_defined?(const_name, false)
19
+ namespace.const_get(const_name, false)
20
+ else
21
+ nil
22
+ end
23
+ end
24
+
25
+ @base ||= Aviator.define_request base_name do
26
+ meta :provider, provider_name
27
+ meta :service, service_name
28
+ meta :api_version, base_ver
29
+ meta :endpoint_type, base_ept
30
+ end
31
+ end
32
+
33
+ inherit = [provider_name.to_sym, service_name.to_sym, base_ver, base_ept, base_name]
34
+
35
+ Aviator.define_request request_name, inherit: inherit, &block
13
36
  end
14
-
15
-
16
- def get_random_entry(array)
17
- array[rand(array.length)]
37
+
38
+
39
+ def klass
40
+ Aviator::Describer
18
41
  end
19
42
 
43
+ def provider_names
44
+ klass.send(:provider_names)
45
+ end
20
46
 
21
- def get_request_classes(provider_name, service_name)
22
- service = Aviator::Service.new(provider: provider_name, service: service_name)
23
- service.request_classes
47
+
48
+ def request_classes(provider_name, service_name)
49
+ klass.send(:request_classes, provider_name, service_name)
24
50
  end
25
-
26
-
27
- def get_service_names(provider_name)
28
- Pathname.new(__FILE__)
29
- .join('..', '..', '..', '..', '..', 'lib', 'aviator', provider_name)
30
- .children
31
- .select{|c| c.directory? }
32
- .map{|c| c.basename.to_s }
51
+
52
+
53
+ def service_names(provider_name)
54
+ klass.send(:service_names, provider_names.first)
33
55
  end
34
-
56
+
35
57
 
36
58
  describe '::describe_aviator' do
37
-
38
- it 'describes the aviator gem' do
39
- provider_names = get_provider_names
40
-
41
- display = "Available providers:\n"
42
-
43
- provider_names.each do |provider_name|
44
- display << " #{ provider_name }\n"
45
- end
46
59
 
47
- Aviator::Describer.describe_aviator.must_equal display
60
+ it 'shows a list of providers' do
61
+ expected = "Available providers:\n"
62
+ expected << provider_names.map{|p| " #{ p }" }.join("\n") + "\n"
63
+
64
+ klass.describe_aviator.must_equal expected
48
65
  end
49
-
66
+
50
67
  end # describe '::describe_aviator'
51
-
52
-
68
+
69
+
53
70
  describe '::describe_provider' do
54
-
55
- it 'describes the given provider' do
56
- provider_name = get_random_entry(get_provider_names)
57
- service_names = get_service_names(provider_name)
58
-
59
- display = "Available services for #{ provider_name }:\n"
60
-
61
- service_names.each do |service_name|
62
- display << " #{ service_name }\n"
63
- end
64
71
 
65
- Aviator::Describer.describe_provider('openstack').must_equal display
72
+ it 'shows a list of available provider services' do
73
+ provider = provider_names.first
74
+
75
+ expected = "Available services for #{ provider }:\n"
76
+ expected << service_names(provider).map{|s| " #{ s }" }.join("\n") + "\n"
77
+
78
+ klass.describe_provider(provider).must_equal expected
66
79
  end
67
-
80
+
68
81
  end # describe '::describe_provider'
69
-
70
-
82
+
83
+
71
84
  describe '::describe_service' do
72
-
73
- it 'describes a given service for a given provider' do
74
- provider_name = get_random_entry(get_provider_names)
75
- service_name = get_random_entry(get_service_names(provider_name))
76
- request_classes = get_request_classes(provider_name, service_name)
77
-
78
- display = "Available requests for #{ provider_name } #{ service_name }_service:\n"
79
-
80
- request_classes.each do |klass|
81
- display << " #{ klass.api_version } #{ klass.endpoint_type } #{ klass.name.split('::').last.underscore }\n"
85
+
86
+ it 'shows a list of available service requests' do
87
+ provider = provider_names.first
88
+ service = service_names(provider).first
89
+ requests = request_classes(provider, service)
90
+
91
+ expected = "Available requests for #{ provider } #{ service }_service:\n"
92
+
93
+ requests.each do |klass|
94
+ expected << " #{ klass.api_version } #{ klass.endpoint_type } #{ klass.name.split('::').last.underscore }\n"
82
95
  end
83
-
84
- Aviator::Describer.describe_service(provider_name, service_name).must_equal display
96
+
97
+ klass.describe_service(provider, service).must_equal expected
85
98
  end
86
-
87
- end # describe '::describe_service'
88
-
89
-
99
+
100
+ end # describe '::describe_service'
101
+
102
+
90
103
  describe '::describe_request' do
91
-
92
- it 'describes a given request' do
93
- provider_name = get_random_entry(get_provider_names)
94
- service_name = get_random_entry(get_service_names(provider_name))
95
- request_class = get_random_entry(get_request_classes(provider_name, service_name))
96
- request_name = request_class.name.split('::').last.underscore
97
-
98
- display = "Request: #{ request_name }\n\n"
99
-
100
- display << "Parameters:\n"
101
-
102
- params = request_class.optional_params.map{|p| [p, :optional]} +
103
- request_class.required_params.map{|p| [p, :required]}
104
-
105
- params.sort{|a,b| a[0].to_s <=> b[0].to_s }.each do |param|
106
- display << " (#{ param[1].to_s }) #{ param[0] }\n"
107
- end
108
-
109
- display << "\nSample Code:\n"
110
-
111
- display << " session.#{ service_name }_service.request(:#{ request_name }, endpoint_type: '#{ request_class.endpoint_type }')"
112
- if params
113
- display << " do |params|\n"
114
- params.each do |pair|
115
- display << " params['#{ pair[0] }'] = value\n"
116
- end
117
- display << " end\n"
118
- end
119
-
120
- if request_class.links
121
- display << "\nLinks:\n"
122
-
123
- request_class.links.each do |link|
124
- display << " #{ link[:rel] }:\n"
125
- display << " #{ link[:href] }\n"
126
- end
127
- end
128
-
129
- Aviator::Describer.describe_request(
130
- provider_name, service_name, request_class.api_version.to_s,
131
- request_class.endpoint_type.to_s, request_name
132
- ).must_equal display
104
+
105
+ it 'shows the request name and sample code' do
106
+ provider = provider_names.first
107
+ service = service_names(provider).first
108
+ request_name = 'sample_request1'
109
+
110
+ request_class = build_request(provider, service, request_name)
111
+
112
+ expected = <<-EOF
113
+ Request: #{ request_name }
114
+
115
+ Sample Code:
116
+ session.#{ service }_service.request(:#{ request_name })
117
+ EOF
118
+
119
+ output = klass.describe_request(
120
+ provider,
121
+ service,
122
+ request_class.api_version.to_s,
123
+ request_class.endpoint_type.to_s,
124
+ request_name.to_s
125
+ )
126
+
127
+ output.must_equal expected
128
+ end
129
+
130
+
131
+ it "shows parameters when provided" do
132
+ provider = provider_names.first
133
+ service = service_names(provider).first
134
+ request_name = 'sample_request2'
135
+
136
+ request_class = build_request(provider, service, request_name) do
137
+ param :theParam, required: true
138
+ param :another, required: false
139
+ end
140
+
141
+ expected = <<-EOF
142
+ Request: #{ request_name }
143
+
144
+ Parameters:
145
+ +----------+----------+
146
+ | NAME | REQUIRED |
147
+ +----------+----------+
148
+ | another | N |
149
+ | theParam | Y |
150
+ +----------+----------+
151
+
152
+ Sample Code:
153
+ session.#{ service }_service.request(:#{ request_name }) do |params|
154
+ params.another = value
155
+ params.theParam = value
156
+ end
157
+ EOF
158
+
159
+ output = klass.describe_request(
160
+ provider,
161
+ service,
162
+ request_class.api_version.to_s,
163
+ request_class.endpoint_type.to_s,
164
+ request_name.to_s
165
+ )
166
+
167
+ output.must_equal expected
168
+ end
169
+
170
+
171
+ it "display aliases when available" do
172
+ provider = provider_names.first
173
+ service = service_names(provider).first
174
+ request_name = 'sample_request3'
175
+
176
+ request_class = build_request(provider, service, request_name) do
177
+ param :theParam, required: true, alias: :the_param
178
+ param :anotherParam, required: false, alias: :another_param
179
+ end
180
+
181
+ expected = <<-EOF
182
+ Request: #{ request_name }
183
+
184
+ Parameters:
185
+ +--------------+----------+---------------+
186
+ | NAME | REQUIRED | ALIAS |
187
+ +--------------+----------+---------------+
188
+ | anotherParam | N | another_param |
189
+ | theParam | Y | the_param |
190
+ +--------------+----------+---------------+
191
+
192
+ Sample Code:
193
+ session.#{ service }_service.request(:#{ request_name }) do |params|
194
+ params.another_param = value
195
+ params.the_param = value
196
+ end
197
+ EOF
198
+
199
+ output = klass.describe_request(
200
+ provider,
201
+ service,
202
+ request_class.api_version.to_s,
203
+ request_class.endpoint_type.to_s,
204
+ request_name.to_s
205
+ )
206
+
207
+ output.must_equal expected
208
+ end
209
+
210
+
211
+ it "display links when available" do
212
+ provider = provider_names.first
213
+ service = service_names(provider).first
214
+ request_name = 'sample_request4'
215
+
216
+ request_class = build_request(provider, service, request_name) do
217
+ param :theParam, required: true, alias: :the_param
218
+ param :anotherParam, required: false, alias: :another_param
219
+
220
+ link 'link1', 'http://www.link.com'
221
+ end
222
+
223
+ expected = <<-EOF
224
+ Request: #{ request_name }
225
+
226
+ Parameters:
227
+ +--------------+----------+---------------+
228
+ | NAME | REQUIRED | ALIAS |
229
+ +--------------+----------+---------------+
230
+ | anotherParam | N | another_param |
231
+ | theParam | Y | the_param |
232
+ +--------------+----------+---------------+
233
+
234
+ Sample Code:
235
+ session.#{ service }_service.request(:#{ request_name }) do |params|
236
+ params.another_param = value
237
+ params.the_param = value
238
+ end
239
+
240
+ Links:
241
+ link1:
242
+ http://www.link.com
243
+ EOF
244
+
245
+ output = klass.describe_request(
246
+ provider,
247
+ service,
248
+ request_class.api_version.to_s,
249
+ request_class.endpoint_type.to_s,
250
+ request_name.to_s
251
+ )
252
+
253
+ output.must_equal expected
133
254
  end
134
-
135
- end # describe '::describe_request'
136
-
137
-
255
+
256
+
257
+ end # describe '::describe_request'
258
+
259
+
138
260
  end # describe 'aviator/core/cli/describe'
139
-
261
+
140
262
  end # class Aviator::Test