aviator 0.0.6 → 0.0.7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (245) hide show
  1. checksums.yaml +8 -8
  2. data/.gitignore +2 -1
  3. data/.travis.yml +4 -0
  4. data/Gemfile +6 -2
  5. data/aviator.gemspec +19 -6
  6. data/lib/aviator/compatibility.rb +34 -0
  7. data/lib/aviator/core/cli/describer.rb +16 -16
  8. data/lib/aviator/core/logger.rb +55 -0
  9. data/lib/aviator/core/request.rb +5 -4
  10. data/lib/aviator/core/request_builder.rb +1 -1
  11. data/lib/aviator/core/response.rb +17 -11
  12. data/lib/aviator/core/service.rb +9 -27
  13. data/lib/aviator/core/session.rb +71 -61
  14. data/lib/aviator/core.rb +3 -1
  15. data/lib/aviator/hashish.rb +111 -0
  16. data/lib/aviator/openstack/common/v2/admin/base.rb +1 -1
  17. data/lib/aviator/openstack/common/v2/public/base.rb +7 -3
  18. data/lib/aviator/openstack/compute/v2/admin/confirm_server_resize.rb +3 -3
  19. data/lib/aviator/openstack/compute/v2/admin/create_network.rb +15 -15
  20. data/lib/aviator/openstack/compute/v2/admin/get_host_details.rb +2 -2
  21. data/lib/aviator/openstack/compute/v2/admin/list_hosts.rb +3 -3
  22. data/lib/aviator/openstack/compute/v2/admin/lock_server.rb +3 -3
  23. data/lib/aviator/openstack/compute/v2/admin/migrate_server.rb +3 -3
  24. data/lib/aviator/openstack/compute/v2/admin/reset_server.rb +3 -3
  25. data/lib/aviator/openstack/compute/v2/admin/resize_server.rb +7 -7
  26. data/lib/aviator/openstack/compute/v2/admin/revert_server_resize.rb +2 -2
  27. data/lib/aviator/openstack/compute/v2/admin/unlock_server.rb +3 -3
  28. data/lib/aviator/openstack/compute/v2/public/change_admin_password.rb +5 -5
  29. data/lib/aviator/openstack/compute/v2/public/create_image.rb +6 -6
  30. data/lib/aviator/openstack/compute/v2/public/create_server.rb +14 -14
  31. data/lib/aviator/openstack/compute/v2/public/delete_image.rb +2 -2
  32. data/lib/aviator/openstack/compute/v2/public/delete_image_metadata_item.rb +31 -0
  33. data/lib/aviator/openstack/compute/v2/public/delete_server.rb +2 -2
  34. data/lib/aviator/openstack/compute/v2/public/delete_server_metadata_item.rb +31 -0
  35. data/lib/aviator/openstack/compute/v2/public/get_flavor_details.rb +2 -2
  36. data/lib/aviator/openstack/compute/v2/public/get_image_details.rb +2 -2
  37. data/lib/aviator/openstack/compute/v2/public/get_image_metadata_item.rb +31 -0
  38. data/lib/aviator/openstack/compute/v2/public/get_network_details.rb +2 -2
  39. data/lib/aviator/openstack/compute/v2/public/get_server.rb +2 -2
  40. data/lib/aviator/openstack/compute/v2/public/get_server_metadata_item.rb +31 -0
  41. data/lib/aviator/openstack/compute/v2/public/list_addresses.rb +3 -3
  42. data/lib/aviator/openstack/compute/v2/public/list_flavors.rb +6 -6
  43. data/lib/aviator/openstack/compute/v2/public/list_image_metadata.rb +30 -0
  44. data/lib/aviator/openstack/compute/v2/public/list_images.rb +9 -9
  45. data/lib/aviator/openstack/compute/v2/public/list_networks.rb +1 -1
  46. data/lib/aviator/openstack/compute/v2/public/list_server_metadata.rb +30 -0
  47. data/lib/aviator/openstack/compute/v2/public/list_servers.rb +11 -11
  48. data/lib/aviator/openstack/compute/v2/public/pause_server.rb +3 -3
  49. data/lib/aviator/openstack/compute/v2/public/reboot_server.rb +5 -5
  50. data/lib/aviator/openstack/compute/v2/public/rebuild_server.rb +13 -13
  51. data/lib/aviator/openstack/compute/v2/public/resume_server.rb +3 -3
  52. data/lib/aviator/openstack/compute/v2/public/root.rb +1 -1
  53. data/lib/aviator/openstack/compute/v2/public/set_image_metadata.rb +38 -0
  54. data/lib/aviator/openstack/compute/v2/public/set_server_metadata.rb +38 -0
  55. data/lib/aviator/openstack/compute/v2/public/suspend_server.rb +3 -3
  56. data/lib/aviator/openstack/compute/v2/public/unpause_server.rb +3 -3
  57. data/lib/aviator/openstack/compute/v2/public/update_image_metadata.rb +38 -0
  58. data/lib/aviator/openstack/compute/v2/public/update_server.rb +6 -6
  59. data/lib/aviator/openstack/compute/v2/public/update_server_metadata.rb +38 -0
  60. data/lib/aviator/openstack/identity/v2/admin/add_role_to_user_on_tenant.rb +4 -4
  61. data/lib/aviator/openstack/identity/v2/admin/create_tenant.rb +8 -8
  62. data/lib/aviator/openstack/identity/v2/admin/create_user.rb +6 -6
  63. data/lib/aviator/openstack/identity/v2/admin/delete_role_from_user_on_tenant.rb +4 -4
  64. data/lib/aviator/openstack/identity/v2/admin/delete_tenant.rb +2 -2
  65. data/lib/aviator/openstack/identity/v2/admin/delete_user.rb +1 -1
  66. data/lib/aviator/openstack/identity/v2/admin/get_tenant_by_id.rb +30 -0
  67. data/lib/aviator/openstack/identity/v2/admin/list_tenants.rb +3 -3
  68. data/lib/aviator/openstack/identity/v2/admin/update_tenant.rb +6 -6
  69. data/lib/aviator/openstack/identity/v2/admin/update_user.rb +7 -7
  70. data/lib/aviator/openstack/identity/v2/public/create_token.rb +13 -13
  71. data/lib/aviator/openstack/identity/v2/public/list_tenants.rb +3 -3
  72. data/lib/aviator/openstack/identity/v2/public/root.rb +1 -1
  73. data/lib/aviator/openstack/image/v1/public/list_public_images.rb +45 -0
  74. data/lib/aviator/openstack/image/v1/public/root.rb +1 -1
  75. data/lib/aviator/openstack/metering/v1/admin/list_projects.rb +1 -1
  76. data/lib/aviator/openstack/volume/v1/public/create_volume.rb +13 -13
  77. data/lib/aviator/openstack/volume/v1/public/delete_volume.rb +2 -2
  78. data/lib/aviator/openstack/volume/v1/public/get_volume.rb +2 -2
  79. data/lib/aviator/openstack/volume/v1/public/list_volume_types.rb +3 -3
  80. data/lib/aviator/openstack/volume/v1/public/list_volumes.rb +22 -11
  81. data/lib/aviator/openstack/volume/v1/public/root.rb +1 -1
  82. data/lib/aviator/openstack/volume/v1/public/update_volume.rb +5 -5
  83. data/lib/aviator/version.rb +1 -1
  84. data/lib/aviator.rb +5 -0
  85. data/test/aviator/core/cli/describer_test.rb +29 -29
  86. data/test/aviator/core/request_builder_test.rb +13 -13
  87. data/test/aviator/core/request_test.rb +11 -11
  88. data/test/aviator/core/service_test.rb +31 -31
  89. data/test/aviator/core/session_test.rb +122 -70
  90. data/test/aviator/openstack/common/v2/public/base_test.rb +8 -8
  91. data/test/aviator/openstack/compute/v2/admin/confirm_server_resize_test.rb +2 -2
  92. data/test/aviator/openstack/compute/v2/admin/create_network_test.rb +15 -15
  93. data/test/aviator/openstack/compute/v2/admin/get_host_details_test.rb +2 -2
  94. data/test/aviator/openstack/compute/v2/admin/list_hosts_test.rb +2 -2
  95. data/test/aviator/openstack/compute/v2/admin/lock_server_test.rb +2 -2
  96. data/test/aviator/openstack/compute/v2/admin/migrate_server_test.rb +2 -2
  97. data/test/aviator/openstack/compute/v2/admin/reset_server_test.rb +2 -2
  98. data/test/aviator/openstack/compute/v2/admin/resize_server_test.rb +3 -3
  99. data/test/aviator/openstack/compute/v2/admin/revert_server_resize_test.rb +2 -2
  100. data/test/aviator/openstack/compute/v2/admin/unlock_server_test.rb +2 -2
  101. data/test/aviator/openstack/compute/v2/public/change_admin_password_test.rb +3 -3
  102. data/test/aviator/openstack/compute/v2/public/create_image_test.rb +2 -2
  103. data/test/aviator/openstack/compute/v2/public/create_server_test.rb +7 -7
  104. data/test/aviator/openstack/compute/v2/public/delete_image_metadata_item_test.rb +159 -0
  105. data/test/aviator/openstack/compute/v2/public/delete_image_test.rb +2 -2
  106. data/test/aviator/openstack/compute/v2/public/delete_server_metadata_item_test.rb +156 -0
  107. data/test/aviator/openstack/compute/v2/public/delete_server_test.rb +2 -2
  108. data/test/aviator/openstack/compute/v2/public/get_flavor_details_test.rb +2 -2
  109. data/test/aviator/openstack/compute/v2/public/get_image_details_test.rb +2 -2
  110. data/test/aviator/openstack/compute/v2/public/get_image_metadata_item_test.rb +160 -0
  111. data/test/aviator/openstack/compute/v2/public/get_network_details_test.rb +2 -2
  112. data/test/aviator/openstack/compute/v2/public/get_server_metadata_item_test.rb +160 -0
  113. data/test/aviator/openstack/compute/v2/public/get_server_test.rb +2 -2
  114. data/test/aviator/openstack/compute/v2/public/list_addresses_test.rb +3 -3
  115. data/test/aviator/openstack/compute/v2/public/list_flavors_test.rb +4 -4
  116. data/test/aviator/openstack/compute/v2/public/list_image_metadata_test.rb +127 -0
  117. data/test/aviator/openstack/compute/v2/public/list_images_test.rb +13 -13
  118. data/test/aviator/openstack/compute/v2/public/list_networks_test.rb +2 -2
  119. data/test/aviator/openstack/compute/v2/public/list_server_metadata_test.rb +127 -0
  120. data/test/aviator/openstack/compute/v2/public/list_servers_test.rb +15 -15
  121. data/test/aviator/openstack/compute/v2/public/pause_server_test.rb +2 -2
  122. data/test/aviator/openstack/compute/v2/public/reboot_server_test.rb +2 -2
  123. data/test/aviator/openstack/compute/v2/public/rebuild_server_test.rb +6 -6
  124. data/test/aviator/openstack/compute/v2/public/resume_server_test.rb +2 -2
  125. data/test/aviator/openstack/compute/v2/public/root_test.rb +2 -2
  126. data/test/aviator/openstack/compute/v2/public/set_image_metadata_test.rb +151 -0
  127. data/test/aviator/openstack/compute/v2/public/set_server_metadata_test.rb +149 -0
  128. data/test/aviator/openstack/compute/v2/public/suspend_server_test.rb +2 -2
  129. data/test/aviator/openstack/compute/v2/public/unpause_server_test.rb +2 -2
  130. data/test/aviator/openstack/compute/v2/public/update_image_metadata_test.rb +154 -0
  131. data/test/aviator/openstack/compute/v2/public/update_server_metadata_test.rb +150 -0
  132. data/test/aviator/openstack/compute/v2/public/update_server_test.rb +4 -4
  133. data/test/aviator/openstack/identity/v2/admin/add_role_to_user_on_tenant_test.rb +2 -2
  134. data/test/aviator/openstack/identity/v2/admin/create_tenant_test.rb +13 -13
  135. data/test/aviator/openstack/identity/v2/admin/create_user_test.rb +12 -10
  136. data/test/aviator/openstack/identity/v2/admin/delete_role_from_user_on_tenant_test.rb +2 -2
  137. data/test/aviator/openstack/identity/v2/admin/delete_tenant_test.rb +2 -2
  138. data/test/aviator/openstack/identity/v2/admin/delete_user_test.rb +2 -2
  139. data/test/aviator/openstack/identity/v2/admin/get_tenant_by_id_test.rb +122 -0
  140. data/test/aviator/openstack/identity/v2/admin/list_users_test.rb +2 -2
  141. data/test/aviator/openstack/identity/v2/admin/update_tenant_test.rb +2 -2
  142. data/test/aviator/openstack/identity/v2/admin/update_user_test.rb +3 -3
  143. data/test/aviator/openstack/identity/v2/public/create_token_test.rb +19 -18
  144. data/test/aviator/openstack/identity/v2/public/list_tenants_test.rb +5 -5
  145. data/test/aviator/openstack/identity/v2/public/root_test.rb +2 -2
  146. data/test/aviator/openstack/image/v1/public/list_public_images_test.rb +145 -0
  147. data/test/aviator/openstack/image/v1/public/root_test.rb +2 -2
  148. data/test/aviator/openstack/metering/v1/admin/list_projects_test.rb +2 -2
  149. data/test/aviator/openstack/volume/v1/public/create_volume_test.rb +2 -2
  150. data/test/aviator/openstack/volume/v1/public/delete_volume_test.rb +2 -2
  151. data/test/aviator/openstack/volume/v1/public/get_volume_test.rb +2 -2
  152. data/test/aviator/openstack/volume/v1/public/list_volume_types_test.rb +2 -2
  153. data/test/aviator/openstack/volume/v1/public/list_volumes_test.rb +49 -24
  154. data/test/aviator/openstack/volume/v1/public/root_test.rb +2 -2
  155. data/test/aviator/openstack/volume/v1/public/update_volume_test.rb +2 -2
  156. data/test/cassettes/core/session/i_validate/returns_false_if_session_is_no_longer_valid.yml +20 -19
  157. data/test/cassettes/core/session/i_validate/returns_true_even_when_a_default_token_is_used.yml +72 -0
  158. data/test/cassettes/core/session/i_validate/returns_true_if_session_is_still_valid.yml +24 -24
  159. data/test/cassettes/openstack/compute/v2/public/delete_image_metadata_item/leads_to_a_valid_response_when_invalid_image_id_is_provided.yml +98 -0
  160. data/test/cassettes/openstack/compute/v2/public/delete_image_metadata_item/leads_to_a_valid_response_when_invalid_metadata_key_is_provided.yml +147 -0
  161. data/test/cassettes/openstack/compute/v2/public/delete_image_metadata_item/leads_to_a_valid_response_when_valid_image_id_and_metadata_key_are_provided.yml +180 -0
  162. data/test/cassettes/openstack/compute/v2/public/delete_image_metadata_item/returns_the_correct_value_for_body_.yml +65 -0
  163. data/test/cassettes/openstack/compute/v2/public/delete_image_metadata_item/returns_the_correct_value_for_headers_.yml +65 -0
  164. data/test/cassettes/openstack/compute/v2/public/delete_image_metadata_item/returns_the_correct_value_for_http_method_.yml +65 -0
  165. data/test/cassettes/openstack/compute/v2/public/delete_image_metadata_item/returns_the_correct_value_for_url_.yml +65 -0
  166. data/test/cassettes/openstack/compute/v2/public/delete_server_metadata_item/leads_to_a_valid_response_when_invalid_metadata_key_is_provided.yml +135 -0
  167. data/test/cassettes/openstack/compute/v2/public/delete_server_metadata_item/leads_to_a_valid_response_when_invalid_server_id_is_provided.yml +98 -0
  168. data/test/cassettes/openstack/compute/v2/public/delete_server_metadata_item/leads_to_a_valid_response_when_valid_server_id_and_metadata_key_are_provided.yml +167 -0
  169. data/test/cassettes/openstack/compute/v2/public/delete_server_metadata_item/returns_the_correct_value_for_body_.yml +65 -0
  170. data/test/cassettes/openstack/compute/v2/public/delete_server_metadata_item/returns_the_correct_value_for_headers_.yml +65 -0
  171. data/test/cassettes/openstack/compute/v2/public/delete_server_metadata_item/returns_the_correct_value_for_http_method_.yml +65 -0
  172. data/test/cassettes/openstack/compute/v2/public/delete_server_metadata_item/returns_the_correct_value_for_url_.yml +65 -0
  173. data/test/cassettes/openstack/compute/v2/public/get_image_metadata_item/leads_to_a_valid_response_when_invalid_image_id_is_provided.yml +98 -0
  174. data/test/cassettes/openstack/compute/v2/public/get_image_metadata_item/leads_to_a_valid_response_when_invalid_metadata_key_is_provided.yml +148 -0
  175. data/test/cassettes/openstack/compute/v2/public/get_image_metadata_item/leads_to_a_valid_response_when_valid_image_id_and_metadata_key_are_provided.yml +180 -0
  176. data/test/cassettes/openstack/compute/v2/public/get_image_metadata_item/returns_the_correct_value_for_body_.yml +65 -0
  177. data/test/cassettes/openstack/compute/v2/public/get_image_metadata_item/returns_the_correct_value_for_headers_.yml +65 -0
  178. data/test/cassettes/openstack/compute/v2/public/get_image_metadata_item/returns_the_correct_value_for_http_method_.yml +65 -0
  179. data/test/cassettes/openstack/compute/v2/public/get_image_metadata_item/returns_the_correct_value_for_url_.yml +65 -0
  180. data/test/cassettes/openstack/compute/v2/public/get_server_metadata_item/leads_to_a_valid_response_when_invalid_metadata_key_is_provided.yml +135 -0
  181. data/test/cassettes/openstack/compute/v2/public/get_server_metadata_item/leads_to_a_valid_response_when_invalid_server_id_and_metadata_key_are_provided.yml +98 -0
  182. data/test/cassettes/openstack/compute/v2/public/get_server_metadata_item/leads_to_a_valid_response_when_valid_server_id_and_metadata_key_are_provided.yml +167 -0
  183. data/test/cassettes/openstack/compute/v2/public/get_server_metadata_item/returns_the_correct_value_for_body_.yml +65 -0
  184. data/test/cassettes/openstack/compute/v2/public/get_server_metadata_item/returns_the_correct_value_for_headers_.yml +65 -0
  185. data/test/cassettes/openstack/compute/v2/public/get_server_metadata_item/returns_the_correct_value_for_http_method_.yml +65 -0
  186. data/test/cassettes/openstack/compute/v2/public/get_server_metadata_item/returns_the_correct_value_for_url_.yml +65 -0
  187. data/test/cassettes/openstack/compute/v2/public/list_image_metadata/leads_to_a_valid_response_when_invalid_image_id_is_provided.yml +98 -0
  188. data/test/cassettes/openstack/compute/v2/public/list_image_metadata/leads_to_a_valid_response_when_valid_image_id_is_provided.yml +147 -0
  189. data/test/cassettes/openstack/compute/v2/public/list_image_metadata/returns_the_correct_value_for_body_.yml +65 -0
  190. data/test/cassettes/openstack/compute/v2/public/list_image_metadata/returns_the_correct_value_for_headers_.yml +65 -0
  191. data/test/cassettes/openstack/compute/v2/public/list_image_metadata/returns_the_correct_value_for_http_method_.yml +65 -0
  192. data/test/cassettes/openstack/compute/v2/public/list_image_metadata/returns_the_correct_value_for_url_.yml +65 -0
  193. data/test/cassettes/openstack/compute/v2/public/list_server_metadata/leads_to_a_valid_response_when_invalid_server_id_is_provided.yml +98 -0
  194. data/test/cassettes/openstack/compute/v2/public/list_server_metadata/leads_to_a_valid_response_when_valid_server_id_is_provided.yml +134 -0
  195. data/test/cassettes/openstack/compute/v2/public/list_server_metadata/returns_the_correct_value_for_body_.yml +65 -0
  196. data/test/cassettes/openstack/compute/v2/public/list_server_metadata/returns_the_correct_value_for_headers_.yml +65 -0
  197. data/test/cassettes/openstack/compute/v2/public/list_server_metadata/returns_the_correct_value_for_http_method_.yml +65 -0
  198. data/test/cassettes/openstack/compute/v2/public/list_server_metadata/returns_the_correct_value_for_url_.yml +65 -0
  199. data/test/cassettes/openstack/compute/v2/public/set_image_metadata/leads_to_a_valid_response_when_invalid_image_id_is_provided.yml +98 -0
  200. data/test/cassettes/openstack/compute/v2/public/set_image_metadata/leads_to_a_valid_response_when_valid_image_id_is_provided.yml +98 -0
  201. data/test/cassettes/openstack/compute/v2/public/set_image_metadata/returns_the_correct_value_for_body_.yml +65 -0
  202. data/test/cassettes/openstack/compute/v2/public/set_image_metadata/returns_the_correct_value_for_headers_.yml +65 -0
  203. data/test/cassettes/openstack/compute/v2/public/set_image_metadata/returns_the_correct_value_for_http_method_.yml +65 -0
  204. data/test/cassettes/openstack/compute/v2/public/set_image_metadata/returns_the_correct_value_for_url_.yml +65 -0
  205. data/test/cassettes/openstack/compute/v2/public/set_server_metadata/leads_to_a_valid_response_when_invalid_server_id_is_provided.yml +98 -0
  206. data/test/cassettes/openstack/compute/v2/public/set_server_metadata/leads_to_a_valid_response_when_valid_server_id_is_provided.yml +134 -0
  207. data/test/cassettes/openstack/compute/v2/public/set_server_metadata/returns_the_correct_value_for_body_.yml +65 -0
  208. data/test/cassettes/openstack/compute/v2/public/set_server_metadata/returns_the_correct_value_for_headers_.yml +65 -0
  209. data/test/cassettes/openstack/compute/v2/public/set_server_metadata/returns_the_correct_value_for_http_method_.yml +65 -0
  210. data/test/cassettes/openstack/compute/v2/public/set_server_metadata/returns_the_correct_value_for_url_.yml +65 -0
  211. data/test/cassettes/openstack/compute/v2/public/update_image_metadata/leads_to_a_valid_response_when_invalid_image_id_is_provided.yml +98 -0
  212. data/test/cassettes/openstack/compute/v2/public/update_image_metadata/leads_to_a_valid_response_when_valid_image_id_is_provided.yml +98 -0
  213. data/test/cassettes/openstack/compute/v2/public/update_image_metadata/returns_the_correct_value_for_body_.yml +65 -0
  214. data/test/cassettes/openstack/compute/v2/public/update_image_metadata/returns_the_correct_value_for_headers_.yml +65 -0
  215. data/test/cassettes/openstack/compute/v2/public/update_image_metadata/returns_the_correct_value_for_http_method_.yml +65 -0
  216. data/test/cassettes/openstack/compute/v2/public/update_image_metadata/returns_the_correct_value_for_url_.yml +65 -0
  217. data/test/cassettes/openstack/compute/v2/public/update_server_metadata/leads_to_a_valid_response_when_invalid_server_id_is_provided.yml +98 -0
  218. data/test/cassettes/openstack/compute/v2/public/update_server_metadata/leads_to_a_valid_response_when_valid_server_id_is_provided.yml +134 -0
  219. data/test/cassettes/openstack/compute/v2/public/update_server_metadata/returns_the_correct_value_for_body_.yml +65 -0
  220. data/test/cassettes/openstack/compute/v2/public/update_server_metadata/returns_the_correct_value_for_headers_.yml +65 -0
  221. data/test/cassettes/openstack/compute/v2/public/update_server_metadata/returns_the_correct_value_for_http_method_.yml +65 -0
  222. data/test/cassettes/openstack/compute/v2/public/update_server_metadata/returns_the_correct_value_for_url_.yml +65 -0
  223. data/test/cassettes/openstack/identity/v2/admin/get_tenant_by_id/leads_to_a_valid_response_when_a_valid_tenant_id_is_provided.yml +133 -0
  224. data/test/cassettes/openstack/identity/v2/admin/get_tenant_by_id/returns_the_correct_value_for_body_.yml +65 -0
  225. data/test/cassettes/openstack/identity/v2/admin/get_tenant_by_id/returns_the_correct_value_for_headers_.yml +65 -0
  226. data/test/cassettes/openstack/identity/v2/admin/get_tenant_by_id/returns_the_correct_value_for_http_method_.yml +65 -0
  227. data/test/cassettes/openstack/identity/v2/admin/get_tenant_by_id/returns_the_correct_value_for_url_.yml +65 -0
  228. data/test/cassettes/openstack/image/v1/public/list_public_images/leads_to_a_valid_response_when_filtering_with_matches.yml +99 -0
  229. data/test/cassettes/openstack/image/v1/public/list_public_images/leads_to_a_valid_response_when_filtering_with_no_matches.yml +97 -0
  230. data/test/cassettes/openstack/image/v1/public/list_public_images/leads_to_a_valid_response_when_no_parameters_are_provided.yml +99 -0
  231. data/test/cassettes/openstack/image/v1/public/list_public_images/returns_the_correct_value_for_body_.yml +64 -0
  232. data/test/cassettes/openstack/image/v1/public/list_public_images/returns_the_correct_value_for_headers_.yml +64 -0
  233. data/test/cassettes/openstack/image/v1/public/list_public_images/returns_the_correct_value_for_http_method_.yml +64 -0
  234. data/test/cassettes/openstack/volume/v1/public/list_volumes/leads_to_a_valid_response_when_all_tenants_param_is_true.yml +139 -0
  235. data/test/environment.yml.example +2 -2
  236. data/test/environment.yml.travis-ci +2 -2
  237. data/test/support/request_helper.rb +13 -13
  238. data/test/support/test_base_class.rb +13 -13
  239. data/test/support/test_environment.rb +33 -15
  240. data/test/support/test_reporter.rb +38 -30
  241. data/test/support/vcr_setup.rb +29 -11
  242. data/test/test_helper.rb +16 -6
  243. metadata +205 -42
  244. data/.ruby-gemset +0 -1
  245. data/.ruby-version +0 -1
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- ODAxM2VmMWQ3YzJmNWE1ZTdkODQ5Yzc4NGI2NDljNTdhODA1ZGM3NQ==
4
+ ZGVhYTFmYzUyMjc5MGY4OWU0MDM2YzViZTM3N2ViNzEzNjljOGIyNA==
5
5
  data.tar.gz: !binary |-
