aviator 0.0.4 → 0.0.5

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 (166) hide show
  1. checksums.yaml +8 -8
  2. data/README.md +4 -3
  3. data/lib/aviator/core.rb +1 -0
  4. data/lib/aviator/core/request.rb +0 -35
  5. data/lib/aviator/core/request_builder.rb +37 -0
  6. data/lib/aviator/core/response.rb +11 -3
  7. data/lib/aviator/core/service.rb +3 -2
  8. data/lib/aviator/openstack/compute/v2/admin/confirm_server_resize.rb +46 -0
  9. data/lib/aviator/openstack/compute/v2/admin/get_host_details.rb +40 -0
  10. data/lib/aviator/openstack/compute/v2/admin/list_hosts.rb +55 -0
  11. data/lib/aviator/openstack/compute/v2/admin/resize_server.rb +51 -0
  12. data/lib/aviator/openstack/compute/v2/admin/revert_server_resize.rb +46 -0
  13. data/lib/aviator/openstack/compute/v2/public/delete_image.rb +40 -0
  14. data/lib/aviator/openstack/compute/v2/public/get_image_details.rb +40 -0
  15. data/lib/aviator/openstack/compute/v2/public/list_servers.rb +12 -1
  16. data/lib/aviator/openstack/identity/v2/admin/add_role_to_user_on_tenant.rb +46 -0
  17. data/lib/aviator/openstack/identity/v2/admin/create_user.rb +66 -0
  18. data/lib/aviator/openstack/identity/v2/admin/delete_role_from_user_on_tenant.rb +46 -0
  19. data/lib/aviator/openstack/identity/v2/admin/delete_tenant.rb +40 -0
  20. data/lib/aviator/openstack/identity/v2/admin/delete_user.rb +39 -0
  21. data/lib/aviator/openstack/identity/v2/admin/list_users.rb +37 -0
  22. data/lib/aviator/openstack/identity/v2/admin/update_tenant.rb +57 -0
  23. data/lib/aviator/openstack/identity/v2/admin/update_user.rb +61 -0
  24. data/lib/aviator/openstack/identity/v2/public/root.rb +34 -0
  25. data/lib/aviator/openstack/image/v1/public/root.rb +34 -0
  26. data/lib/aviator/openstack/metering/v1/admin/list_projects.rb +34 -0
  27. data/lib/aviator/openstack/volume/v1/public/root.rb +34 -0
  28. data/lib/aviator/version.rb +1 -1
  29. data/test/aviator/core/request_builder_test.rb +61 -0
  30. data/test/aviator/openstack/compute/v2/admin/confirm_server_resize_test.rb +145 -0
  31. data/test/aviator/openstack/compute/v2/admin/get_host_details_test.rb +133 -0
  32. data/test/aviator/openstack/compute/v2/admin/list_hosts_test.rb +138 -0
  33. data/test/aviator/openstack/compute/v2/admin/resize_server_test.rb +177 -0
  34. data/test/aviator/openstack/compute/v2/admin/revert_server_resize_test.rb +145 -0
  35. data/test/aviator/openstack/compute/v2/public/delete_image_test.rb +134 -0
  36. data/test/aviator/openstack/compute/v2/public/get_image_details_test.rb +134 -0
  37. data/test/aviator/openstack/compute/v2/public/list_servers_test.rb +63 -33
  38. data/test/aviator/openstack/identity/v2/admin/add_role_to_user_on_tenant_test.rb +192 -0
  39. data/test/aviator/openstack/identity/v2/admin/create_user_test.rb +161 -0
  40. data/test/aviator/openstack/identity/v2/admin/delete_role_from_user_on_tenant_test.rb +190 -0
  41. data/test/aviator/openstack/identity/v2/admin/delete_tenant_test.rb +132 -0
  42. data/test/aviator/openstack/identity/v2/admin/delete_user_test.rb +127 -0
  43. data/test/aviator/openstack/identity/v2/admin/list_users_test.rb +101 -0
  44. data/test/aviator/openstack/identity/v2/admin/update_tenant_test.rb +142 -0
  45. data/test/aviator/openstack/identity/v2/admin/update_user_test.rb +143 -0
  46. data/test/aviator/openstack/identity/v2/public/root_test.rb +106 -0
  47. data/test/aviator/openstack/image/v1/public/root_test.rb +106 -0
  48. data/test/aviator/openstack/metering/v1/admin/list_projects_test.rb +106 -0
  49. data/test/aviator/openstack/volume/v1/public/root_test.rb +106 -0
  50. data/test/cassettes/openstack/compute/v2/admin/confirm_server_resize/leads_to_a_valid_response_when_parameters_are_provided.yml +907 -0
  51. data/test/cassettes/openstack/compute/v2/admin/confirm_server_resize/leads_to_a_valid_response_when_the_id_parameter_is_invalid.yml +96 -0
  52. data/test/cassettes/openstack/compute/v2/admin/confirm_server_resize/returns_the_correct_value_for_body_.yml +876 -0
  53. data/test/cassettes/openstack/compute/v2/admin/confirm_server_resize/returns_the_correct_value_for_headers_.yml +876 -0
  54. data/test/cassettes/openstack/compute/v2/admin/confirm_server_resize/returns_the_correct_value_for_http_method_.yml +876 -0
  55. data/test/cassettes/openstack/compute/v2/admin/confirm_server_resize/returns_the_correct_value_for_url_.yml +876 -0
  56. data/test/cassettes/openstack/compute/v2/admin/get_host_details/leads_to_a_valid_response_when_invalid_params_are_provided.yml +96 -0
  57. data/test/cassettes/openstack/compute/v2/admin/get_host_details/leads_to_a_valid_response_when_valid_params_are_provided.yml +160 -0
  58. data/test/cassettes/openstack/compute/v2/admin/get_host_details/returns_the_correct_value_for_body_.yml +62 -0
  59. data/test/cassettes/openstack/compute/v2/admin/get_host_details/returns_the_correct_value_for_headers_.yml +62 -0
  60. data/test/cassettes/openstack/compute/v2/admin/get_host_details/returns_the_correct_value_for_http_method_.yml +62 -0
  61. data/test/cassettes/openstack/compute/v2/admin/get_host_details/returns_the_correct_value_for_url_.yml +101 -0
  62. data/test/cassettes/openstack/compute/v2/admin/list_hosts/leads_to_a_valid_response_when_invalid_zone_parameter_is_provided.yml +95 -0
  63. data/test/cassettes/openstack/compute/v2/admin/list_hosts/leads_to_a_valid_response_when_no_parameters_are_provided.yml +101 -0
  64. data/test/cassettes/openstack/compute/v2/admin/list_hosts/leads_to_a_valid_response_when_valid_zone_parameter_is_provided.yml +96 -0
  65. data/test/cassettes/openstack/compute/v2/admin/list_hosts/returns_the_correct_value_for_body_.yml +62 -0
  66. data/test/cassettes/openstack/compute/v2/admin/list_hosts/returns_the_correct_value_for_headers_.yml +62 -0
  67. data/test/cassettes/openstack/compute/v2/admin/list_hosts/returns_the_correct_value_for_http_method_.yml +62 -0
  68. data/test/cassettes/openstack/compute/v2/admin/list_hosts/returns_the_correct_value_for_url_.yml +62 -0
  69. data/test/cassettes/openstack/compute/v2/admin/resize_server/leads_to_a_valid_response_when_parameters_are_provided.yml +949 -0
  70. data/test/cassettes/openstack/compute/v2/admin/resize_server/leads_to_a_valid_response_when_the_flavorRef_parameter_is_invalid.yml +910 -0
  71. data/test/cassettes/openstack/compute/v2/admin/resize_server/leads_to_a_valid_response_when_the_id_parameter_is_invalid.yml +138 -0
  72. data/test/cassettes/openstack/compute/v2/admin/resize_server/returns_the_correct_value_for_body_.yml +902 -0
  73. data/test/cassettes/openstack/compute/v2/admin/resize_server/returns_the_correct_value_for_headers_.yml +902 -0
  74. data/test/cassettes/openstack/compute/v2/admin/resize_server/returns_the_correct_value_for_http_method_.yml +918 -0
  75. data/test/cassettes/openstack/compute/v2/admin/resize_server/returns_the_correct_value_for_url_.yml +902 -0
  76. data/test/cassettes/openstack/compute/v2/admin/revert_server_resize/leads_to_a_valid_response_when_parameters_are_provided.yml +326 -0
  77. data/test/cassettes/openstack/compute/v2/admin/revert_server_resize/leads_to_a_valid_response_when_the_id_parameter_is_invalid.yml +96 -0
  78. data/test/cassettes/openstack/compute/v2/admin/revert_server_resize/returns_the_correct_value_for_body_.yml +295 -0
  79. data/test/cassettes/openstack/compute/v2/admin/revert_server_resize/returns_the_correct_value_for_headers_.yml +295 -0
  80. data/test/cassettes/openstack/compute/v2/admin/revert_server_resize/returns_the_correct_value_for_http_method_.yml +295 -0
  81. data/test/cassettes/openstack/compute/v2/admin/revert_server_resize/returns_the_correct_value_for_url_.yml +295 -0
  82. data/test/cassettes/openstack/compute/v2/public/delete_image/leads_to_a_valid_response_when_invalid_params_are_provided.yml +96 -0
  83. data/test/cassettes/openstack/compute/v2/public/delete_image/leads_to_a_valid_response_when_valid_params_are_provided.yml +168 -0
  84. data/test/cassettes/openstack/compute/v2/public/delete_image/returns_the_correct_value_for_body_.yml +63 -0
  85. data/test/cassettes/openstack/compute/v2/public/delete_image/returns_the_correct_value_for_headers_.yml +63 -0
  86. data/test/cassettes/openstack/compute/v2/public/delete_image/returns_the_correct_value_for_http_method_.yml +63 -0
  87. data/test/cassettes/openstack/compute/v2/public/delete_image/returns_the_correct_value_for_url_.yml +63 -0
  88. data/test/cassettes/openstack/compute/v2/public/get_image_details/leads_to_a_valid_response_when_invalid_params_are_provided.yml +96 -0
  89. data/test/cassettes/openstack/compute/v2/public/get_image_details/leads_to_a_valid_response_when_valid_params_are_provided.yml +187 -0
  90. data/test/cassettes/openstack/compute/v2/public/get_image_details/returns_the_correct_value_for_body_.yml +63 -0
  91. data/test/cassettes/openstack/compute/v2/public/get_image_details/returns_the_correct_value_for_headers_.yml +63 -0
  92. data/test/cassettes/openstack/compute/v2/public/get_image_details/returns_the_correct_value_for_http_method_.yml +63 -0
  93. data/test/cassettes/openstack/compute/v2/public/get_image_details/returns_the_correct_value_for_url_.yml +63 -0
  94. data/test/cassettes/openstack/compute/v2/public/list_servers/leads_to_a_valid_response_when_the_all_tenants_parameter_is_provided.yml +274 -0
  95. data/test/cassettes/openstack/identity/v2/admin/add_role_to_user_on_tenant/leads_to_a_valid_response_when_invalid_role_id_is_provided.yml +98 -0
  96. data/test/cassettes/openstack/identity/v2/admin/add_role_to_user_on_tenant/leads_to_a_valid_response_when_invalid_tenant_id_is_provided.yml +98 -0
  97. data/test/cassettes/openstack/identity/v2/admin/add_role_to_user_on_tenant/leads_to_a_valid_response_when_invalid_user_id_is_provided.yml +98 -0
  98. data/test/cassettes/openstack/identity/v2/admin/add_role_to_user_on_tenant/leads_to_a_valid_response_when_valid_ids_are_provided.yml +97 -0
  99. data/test/cassettes/openstack/identity/v2/admin/add_role_to_user_on_tenant/returns_the_correct_value_for_body_.yml +64 -0
  100. data/test/cassettes/openstack/identity/v2/admin/add_role_to_user_on_tenant/returns_the_correct_value_for_headers_.yml +64 -0
  101. data/test/cassettes/openstack/identity/v2/admin/add_role_to_user_on_tenant/returns_the_correct_value_for_http_method_.yml +64 -0
  102. data/test/cassettes/openstack/identity/v2/admin/add_role_to_user_on_tenant/returns_the_correct_value_for_url_.yml +64 -0
  103. data/test/cassettes/openstack/identity/v2/admin/create_user/leads_to_a_valid_response_when_invalid_param_is_provided.yml +98 -0
  104. data/test/cassettes/openstack/identity/v2/admin/create_user/leads_to_a_valid_response_when_params_are_valid.yml +136 -0
  105. data/test/cassettes/openstack/identity/v2/admin/create_user/returns_the_correct_value_for_body_.yml +64 -0
  106. data/test/cassettes/openstack/identity/v2/admin/create_user/returns_the_correct_value_for_headers_.yml +64 -0
  107. data/test/cassettes/openstack/identity/v2/admin/create_user/returns_the_correct_value_for_http_method_.yml +64 -0
  108. data/test/cassettes/openstack/identity/v2/admin/create_user/returns_the_correct_value_for_url_.yml +64 -0
  109. data/test/cassettes/openstack/identity/v2/admin/delete_role_from_user_on_tenant/leads_to_a_valid_response_when_invalid_role_id_is_provided.yml +98 -0
  110. data/test/cassettes/openstack/identity/v2/admin/delete_role_from_user_on_tenant/leads_to_a_valid_response_when_invalid_tenant_id_is_provided.yml +98 -0
  111. data/test/cassettes/openstack/identity/v2/admin/delete_role_from_user_on_tenant/leads_to_a_valid_response_when_invalid_user_id_is_provided.yml +98 -0
  112. data/test/cassettes/openstack/identity/v2/admin/delete_role_from_user_on_tenant/leads_to_a_valid_response_when_valid_ids_are_provided.yml +95 -0
  113. data/test/cassettes/openstack/identity/v2/admin/delete_role_from_user_on_tenant/returns_the_correct_value_for_headers_.yml +64 -0
  114. data/test/cassettes/openstack/identity/v2/admin/delete_role_from_user_on_tenant/returns_the_correct_value_for_http_method_.yml +64 -0
  115. data/test/cassettes/openstack/identity/v2/admin/delete_role_from_user_on_tenant/returns_the_correct_value_for_url_.yml +64 -0
  116. data/test/cassettes/openstack/identity/v2/admin/delete_tenant/leads_to_a_valid_response_when_invalid_params_are_provided.yml +98 -0
  117. data/test/cassettes/openstack/identity/v2/admin/delete_tenant/leads_to_a_valid_response_when_valid_params_are_provided.yml +95 -0
  118. data/test/cassettes/openstack/identity/v2/admin/delete_tenant/returns_the_correct_value_for_body_.yml +64 -0
  119. data/test/cassettes/openstack/identity/v2/admin/delete_tenant/returns_the_correct_value_for_headers_.yml +64 -0
  120. data/test/cassettes/openstack/identity/v2/admin/delete_tenant/returns_the_correct_value_for_http_method_.yml +64 -0
  121. data/test/cassettes/openstack/identity/v2/admin/delete_tenant/returns_the_correct_value_for_url_.yml +64 -0
  122. data/test/cassettes/openstack/identity/v2/admin/delete_user/leads_to_a_valid_response_when_invalid_params_are_provided.yml +98 -0
  123. data/test/cassettes/openstack/identity/v2/admin/delete_user/leads_to_a_valid_response_when_valid_params_are_provided.yml +95 -0
  124. data/test/cassettes/openstack/identity/v2/admin/delete_user/returns_the_correct_value_for_body_.yml +64 -0
  125. data/test/cassettes/openstack/identity/v2/admin/delete_user/returns_the_correct_value_for_headers_.yml +64 -0
  126. data/test/cassettes/openstack/identity/v2/admin/delete_user/returns_the_correct_value_for_http_method_.yml +64 -0
  127. data/test/cassettes/openstack/identity/v2/admin/delete_user/returns_the_correct_value_for_url_.yml +64 -0
  128. data/test/cassettes/openstack/identity/v2/admin/list_users/leads_to_a_valid_response_when_no_parameters_are_provided.yml +114 -0
  129. data/test/cassettes/openstack/identity/v2/admin/list_users/returns_the_correct_value_for_body_.yml +64 -0
  130. data/test/cassettes/openstack/identity/v2/admin/list_users/returns_the_correct_value_for_headers_.yml +64 -0
  131. data/test/cassettes/openstack/identity/v2/admin/list_users/returns_the_correct_value_for_http_method_.yml +64 -0
  132. data/test/cassettes/openstack/identity/v2/admin/list_users/returns_the_correct_value_for_url_.yml +64 -0
  133. data/test/cassettes/openstack/identity/v2/admin/update_tenant/leads_to_a_valid_response_when_invalid_tenant_id_is_provided.yml +98 -0
  134. data/test/cassettes/openstack/identity/v2/admin/update_tenant/leads_to_a_valid_response_when_valid_tenant_id_is_provided.yml +140 -0
  135. data/test/cassettes/openstack/identity/v2/admin/update_tenant/returns_the_correct_value_for_body_.yml +64 -0
  136. data/test/cassettes/openstack/identity/v2/admin/update_tenant/returns_the_correct_value_for_headers_.yml +64 -0
  137. data/test/cassettes/openstack/identity/v2/admin/update_tenant/returns_the_correct_value_for_http_method_.yml +64 -0
  138. data/test/cassettes/openstack/identity/v2/admin/update_tenant/returns_the_correct_value_for_url_.yml +64 -0
  139. data/test/cassettes/openstack/identity/v2/admin/update_user/leads_to_a_valid_response_when_invalid_user_id_is_provided.yml +98 -0
  140. data/test/cassettes/openstack/identity/v2/admin/update_user/leads_to_a_valid_response_when_valid_user_id_is_provided.yml +100 -0
  141. data/test/cassettes/openstack/identity/v2/admin/update_user/returns_the_correct_value_for_body_.yml +64 -0
  142. data/test/cassettes/openstack/identity/v2/admin/update_user/returns_the_correct_value_for_headers_.yml +64 -0
  143. data/test/cassettes/openstack/identity/v2/admin/update_user/returns_the_correct_value_for_http_method_.yml +64 -0
  144. data/test/cassettes/openstack/identity/v2/admin/update_user/returns_the_correct_value_for_url_.yml +64 -0
  145. data/test/cassettes/openstack/identity/v2/public/root/leads_to_a_valid_response_when_no_parameters_are_provided.yml +104 -0
  146. data/test/cassettes/openstack/identity/v2/public/root/returns_the_correct_value_for_body_.yml +65 -0
  147. data/test/cassettes/openstack/identity/v2/public/root/returns_the_correct_value_for_headers_.yml +65 -0
  148. data/test/cassettes/openstack/identity/v2/public/root/returns_the_correct_value_for_http_method_.yml +65 -0
  149. data/test/cassettes/openstack/identity/v2/public/root/returns_the_correct_value_for_url_.yml +65 -0
  150. data/test/cassettes/openstack/image/v1/public/root/leads_to_a_valid_response_when_no_parameters_are_provided.yml +105 -0
  151. data/test/cassettes/openstack/image/v1/public/root/returns_the_correct_value_for_body_.yml +65 -0
  152. data/test/cassettes/openstack/image/v1/public/root/returns_the_correct_value_for_headers_.yml +65 -0
  153. data/test/cassettes/openstack/image/v1/public/root/returns_the_correct_value_for_http_method_.yml +65 -0
  154. data/test/cassettes/openstack/image/v1/public/root/returns_the_correct_value_for_url_.yml +65 -0
  155. data/test/cassettes/openstack/metering/v1/admin/projects/leads_to_a_valid_response_when_no_parameters_are_provided.yml +97 -0
  156. data/test/cassettes/openstack/metering/v1/admin/projects/returns_the_correct_value_for_body_.yml +65 -0
  157. data/test/cassettes/openstack/metering/v1/admin/projects/returns_the_correct_value_for_headers_.yml +65 -0
  158. data/test/cassettes/openstack/metering/v1/admin/projects/returns_the_correct_value_for_http_method_.yml +65 -0
  159. data/test/cassettes/openstack/metering/v1/admin/projects/returns_the_correct_value_for_url_.yml +65 -0
  160. data/test/cassettes/openstack/volume/v1/public/root/leads_to_a_valid_response_when_no_parameters_are_provided.yml +104 -0
  161. data/test/cassettes/openstack/volume/v1/public/root/returns_the_correct_value_for_body_.yml +65 -0
  162. data/test/cassettes/openstack/volume/v1/public/root/returns_the_correct_value_for_headers_.yml +65 -0
  163. data/test/cassettes/openstack/volume/v1/public/root/returns_the_correct_value_for_http_method_.yml +65 -0
  164. data/test/cassettes/openstack/volume/v1/public/root/returns_the_correct_value_for_url_.yml +65 -0
  165. data/test/support/vcr_setup.rb +10 -5
  166. metadata +292 -2
