aviator 0.0.6 → 0.0.7

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 (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|