6
- Y2RjMzE0NmU2ZmRjMTdmYTE5MzhkODFmNDM1OWY4YWJkNDJmMWM1Mg==
6
+ MzYyY2MwNTM5NDRmZTJhZWU2Mzg1ZmUxODNmNGVlZWI5MDgzMWY5MQ==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- YWQ3MDE0MGIzNWZhMzlkNzEzNGRjYjc0OGQ0NzRhNWY4MmU4NjMzMGRhNjgz
10
- ODUwZDQ0MDI0MzdhMTcxZWRmNzViZTQ3MDgzNTc3NzU1YThjNzY1NDE0Yzcw
11
- YmVjNmJmMjJlZTQ0NmEyYzkxNDZiOGM0NjAyMDUzMThhYTkyOGE=
9
+ NjBmYWUyY2Q0NjFhODg5MjBhYWEwZTA4NTFhYTY5YjczMDE2OWRmZGZkMTNh
10
+ ZTRkMGI1YjBmNjY3OWY3MzA2NGQxNjlhNGE0NDVhY2E0ZmQ3NTg3OThkNjcy
11
+ YjFjNWUxZjJiZmZkYWIzZjQ2NDRmNDg4MzY0NjFjOWI4Nzg0YzY=
12
12
  data.tar.gz: !binary |-