@@ -0,0 +1,34 @@
1
+ module Aviator
2
+
3
+ define_request :root do
4
+
5
+ meta :provider, :openstack
6
+ meta :service, :identity
7
+ meta :api_version, :v2
8
+ meta :endpoint_type, :public
9
+
10
+ def headers
11
+ h = {}
12
+
13
+ unless self.anonymous?
14
+ h['X-Auth-Token'] = session_data[:access][:token][:id]
15
+ end
16
+
17
+ h
18
+ end
19
+
20
+
21
+ def http_method
22
+ :get
23
+ end
24
+
25
+
26
+ def url
27
+ service_spec = session_data[:access][:serviceCatalog].find{|s| s[:type] == service.to_s }
28
+ uri = URI(service_spec[:endpoints][0][:publicURL])
29
+ "#{ uri.scheme }://#{ uri.host }:#{ uri.port.to_s }/v2.0/"
30
+ end
31
+
32
+ end
33
+
34
+ end
@@ -0,0 +1,34 @@
1
+ module Aviator
2
+
3
+ define_request :root do
4
+
5
+ meta :provider, :openstack
6
+ meta :service, :image
7
+ meta :api_version, :v1
8
+ meta :endpoint_type, :public
9
+
10
+ def headers
11
+ h = {}
12
+
13
+ unless self.anonymous?
14
+ h['X-Auth-Token'] = session_data[:access][:token][:id]
15
+ end
16
+
17
+ h
18
+ end
19
+
20
+
21
+ def http_method
22
+ :get
23
+ end
24
+
25
+
26
+ def url
27
+ service_spec = session_data[:access][:serviceCatalog].find{|s| s[:type] == service.to_s }
28
+ uri = URI(service_spec[:endpoints][0][:publicURL])
29
+ "#{ uri.scheme }://#{ uri.host }:#{ uri.port.to_s }/v1/"
30
+ end
31
+
32
+ end
33
+
34
+ end
@@ -0,0 +1,34 @@
1
+ module Aviator
2
+
3
+ define_request :list_projects do
4
+
5
+ meta :provider, :openstack
6
+ meta :service, :metering
7
+ meta :api_version, :v1
8
+ meta :endpoint_type, :admin
9
+
10
+ def headers
11
+ h = {}
12
+
13
+ unless self.anonymous?
14
+ h['X-Auth-Token'] = session_data[:access][:token][:id]
15
+ end
16
+
17
+ h
18
+ end
19
+
20
+
21
+ def http_method
22
+ :get
23
+ end
24
+
25
+
26
+ def url
27
+ service_spec = session_data[:access][:serviceCatalog].find{|s| s[:type] == service.to_s }
28
+ uri = URI(service_spec[:endpoints][0][:adminURL])
29
+ "#{ uri.scheme }://#{ uri.host }:#{ uri.port.to_s }/v1/projects"
30
+ end
31
+
32
+ end
33
+
34
+ end
@@ -0,0 +1,34 @@
1
+ module Aviator
2
+
3
+ define_request :root do
4
+
5
+ meta :provider, :openstack
6
+ meta :service, :volume
7
+ meta :api_version, :v1
8
+ meta :endpoint_type, :public
9
+
10
+ def headers
11
+ h = {}
12
+
13
+ unless self.anonymous?
14
+ h['X-Auth-Token'] = session_data[:access][:token][:id]
15
+ end
16
+
17
+ h
18
+ end
19
+
20
+
21
+ def http_method
22
+ :get
23
+ end
24
+
25
+
26
+ def url
27
+ service_spec = session_data[:access][:serviceCatalog].find{|s| s[:type] == service.to_s }
28
+ uri = URI(service_spec[:endpoints][0][:publicURL])
29
+ "#{ uri.scheme }://#{ uri.host }:#{ uri.port.to_s }/v1/"
30
+ end
31
+
32
+ end
33
+
34
+ end
@@ -1,3 +1,3 @@
1
1
  module Aviator
