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
@@ -3,9 +3,14 @@ require 'test_helper'
3
3
  class Aviator::Test
4
4
 
5
5
  describe 'aviator/core/request_builder' do
6
-
6
+
7
+ def builder
8
+ Aviator
9
+ end
10
+
11
+
7
12
  describe '::define_request' do
8
-
13
+
9
14
  it 'places the request class in the right namespace' do
10
15
  provider = :dopenstack
11
16
  service = :supermega
@@ -13,14 +18,14 @@ class Aviator::Test
13
18
  ep_type = :uber
14
19
  _name_ = :sample
15
20
 
16
- Aviator.define_request _name_ do
21
+ builder.define_request _name_ do
17
22
  meta :provider, provider
18
23
  meta :service, service
19
24
  meta :api_version, api_ver
20
25
  meta :endpoint_type, ep_type
21
26
  end
22
27
 
23
- [provider, service, api_ver, ep_type, _name_].inject(Aviator) do |namespace, sym|
28
+ [provider, service, api_ver, ep_type, _name_].inject(builder) do |namespace, sym|
24
29
  const_name = sym.to_s.camelize
25
30
 
26
31
  namespace.const_defined?(const_name, false).must_equal true
@@ -36,22 +41,138 @@ class Aviator::Test
36
41
  api_ver = :fixnum # This is on purpose and is critical to this test.
37
42
  ep_type = :awesome
38
43
  _name_ = :this_request
39
-
40
- Aviator.define_request _name_ do
44
+
45
+ builder.define_request _name_ do
41
46
  meta :provider, provider
42
47
  meta :service, service
43
48
  meta :api_version, api_ver
44
49
  meta :endpoint_type, ep_type
45
50
  end
46
-
47
- [provider, service, api_ver, ep_type, _name_].inject(Aviator) do |namespace, sym|
51
+
52
+ [provider, service, api_ver, ep_type, _name_].inject(builder) do |namespace, sym|
48
53
  const_name = sym.to_s.camelize
49
-
50
- namespace.const_defined?(const_name, false).must_equal true,
54
+
55
+ namespace.const_defined?(const_name, false).must_equal true,
51
56
  "Expected #{ const_name } to be defined in #{ namespace }"
52
-
57
+
53
58
  namespace.const_get(const_name, false)
54
- end
59
+ end
60
+ end
61
+
62
+
63
+ it 'understands request inheritance' do
64
+ base = {
65
+ provider: :another_provider,
66
+ service: :base_service,
67
+ api_ver: :base_api_ver,
68
+ ep_type: :base_ep_type,
69
+ name: :base_name
70
+ }
71
+
72
+ builder.define_request base[:name] do
73
+ meta :provider, base[:provider]
74
+ meta :service, base[:service]
75
+ meta :api_version, base[:api_ver]
76
+ meta :endpoint_type, base[:ep_type]
77
+ end
78
+
79
+ base_request = [
80
+ base[:provider],
81
+ base[:service],
82
+ base[:api_ver],
83
+ base[:ep_type],
84
+ base[:name]
85
+ ]
86
+
87
+ builder.define_request :child_request, inherit: base_request do; end
88
+
89
+ child_req_hierarchy = [
90
+ base[:provider],
91
+ base[:service],
92
+ base[:api_ver],
93
+ base[:ep_type],
94
+ :child_request
95
+ ]
96
+
97
+ child_request = child_req_hierarchy.inject(builder) do |namespace, sym|
98
+ namespace.const_get(sym.to_s.camelize, false)
99
+ end
100
+
101
+ child_request.wont_be_nil
102
+ child_request.provider.must_equal base[:provider]
103
+ child_request.service.must_equal base[:service]
104
+ child_request.api_version.must_equal base[:api_ver]
105
+ child_request.endpoint_type.must_equal base[:ep_type]
106
+ end
107
+
108
+
109
+ it 'raises a BaseRequestNotFoundError if base request does not exist' do
110
+ non_existent_base = [:none, :existent, :base]
111
+
112
+ the_method = lambda do
113
+ builder.define_request :child, inherit: non_existent_base do; end
114
+ end
115
+
116
+ the_method.must_raise Aviator::BaseRequestNotFoundError
117
+
118
+ error = the_method.call rescue $!
119
+
120
+ error.message.wont_be_nil
121
+ error.base_request_hierarchy.wont_be_nil
122
+ error.base_request_hierarchy.must_equal non_existent_base
123
+ end
124
+
125
+
126
+ it 'raises a RequestAlreadyDefinedError if the request is already defined' do
127
+ request = {
128
+ provider: :existing_provider,
129
+ service: :base_service,
130
+ api_ver: :base_api_ver,
131
+ ep_type: :base_ep_type,
132
+ name: :base_name
133
+ }
134
+
135
+ builder.define_request request[:name] do
136
+ meta :provider, request[:provider]
137
+ meta :service, request[:service]
138
+ meta :api_version, request[:api_ver]
139
+ meta :endpoint_type, request[:ep_type]
140
+ end
141
+
142
+ the_method = lambda do
143
+ builder.define_request request[:name] do
144
+ meta :provider, request[:provider]
145
+ meta :service, request[:service]
146
+ meta :api_version, request[:api_ver]
147
+ meta :endpoint_type, request[:ep_type]
148
+ end
149
+ end
150
+
151
+ the_method.must_raise Aviator::RequestAlreadyDefinedError
152
+
153
+ error = the_method.call rescue $!
154
+
155
+ error.message.wont_be_nil
156
+ error.request_name.must_equal request[:name].to_s.camelize
157
+ end
158
+
159
+
160
+ it 'automatically attempts to load the base class if it\'s not yet loaded' do
161
+ base_arr = [:openstack, :identity, :v2, :public, :root]
162
+ child_arr = base_arr.first(base_arr.length - 1) + [:child]
163
+
164
+ builder.define_request child_arr.last, inherit: base_arr do; end
165
+
166
+ base_klass = base_arr.inject(builder) do |namespace, sym|
167
+ namespace.const_get(sym.to_s.camelize, false)
168
+ end
169
+
170
+ child_klass = child_arr.inject(builder) do |namespace, sym|
171
+ namespace.const_get(sym.to_s.camelize, false)
172
+ end
173
+
174
+ base_klass.wont_be_nil
175
+ child_klass.wont_be_nil
55
176
  end