13
- ZDBjY2EwMjhlYTBiYTcxMTc0ZjZjNzkzNDA1Y2UwYTRkNWZiODZiN2E5Zjk0
14
- MTdiZjc4Mzk1MmNmMmExNTEyNWVmYjExZWVhODE3ZjRiMTM3OTEwMGNlNzc5
15
- NDlmMWQ4ODQyMzRiNzc3NWQwMjhhNjEwMTU1OTg5YTg0MDVjZjA=
13
+ NDAyMjlkNGQ1MzRhNmE5YzVlNThlNzA0M2M2YWFkNDM5ODNhNTQ2MzkxZDg3
14
+ MjcwMDZhYmE4MGJmZjIyZTljMDAxOGY4NTJiY2QzZWFkNDQwOTA5NTA0NGUw
15
+ NGI0NTFlODM2NmI1OGU4M2VkYzVkNjVhMDg2YWM5ZjdjOWM2ZDk=
data/.gitignore CHANGED
@@ -19,4 +19,5 @@ tmp/*.*
19
19
  .DS_Store
20
20
  test/environment.yml
21
21
  vcr.log
22
-
22
+ .ruby-gemset
23
+ .ruby-version
data/.travis.yml CHANGED
@@ -1,5 +1,6 @@
1
1
  language: ruby
2
2
  rvm:
3
+ - 1.8.7
3
4
  - 1.9.3
4
5
  - 2.0.0
5
6
  branches:
@@ -11,3 +12,6 @@ bundler_args: --without development
11
12
  script:
12
13
  - cp test/environment.yml.travis-ci test/environment.yml
13
14
  - bundle exec rake
15
+ after_script:
16
+ - cat tmp/aviator.log
17
+ - cat tmp/vcr.log
data/Gemfile CHANGED
@@ -7,11 +7,15 @@ gemspec
7
7
  # we can tell travis-ci not to build any of the
8
8
  # development gems. Makes the build run faster.
9
9
  group :test do
10
+ if Aviator::Compatibility::RUBY_1_8_MODE
11
+ gem 'mime-types', '~> 1.25.1'
12
+ end
13
+
10
14
  gem 'rake'
11
15
  gem 'simplecov', '~> 0.7.0'
12
- gem 'coveralls', '~> 0.6.0'
16
+ gem 'coveralls', '~> 0.7.0'
13
17
  gem 'json', '~> 1.7.0'
14
18
  gem 'minitest', '~> 4.7.0'
15
19
  gem 'minitest-reporters', '~> 0.14.20'
16
- gem 'vcr', '~> 2.5.0'
20
+ gem 'vcr', '~> 2.8.0'
17
21
  end
data/aviator.gemspec CHANGED
@@ -1,7 +1,10 @@
1
1
  # coding: utf-8
2
2
  lib = File.expand_path('../lib', __FILE__)
3
3
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+
4
5
  require 'aviator/version'
6
+ require 'aviator/compatibility'
7
+ require 'rbconfig'
5
8
 
6
9
  Gem::Specification.new do |spec|
7
10
  spec.name = "aviator"
@@ -18,19 +21,29 @@ Gem::Specification.new do |spec|
18
21
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
22
  spec.require_paths = ["lib"]
20
23
 
21
- spec.add_dependency 'faraday', '~> 0.8.0'
22
- spec.add_dependency 'activesupport', '>= 3.2.8'
24
+ spec.add_dependency 'faraday', '0.8.8'
25
+
26
+ if Aviator::Compatibility::RUBY_1_8_MODE
27
+ spec.add_dependency 'activesupport', '~> 2.0'
28
+ else
29
+ spec.add_dependency 'activesupport', '>= 3.2.8'
30
+ end
31
+
23
32
  spec.add_dependency 'thor', '~> 0.18.1'
24
33
  spec.add_dependency 'terminal-table', '>= 1.4.5'
25
34
 
26
- spec.add_development_dependency "bundler", "~> 1.3"
27
- spec.add_development_dependency "rake"
35
+ spec.add_development_dependency "bundler", ">= 1.0"
28
36
  spec.add_development_dependency 'rb-fsevent', '~> 0.9.0'
29
37
  spec.add_development_dependency 'guard', '~> 1.8.0'
30
38
  spec.add_development_dependency 'guard-rake', '~> 0.0.0'
31
39
  spec.add_development_dependency 'guard-minitest', '~> 0.5.0'
32
- spec.add_development_dependency 'ruby_gntp', '~> 0.3.0'
33
- spec.add_development_dependency 'debugger', '~> 1.6.0'
40
+
41
+ if /darwin|mac os/ === RbConfig::CONFIG['host_os']
42
+ spec.add_development_dependency 'terminal-notifier-guard', '~> 1.5.3'
43
+ else
44
+ spec.add_development_dependency 'ruby_gntp', '~> 0.3.0'
45
+ end
46
+
34
47
  spec.add_development_dependency 'pry', '~> 0.9.0'
35
48
  spec.add_development_dependency 'yard', '~> 0.8.0'
36
49
  spec.add_development_dependency 'redcarpet', '~> 2.3.0'
@@ -0,0 +1,34 @@
1
+ module Aviator
2
+
3
+ module Compatibility
4
+ RUBY_1_8_MODE = (not (RUBY_VERSION =~ /1\.8\.\d*/).nil?)
5
+ end
6
+
7
+ end
8
+
9
+ if Aviator::Compatibility::RUBY_1_8_MODE
10
+
11
+ class Module
12
+
13
+ alias_method :old_const_defined?, :const_defined?
14
+
15
+ def const_defined?(sym, ignore=nil)
16
+ old_const_defined?(sym)
17
+ end
18
+
19
+
20
+ alias_method :old_const_get, :const_get
21
+
22
+ def const_get(sym, ignore=nil)
23
+ old_const_get(sym)
24
+ end
25
+
26
+ alias_method :old_instance_methods, :instance_methods
27
+
28
+ def instance_methods(include_super=true)
29
+ old_instance_methods(include_super).map(&:to_sym)
30
+ end
31
+
32
+ end
33
+
34
+ end
@@ -25,11 +25,11 @@ module Aviator
25
25
 
