aviator 0.0.3 → 0.0.4

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 (148) hide show
  1. checksums.yaml +15 -0
  2. data/.travis.yml +1 -0
  3. data/README.md +35 -8
  4. data/README.md.orig +217 -0
  5. data/aviator.gemspec +3 -3
  6. data/lib/aviator/openstack/compute/v2/public/change_admin_password.rb +54 -0
  7. data/lib/aviator/openstack/compute/v2/public/create_image.rb +56 -0
  8. data/lib/aviator/openstack/compute/v2/public/create_server.rb +64 -0
  9. data/lib/aviator/openstack/compute/v2/public/delete_server.rb +39 -0
  10. data/lib/aviator/openstack/compute/v2/public/get_server.rb +39 -0
  11. data/lib/aviator/openstack/compute/v2/public/list_addresses.rb +48 -0
  12. data/lib/aviator/openstack/compute/v2/public/list_flavors.rb +55 -0
  13. data/lib/aviator/openstack/compute/v2/public/reboot_server.rb +51 -0
  14. data/lib/aviator/openstack/compute/v2/public/rebuild_server.rb +63 -0
  15. data/lib/aviator/openstack/compute/v2/public/root.rb +34 -0
  16. data/lib/aviator/openstack/compute/v2/public/update_server.rb +55 -0
  17. data/lib/aviator/version.rb +1 -1
  18. data/test/aviator/core/service_test.rb +3 -15
  19. data/test/aviator/core/session_test.rb +3 -3
  20. data/test/aviator/openstack/compute/v2/public/change_admin_password_test.rb +141 -0
  21. data/test/aviator/openstack/compute/v2/public/create_image_test.rb +146 -0
  22. data/test/aviator/openstack/compute/v2/public/create_server_test.rb +177 -0
  23. data/test/aviator/openstack/compute/v2/public/delete_server_test.rb +131 -0
  24. data/test/aviator/openstack/compute/v2/public/get_server_test.rb +138 -0
  25. data/test/aviator/openstack/compute/v2/public/list_addresses_test.rb +161 -0
  26. data/test/aviator/openstack/compute/v2/public/list_flavors_test.rb +160 -0
  27. data/test/aviator/openstack/compute/v2/public/list_images_test.rb +1 -1
  28. data/test/aviator/openstack/compute/v2/public/reboot_server_test.rb +137 -0
  29. data/test/aviator/openstack/compute/v2/public/rebuild_server_test.rb +183 -0
  30. data/test/aviator/openstack/compute/v2/public/root_test.rb +106 -0
  31. data/test/aviator/openstack/compute/v2/public/update_server_test.rb +144 -0
  32. data/test/aviator/openstack/identity/v2/admin/create_tenant_test.rb +1 -1
  33. data/test/cassettes/core/service/i_default_session_data_/sets_the_service_s_default_session_data.yml +18 -17
  34. data/test/cassettes/core/service/i_request/accepts_an_endpoint_type_option_for_selecting_a_specific_request.yml +31 -30
  35. data/test/cassettes/core/service/i_request/can_find_the_correct_request_based_on_bootstrapped_session_data.yml +18 -17
  36. data/test/cassettes/core/service/i_request/can_find_the_correct_request_based_on_non-bootstrapped_session_data.yml +29 -27
  37. data/test/cassettes/core/service/i_request/can_find_the_correct_request_if_api_version_is_not_defined_but_can_be_inferred_from_host_uri.yml +18 -17
  38. data/test/cassettes/core/service/i_request/uses_the_default_session_data_if_session_data_is_not_provided.yml +29 -27
  39. data/test/cassettes/core/session/c_load/creates_a_new_instance_from_the_given_session_dump.yml +18 -17
  40. data/test/cassettes/core/session/c_load/uses_the_loaded_auth_info_for_its_services.yml +18 -17
  41. data/test/cassettes/core/session/c_new/directs_log_entries_to_the_given_log_file.yml +18 -17
  42. data/test/cassettes/core/session/i_authenticate/authenticates_against_the_auth_service_indicated_in_the_config_file.yml +18 -17
  43. data/test/cassettes/core/session/i_authenticate/authenticates_against_the_auth_service_using_the_credentials_in_the_given_block.yml +10 -10
  44. data/test/cassettes/core/session/i_authenticate/raises_an_AuthenticationError_when_authentication_fails.yml +3 -3
  45. data/test/cassettes/core/session/i_authenticate/updates_the_session_data_of_its_service_objects.yml +36 -34
  46. data/test/cassettes/core/session/i_dump/serializes_the_session_data_for_caching.yml +18 -17
  47. data/test/cassettes/core/session/i_load/returns_itself.yml +18 -17
  48. data/test/cassettes/core/session/i_load/updates_the_session_data_of_its_service_objects.yml +36 -34
  49. data/test/cassettes/core/session/i_validate/returns_false_if_session_is_no_longer_valid.yml +20 -19
  50. data/test/cassettes/core/session/i_validate/returns_true_if_session_is_still_valid.yml +22 -21
  51. data/test/cassettes/core/session/i_xxx_service/returns_an_instance_of_the_indicated_service.yml +18 -17
  52. data/test/cassettes/openstack/compute/v2/public/change_admin_password/leads_to_a_valid_response_when_invalid_server_id_is_provided.yml +97 -0
  53. data/test/cassettes/openstack/compute/v2/public/change_admin_password/leads_to_a_valid_response_when_valid_params_are_provided.yml +132 -0
  54. data/test/cassettes/openstack/compute/v2/public/change_admin_password/returns_the_correct_value_for_body_.yml +63 -0
  55. data/test/cassettes/openstack/compute/v2/public/change_admin_password/returns_the_correct_value_for_headers_.yml +63 -0
  56. data/test/cassettes/openstack/compute/v2/public/change_admin_password/returns_the_correct_value_for_http_method_.yml +63 -0
  57. data/test/cassettes/openstack/compute/v2/public/change_admin_password/returns_the_correct_value_for_url_.yml +63 -0
  58. data/test/cassettes/openstack/compute/v2/public/create_image/leads_to_a_valid_response_when_invalid_server_id_is_provided.yml +97 -0
  59. data/test/cassettes/openstack/compute/v2/public/create_image/leads_to_a_valid_response_when_valid_params_are_provided.yml +132 -0
  60. data/test/cassettes/openstack/compute/v2/public/create_image/returns_the_correct_value_for_body_.yml +63 -0
  61. data/test/cassettes/openstack/compute/v2/public/create_image/returns_the_correct_value_for_headers_.yml +63 -0
  62. data/test/cassettes/openstack/compute/v2/public/create_image/returns_the_correct_value_for_http_method_.yml +63 -0
  63. data/test/cassettes/openstack/compute/v2/public/create_image/returns_the_correct_value_for_url_.yml +63 -0
  64. data/test/cassettes/openstack/compute/v2/public/create_server/leads_to_a_valid_response_when_parameters_are_provided.yml +182 -0
  65. data/test/cassettes/openstack/compute/v2/public/create_server/leads_to_a_valid_response_when_the_adminPass_parameter_is_provided.yml +182 -0
  66. data/test/cassettes/openstack/compute/v2/public/create_server/leads_to_a_valid_response_when_the_flavorRef_parameter_is_invalid.yml +135 -0
  67. data/test/cassettes/openstack/compute/v2/public/create_server/returns_the_correct_value_for_body_.yml +142 -0
  68. data/test/cassettes/openstack/compute/v2/public/create_server/returns_the_correct_value_for_headers_.yml +142 -0
  69. data/test/cassettes/openstack/compute/v2/public/create_server/returns_the_correct_value_for_http_method_.yml +142 -0
  70. data/test/cassettes/openstack/compute/v2/public/create_server/returns_the_correct_value_for_url_.yml +222 -0
  71. data/test/cassettes/openstack/compute/v2/public/delete_server/leads_to_a_valid_response_when_invalid_server_id_is_provided.yml +96 -0
  72. data/test/cassettes/openstack/compute/v2/public/delete_server/leads_to_a_valid_response_when_valid_server_id_is_provided.yml +131 -0
  73. data/test/cassettes/openstack/compute/v2/public/delete_server/returns_the_correct_value_for_body_.yml +62 -0
  74. data/test/cassettes/openstack/compute/v2/public/delete_server/returns_the_correct_value_for_headers_.yml +62 -0
  75. data/test/cassettes/openstack/compute/v2/public/delete_server/returns_the_correct_value_for_http_method_.yml +62 -0
  76. data/test/cassettes/openstack/compute/v2/public/delete_server/returns_the_correct_value_for_url_.yml +62 -0
  77. data/test/cassettes/openstack/compute/v2/public/get_server/leads_to_a_valid_response_when_a_valid_server_id_is_provided.yml +145 -0
  78. data/test/cassettes/openstack/compute/v2/public/get_server/leads_to_a_valid_response_when_an_invalid_server_id_is_provided.yml +96 -0
  79. data/test/cassettes/openstack/compute/v2/public/get_server/returns_the_correct_value_for_body_.yml +62 -0
  80. data/test/cassettes/openstack/compute/v2/public/get_server/returns_the_correct_value_for_headers_.yml +62 -0
  81. data/test/cassettes/openstack/compute/v2/public/get_server/returns_the_correct_value_for_http_method_.yml +62 -0
  82. data/test/cassettes/openstack/compute/v2/public/get_server/returns_the_correct_value_for_url_.yml +62 -0
  83. data/test/cassettes/openstack/compute/v2/public/list_addresses/leads_to_a_valid_response_when_a_networkID_parameter_is_provided.yml +167 -0
  84. data/test/cassettes/openstack/compute/v2/public/list_addresses/leads_to_a_valid_response_when_a_valid_server_id_is_provided.yml +132 -0
  85. data/test/cassettes/openstack/compute/v2/public/list_addresses/leads_to_a_valid_response_when_an_invalid_server_id_is_provided.yml +96 -0
  86. data/test/cassettes/openstack/compute/v2/public/list_addresses/returns_the_correct_value_for_body_.yml +63 -0
  87. data/test/cassettes/openstack/compute/v2/public/list_addresses/returns_the_correct_value_for_headers_.yml +63 -0
  88. data/test/cassettes/openstack/compute/v2/public/list_addresses/returns_the_correct_value_for_http_method_.yml +63 -0
  89. data/test/cassettes/openstack/compute/v2/public/list_addresses/returns_the_correct_value_for_url_.yml +63 -0
  90. data/test/cassettes/openstack/compute/v2/public/list_flavors/leads_to_a_valid_response_when_no_parameters_are_provided.yml +104 -0
  91. data/test/cassettes/openstack/compute/v2/public/list_flavors/leads_to_a_valid_response_when_the_details_filter_is_provided.yml +111 -0
  92. data/test/cassettes/openstack/compute/v2/public/list_flavors/leads_to_a_valid_response_when_the_minDisk_filter_is_provided.yml +146 -0
  93. data/test/cassettes/openstack/compute/v2/public/list_flavors/returns_the_correct_value_for_body_.yml +62 -0
  94. data/test/cassettes/openstack/compute/v2/public/list_flavors/returns_the_correct_value_for_headers_.yml +62 -0
  95. data/test/cassettes/openstack/compute/v2/public/list_flavors/returns_the_correct_value_for_http_method_.yml +62 -0
  96. data/test/cassettes/openstack/compute/v2/public/list_flavors/returns_the_correct_value_for_url_.yml +62 -0
  97. data/test/cassettes/openstack/compute/v2/public/list_images/leads_to_a_valid_response_when_no_parameters_are_provided.yml +32 -31
  98. data/test/cassettes/openstack/compute/v2/public/list_images/leads_to_a_valid_response_when_parameters_are_invalid.yml +23 -22
  99. data/test/cassettes/openstack/compute/v2/public/list_images/leads_to_a_valid_response_when_parameters_are_valid.yml +32 -31
  100. data/test/cassettes/openstack/compute/v2/public/list_images/returns_the_correct_value_for_body_.yml +18 -17
  101. data/test/cassettes/openstack/compute/v2/public/list_images/returns_the_correct_value_for_headers_.yml +18 -17
  102. data/test/cassettes/openstack/compute/v2/public/list_images/returns_the_correct_value_for_http_method_.yml +18 -17
  103. data/test/cassettes/openstack/compute/v2/public/list_images/returns_the_correct_value_for_url_.yml +18 -17
  104. data/test/cassettes/openstack/compute/v2/public/list_servers/leads_to_a_valid_response_when_no_parameters_are_provided.yml +39 -38
  105. data/test/cassettes/openstack/compute/v2/public/list_servers/leads_to_a_valid_response_when_parameters_are_invalid.yml +37 -35
  106. data/test/cassettes/openstack/compute/v2/public/list_servers/leads_to_a_valid_response_when_parameters_are_valid.yml +42 -39
  107. data/test/cassettes/openstack/compute/v2/public/list_servers/returns_the_correct_value_for_body_.yml +32 -30
  108. data/test/cassettes/openstack/compute/v2/public/list_servers/returns_the_correct_value_for_headers_.yml +32 -30
  109. data/test/cassettes/openstack/compute/v2/public/list_servers/returns_the_correct_value_for_http_method_.yml +32 -30
  110. data/test/cassettes/openstack/compute/v2/public/list_servers/returns_the_correct_value_for_url_.yml +32 -30
  111. data/test/cassettes/openstack/compute/v2/public/reboot_server/leads_to_a_valid_response_when_invalid_server_id_is_provided.yml +97 -0
  112. data/test/cassettes/openstack/compute/v2/public/reboot_server/leads_to_a_valid_response_when_valid_params_are_provided.yml +130 -0
  113. data/test/cassettes/openstack/compute/v2/public/reboot_server/returns_the_correct_value_for_body_.yml +63 -0
  114. data/test/cassettes/openstack/compute/v2/public/reboot_server/returns_the_correct_value_for_headers_.yml +63 -0
  115. data/test/cassettes/openstack/compute/v2/public/reboot_server/returns_the_correct_value_for_http_method_.yml +63 -0
  116. data/test/cassettes/openstack/compute/v2/public/reboot_server/returns_the_correct_value_for_url_.yml +63 -0
  117. data/test/cassettes/openstack/compute/v2/public/rebuild_server/leads_to_a_valid_response_when_invalid_image_id_is_provided.yml +133 -0
  118. data/test/cassettes/openstack/compute/v2/public/rebuild_server/leads_to_a_valid_response_when_invalid_server_id_is_provided.yml +167 -0
  119. data/test/cassettes/openstack/compute/v2/public/rebuild_server/leads_to_a_valid_response_when_valid_params_are_provided.yml +216 -0
  120. data/test/cassettes/openstack/compute/v2/public/rebuild_server/returns_the_correct_value_for_body_.yml +63 -0
  121. data/test/cassettes/openstack/compute/v2/public/rebuild_server/returns_the_correct_value_for_headers_.yml +63 -0
  122. data/test/cassettes/openstack/compute/v2/public/rebuild_server/returns_the_correct_value_for_http_method_.yml +63 -0
  123. data/test/cassettes/openstack/compute/v2/public/rebuild_server/returns_the_correct_value_for_url_.yml +63 -0
  124. data/test/cassettes/openstack/compute/v2/public/root/leads_to_a_valid_response_when_no_parameters_are_provided.yml +101 -0
  125. data/test/cassettes/openstack/compute/v2/public/root/returns_the_correct_value_for_body_.yml +62 -0
  126. data/test/cassettes/openstack/compute/v2/public/root/returns_the_correct_value_for_headers_.yml +62 -0
  127. data/test/cassettes/openstack/compute/v2/public/root/returns_the_correct_value_for_http_method_.yml +62 -0
  128. data/test/cassettes/openstack/compute/v2/public/root/returns_the_correct_value_for_url_.yml +62 -0
  129. data/test/cassettes/openstack/compute/v2/public/update_server/leads_to_a_valid_response_when_invalid_server_id_is_provided.yml +96 -0
  130. data/test/cassettes/openstack/compute/v2/public/update_server/leads_to_a_valid_response_when_valid_server_id_is_provided.yml +142 -0
  131. data/test/cassettes/openstack/compute/v2/public/update_server/returns_the_correct_value_for_body_.yml +142 -0
  132. data/test/cassettes/openstack/compute/v2/public/update_server/returns_the_correct_value_for_headers_.yml +142 -0
  133. data/test/cassettes/openstack/compute/v2/public/update_server/returns_the_correct_value_for_http_method_.yml +142 -0
  134. data/test/cassettes/openstack/compute/v2/public/update_server/returns_the_correct_value_for_url_.yml +142 -0
  135. data/test/cassettes/openstack/identity/v2/admin/create_tenant/leads_to_a_valid_response_when_params_are_invalid.yml +21 -20
  136. data/test/cassettes/openstack/identity/v2/admin/create_tenant/leads_to_a_valid_response_when_params_are_valid.yml +25 -24
  137. data/test/cassettes/openstack/identity/v2/public/create_token/leads_to_a_valid_response_when_parameters_are_invalid.yml +3 -3
  138. data/test/cassettes/openstack/identity/v2/public/create_token/leads_to_a_valid_response_when_parameters_are_valid.yml +10 -10
  139. data/test/cassettes/openstack/identity/v2/public/create_token/leads_to_a_valid_response_when_provided_with_a_token.yml +28 -27
  140. data/test/environment.yml.example +16 -9
  141. data/test/environment.yml.travis-ci +19 -14
  142. data/test/support/vcr_setup.rb +35 -10
  143. data/test/test_helper.rb +3 -1
  144. metadata +180 -52
  145. data/test/cassettes/openstack/compute/v2/public/list_images/returns_the_correct_value_for_body.yml +0 -63
  146. data/test/cassettes/openstack/compute/v2/public/list_images/returns_the_correct_value_for_headers.yml +0 -63
  147. data/test/cassettes/openstack/compute/v2/public/list_images/returns_the_correct_value_for_url.yml +0 -63
  148. data/test/cassettes/openstack/identity/v2/admin/create_tenant/leads_to_a_valid_response_when_provided_with_invalid_params.yml +0 -97