56
177
 
57
178
  end
@@ -211,6 +211,70 @@ class Aviator::Test
211
211
  error.message.wont_be_nil
212
212
  error.message.must_include "private method"
213
213
  end
214
+
215
+
216
+ it 'accepts an alias for a given parameter' do
217
+ klass = Class.new(Aviator::Request) do
218
+ param :the_param, required: true, alias: :the_alias
219
+ end
220
+
221
+ param_val = 999
222
+
223
+ req = klass.new do |params|
224
+ params.the_param = param_val
225
+ end
226
+
227
+ req.params.the_param.must_equal param_val
228
+ req.params.the_alias.must_equal param_val
229
+ end
230
+
231
+
232
+ it 'makes the param alias assignable' do
233
+ klass = Class.new(Aviator::Request) do
234
+ param :the_param, required: true, alias: :the_alias
235
+ end
236
+
237
+ param_val = 999
238
+
239
+ req = klass.new do |params|
240
+ params.the_alias = param_val
241
+ end
242
+
243
+ req.params.the_param.must_equal param_val
244
+ req.params.the_alias.must_equal param_val
245
+ end
246
+
247
+
248
+ it 'allows aliases to be accessible as symbols' do
249
+ klass = Class.new(Aviator::Request) do
250
+ param :the_param, required: true, alias: :the_alias
251
+ end
252
+
253
+ param_val = 999
254
+
255
+ req = klass.new do |params|
256
+ params[:the_alias] = param_val
257
+ end
258
+
259
+ req.params[:the_param].must_equal param_val
260
+ req.params[:the_alias].must_equal param_val
261
+ end
262
+
263
+
264
+ it 'allows aliases to be accessible as strings' do
265
+ klass = Class.new(Aviator::Request) do
266
+ param :the_param, required: true, alias: :the_alias
267
+ end
268
+
269
+ param_val = 999
270
+
271
+ req = klass.new do |params|
272
+ params['the_alias'] = param_val
273
+ end
274
+
275
+ req.params['the_param'].must_equal param_val
276
+ req.params['the_alias'].must_equal param_val
277
+ end
214
278
 
215
279
  end
216
280
 
@@ -74,6 +74,24 @@ class Aviator::Test
74
74
  end
75
75
 
76
76
 