26
26
 
27
27
  def self.describe_request(provider_name, service_name, api_version, endpoint_type, request_name)
28
- service = Aviator::Service.new provider: provider_name, service: service_name
28
+ service = Aviator::Service.new :provider => provider_name, :service => service_name
29
29
  request_class = "Aviator::#{ provider_name.camelize }::#{ service_name.camelize }::"\
30
30
  "#{ api_version.camelize }::#{ endpoint_type.camelize }::#{ request_name.camelize }".constantize
31
31
 
32
- display = "Request: #{ request_name }\n"
32
+ display = ":Request => #{ request_name }\n"
33
33
 
34
34
 
35
35
  # Build the parameters
@@ -41,7 +41,7 @@ module Aviator
41
41
  if params.length > 0
42
42
  display << "\n"
43
43
 
44
- headings = ['NAME', 'REQUIRED']
44
+ headings = ['NAME', 'REQUIRED?']
45
45
 
46
46
  headings << 'ALIAS' if aliases.length > 0
47
47
 
@@ -57,13 +57,13 @@ module Aviator
57
57
  end
58
58
 
59
59
  widths = [
60
- rows.map{|row| row[0].length }.max,
61
- rows.map{|row| row[1].length }.max
60
+ rows.map{|row| row[0].to_s.length }.max,
61
+ rows.map{|row| row[1].to_s.length }.max
62
62
  ]