@@ -0,0 +1,55 @@
1
+ module Aviator
2
+
3
+ define_request :list_flavors do
4
+
5
+ meta :provider, :openstack
6
+ meta :service, :compute
7
+ meta :api_version, :v2
8
+ meta :endpoint_type, :public
9
+
10
+ link 'documentation',
11
+ 'http://docs.openstack.org/api/openstack-compute/2/content/List_Flavors-d1e4188.html'
12
+
13
+ param :details, required: false
14
+ param :minDisk, required: false
15
+ param :minRam, required: false
16
+ param :marker, required: false
17
+ param :limit, required: false
18
+
19
+
20
+ def headers
21
+ h = {}
22
+
23
+ unless self.anonymous?
24
+ h['X-Auth-Token'] = session_data[:access][:token][:id]
25
+ end
26
+
27
+ h
28
+ end
29
+
30
+
31
+ def http_method
32
+ :get
33
+ end
34
+
35
+
36
+ def url
37
+ service_spec = session_data[:access][:serviceCatalog].find{|s| s[:type] == service.to_s }
38
+
39
+ str = "#{ service_spec[:endpoints][0][:publicURL] }/flavors"
40
+ str += "/detail" if params[:details]
41
+
42
+ filters = []
43
+
44
+ (optional_params + required_params - [:details]).each do |param_name|
45
+ filters << "#{ param_name }=#{ params[param_name] }" if params[param_name]
46
+ end
47
+
48
+ str += "?#{ filters.join('&') }" unless filters.empty?
49
+
50
+ str
51
+ end
52
+
53
+ end
54
+
55
+ end
@@ -0,0 +1,51 @@
1
+ module Aviator
2
+
3
+ define_request :reboot_server do
4
+
5
+ meta :provider, :openstack
6
+ meta :service, :compute
7
+ meta :api_version, :v2
8
+ meta :endpoint_type, :public
9
+
10
+ link 'documentation',
11
+ 'http://docs.openstack.org/api/openstack-compute/2/content/Reboot_Server-d1e3371.html'
12
+
13
+ param :id, required: true
14
+ param :type, required: false
15
+
16
+
17
+ def body
18
+ p = {
19
+ reboot: {
20
+ type: params[:type] || 'SOFT'
21
+ }
22
+ }
23
+
24
+ p
25
+ end
26
+
27
+
28
+ def headers
29
+ h = {}
30
+
31
+ unless self.anonymous?
32
+ h['X-Auth-Token'] = session_data[:access][:token][:id]
33
+ end
34
+
35
+ h
36
+ end
37
+
38
+
39
+ def http_method
40
+ :post
41
+ end
42
+
43
+
44
+ def url
45
+ service_spec = session_data[:access][:serviceCatalog].find{|s| s[:type] == service.to_s }
46
+ "#{ service_spec[:endpoints][0][:publicURL] }/servers/#{ params[:id] }/action"
47
+ end
48
+
49
+ end
50
+
51
+ end
@@ -0,0 +1,63 @@
1
+ module Aviator
2
+
3
+ define_request :rebuild_server do
4
+
5
+ meta :provider, :openstack
6
+ meta :service, :compute
7
+ meta :api_version, :v2
8
+ meta :endpoint_type, :public
9
+
10
+ link 'documentation',
11
+ 'http://docs.openstack.org/api/openstack-compute/2/content/Rebuild_Server-d1e3538.html'
12
+
13
+ param :accessIPv4, required: false
14
+ param :accessIPv6, required: false
15
+ param :adminPass, required: true
16
+ param :id, required: true
17
+ param :imageRef, required: true
18
+ param :metadata, required: false
19
+ param :name, required: true
20
+ param :personality, required: false
21
+
22
+
23
+ def body
24
+ p = {
25
+ rebuild: {
26
+ adminPass: params[:adminPass],
27
+ imageRef: params[:imageRef],
28
+ name: params[:name]
29
+ }
30
+ }
31
+
32
+ [:accessIPv4, :accessIPv6, :metadata, :personality].each do |key|
33
+ p[:rebuild][key] = params[key] if params[key]
34
+ end
35
+
36
+ p
37
+ end
38
+
39
+
40
+ def headers
41
+ h = {}
42
+
43
+ unless self.anonymous?
44
+ h['X-Auth-Token'] = session_data[:access][:token][:id]
45
+ end
46
+
47
+ h
48
+ end
49
+
50
+
51
+ def http_method
52
+ :post
53
+ end
54
+
55
+
56
+ def url
57
+ service_spec = session_data[:access][:serviceCatalog].find{|s| s[:type] == service.to_s }
58
+ "#{ service_spec[:endpoints][0][:publicURL] }/servers/#{ params[:id] }/action"
59
+ end
60
+
61
+ end
62
+
63
+ end
@@ -0,0 +1,34 @@
1
+ module Aviator
2
+
3
+ define_request :root do
4
+
5
+ meta :provider, :openstack
6
+ meta :service, :compute
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/"
30
+ end
31
+
32
+ end
33
+
34
+ end
@@ -0,0 +1,55 @@
1
+ module Aviator
2
+
3
+ define_request :update_server do
4
+
5
+ meta :provider, :openstack
6
+ meta :service, :compute
7
+ meta :api_version, :v2
8
+ meta :endpoint_type, :public
9
+
10
+ link 'documentation',
11
+ 'http://docs.openstack.org/api/openstack-compute/2/content/ServerUpdate.html'
12
+
13
+ param :accessIPv4, required: false
14
+ param :accessIPv6, required: false
15
+ param :id, required: true
16
+ param :name, required: false
17
+
18
+
19
+ def body
20
+ p = {
21
+ server: { }
22
+ }
23
+
24
+ [:name, :accessIPv4, :accessIPv6].each do |key|
25
+ p[:server][key] = params[key] if params[key]
26
+ end
27
+
28
+ p
29
+ end
30
+
31
+
32
+ def headers
33
+ h = {}
34
+
35
+ unless self.anonymous?
36
+ h['X-Auth-Token'] = session_data[:access][:token][:id]
37
+ end
38
+
39
+ h
40
+ end
41
+
42
+
43
+ def http_method
44
+ :put
45
+ end
46
+
47
+
48
+ def url
49
+ service_spec = session_data[:access][:serviceCatalog].find{|s| s[:type] == service.to_s }
50
+ "#{ service_spec[:endpoints][0][:publicURL] }/servers/#{ params[:id] }"
51
+ end
52
+
53
+ end
54
+
55
+ end
@@ -1,3 +1,3 @@
1
1
  module Aviator
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
@@ -77,11 +77,7 @@ class Aviator::Test
77
77
  it 'can find the correct request based on non-bootstrapped session data' do