2
- VERSION = "0.0.4"
2
+ VERSION = "0.0.5"
3
3
  end
@@ -0,0 +1,61 @@
1
+ require 'test_helper'
2
+
3
+ class Aviator::Test
4
+
5
+ describe 'aviator/core/request_builder' do
6
+
7
+ describe '::define_request' do
8
+
9
+ it 'places the request class in the right namespace' do
10
+ provider = :dopenstack
11
+ service = :supermega
12
+ api_ver = :v999
13
+ ep_type = :uber
14
+ _name_ = :sample
15
+
16
+ Aviator.define_request _name_ do
17
+ meta :provider, provider
18
+ meta :service, service
19
+ meta :api_version, api_ver
20
+ meta :endpoint_type, ep_type
21
+ end
22
+
23
+ [provider, service, api_ver, ep_type, _name_].inject(Aviator) do |namespace, sym|
24
+ const_name = sym.to_s.camelize
25
+
26
+ namespace.const_defined?(const_name, false).must_equal true
27
+
28
+ namespace.const_get(const_name, false)
29
+ end
30
+ end
31
+
32
+
33
+ it 'does not get confused when a similar name is defined up in the namespace hierarchy' do
34
+ provider = :aws
35
+ service = :amazing
36
+ api_ver = :fixnum # This is on purpose and is critical to this test.
37
+ ep_type = :awesome
38
+ _name_ = :this_request
39
+
40
+ Aviator.define_request _name_ do
41
+ meta :provider, provider
42
+ meta :service, service
43
+ meta :api_version, api_ver
44
+ meta :endpoint_type, ep_type
45
+ end
46
+
47
+ [provider, service, api_ver, ep_type, _name_].inject(Aviator) do |namespace, sym|
48
+ const_name = sym.to_s.camelize
49
+
50
+ namespace.const_defined?(const_name, false).must_equal true,
51
+ "Expected #{ const_name } to be defined in #{ namespace }"
52
+
53
+ namespace.const_get(const_name, false)
54
+ end
55
+ end
56
+
57
+ end
58
+
59
+ end
60
+
61
+ end
@@ -0,0 +1,145 @@
1
+ require 'test_helper'
2
+
3
+ class Aviator::Test
4
+
5
+ describe 'aviator/openstack/compute/v2/admin/confirm_server_resize' do
6
+
7
+ def create_request(session_data = get_session_data)
8
+ klass.new(session_data) do |params|
9
+ params[:id] = server[:id]
10
+ end
11
+ end
12
+
13
+
14
+ def get_session_data
15
+ session.send :auth_info
16
+ end
17
+
18
+
19
+ def helper
20
+ Aviator::Test::RequestHelper
21
+ end
22
+
23
+
24
+ def klass
25
+ @klass ||= helper.load_request('openstack', 'compute', 'v2', 'admin', 'confirm_server_resize.rb')
26
+ end
27
+
28
+
29
+ def session
30
+ unless @session
31
+ @session = Aviator::Session.new(
32
+ config_file: Environment.path,
33
+ environment: 'openstack_admin'
34
+ )
35
+
36
+ @session.authenticate
37
+ end
38
+
39
+ @session
40
+ end
41
+
42
+
43
+
44
+ def server
45
+ unless @server
46
+ response = session.compute_service.request(:list_servers) do |params|
47
+ params[:details] = true
48
+ params[:all_tenants] = true
49
+ end
50
+
51
+ current_tenant = get_session_data[:access][:token][:tenant]
52
+
53
+ resized_servers = response.body[:servers].select do |server|
54
+ server[:status] == 'VERIFY_RESIZE' && server[:tenant_id] == current_tenant[:id]
55
+ end
56
+
57
+ raise "\n\nProject '#{ current_tenant[:name] }' should have at least 1 server with "\
58
+ "a status of VERIFY_RESIZE\n\n" if resized_servers.empty?
59
+
60
+ @server = resized_servers.first
61
+ end
62
+
63
+ @server
64
+ end
65
+
66
+
67
+ validate_attr :anonymous? do
68
+ klass.anonymous?.must_equal false
69
+ end
70
+
71
+
72
+ validate_attr :api_version do
73
+ klass.api_version.must_equal :v2
74
+ end
75
+
76
+
77
+ validate_attr :body do
78
+ request = create_request
79
+
80
+ klass.body?.must_equal true
81
+ request.body?.must_equal true
82
+ request.body.wont_be_nil
83
+ end
84
+
85
+
86
+ validate_attr :endpoint_type do
87
+ klass.endpoint_type.must_equal :admin
88
+ end
89
+
90
+
91
+ validate_attr :headers do
92
+ headers = { 'X-Auth-Token' => get_session_data[:access][:token][:id] }
93
+
94
+ request = create_request
95
+
96
+ request.headers.must_equal headers
97
+ end
98
+
99
+
100
+ validate_attr :http_method do
101
+ create_request.http_method.must_equal :post
102
+ end
103
+
104
+
105
+ validate_attr :required_params do
106
+ klass.required_params.must_equal [:id]
107
+ end
108
+
109
+
110
+ validate_attr :url do
111
+ service_spec = get_session_data[:access][:serviceCatalog].find{|s| s[:type] == 'compute' }
112
+ url = "#{ service_spec[:endpoints][0][:publicURL] }/servers/#{ server[:id] }/action"
113
+
114
+ request = create_request do |params|
115
+ params[:id] = server[:id]
116
+ end
117
+
118
+ request.url.must_equal url
119
+ end
120
+
121
+
122
+ validate_response 'parameters are provided' do
123
+ response = session.compute_service.request :confirm_server_resize do |params|
124
+ params[:id] = server[:id]
125
+ end
126
+
127
+ response.status.must_equal 204
128
+ response.headers.wont_be_nil
129
+ end
130
+
131
+
132
+ validate_response 'the id parameter is invalid' do
133
+ response = session.compute_service.request :confirm_server_resize do |params|
134
+ params[:id] = 'invalidvalue'
135
+ end
136
+
137
+ response.status.must_equal 404
138
+ response.body.wont_be_nil
139
+ response.headers.wont_be_nil
140
+ end
141
+
142
+ end
143
+
144
+ end
145
+
@@ -0,0 +1,133 @@
1
+ require 'test_helper'
2
+
3
+ class Aviator::Test
4
+
5
+ describe 'aviator/openstack/compute/v2/admin/get_host_details' do
6
+
7
+ def create_request(session_data = get_session_data, &block)
8
+ block ||= lambda do |params|
9
+ params[:host_name] = 'doesnotmatterinthiscase'
10
+ end
11
+
12
+ klass.new(session_data, &block)
13
+ end
14
+
15
+
16
+ def get_session_data
17
+ session.send :auth_info
18
+ end
19
+
20
+
21
+ def helper
22
+ Aviator::Test::RequestHelper
23
+ end
24
+
25
+
26
+ def klass
27
+ @klass ||= helper.load_request('openstack', 'compute', 'v2', 'admin', 'get_host_details.rb')
28
+ end
29
+
30
+
31
+ def host_name
32
+ return @host_name unless @host_name.nil?
33
+
34
+ response = session.compute_service.request(:list_hosts)
35
+ @host_name = response.body[:hosts].last[:host_name]
36
+ end
37
+
38
+
39
+ def session
40
+ unless @session
41
+ @session = Aviator::Session.new(
42
+ config_file: Environment.path,
43
+ environment: 'openstack_admin'
44
+ )
45
+ @session.authenticate
46
+ end
47
+
48
+ @session
49
+ end
50
+
51
+
52
+ validate_attr :anonymous? do
53
+ klass.anonymous?.must_equal false
54
+ end
55
+
56
+
57
+ validate_attr :api_version do
58
+ klass.api_version.must_equal :v2
59
+ end
60
+
61
+
62
+ validate_attr :body do
63
+ klass.body?.must_equal false
64
+ create_request.body?.must_equal false
65
+ end
66
+
67
+
68
+ validate_attr :endpoint_type do
69
+ klass.endpoint_type.must_equal :admin
70
+ end
71
+
72
+
73
+ validate_attr :headers do
74
+ session_data = get_session_data
75
+
76
+ headers = { 'X-Auth-Token' => session_data[:access][:token][:id] }
77
+
78
+ create_request(session_data).headers.must_equal headers
79
+ end
80
+
81
+
82
+ validate_attr :http_method do
83
+ create_request.http_method.must_equal :get
84
+ end
85
+
86
+
87
+ validate_attr :required_params do
88
+ klass.required_params.must_equal [:host_name]
89
+ end
90
+
91
+
92
+ validate_attr :url do
93
+ session_data = get_session_data
94
+ service_spec = session_data[:access][:serviceCatalog].find { |s| s[:type] == 'compute' }
95
+ url = "#{ service_spec[:endpoints][0][:adminURL] }/os-hosts/#{ host_name }"
96
+
97
+ request = klass.new(session_data) do |p|
98
+ p[:host_name] = host_name
99
+ end
100
+
101
+ request.url.must_equal url
102
+ end
103
+
104
+
105
+ validate_response 'valid params are provided' do
106
+ service = session.compute_service
107
+
108
+ response = service.request :get_host_details do |params|
109
+ params[:host_name] = host_name
110
+ end
111
+
112
+ response.status.must_equal 200
113
+ response.body.wont_be_nil
114
+ response.headers.wont_be_nil
115
+ end
116
+
117
+
118
+ validate_response 'invalid params are provided' do
119
+ service = session.compute_service
120
+
121
+ response = service.request :get_host_details do |params|
122
+ params[:host_name] = 'nonexistenthost'
123
+ end
124
+
125
+ response.status.must_equal 404
126
+ response.body.wont_be_nil
127
+ response.headers.wont_be_nil
128
+ end
129
+
130
+
131
+ end
132
+
133
+ end