63
63
 
64
- widths << rows.map{|row| row[2].length }.max if aliases.length > 0
64
+ widths << rows.map{|row| row[2].to_s.length }.max if aliases.length > 0
65
65
 
66
- table = Terminal::Table.new(headings: headings, rows: rows)
66
+ table = Terminal::Table.new(:headings => headings, :rows => rows)
67
67
 
68
68
  table.align_column(1, :center)
69
69
 
@@ -118,25 +118,25 @@ module Aviator
118
118
  private
119
119
 
120
120
  def provider_names
121
- Pathname.new(__FILE__)
122
- .join('..', '..', '..')
123
- .children
124
- .select{|c| c.directory? && c.basename.to_s != 'core' }
121
+ Pathname.new(__FILE__) \
122
+ .join('..', '..', '..') \
123
+ .children \
124
+ .select{|c| c.directory? && c.basename.to_s != 'core' } \
125
125
  .map{|c| c.basename.to_s }
126
126
  end
127
127
 
128
128
 
129
129
  def request_classes(provider_name, service_name)
130
- service = Aviator::Service.new(provider: provider_name, service: service_name)
130
+ service = Aviator::Service.new(:provider => provider_name, :service => service_name)
131
131
  service.request_classes
132
132
  end
133
133
 
134
134
 