78
78
  session_data = do_auth_request.body
79
79
 
80
- response = service.request :create_tenant, session_data: session_data do |params|
81
- params.name = 'Test Project'
82
- params.description = 'This is a test'
83
- params.enabled = true
84
- end
80
+ response = service.request :list_tenants, session_data: session_data
85
81
 
86
82
  response.status.must_equal 200
87
83
  end
@@ -91,11 +87,7 @@ class Aviator::Test
91
87
  default_session_data = do_auth_request.body
92
88
  s = service(default_session_data)
93
89
 
94
- response = s.request :create_tenant do |params|
95
- params.name = 'Test Project Too'
96
- params.description = 'This is a test'
97
- params.enabled = true
98
- end
90
+ response = s.request :list_tenants
99
91
 
100
92
  response.status.must_equal 200
101
93
  end
@@ -103,11 +95,7 @@ class Aviator::Test
103
95
 
104
96
  it 'raises a SessionDataNotProvidedError if there is no session data' do
105
97
  the_method = lambda do
106
- service.request :create_tenant do |params|
107
- params.name = 'Test Project Too'
108
- params.description = 'This is a test'
109
- params.enabled = true
110
- end
98
+ service.request :list_tenants
111
99
  end
112
100
 
113
101
  the_method.must_raise Aviator::Service::SessionDataNotProvidedError