77
+ it 'raises an error if session data does not have the endpoint information' do
78
+ request_name = config[:auth_service][:request].to_sym
79
+
80
+ bootstrap = JSON.parse('{"access": {"token": {"issued_at": "2013-09-25T20:21:55.453783",
81
+ "expires": "2013-09-26T02:21:55Z", "id": "2f6bdec6cd0f49b4a60ede0cd4bf2c0d"},
82
+ "serviceCatalog": [], "user": {"username": "bogus",
83
+ "roles_links": [], "id": "447527294dae4a1788d36beb0db99c00", "roles": [],
84
+ "name": "bogus"}, "metadata": {"is_admin": 0, "roles":
85
+ []}}}').with_indifferent_access
86
+
87
+ s = service(bootstrap)
88
+
89
+ the_method = lambda { s.request request_name }
90
+
91
+ the_method.must_raise Aviator::Service::MissingServiceEndpointError
92
+ end
93
+
94
+
77
95
  it 'can find the correct request based on non-bootstrapped session data' do
78
96
  session_data = do_auth_request.body
79
97
 
@@ -0,0 +1,109 @@
1
+ require 'test_helper'
2
+
3
+ class Aviator::Test
4
+
5
+ describe 'aviator/openstack/common/v2/public/base' do
6
+
7
+ def create_request(session_data = get_session_data, &block)
8
+ block ||= lambda do |params|
9
+ params[:tenant_id] = 0
10
+ params[:role_id] = 0
11
+ params[:user_id] = 0
12
+ end
13
+
14
+ klass.new(session_data, &block)
15
+ end
16
+
17
+
18
+ def get_session_data
19
+ session.send :auth_info
20
+ end
21
+
22
+
23
+ def helper
24
+ Aviator::Test::RequestHelper
25
+ end
26
+
27
+
28
+ def klass
29
+ @klass ||= helper.load_request('openstack', 'common', 'v2', 'public', 'base.rb')
30
+ end
31
+
32
+
33
+ def session
34
+ unless @session
35
+ @session = Aviator::Session.new(
36
+ config_file: Environment.path,
37
+ environment: 'openstack_admin'
38
+ )
39
+ @session.authenticate
40
+ end
41
+
42
+ @session
43
+ end
44
+
45
+
46
+ validate_attr :anonymous? do
47
+ klass.anonymous?.must_equal false
48
+ end
49
+
50
+
51
+ validate_attr :api_version do
52
+ klass.api_version.must_equal :v2
53
+ end
54
+
55
+
56
+ validate_attr :endpoint_type do
57
+ klass.endpoint_type.must_equal :public
58
+ end
59
+
60
+
61
+ validate_attr :headers do
62
+ headers = { 'X-Auth-Token' => get_session_data[:access][:token][:id] }
63
+
64
+ request = create_request
65
+
66
+ request.headers.must_equal headers
67
+ end
68
+
69
+
70
+ describe '::base_url' do
71
+
72
+ it 'must throw a MissingServiceEndpointError when the service\'s endpoint can\'t be found' do
73
+ default_session_data = JSON.parse('{"access": {"token": {"issued_at": "2013-09-25T20:21:55.453783",
74
+ "expires": "2013-09-26T02:21:55Z", "id": "2f6bdec6cd0f49b4a60ede0cd4bf2c0d"},
75
+ "serviceCatalog": [], "user": {"username": "bogus",
76
+ "roles_links": [], "id": "447527294dae4a1788d36beb0db99c00", "roles": [],
77
+ "name": "bogus"}, "metadata": {"is_admin": 0, "roles":
78
+ []}}}').with_indifferent_access
79
+
80
+ request = klass.new(default_session_data)
81
+
82
+ the_method = lambda { request.send(:base_url) }
83
+
84
+ the_method.must_raise Aviator::Service::MissingServiceEndpointError
85
+ end
86
+
87
+
88
+ it 'must use the base_url value if provided.' do
89
+ default_session_data = JSON.parse('{"access": {"token": {"issued_at": "2013-09-25T20:21:55.453783",
90
+ "expires": "2013-09-26T02:21:55Z", "id": "2f6bdec6cd0f49b4a60ede0cd4bf2c0d"},
91
+ "serviceCatalog": [], "user": {"username": "bogus",
92
+ "roles_links": [], "id": "447527294dae4a1788d36beb0db99c00", "roles": [],
93
+ "name": "bogus"}, "metadata": {"is_admin": 0, "roles":
94
+ []}}}').with_indifferent_access
95
+
96
+ base_url = 'http://sample'
97
+
98
+ default_session_data.merge!({ base_url: base_url })
99
+
100
+ request = klass.new(default_session_data)
101
+
102
+ request.send(:base_url).must_equal base_url
103
+ end
104
+
105
+ end
106
+
107
+ end
108
+
109
+ end
@@ -0,0 +1,163 @@
1
+ require 'test_helper'
2
+
3
+ class Aviator::Test
4
+
5
+ describe 'aviator/openstack/compute/v2/admin/create_network' do
6
+
7
+ def create_request(session_data = get_session_data, &block)
8
+ block ||= lambda do |p|
9
+ p[:label] = 'network-test'
10
+ p[:cidr] = '10.0.10.0/24'
11
+ end
12
+
13
+ klass.new(session_data, &block)
14
+ end
15
+
16
+
17
+ def get_session_data
18
+ session.send :auth_info
19
+ end
20
+
21
+
22
+ def helper
23
+ Aviator::Test::RequestHelper
24
+ end
25
+
26
+
27
+ def klass
28
+ @klass ||= helper.load_request('openstack', 'compute', 'v2', 'admin', 'create_network.rb')
29
+ end
30
+
31
+
32
+ def session
33
+ unless @session
34
+ @session = Aviator::Session.new(
35
+ config_file: Environment.path,
36
+ environment: 'openstack_admin'
37
+ )
38
+ @session.authenticate
39
+ end
40
+
41
+ @session
42
+ end
43
+
44
+
45
+ validate_attr :anonymous? do
46
+ klass.anonymous?.must_equal false
47
+ end
48
+
49
+
50
+ validate_attr :api_version do
51
+ klass.api_version.must_equal :v2
52
+ end
53
+
54
+
55
+ validate_attr :body do
56
+ params = {
57
+ label: 'mynetwork',
58
+ bridge: 'dummy-value-for-test',
59
+ bridge_interface: 'dummy-value-for-test',
60
+ cidr: 'dummy-value-for-test',
61
+ cidr_v6: 'dummy-value-for-test',
62
+ dns1: 'dummy-value-for-test',
63
+ dns2: 'dummy-value-for-test',
64
+ gateway: 'dummy-value-for-test',
65
+ gateway_v6: 'dummy-value-for-test',
66
+ multi_host: 'dummy-value-for-test',
67
+ project_id: 'dummy-value-for-test',
68
+ vlan: 'dummy-value-for-test'
69
+ }
70
+
71
+ body = {
72
+ network: params
73
+ }
74
+
75
+ request = klass.new(helper.admin_session_data) do |p|
76
+ params.each do |k,v|
77
+ p[k] = v
78
+ end
79
+ end
80
+
81
+ request.body.must_equal body
82
+ end
83
+
84
+
85
+ validate_attr :endpoint_type do
86
+ klass.endpoint_type.must_equal :admin
87
+ end
88
+
89
+
90
+ validate_attr :headers do
91
+ headers = { 'X-Auth-Token' => get_session_data[:access][:token][:id] }
92
+
93
+ request = create_request
94
+
95
+ request.headers.must_equal headers
96
+ end
97
+
98
+
99
+ validate_attr :http_method do
100
+ create_request.http_method.must_equal :post
101
+ end
102
+
103
+
104
+ validate_attr :optional_params do
105
+ klass.optional_params.must_equal [
106
+ :bridge,
107
+ :bridge_interface,
108
+ :cidr,
109
+ :cidr_v6,
110
+ :dns1,
111
+ :dns2,
112
+ :gateway,
113
+ :gateway_v6,
114
+ :multi_host,
115
+ :project_id,
116
+ :vlan
117
+ ]
118
+ end
119
+
120
+
121
+ validate_attr :required_params do
122
+ klass.required_params.must_equal [:label]
123
+ end
124
+
125
+
126
+ validate_attr :url do
127
+ service_spec = get_session_data[:access][:serviceCatalog].find{ |s| s[:type] == 'compute' }
128
+ url = "#{ service_spec[:endpoints][0][:adminURL] }/os-networks"
129
+
130
+ request = create_request
131
+
132
+ request.url.must_equal url
133
+ end
134
+
135
+
136
+ validate_response 'valid parameters are provided' do
137
+ response = session.compute_service.request :create_network do |params|
138
+ params[:label] = 'networktest'
139
+ params[:cidr] = '10.0.9.0/24'
140
+ end
141
+
142
+ response.status.must_equal 200
143
+ response.body.wont_be_nil
144
+ response.body[:network].wont_be_nil
145
+ response.headers.wont_be_nil
146
+ end
147
+
148
+
149
+ validate_response 'invalid parameters are provided' do
150
+ response = session.compute_service.request :create_network do |params|
151
+ params[:label] = 'invalid-network!'
152
+ params[:cidr] = 'this-is-invalid!'
153
+ end
154
+
155
+ response.status.must_equal 400
156
+ response.body.wont_be_nil
157
+ response.headers.wont_be_nil
158
+ end
159
+
160
+
161
+ end
162
+
163
+ end
@@ -0,0 +1,125 @@
1
+ require 'test_helper'
2
+
3
+ class Aviator::Test
4
+
5
+ describe 'aviator/openstack/compute/v2/admin/lock_server' do
6
+
7
+ def create_request(session_data = get_session_data, &block)
8
+ block ||= lambda { |params| params[:id] = 0 }
9
+ klass.new(session_data, &block)
10
+ end
11
+
12
+
13
+ def get_session_data
14
+ session.send :auth_info
15
+ end
16
+
17
+
18
+ def helper
19
+ Aviator::Test::RequestHelper
20
+ end
21
+
22
+
23
+ def klass
24
+ @klass ||= helper.load_request('openstack', 'compute', 'v2', 'admin', 'lock_server.rb')
25
+ end
26
+
27
+
28
+ def session
29
+ unless @session
30
+ @session = Aviator::Session.new(
31
+ config_file: Environment.path,
32
+ environment: 'openstack_admin'
33
+ )
34
+ @session.authenticate
35
+ end
36
+
37
+ @session
38
+ end
39
+
40
+
41
+ validate_attr :anonymous? do
42
+ klass.anonymous?.must_equal false
43
+ end
44
+
45
+
46
+ validate_attr :api_version do
47
+ klass.api_version.must_equal :v2
48
+ end
49
+
50
+
51
+ validate_attr :body do
52
+ request = create_request
53
+
54
+ klass.body?.must_equal true
55
+ request.body?.must_equal true
56
+ request.body.wont_be_nil
57
+ end
58
+
59
+
60
+ validate_attr :endpoint_type do
61
+ klass.endpoint_type.must_equal :admin
62
+ end
63
+
64
+
65
+ validate_attr :headers do
66
+ headers = { 'X-Auth-Token' => get_session_data[:access][:token][:id] }
67
+
68
+ request = create_request
69
+
70
+ request.headers.must_equal headers
71
+ end
72
+
73
+
74
+ validate_attr :http_method do
75
+ create_request.http_method.must_equal :post
76
+ end
77
+
78
+
79
+ validate_attr :required_params do
80
+ klass.required_params.must_equal [:id]
81
+ end
82
+
83
+
84
+ validate_attr :url do
85
+ service_spec = get_session_data[:access][:serviceCatalog].find{ |s| s[:type] == 'compute' }
86
+ server_id = 'sampleId'
87
+ url = "#{ service_spec[:endpoints][0][:adminURL] }/servers/#{ server_id }/action"
88
+
89
+ request = create_request do |params|
90
+ params[:id] = server_id
91
+ end
92
+
93
+ request.url.must_equal url
94
+ end
95
+
96
+
97
+ validate_response 'valid params are provided' do
98
+ service = session.compute_service
99
+ server = service.request(:list_servers).body[:servers].first
100
+
101
+ response = service.request :lock_server do |params|
102
+ params[:id] = server[:id]
103
+ end
104
+
105
+ response.status.must_equal 202
106
+ response.headers.wont_be_nil
107
+ end
108
+
109
+
110
+ validate_response 'invalid server id is provided' do
111
+ server_id = 'abogusserveridthatdoesnotexist'
112
+
113
+ response = session.compute_service.request :lock_server do |params|
114
+ params[:id] = server_id
115
+ end
116
+
117
+ response.status.must_equal 404
118
+ response.body.wont_be_nil
119
+ response.headers.wont_be_nil
120
+ end
121
+
122
+
123
+ end
124
+
125
+ end