135
135
  def service_names(provider_name)
136
- Pathname.new(__FILE__)
137
- .join('..', '..', '..', provider_name)
138
- .children
139
- .select{|c| c.directory? }
136
+ Pathname.new(__FILE__) \
137
+ .join('..', '..', '..', provider_name) \
138
+ .children \
139
+ .select{|c| c.directory? } \
140
140
  .map{|c| c.basename.to_s }
141
141
  end
142
142
  end
@@ -0,0 +1,55 @@
1
+ module Aviator
2
+
3
+ class Logger < Faraday::Response::Middleware
4
+ extend Forwardable
5
+
6
+ def initialize(app, logger=nil)
7
+ super(app)
8
+ @logger = logger || begin
9
+ require 'logger'
10
+ ::Logger.new(self.class::LOG_FILE_PATH)
11
+ end
12
+ end
13
+
14
+
15
+ def_delegators :@logger, :debug, :info, :warn, :error, :fatal
16
+
17
+
18
+ def call(env)
19
+ info(env[:method].to_s.upcase) { env[:url].to_s }
20
+ debug('REQ_HEAD') { dump_headers env[:request_headers] }
21
+ debug('REQ_BODY') { dump_body env[:body] }
22
+ super
23
+ end
24
+
25
+
26
+ def on_complete(env)
27
+ info('STATUS') { env[:status].to_s }
28
+ debug('RES_HEAD') { dump_headers env[:response_headers] }
29
+ debug('RES_BODY') { dump_body env[:body] }
30
+ end
31
+
32
+
33
+ def self.configure(log_file_path)
34
+ # Return a subclass with its logfile path set. This
35
+ # must be done so that different sessions can log to
36
+ # different paths.
37
+ Class.new(self) { const_set('LOG_FILE_PATH', log_file_path) }
38
+ end
39
+
40
+
41
+ private
42
+
43
+ def dump_body(body)
44
+ return if body.nil?
45
+
46
+ # :TODO => Make this configurable
47
+ body.gsub(/["']password["']:["']\w*["']/, '"password":[FILTERED_VALUE]')
48
+ end
49
+
50
+ def dump_headers(headers)
51
+ headers.map { |k, v| "#{k}: #{v.inspect}" }.join("; ")
52
+ end
53
+ end
54
+
55
+ end
@@ -196,12 +196,13 @@ module Aviator
196
196
 
197
197
 
198
198
  def link(rel, href)
199
- links << { rel: rel, href: href }
199
+ links << { :rel => rel, :href => href }
200
200
  end
201
201
 
202
202
 
203
203
  def meta(attr_name, attr_value)
204
- define_singleton_method(attr_name) do
204
+ eigenclass = class << self; self; end
205
+ eigenclass.send(:define_method, attr_name) do
205
206
  attr_value
206
207
  end
207
208
 
@@ -212,7 +213,7 @@ module Aviator
212
213
 
213
214
 
214
215
  def param(param_name, opts={})
215
- opts = opts.with_indifferent_access
216
+ opts = Hashish.new(opts)
216
217
  list = (opts[:required] == false ? optional_params : required_params)
217
218
  list << param_name unless optional_params.include?(param_name)
218
219
 
@@ -225,4 +226,4 @@ module Aviator
225
226
 
226
227
  end
227
228
 
228
- end
229
+ end
@@ -80,7 +80,7 @@ module Aviator
80
80
 
81
81
  class << self
82
82
 
83
- def define_request(request_name, options={ inherit: [:request] }, &block)
83
+ def define_request(request_name, options={ :inherit => [:request] }, &block)
84
84
  RequestBuilder.define_request self, request_name, options, &block
85
85
  end
86
86
 
@@ -2,11 +2,11 @@ module Aviator
2
2
 
3
3
  class Response
4
4
  extend Forwardable
5
-
5
+
6
6
  def_delegators :@response, :headers, :status
7
-
7
+
8
8
  attr_reader :request
9
-
9
+
10
10
  def initialize(response, request)
11
11
  @response = response
12
12
  @request = request
@@ -15,19 +15,25 @@ module Aviator
15
15
 
16
16
  def body
17
17
  if raw_body.length > 0
18
- JSON.parse(raw_body).with_indifferent_access
18
+ if Aviator::Compatibility::RUBY_1_8_MODE
19
+ clean_body = raw_body.gsub(/\\ /, ' ')
20
+ else
21
+ clean_body = raw_body
22
+ end
23
+
24
+ Hashish.new(JSON.parse(clean_body))
19
25
  else
20
- {}
26
+ Hashish.new({})
21
27
  end
22
28
  end
23
-
24
-
29
+
30
+
25
31
  private
26
-
32
+
27
33
  def raw_body
28
34
  @response.body
29
35
  end
30
-
36
+
31
37
  end
32
-
33
- end
38
+
39
+ end
@@ -42,27 +42,14 @@ module Aviator
42
42
  "service. Therefore, I don't know to which base URL the request should be sent. "\
43
43
  "This may be because you are using a default or unscoped token. If this is not your "\
44
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"\
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
47
  " params[:example1] = 'example1'\n"\
48
48
  " params[:example2] = 'example2'\n"\
49
49
  "end\n\n"
50
50
  end
51
51
  end
52
52
 
53
-
54
-
55
- class Logger < Faraday::Response::Logger
56
- def initialize(app, logger=nil)
57
- super(app)
58
- @logger = logger || begin
59
- require 'logger'
60
- ::Logger.new(self.class::LOG_FILE_PATH)
61
- end
62
- end
63
- end
64
-
65
-
66
53
  attr_accessor :default_session_data
67
54
 
68
55
  attr_reader :service,
@@ -84,7 +71,7 @@ module Aviator
84
71
  session_data = options[:session_data] || default_session_data
85
72
 
86
73
  raise SessionDataNotProvidedError.new unless session_data
87
-
74
+
88
75
  [:base_url].each do |k|
89
76
  session_data[k] = options[k] if options[k]
90
77
  end
@@ -116,14 +103,9 @@ module Aviator
116
103
 
117
104
  def http_connection
118
105
  @http_connection ||= Faraday.new do |conn|
119
- if log_file
120
- # Ugly hack to make logger configurable
121
- const_name = 'LOG_FILE_PATH'
122
- Logger.send(:remove_const, const_name) if Logger.const_defined?(const_name)
123
- Logger.const_set(const_name, log_file)
124
- conn.use Logger.dup
125
- end
106
+ conn.use Logger.configure(log_file) if log_file
126
107
  conn.adapter Faraday.default_adapter
108
+
127
109
  conn.headers['Content-Type'] = 'application/json'
128
110
  end
129
111
  end
@@ -137,7 +119,7 @@ module Aviator
137
119
  ['Public', 'Admin']
138
120
  end
139
121
 
140
- namespace = Aviator.const_get(provider.camelize)
122
+ namespace = Aviator.const_get(provider.camelize) \
141
123
  .const_get(service.camelize)
142
124
 
143
125
  version = infer_version(session_data, name).to_s.camelize
@@ -182,7 +164,7 @@ module Aviator
182
164
 
183
165
 
184
166
  def load_requests
185
- # TODO: This should be determined by a provider-specific module.
167
+ # :TODO => This should be determined by a provider-specific module.
186
168
  # e.g. Aviator::OpenStack::requests_base_dir
187
169
  request_file_paths = Dir.glob(Pathname.new(__FILE__).join(
188
170
  '..',
@@ -196,8 +178,8 @@ module Aviator
196
178
 
197
179
  request_file_paths.each{ |path| require path }
198
180
 
199
- constant_parts = request_file_paths
200
- .map{|rf| rf.to_s.match(/#{provider}\/#{service}\/([\w\/]+)\.rb$/) }
181
+ constant_parts = request_file_paths \
182
+ .map{|rf| rf.to_s.match(/#{provider}\/#{service}\/([\w\/]+)\.rb$/) } \
201
183
  .map{|rf| rf[1].split('/').map{|c| c.camelize }.join('::') }
202
184
 
203
185
  @request_classes = constant_parts.map do |cp|