@@ -17,7 +17,7 @@ class Aviator::Test
17
17
  def new_session
18
18
  Aviator::Session.new(
19
19
  config_file: config.path,
20
- environment: 'test',
20
+ environment: 'openstack_admin',
21
21
  log_file: log_file_path
22
22
  )
23
23
  end
@@ -36,7 +36,7 @@ class Aviator::Test
36
36
 
37
37
  it 'authenticates against the auth service using the credentials in the given block' do
38
38
  session = new_session
39
- credentials = config.test[:auth_credentials]
39
+ credentials = config.openstack_admin[:auth_credentials]
40
40
 
41
41
  session.authenticate do |c|
42
42
  c[:username] = credentials[:username]
@@ -49,7 +49,7 @@ class Aviator::Test
49
49
 
50
50
  it 'raises an AuthenticationError when authentication fails' do
51
51
  session = new_session
52
- credentials = config.test[:auth_credentials]
52
+ credentials = config.openstack_admin[:auth_credentials]
53
53
 
54
54
  the_method = lambda do
55
55
  session.authenticate do |c|
@@ -0,0 +1,141 @@
1
+ require 'test_helper'
2
+
3
+ class Aviator::Test
4
+
5
+ describe 'aviator/openstack/compute/v2/public/change_admin_password' do
6
+
7
+ def create_request(session_data = get_session_data, &block)
8
+ block ||= lambda do |params|
9
+ params[:id] = 0
10
+ params[:adminPass] = 'doesnotmatter'
11
+ end
12
+
13
+ klass.new(session_data, &block)
14
+ end
15
+
16
+
17
+ def get_session_data
18
+ session.send :auth_info
19
+ end
20
+
21
+
22
+ def helper
23
+ Aviator::Test::RequestHelper
24
+ end
25
+
26
+
27
+ def klass
28
+ @klass ||= helper.load_request('openstack', 'compute', 'v2', 'public', 'change_admin_password.rb')
29
+ end
30
+
31
+
32
+ def session
33
+ unless @session
34
+ @session = Aviator::Session.new(
35
+ config_file: Environment.path,
36
+ environment: 'openstack_member'
37
+ )
38
+ @session.authenticate
39
+ end
40
+
41
+ @session
42
+ end
43
+
44
+
45
+ validate_attr :anonymous? do
46
+ klass.anonymous?.must_equal false
47
+ end
48
+
49
+
50
+ validate_attr :api_version do
51
+ klass.api_version.must_equal :v2
52
+ end
53
+
54
+
55
+ validate_attr :body do
56
+ request = create_request
57
+
58
+ klass.body?.must_equal true
59
+ request.body?.must_equal true
60
+ request.body.wont_be_nil
61
+ end
62
+
63
+
64
+ validate_attr :endpoint_type do
65
+ klass.endpoint_type.must_equal :public
66
+ end
67
+
68
+
69
+ validate_attr :headers do
70
+ headers = { 'X-Auth-Token' => get_session_data[:access][:token][:id] }
71
+
72
+ request = create_request
73
+
74
+ request.headers.must_equal headers
75
+ end
76
+
77
+
78
+ validate_attr :http_method do
79
+ create_request.http_method.must_equal :post
80
+ end
81
+
82
+
83
+ validate_attr :optional_params do
84
+ klass.optional_params.must_equal []
85
+ end
86
+
87
+
88
+ validate_attr :required_params do
89
+ klass.required_params.must_equal [
90
+ :adminPass,
91
+ :id
92
+ ]
93
+ end
94
+
95
+
96
+ validate_attr :url do
97
+ service_spec = get_session_data[:access][:serviceCatalog].find{|s| s[:type] == 'compute' }
98
+ server_id = '105b09f0b6500d36168480ad84'
99
+ url = "#{ service_spec[:endpoints][0][:publicURL] }/servers/#{ server_id }/action"
100
+
101
+ request = create_request do |params|
102
+ params[:id] = server_id
103
+ params[:adminPass] = 'doesnotmatter'
104
+ end
105
+
106
+ request.url.must_equal url
107
+ end
108
+
109
+
110
+ validate_response 'valid params are provided' do
111
+ server = session.compute_service.request(:list_servers).body[:servers].first
112
+ server_id = server[:id]
113
+ password = 'new admin password'
114
+
115
+ response = session.compute_service.request :change_admin_password do |params|
116
+ params[:id] = server_id
117
+ params[:adminPass] = password
118
+ end
119
+
120
+ response.status.must_equal 202
121
+ response.headers.wont_be_nil
122
+ end
123
+
124
+
125
+ validate_response 'invalid server id is provided' do
126
+ server_id = 'abogusserveridthatdoesnotexist'
127
+
128
+ response = session.compute_service.request :change_admin_password do |params|
129
+ params[:id] = server_id
130
+ params[:adminPass] = 'it does not matter'
131
+ end
132
+
133
+ response.status.must_equal 404
134
+ response.body.wont_be_nil
135
+ response.headers.wont_be_nil
136
+ end
137
+
138
+
139
+ end
140
+
141
+ end
@@ -0,0 +1,146 @@
1
+ require 'test_helper'
2
+
3
+ class Aviator::Test
4
+
5
+ describe 'aviator/openstack/compute/v2/public/create_image' do
6
+
7
+ def create_request(session_data = get_session_data, &block)
8
+ block ||= lambda do |params|
9
+ params[:id] = 0
10
+ params[:name] = 'thisdoesnotmatter'
11
+ end
12
+
13
+ klass.new(session_data, &block)
14
+ end
15
+
16
+
17
+ def get_session_data
18
+ session.send :auth_info
19
+ end
20
+
21
+
22
+ def helper
23
+ Aviator::Test::RequestHelper
24
+ end
25
+
26
+
27
+ def klass
28
+ @klass ||= helper.load_request('openstack', 'compute', 'v2', 'public', 'create_image.rb')
29
+ end
30
+
31
+
32
+ def session
33
+ unless @session
34
+ @session = Aviator::Session.new(
35
+ config_file: Environment.path,
36
+ environment: 'openstack_member'
37
+ )
38
+ @session.authenticate
39
+ end
40
+
41
+ @session
42
+ end
43
+
44
+
45
+ validate_attr :anonymous? do
46
+ klass.anonymous?.must_equal false
47
+ end
48
+
49
+
50
+ validate_attr :api_version do
51
+ klass.api_version.must_equal :v2
52
+ end
53
+
54
+
55
+ validate_attr :body do
56
+ request = create_request
57
+
58
+ klass.body?.must_equal true
59
+ request.body?.must_equal true
60
+ request.body.wont_be_nil
61
+ end
62
+
63
+
64
+ validate_attr :endpoint_type do
65
+ klass.endpoint_type.must_equal :public
66
+ end
67
+
68
+
69
+ validate_attr :headers do
70
+ headers = { 'X-Auth-Token' => get_session_data[:access][:token][:id] }
71
+
72
+ request = create_request
73
+
74
+ request.headers.must_equal headers
75
+ end
76
+
77
+
78
+ validate_attr :http_method do
79
+ create_request.http_method.must_equal :post
80
+ end
81
+
82
+
83
+ validate_attr :optional_params do
84
+ klass.optional_params.must_equal [
85
+ :metadata
86
+ ]
87
+ end
88
+
89
+
90
+ validate_attr :required_params do
91
+ klass.required_params.must_equal [
92
+ :id,
93
+ :name
94
+ ]
95
+ end
96
+
97
+
98
+ validate_attr :url do
99
+ service_spec = get_session_data[:access][:serviceCatalog].find{|s| s[:type] == 'compute' }
100
+ server_id = '105b09f0b6500d36168480ad84'
101
+ url = "#{ service_spec[:endpoints][0][:publicURL] }/servers/#{ server_id }/action"
102
+
103
+ request = create_request do |params|
104
+ params[:id] = server_id
105
+ params[:name] = 'thisdoesnotmatterforthistest'
106
+ end
107
+
108
+ request.url.must_equal url
109
+ end
110
+
111
+
112
+ validate_response 'valid params are provided' do
113
+ server = session.compute_service.request(:list_servers).body[:servers].first
114
+ server_id = server[:id]
115
+
116
+
117
+ response = session.compute_service.request :create_image do |params|
118
+ params[:id] = server_id
119
+ params[:name] = 'setthenewnametothis'
120
+ end
121
+
122
+
123
+ response.status.must_equal 202
124
+ response.headers.wont_be_nil
125
+ end
126
+
127
+
128
+ validate_response 'invalid server id is provided' do
129
+ server_id = 'abogusserveridthatdoesnotexist'
130
+
131
+
132
+ response = session.compute_service.request :create_image do |params|
133
+ params[:id] = server_id
134
+ params[:name] = 'setthenewnametothis'
135
+ end
136
+
137
+
138
+ response.status.must_equal 404
139
+ response.body.wont_be_nil
140
+ response.headers.wont_be_nil
141
+ end
142
+
143
+
144
+ end
145
+
146
+ end