aviator 0.0.5 → 0.0.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/README.md +1 -204
- data/aviator.gemspec +3 -2
- data/lib/aviator/core/cli/describer.rb +99 -48
- data/lib/aviator/core/cli.rb +1 -0
- data/lib/aviator/core/request.rb +46 -9
- data/lib/aviator/core/request_builder.rb +82 -30
- data/lib/aviator/core/response.rb +15 -23
- data/lib/aviator/core/service.rb +43 -17
- data/lib/aviator/core.rb +1 -0
- data/lib/aviator/openstack/common/v2/admin/base.rb +9 -0
- data/lib/aviator/openstack/common/v2/public/base.rb +43 -0
- data/lib/aviator/openstack/compute/v2/admin/confirm_server_resize.rb +4 -14
- data/lib/aviator/openstack/compute/v2/admin/create_network.rb +56 -0
- data/lib/aviator/openstack/compute/v2/admin/get_host_details.rb +4 -15
- data/lib/aviator/openstack/compute/v2/admin/list_hosts.rb +5 -16
- data/lib/aviator/openstack/compute/v2/admin/lock_server.rb +34 -0
- data/lib/aviator/openstack/compute/v2/admin/migrate_server.rb +34 -0
- data/lib/aviator/openstack/compute/v2/admin/reset_server.rb +39 -0
- data/lib/aviator/openstack/compute/v2/admin/resize_server.rb +5 -15
- data/lib/aviator/openstack/compute/v2/admin/unlock_server.rb +34 -0
- data/lib/aviator/openstack/compute/v2/public/change_admin_password.rb +14 -24
- data/lib/aviator/openstack/compute/v2/public/create_image.rb +4 -14
- data/lib/aviator/openstack/compute/v2/public/create_server.rb +9 -19
- data/lib/aviator/openstack/compute/v2/public/delete_image.rb +4 -15
- data/lib/aviator/openstack/compute/v2/public/delete_server.rb +4 -14
- data/lib/aviator/openstack/compute/v2/public/get_flavor_details.rb +29 -0
- data/lib/aviator/openstack/compute/v2/public/get_image_details.rb +4 -15
- data/lib/aviator/openstack/compute/v2/public/get_network_details.rb +30 -0
- data/lib/aviator/openstack/compute/v2/public/get_server.rb +9 -20
- data/lib/aviator/openstack/compute/v2/public/list_addresses.rb +5 -17
- data/lib/aviator/openstack/compute/v2/public/list_flavors.rb +8 -28
- data/lib/aviator/openstack/compute/v2/public/list_images.rb +6 -26
- data/lib/aviator/openstack/compute/v2/public/list_networks.rb +27 -0
- data/lib/aviator/openstack/compute/v2/public/list_servers.rb +14 -25
- data/lib/aviator/openstack/compute/v2/public/pause_server.rb +34 -0
- data/lib/aviator/openstack/compute/v2/public/reboot_server.rb +4 -14
- data/lib/aviator/openstack/compute/v2/public/rebuild_server.rb +8 -18
- data/lib/aviator/openstack/compute/v2/public/resume_server.rb +34 -0
- data/lib/aviator/openstack/compute/v2/public/root.rb +4 -14
- data/lib/aviator/openstack/compute/v2/public/suspend_server.rb +34 -0
- data/lib/aviator/openstack/compute/v2/public/unpause_server.rb +34 -0
- data/lib/aviator/openstack/compute/v2/public/update_server.rb +6 -16
- data/lib/aviator/openstack/identity/v2/admin/add_role_to_user_on_tenant.rb +5 -18
- data/lib/aviator/openstack/identity/v2/admin/create_tenant.rb +4 -14
- data/lib/aviator/openstack/identity/v2/admin/create_user.rb +1 -1
- data/lib/aviator/openstack/identity/v2/admin/delete_role_from_user_on_tenant.rb +6 -18
- data/lib/aviator/openstack/identity/v2/admin/delete_tenant.rb +4 -15
- data/lib/aviator/openstack/identity/v2/admin/list_tenants.rb +5 -24
- data/lib/aviator/openstack/identity/v2/admin/update_tenant.rb +4 -14
- data/lib/aviator/openstack/identity/v2/admin/update_user.rb +1 -1
- data/lib/aviator/openstack/identity/v2/public/create_token.rb +6 -11
- data/lib/aviator/openstack/identity/v2/public/list_tenants.rb +5 -24
- data/lib/aviator/openstack/identity/v2/public/root.rb +5 -14
- data/lib/aviator/openstack/image/v1/public/root.rb +5 -14
- data/lib/aviator/openstack/metering/v1/admin/list_projects.rb +4 -11
- data/lib/aviator/openstack/volume/v1/public/create_volume.rb +47 -0
- data/lib/aviator/openstack/volume/v1/public/delete_volume.rb +25 -0
- data/lib/aviator/openstack/volume/v1/public/get_volume.rb +28 -0
- data/lib/aviator/openstack/volume/v1/public/list_volume_types.rb +29 -0
- data/lib/aviator/openstack/volume/v1/public/list_volumes.rb +37 -0
- data/lib/aviator/openstack/volume/v1/public/root.rb +6 -14
- data/lib/aviator/openstack/volume/v1/public/update_volume.rb +43 -0
- data/lib/aviator/version.rb +1 -1
- data/test/aviator/core/cli/describer_test.rb +236 -114
- data/test/aviator/core/request_builder_test.rb +133 -12
- data/test/aviator/core/request_test.rb +64 -0
- data/test/aviator/core/service_test.rb +18 -0
- data/test/aviator/openstack/common/v2/public/base_test.rb +109 -0
- data/test/aviator/openstack/compute/v2/admin/create_network_test.rb +163 -0
- data/test/aviator/openstack/compute/v2/admin/lock_server_test.rb +125 -0
- data/test/aviator/openstack/compute/v2/admin/migrate_server_test.rb +125 -0
- data/test/aviator/openstack/compute/v2/admin/reset_server_test.rb +141 -0
- data/test/aviator/openstack/compute/v2/admin/resize_server_test.rb +9 -0
- data/test/aviator/openstack/compute/v2/admin/unlock_server_test.rb +125 -0
- data/test/aviator/openstack/compute/v2/public/change_admin_password_test.rb +9 -0
- data/test/aviator/openstack/compute/v2/public/create_server_test.rb +14 -1
- data/test/aviator/openstack/compute/v2/public/get_flavor_details_test.rb +126 -0
- data/test/aviator/openstack/compute/v2/public/get_image_details_test.rb +1 -1
- data/test/aviator/openstack/compute/v2/public/get_network_details_test.rb +123 -0
- data/test/aviator/openstack/compute/v2/public/get_server_test.rb +35 -35
- data/test/aviator/openstack/compute/v2/public/list_addresses_test.rb +9 -0
- data/test/aviator/openstack/compute/v2/public/list_flavors_test.rb +50 -40
- data/test/aviator/openstack/compute/v2/public/list_images_test.rb +42 -33
- data/test/aviator/openstack/compute/v2/public/list_networks_test.rb +100 -0
- data/test/aviator/openstack/compute/v2/public/list_servers_test.rb +9 -1
- data/test/aviator/openstack/compute/v2/public/pause_server_test.rb +125 -0
- data/test/aviator/openstack/compute/v2/public/rebuild_server_test.rb +12 -0
- data/test/aviator/openstack/compute/v2/public/resume_server_test.rb +125 -0
- data/test/aviator/openstack/compute/v2/public/suspend_server_test.rb +125 -0
- data/test/aviator/openstack/compute/v2/public/unpause_server_test.rb +125 -0
- data/test/aviator/openstack/compute/v2/public/update_server_test.rb +37 -27
- data/test/aviator/openstack/identity/v2/admin/create_user_test.rb +9 -0
- data/test/aviator/openstack/identity/v2/admin/update_user_test.rb +9 -0
- data/test/aviator/openstack/identity/v2/public/create_token_test.rb +16 -5
- data/test/aviator/openstack/identity/v2/public/list_tenants_test.rb +131 -0
- data/test/aviator/openstack/volume/v1/public/create_volume_test.rb +126 -0
- data/test/aviator/openstack/volume/v1/public/delete_volume_test.rb +131 -0
- data/test/aviator/openstack/volume/v1/public/get_volume_test.rb +141 -0
- data/test/aviator/openstack/volume/v1/public/list_volume_types_test.rb +91 -0
- data/test/aviator/openstack/volume/v1/public/list_volumes_test.rb +154 -0
- data/test/aviator/openstack/volume/v1/public/update_volume_test.rb +130 -0
- data/test/cassettes/openstack/common/v2/public/base/returns_the_correct_value_for_headers_.yml +62 -0
- data/test/cassettes/openstack/compute/v2/admin/create_network/leads_to_a_valid_response_when_invalid_parameters_are_provided.yml +98 -0
- data/test/cassettes/openstack/compute/v2/admin/create_network/leads_to_a_valid_response_when_valid_parameters_are_provided.yml +103 -0
- data/test/cassettes/openstack/compute/v2/admin/create_network/returns_the_correct_value_for_headers_.yml +64 -0
- data/test/cassettes/openstack/compute/v2/admin/create_network/returns_the_correct_value_for_http_method_.yml +64 -0
- data/test/cassettes/openstack/compute/v2/admin/create_network/returns_the_correct_value_for_url_.yml +64 -0
- data/test/cassettes/openstack/compute/v2/admin/lock_server/leads_to_a_valid_response_when_invalid_server_id_is_provided.yml +98 -0
- data/test/cassettes/openstack/compute/v2/admin/lock_server/leads_to_a_valid_response_when_valid_params_are_provided.yml +131 -0
- data/test/cassettes/openstack/compute/v2/admin/lock_server/returns_the_correct_value_for_body_.yml +64 -0
- data/test/cassettes/openstack/compute/v2/admin/lock_server/returns_the_correct_value_for_headers_.yml +64 -0
- data/test/cassettes/openstack/compute/v2/admin/lock_server/returns_the_correct_value_for_http_method_.yml +64 -0
- data/test/cassettes/openstack/compute/v2/admin/lock_server/returns_the_correct_value_for_url_.yml +64 -0
- data/test/cassettes/openstack/compute/v2/admin/migrate_server/leads_to_a_valid_response_when_invalid_server_id_is_provided.yml +98 -0
- data/test/cassettes/openstack/compute/v2/admin/migrate_server/leads_to_a_valid_response_when_valid_params_are_provided.yml +131 -0
- data/test/cassettes/openstack/compute/v2/admin/migrate_server/returns_the_correct_value_for_body_.yml +64 -0
- data/test/cassettes/openstack/compute/v2/admin/migrate_server/returns_the_correct_value_for_headers_.yml +64 -0
- data/test/cassettes/openstack/compute/v2/admin/migrate_server/returns_the_correct_value_for_http_method_.yml +64 -0
- data/test/cassettes/openstack/compute/v2/admin/migrate_server/returns_the_correct_value_for_url_.yml +64 -0
- data/test/cassettes/openstack/compute/v2/admin/reset_server/leads_to_a_valid_response_when_invalid_server_id_is_provided.yml +98 -0
- data/test/cassettes/openstack/compute/v2/admin/reset_server/leads_to_a_valid_response_when_valid_params_are_provided.yml +131 -0
- data/test/cassettes/openstack/compute/v2/admin/reset_server/returns_the_correct_value_for_body_.yml +64 -0
- data/test/cassettes/openstack/compute/v2/admin/reset_server/returns_the_correct_value_for_headers_.yml +64 -0
- data/test/cassettes/openstack/compute/v2/admin/reset_server/returns_the_correct_value_for_http_method_.yml +64 -0
- data/test/cassettes/openstack/compute/v2/admin/reset_server/returns_the_correct_value_for_url_.yml +64 -0
- data/test/cassettes/openstack/compute/v2/admin/unlock_server/leads_to_a_valid_response_when_invalid_server_id_is_provided.yml +98 -0
- data/test/cassettes/openstack/compute/v2/admin/unlock_server/leads_to_a_valid_response_when_valid_params_are_provided.yml +131 -0
- data/test/cassettes/openstack/compute/v2/admin/unlock_server/returns_the_correct_value_for_body_.yml +64 -0
- data/test/cassettes/openstack/compute/v2/admin/unlock_server/returns_the_correct_value_for_headers_.yml +64 -0
- data/test/cassettes/openstack/compute/v2/admin/unlock_server/returns_the_correct_value_for_http_method_.yml +64 -0
- data/test/cassettes/openstack/compute/v2/admin/unlock_server/returns_the_correct_value_for_url_.yml +64 -0
- data/test/cassettes/openstack/compute/v2/public/get_flavor_details/leads_to_a_valid_response_when_invalid_parameters_are_provided.yml +96 -0
- data/test/cassettes/openstack/compute/v2/public/get_flavor_details/leads_to_a_valid_response_when_parameters_are_provided.yml +99 -0
- data/test/cassettes/openstack/compute/v2/public/get_flavor_details/returns_the_correct_value_for_body_.yml +62 -0
- data/test/cassettes/openstack/compute/v2/public/get_flavor_details/returns_the_correct_value_for_headers_.yml +62 -0
- data/test/cassettes/openstack/compute/v2/public/get_flavor_details/returns_the_correct_value_for_http_method_.yml +62 -0
- data/test/cassettes/openstack/compute/v2/public/get_flavor_details/returns_the_correct_value_for_url_.yml +62 -0
- data/test/cassettes/openstack/compute/v2/public/get_network_details/leads_to_a_valid_response_when_invalid_network_id_is_provided.yml +99 -0
- data/test/cassettes/openstack/compute/v2/public/get_network_details/leads_to_a_valid_response_when_valid_network_id_is_provided.yml +136 -0
- data/test/cassettes/openstack/compute/v2/public/get_network_details/returns_the_correct_value_for_body_.yml +65 -0
- data/test/cassettes/openstack/compute/v2/public/get_network_details/returns_the_correct_value_for_headers_.yml +65 -0
- data/test/cassettes/openstack/compute/v2/public/get_network_details/returns_the_correct_value_for_http_method_.yml +65 -0
- data/test/cassettes/openstack/compute/v2/public/get_network_details/returns_the_correct_value_for_url_.yml +65 -0
- data/test/cassettes/openstack/compute/v2/public/list_networks/leads_to_a_valid_response_when_no_parameters_are_provided.yml +101 -0
- data/test/cassettes/openstack/compute/v2/public/list_networks/returns_the_correct_value_for_body_.yml +65 -0
- data/test/cassettes/openstack/compute/v2/public/list_networks/returns_the_correct_value_for_headers_.yml +65 -0
- data/test/cassettes/openstack/compute/v2/public/list_networks/returns_the_correct_value_for_http_method_.yml +65 -0
- data/test/cassettes/openstack/compute/v2/public/list_networks/returns_the_correct_value_for_url_.yml +65 -0
- data/test/cassettes/openstack/compute/v2/public/pause_server/leads_to_a_valid_response_when_invalid_server_id_is_provided.yml +99 -0
- data/test/cassettes/openstack/compute/v2/public/pause_server/leads_to_a_valid_response_when_valid_params_are_provided.yml +132 -0
- data/test/cassettes/openstack/compute/v2/public/pause_server/returns_the_correct_value_for_body_.yml +65 -0
- data/test/cassettes/openstack/compute/v2/public/pause_server/returns_the_correct_value_for_headers_.yml +65 -0
- data/test/cassettes/openstack/compute/v2/public/pause_server/returns_the_correct_value_for_http_method_.yml +65 -0
- data/test/cassettes/openstack/compute/v2/public/pause_server/returns_the_correct_value_for_url_.yml +65 -0
- data/test/cassettes/openstack/compute/v2/public/resume_server/leads_to_a_valid_response_when_invalid_server_id_is_provided.yml +99 -0
- data/test/cassettes/openstack/compute/v2/public/resume_server/leads_to_a_valid_response_when_valid_params_are_provided.yml +132 -0
- data/test/cassettes/openstack/compute/v2/public/resume_server/returns_the_correct_value_for_body_.yml +65 -0
- data/test/cassettes/openstack/compute/v2/public/resume_server/returns_the_correct_value_for_headers_.yml +65 -0
- data/test/cassettes/openstack/compute/v2/public/resume_server/returns_the_correct_value_for_http_method_.yml +65 -0
- data/test/cassettes/openstack/compute/v2/public/resume_server/returns_the_correct_value_for_url_.yml +65 -0
- data/test/cassettes/openstack/compute/v2/public/suspend_server/leads_to_a_valid_response_when_invalid_server_id_is_provided.yml +99 -0
- data/test/cassettes/openstack/compute/v2/public/suspend_server/leads_to_a_valid_response_when_valid_params_are_provided.yml +132 -0
- data/test/cassettes/openstack/compute/v2/public/suspend_server/returns_the_correct_value_for_body_.yml +65 -0
- data/test/cassettes/openstack/compute/v2/public/suspend_server/returns_the_correct_value_for_headers_.yml +65 -0
- data/test/cassettes/openstack/compute/v2/public/suspend_server/returns_the_correct_value_for_http_method_.yml +65 -0
- data/test/cassettes/openstack/compute/v2/public/suspend_server/returns_the_correct_value_for_url_.yml +65 -0
- data/test/cassettes/openstack/compute/v2/public/unpause_server/leads_to_a_valid_response_when_invalid_server_id_is_provided.yml +99 -0
- data/test/cassettes/openstack/compute/v2/public/unpause_server/leads_to_a_valid_response_when_valid_params_are_provided.yml +132 -0
- data/test/cassettes/openstack/compute/v2/public/unpause_server/returns_the_correct_value_for_body_.yml +65 -0
- data/test/cassettes/openstack/compute/v2/public/unpause_server/returns_the_correct_value_for_headers_.yml +65 -0
- data/test/cassettes/openstack/compute/v2/public/unpause_server/returns_the_correct_value_for_http_method_.yml +65 -0
- data/test/cassettes/openstack/compute/v2/public/unpause_server/returns_the_correct_value_for_url_.yml +65 -0
- data/test/cassettes/openstack/identity/v2/public/list_tenants/leads_to_a_valid_response_when_no_parameters_are_provided.yml +143 -0
- data/test/cassettes/openstack/identity/v2/public/list_tenants/leads_to_a_valid_response_when_session_is_using_a_default_token.yml +74 -0
- data/test/cassettes/openstack/identity/v2/public/list_tenants/returns_the_correct_value_for_body_.yml +62 -0
- data/test/cassettes/openstack/identity/v2/public/list_tenants/returns_the_correct_value_for_headers_.yml +62 -0
- data/test/cassettes/openstack/identity/v2/public/list_tenants/returns_the_correct_value_for_http_method_.yml +62 -0
- data/test/cassettes/openstack/identity/v2/public/list_tenants/returns_the_correct_value_for_url_.yml +62 -0
- data/test/cassettes/openstack/volume/v1/public/create_volume/leads_to_a_valid_response_when_parameters_are_provided.yml +101 -0
- data/test/cassettes/openstack/volume/v1/public/create_volume/returns_the_correct_value_for_body_.yml +62 -0
- data/test/cassettes/openstack/volume/v1/public/create_volume/returns_the_correct_value_for_headers_.yml +62 -0
- data/test/cassettes/openstack/volume/v1/public/create_volume/returns_the_correct_value_for_http_method_.yml +62 -0
- data/test/cassettes/openstack/volume/v1/public/create_volume/returns_the_correct_value_for_url_.yml +62 -0
- data/test/cassettes/openstack/volume/v1/public/delete_volume/leads_to_a_valid_response_when_invalid_volume_id_is_provided.yml +96 -0
- data/test/cassettes/openstack/volume/v1/public/delete_volume/leads_to_a_valid_response_when_valid_volume_id_is_provided.yml +167 -0
- data/test/cassettes/openstack/volume/v1/public/delete_volume/returns_the_correct_value_for_body_.yml +62 -0
- data/test/cassettes/openstack/volume/v1/public/delete_volume/returns_the_correct_value_for_headers_.yml +62 -0
- data/test/cassettes/openstack/volume/v1/public/delete_volume/returns_the_correct_value_for_http_method_.yml +62 -0
- data/test/cassettes/openstack/volume/v1/public/delete_volume/returns_the_correct_value_for_url_.yml +62 -0
- data/test/cassettes/openstack/volume/v1/public/get_volume/leads_to_a_valid_response_when_a_valid_volume_id_is_provided.yml +213 -0
- data/test/cassettes/openstack/volume/v1/public/get_volume/leads_to_a_valid_response_when_an_invalid_volume_id_is_provided.yml +96 -0
- data/test/cassettes/openstack/volume/v1/public/get_volume/returns_the_correct_value_for_body_.yml +62 -0
- data/test/cassettes/openstack/volume/v1/public/get_volume/returns_the_correct_value_for_headers_.yml +62 -0
- data/test/cassettes/openstack/volume/v1/public/get_volume/returns_the_correct_value_for_http_method_.yml +62 -0
- data/test/cassettes/openstack/volume/v1/public/get_volume/returns_the_correct_value_for_url_.yml +62 -0
- data/test/cassettes/openstack/volume/v1/public/list_volume_types/leads_to_a_valid_response_when_no_parameters_are_provided.yml +95 -0
- data/test/cassettes/openstack/volume/v1/public/list_volume_types/returns_the_correct_value_for_body_.yml +62 -0
- data/test/cassettes/openstack/volume/v1/public/list_volume_types/returns_the_correct_value_for_headers_.yml +62 -0
- data/test/cassettes/openstack/volume/v1/public/list_volume_types/returns_the_correct_value_for_http_method_.yml +62 -0
- data/test/cassettes/openstack/volume/v1/public/list_volumes/leads_to_a_valid_response_when_no_parameters_are_provided.yml +178 -0
- data/test/cassettes/openstack/volume/v1/public/list_volumes/leads_to_a_valid_response_when_parameters_are_invalid.yml +95 -0
- data/test/cassettes/openstack/volume/v1/public/list_volumes/leads_to_a_valid_response_when_parameters_are_valid.yml +170 -0
- data/test/cassettes/openstack/volume/v1/public/list_volumes/returns_the_correct_value_for_body_.yml +62 -0
- data/test/cassettes/openstack/volume/v1/public/list_volumes/returns_the_correct_value_for_headers_.yml +62 -0
- data/test/cassettes/openstack/volume/v1/public/list_volumes/returns_the_correct_value_for_http_method_.yml +62 -0
- data/test/cassettes/openstack/volume/v1/public/root/leads_to_a_valid_response_when_no_parameters_are_provided.yml +36 -39
- data/test/cassettes/openstack/volume/v1/public/root/returns_the_correct_value_for_body_.yml +28 -31
- data/test/cassettes/openstack/volume/v1/public/root/returns_the_correct_value_for_headers_.yml +28 -31
- data/test/cassettes/openstack/volume/v1/public/root/returns_the_correct_value_for_http_method_.yml +28 -31
- data/test/cassettes/openstack/volume/v1/public/root/returns_the_correct_value_for_url_.yml +28 -31
- data/test/cassettes/openstack/volume/v1/public/update_volume/leads_to_a_valid_response_when_invalid_volume_id_is_provided.yml +96 -0
- data/test/cassettes/openstack/volume/v1/public/update_volume/leads_to_a_valid_response_when_valid_volume_id_is_provided.yml +179 -0
- data/test/cassettes/openstack/volume/v1/public/update_volume/returns_the_correct_value_for_body_.yml +62 -0
- data/test/cassettes/openstack/volume/v1/public/update_volume/returns_the_correct_value_for_headers_.yml +62 -0
- data/test/cassettes/openstack/volume/v1/public/update_volume/returns_the_correct_value_for_http_method_.yml +62 -0
- data/test/cassettes/openstack/volume/v1/public/update_volume/returns_the_correct_value_for_url_.yml +62 -0
- data/test/support/vcr_setup.rb +3 -3
- metadata +297 -4
- data/README.md.orig +0 -217
@@ -1,39 +1,31 @@
|
|
1
1
|
module Aviator
|
2
2
|
|
3
3
|
class Response
|
4
|
+
extend Forwardable
|
4
5
|
|
5
|
-
|
6
|
-
def body
|
7
|
-
@body ||= if response.body.length > 0
|
8
|
-
JSON.parse(response.body).with_indifferent_access
|
9
|
-
else
|
10
|
-
{}
|
11
|
-
end
|
12
|
-
|
13
|
-
@body.dup
|
14
|
-
end
|
6
|
+
def_delegators :@response, :headers, :status
|
15
7
|
|
8
|
+
attr_reader :request
|
16
9
|
|
17
|
-
def
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
10
|
+
def initialize(response, request)
|
11
|
+
@response = response
|
12
|
+
@request = request
|
13
|
+
end
|
14
|
+
|
15
|
+
|
16
|
+
def body
|
17
|
+
if raw_body.length > 0
|
18
|
+
JSON.parse(raw_body).with_indifferent_access
|
23
19
|
else
|
24
|
-
|
20
|
+
{}
|
25
21
|
end
|
26
22
|
end
|
27
23
|
|
28
24
|
|
29
25
|
private
|
30
26
|
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
def initialize(response, request)
|
35
|
-
@response = response
|
36
|
-
@request = request
|
27
|
+
def raw_body
|
28
|
+
@response.body
|
37
29
|
end
|
38
30
|
|
39
31
|
end
|
data/lib/aviator/core/service.rb
CHANGED
@@ -35,7 +35,24 @@ module Aviator
|
|
35
35
|
end
|
36
36
|
|
37
37
|
|
38
|
-
class
|
38
|
+
class MissingServiceEndpointError < StandardError
|
39
|
+
def initialize(service_name, request_name)
|
40
|
+
request_name = request_name.to_s.split('::').last.underscore
|
41
|
+
super "The session's service catalog does not have an entry for the #{ service_name } "\
|
42
|
+
"service. Therefore, I don't know to which base URL the request should be sent. "\
|
43
|
+
"This may be because you are using a default or unscoped token. If this is not your "\
|
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"\
|
47
|
+
" params[:example1] = 'example1'\n"\
|
48
|
+
" params[:example2] = 'example2'\n"\
|
49
|
+
"end\n\n"
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
|
54
|
+
|
55
|
+
class Logger < Faraday::Response::Logger
|
39
56
|
def initialize(app, logger=nil)
|
40
57
|
super(app)
|
41
58
|
@logger = logger || begin
|
@@ -50,7 +67,7 @@ module Aviator
|
|
50
67
|
|
51
68
|
attr_reader :service,
|
52
69
|
:provider
|
53
|
-
|
70
|
+
|
54
71
|
|
55
72
|
def initialize(opts={})
|
56
73
|
@provider = opts[:provider] || (raise ProviderNotDefinedError.new)
|
@@ -67,6 +84,10 @@ module Aviator
|
|
67
84
|
session_data = options[:session_data] || default_session_data
|
68
85
|
|
69
86
|
raise SessionDataNotProvidedError.new unless session_data
|
87
|
+
|
88
|
+
[:base_url].each do |k|
|
89
|
+
session_data[k] = options[k] if options[k]
|
90
|
+
end
|
70
91
|
|
71
92
|
request_class = find_request(request_name, session_data, options[:endpoint_type])
|
72
93
|
|
@@ -88,8 +109,8 @@ module Aviator
|
|
88
109
|
def request_classes
|
89
110
|
@request_classes
|
90
111
|
end
|
91
|
-
|
92
|
-
|
112
|
+
|
113
|
+
|
93
114
|
private
|
94
115
|
|
95
116
|
|
@@ -117,20 +138,20 @@ module Aviator
|
|
117
138
|
end
|
118
139
|
|
119
140
|
namespace = Aviator.const_get(provider.camelize)
|
120
|
-
.const_get(service.camelize)
|
141
|
+
.const_get(service.camelize)
|
142
|
+
|
143
|
+
version = infer_version(session_data, name).to_s.camelize
|
121
144
|
|
122
|
-
version = infer_version(session_data).to_s.camelize
|
123
|
-
|
124
145
|
return nil unless version && namespace.const_defined?(version)
|
125
146
|
|
126
|
-
namespace = namespace.const_get(version)
|
147
|
+
namespace = namespace.const_get(version, name)
|
127
148
|
|
128
149
|
endpoint_types.each do |endpoint_type|
|
129
150
|
name = name.to_s.camelize
|
130
|
-
|
151
|
+
|
131
152
|
next unless namespace.const_defined?(endpoint_type)
|
132
153
|
next unless namespace.const_get(endpoint_type).const_defined?(name)
|
133
|
-
|
154
|
+
|
134
155
|
return namespace.const_get(endpoint_type).const_get(name)
|
135
156
|
end
|
136
157
|
|
@@ -139,7 +160,7 @@ module Aviator
|
|
139
160
|
|
140
161
|
|
141
162
|
# Candidate for extraction to aviator/openstack
|
142
|
-
def infer_version(session_data)
|
163
|
+
def infer_version(session_data, request_name='sample_request')
|
143
164
|
if session_data.has_key?(:auth_service) && session_data[:auth_service][:api_version]
|
144
165
|
session_data[:auth_service][:api_version].to_sym
|
145
166
|
|
@@ -147,8 +168,13 @@ module Aviator
|
|
147
168
|
m = session_data[:auth_service][:host_uri].match(/(v\d+)\.?\d*/)
|
148
169
|
return m[1].to_sym unless m.nil?
|
149
170
|
|
171
|
+
elsif session_data.has_key? :base_url
|
172
|
+
m = session_data[:base_url].match(/(v\d+)\.?\d*/)
|
173
|
+
return m[1].to_sym unless m.nil?
|
174
|
+
|
150
175
|
elsif session_data.has_key? :access
|
151
176
|
service_spec = session_data[:access][:serviceCatalog].find{|s| s[:type] == service }
|
177
|
+
raise MissingServiceEndpointError.new(service.to_s, request_name) unless service_spec
|
152
178
|
version = service_spec[:endpoints][0][:publicURL].match(/(v\d+)\.?\d*/)
|
153
179
|
version ? version[1].to_sym : :v1
|
154
180
|
end
|
@@ -169,21 +195,21 @@ module Aviator
|
|
169
195
|
)
|
170
196
|
|
171
197
|
request_file_paths.each{ |path| require path }
|
172
|
-
|
198
|
+
|
173
199
|
constant_parts = request_file_paths
|
174
200
|
.map{|rf| rf.to_s.match(/#{provider}\/#{service}\/([\w\/]+)\.rb$/) }
|
175
201
|
.map{|rf| rf[1].split('/').map{|c| c.camelize }.join('::') }
|
176
|
-
|
177
|
-
@request_classes = constant_parts.map do |cp|
|
202
|
+
|
203
|
+
@request_classes = constant_parts.map do |cp|
|
178
204
|
"Aviator::#{provider.camelize}::#{service.camelize}::#{cp}".constantize
|
179
205
|
end
|
180
206
|
end
|
181
|
-
|
182
|
-
|
207
|
+
|
208
|
+
|
183
209
|
def log_file
|
184
210
|
@log_file
|
185
211
|
end
|
186
|
-
|
212
|
+
|
187
213
|
end
|
188
214
|
|
189
215
|
end
|
data/lib/aviator/core.rb
CHANGED
@@ -0,0 +1,43 @@
|
|
1
|
+
module Aviator
|
2
|
+
|
3
|
+
define_request :base do
|
4
|
+
|
5
|
+
meta :provider, :openstack
|
6
|
+
meta :service, :common
|
7
|
+
meta :api_version, :v2
|
8
|
+
meta :endpoint_type, :public
|
9
|
+
|
10
|
+
def headers
|
11
|
+
{}.tap do |h|
|
12
|
+
h['X-Auth-Token'] = session_data[:access][:token][:id] unless self.anonymous?
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
|
17
|
+
private
|
18
|
+
|
19
|
+
|
20
|
+
def base_url
|
21
|
+
if session_data[:base_url]
|
22
|
+
session_data[:base_url]
|
23
|
+
else
|
24
|
+
service_spec = session_data[:access][:serviceCatalog].find { |s| s[:type] == service.to_s }
|
25
|
+
raise Aviator::Service::MissingServiceEndpointError.new(service.to_s, self.class) unless service_spec
|
26
|
+
service_spec[:endpoints][0]["#{ endpoint_type }URL".to_sym]
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
|
31
|
+
def params_to_querystring(param_names)
|
32
|
+
filters = []
|
33
|
+
|
34
|
+
param_names.each do |param_name|
|
35
|
+
filters << "#{ param_name }=#{ params[param_name] }" if params[param_name]
|
36
|
+
end
|
37
|
+
|
38
|
+
filters.empty? ? "" : "?#{ filters.join('&') }"
|
39
|
+
end
|
40
|
+
|
41
|
+
end
|
42
|
+
|
43
|
+
end
|
@@ -1,11 +1,8 @@
|
|
1
1
|
module Aviator
|
2
2
|
|
3
|
-
define_request :confirm_server_resize do
|
3
|
+
define_request :confirm_server_resize, inherit: [:openstack, :common, :v2, :admin, :base] do
|
4
4
|
|
5
|
-
meta :
|
6
|
-
meta :service, :compute
|
7
|
-
meta :api_version, :v2
|
8
|
-
meta :endpoint_type, :admin
|
5
|
+
meta :service, :compute
|
9
6
|
|
10
7
|
link 'documentation',
|
11
8
|
'http://docs.openstack.org/api/openstack-compute/2/content/Confirm_Resized_Server-d1e3868.html'
|
@@ -21,13 +18,7 @@ module Aviator
|
|
21
18
|
|
22
19
|
|
23
20
|
def headers
|
24
|
-
|
25
|
-
|
26
|
-
unless self.anonymous?
|
27
|
-
h['X-Auth-Token'] = session_data[:access][:token][:id]
|
28
|
-
end
|
29
|
-
|
30
|
-
h
|
21
|
+
super
|
31
22
|
end
|
32
23
|
|
33
24
|
|
@@ -37,8 +28,7 @@ module Aviator
|
|
37
28
|
|
38
29
|
|
39
30
|
def url
|
40
|
-
|
41
|
-
"#{ service_spec[:endpoints][0][:adminURL] }/servers/#{ params[:id] }/action"
|
31
|
+
"#{ base_url }/servers/#{ params[:id] }/action"
|
42
32
|
end
|
43
33
|
|
44
34
|
end
|
@@ -0,0 +1,56 @@
|
|
1
|
+
module Aviator
|
2
|
+
|
3
|
+
define_request :create_network, inherit: [:openstack, :common, :v2, :admin, :base] do
|
4
|
+
|
5
|
+
meta :service, :compute
|
6
|
+
|
7
|
+
link 'documentation',
|
8
|
+
'http://api.openstack.org/api-ref-compute.html#ext-os-networks'
|
9
|
+
|
10
|
+
|
11
|
+
param :label, required: true
|
12
|
+
param :bridge, required: false
|
13
|
+
param :bridge_interface, required: false
|
14
|
+
param :cidr, required: false
|
15
|
+
param :cidr_v6, required: false
|
16
|
+
param :dns1, required: false
|
17
|
+
param :dns2, required: false
|
18
|
+
param :gateway, required: false
|
19
|
+
param :gateway_v6, required: false
|
20
|
+
param :multi_host, required: false
|
21
|
+
param :project_id, required: false
|
22
|
+
param :vlan, required: false
|
23
|
+
|
24
|
+
|
25
|
+
def body
|
26
|
+
p = {
|
27
|
+
network: {
|
28
|
+
label: params[:label]
|
29
|
+
}
|
30
|
+
}
|
31
|
+
|
32
|
+
optional_params.each do |key|
|
33
|
+
p[:network][key] = params[key] if params[key]
|
34
|
+
end
|
35
|
+
|
36
|
+
p
|
37
|
+
end
|
38
|
+
|
39
|
+
|
40
|
+
def headers
|
41
|
+
super
|
42
|
+
end
|
43
|
+
|
44
|
+
|
45
|
+
def http_method
|
46
|
+
:post
|
47
|
+
end
|
48
|
+
|
49
|
+
|
50
|
+
def url
|
51
|
+
"#{ base_url }/os-networks"
|
52
|
+
end
|
53
|
+
|
54
|
+
end
|
55
|
+
|
56
|
+
end
|
@@ -1,11 +1,8 @@
|
|
1
1
|
module Aviator
|
2
2
|
|
3
|
-
define_request :get_host_details do
|
3
|
+
define_request :get_host_details, inherit: [:openstack, :common, :v2, :admin, :base] do
|
4
4
|
|
5
|
-
meta :
|
6
|
-
meta :service, :compute
|
7
|
-
meta :api_version, :v2
|
8
|
-
meta :endpoint_type, :admin
|
5
|
+
meta :service, :compute
|
9
6
|
|
10
7
|
link 'documentation',
|
11
8
|
'http://api.openstack.org/api-ref.html#ext-os-hosts'
|
@@ -14,13 +11,7 @@ module Aviator
|
|
14
11
|
|
15
12
|
|
16
13
|
def headers
|
17
|
-
|
18
|
-
|
19
|
-
unless self.anonymous?
|
20
|
-
h['X-Auth-Token'] = session_data[:access][:token][:id]
|
21
|
-
end
|
22
|
-
|
23
|
-
h
|
14
|
+
super
|
24
15
|
end
|
25
16
|
|
26
17
|
|
@@ -30,9 +21,7 @@ module Aviator
|
|
30
21
|
|
31
22
|
|
32
23
|
def url
|
33
|
-
|
34
|
-
|
35
|
-
"#{ service_spec[:endpoints][0][:adminURL] }/os-hosts/#{ params[:host_name] }"
|
24
|
+
"#{ base_url }/os-hosts/#{ params[:host_name] }"
|
36
25
|
end
|
37
26
|
|
38
27
|
end
|
@@ -1,14 +1,11 @@
|
|
1
1
|
module Aviator
|
2
2
|
|
3
|
-
define_request :list_hosts do
|
3
|
+
define_request :list_hosts, inherit: [:openstack, :common, :v2, :admin, :base] do
|
4
4
|
|
5
|
-
meta :
|
6
|
-
meta :service, :compute
|
7
|
-
meta :api_version, :v2
|
8
|
-
meta :endpoint_type, :admin
|
5
|
+
meta :service, :compute
|
9
6
|
|
10
7
|
link 'documentation',
|
11
|
-
|
8
|
+
'http://api.openstack.org/api-ref.html#ext-os-hosts'
|
12
9
|
|
13
10
|
link 'documentation bug',
|
14
11
|
'https://bugs.launchpad.net/nova/+bug/1224763'
|
@@ -18,13 +15,7 @@ module Aviator
|
|
18
15
|
|
19
16
|
|
20
17
|
def headers
|
21
|
-
|
22
|
-
|
23
|
-
unless self.anonymous?
|
24
|
-
h['X-Auth-Token'] = session_data[:access][:token][:id]
|
25
|
-
end
|
26
|
-
|
27
|
-
h
|
18
|
+
super
|
28
19
|
end
|
29
20
|
|
30
21
|
|
@@ -34,9 +25,7 @@ module Aviator
|
|
34
25
|
|
35
26
|
|
36
27
|
def url
|
37
|
-
|
38
|
-
|
39
|
-
url = "#{ service_spec[:endpoints][0][:adminURL] }/os-hosts"
|
28
|
+
url = "#{ base_url }/os-hosts"
|
40
29
|
|
41
30
|
filters = []
|
42
31
|
|
@@ -0,0 +1,34 @@
|
|
1
|
+
module Aviator
|
2
|
+
|
3
|
+
define_request :lock_server, inherit: [:openstack, :common, :v2, :admin, :base] do
|
4
|
+
|
5
|
+
meta :service, :compute
|
6
|
+
|
7
|
+
link 'documentation',
|
8
|
+
'http://docs.openstack.org/api/openstack-compute/2/content/POST_lock_v2__tenant_id__servers__server_id__action_ext-os-admin-actions.html'
|
9
|
+
|
10
|
+
param :id, required: true
|
11
|
+
|
12
|
+
|
13
|
+
def body
|
14
|
+
{ lock: nil }
|
15
|
+
end
|
16
|
+
|
17
|
+
|
18
|
+
def headers
|
19
|
+
super
|
20
|
+
end
|
21
|
+
|
22
|
+
|
23
|
+
def http_method
|
24
|
+
:post
|
25
|
+
end
|
26
|
+
|
27
|
+
|
28
|
+
def url
|
29
|
+
"#{ base_url }/servers/#{ params[:id] }/action"
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
module Aviator
|
2
|
+
|
3
|
+
define_request :migrate_server, inherit: [:openstack, :common, :v2, :admin, :base] do
|
4
|
+
|
5
|
+
meta :service, :compute
|
6
|
+
|
7
|
+
link 'documentation',
|
8
|
+
'http://docs.openstack.org/api/openstack-compute/2/content/POST_migrate_v2__tenant_id__servers__server_id__action_ext-os-admin-actions.html'
|
9
|
+
|
10
|
+
param :id, required: true
|
11
|
+
|
12
|
+
|
13
|
+
def body
|
14
|
+
{ migrate: nil }
|
15
|
+
end
|
16
|
+
|
17
|
+
|
18
|
+
def headers
|
19
|
+
super
|
20
|
+
end
|
21
|
+
|
22
|
+
|
23
|
+
def http_method
|
24
|
+
:post
|
25
|
+
end
|
26
|
+
|
27
|
+
|
28
|
+
def url
|
29
|
+
"#{ base_url }/servers/#{ params[:id] }/action"
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
module Aviator
|
2
|
+
|
3
|
+
define_request :reset_server, inherit: [:openstack, :common, :v2, :admin, :base] do
|
4
|
+
|
5
|
+
meta :service, :compute
|
6
|
+
|
7
|
+
link 'documentation',
|
8
|
+
'http://docs.openstack.org/api/openstack-compute/2/content/POST_os-resetState_v2__tenant_id__servers__server_id__action_ext-os-admin-actions.html'
|
9
|
+
|
10
|
+
param :id, required: true
|
11
|
+
param :state, required: true
|
12
|
+
|
13
|
+
|
14
|
+
def body
|
15
|
+
{
|
16
|
+
'os-resetState' => {
|
17
|
+
'state' => params[:state]
|
18
|
+
}
|
19
|
+
}
|
20
|
+
end
|
21
|
+
|
22
|
+
|
23
|
+
def headers
|
24
|
+
super
|
25
|
+
end
|
26
|
+
|
27
|
+
|
28
|
+
def http_method
|
29
|
+
:post
|
30
|
+
end
|
31
|
+
|
32
|
+
|
33
|
+
def url
|
34
|
+
"#{ base_url }/servers/#{ params[:id] }/action"
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
@@ -1,18 +1,15 @@
|
|
1
1
|
module Aviator
|
2
2
|
|
3
|
-
define_request :resize_server do
|
3
|
+
define_request :resize_server, inherit: [:openstack, :common, :v2, :admin, :base] do
|
4
4
|
|
5
|
-
meta :
|
6
|
-
meta :service, :compute
|
7
|
-
meta :api_version, :v2
|
8
|
-
meta :endpoint_type, :admin
|
5
|
+
meta :service, :compute
|
9
6
|
|
10
7
|
link 'documentation',
|
11
8
|
'http://docs.openstack.org/api/openstack-compute/2/content/Resize_Server-d1e3707.html'
|
12
9
|
|
13
10
|
param :id, required: true
|
14
11
|
param :name, required: true
|
15
|
-
param :flavorRef, required: true
|
12
|
+
param :flavorRef, required: true, alias: :flavor_ref
|
16
13
|
|
17
14
|
|
18
15
|
def body
|
@@ -26,13 +23,7 @@ module Aviator
|
|
26
23
|
|
27
24
|
|
28
25
|
def headers
|
29
|
-
|
30
|
-
|
31
|
-
unless self.anonymous?
|
32
|
-
h['X-Auth-Token'] = session_data[:access][:token][:id]
|
33
|
-
end
|
34
|
-
|
35
|
-
h
|
26
|
+
super
|
36
27
|
end
|
37
28
|
|
38
29
|
|
@@ -42,8 +33,7 @@ module Aviator
|
|
42
33
|
|
43
34
|
|
44
35
|
def url
|
45
|
-
|
46
|
-
"#{ service_spec[:endpoints][0][:adminURL] }/servers/#{ params[:id] }/action"
|
36
|
+
"#{ base_url }/servers/#{ params[:id] }/action"
|
47
37
|
end
|
48
38
|
|
49
39
|
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
module Aviator
|
2
|
+
|
3
|
+
define_request :unlock_server, inherit: [:openstack, :common, :v2, :admin, :base] do
|
4
|
+
|
5
|
+
meta :service, :compute
|
6
|
+
|
7
|
+
link 'documentation',
|
8
|
+
'http://docs.openstack.org/api/openstack-compute/2/content/POST_unlock_v2__tenant_id__servers__server_id__action_ext-os-admin-actions.html'
|
9
|
+
|
10
|
+
param :id, required: true
|
11
|
+
|
12
|
+
|
13
|
+
def body
|
14
|
+
{ unlock: nil }
|
15
|
+
end
|
16
|
+
|
17
|
+
|
18
|
+
def headers
|
19
|
+
super
|
20
|
+
end
|
21
|
+
|
22
|
+
|
23
|
+
def http_method
|
24
|
+
:post
|
25
|
+
end
|
26
|
+
|
27
|
+
|
28
|
+
def url
|
29
|
+
"#{ base_url }/servers/#{ params[:id] }/action"
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
@@ -1,22 +1,19 @@
|
|
1
1
|
module Aviator
|
2
2
|
|
3
|
-
define_request :change_admin_password do
|
3
|
+
define_request :change_admin_password, inherit: [:openstack, :common, :v2, :public, :base] do
|
4
4
|
|
5
|
-
meta :
|
6
|
-
meta :service, :compute
|
7
|
-
meta :api_version, :v2
|
8
|
-
meta :endpoint_type, :public
|
5
|
+
meta :service, :compute
|
9
6
|
|
10
7
|
link 'documentation',
|
11
8
|
'http://docs.openstack.org/api/openstack-compute/2/content/Change_Password-d1e3234.html'
|
12
|
-
|
9
|
+
|
13
10
|
link 'additional spec',
|
14
11
|
'https://answers.launchpad.net/nova/+question/228462'
|
15
12
|
|
16
|
-
param :adminPass, required: true
|
13
|
+
param :adminPass, required: true, alias: :admin_pass
|
17
14
|
param :id, required: true
|
18
|
-
|
19
|
-
|
15
|
+
|
16
|
+
|
20
17
|
def body
|
21
18
|
p = {
|
22
19
|
changePassword: {
|
@@ -26,27 +23,20 @@ module Aviator
|
|
26
23
|
|
27
24
|
p
|
28
25
|
end
|
29
|
-
|
30
|
-
|
26
|
+
|
27
|
+
|
31
28
|
def headers
|
32
|
-
|
33
|
-
|
34
|
-
unless self.anonymous?
|
35
|
-
h['X-Auth-Token'] = session_data[:access][:token][:id]
|
36
|
-
end
|
37
|
-
|
38
|
-
h
|
29
|
+
super
|
39
30
|
end
|
40
|
-
|
41
|
-
|
31
|
+
|
32
|
+
|
42
33
|
def http_method
|
43
34
|
:post
|
44
35
|
end
|
45
|
-
|
46
|
-
|
36
|
+
|
37
|
+
|
47
38
|
def url
|
48
|
-
|
49
|
-
"#{ service_spec[:endpoints][0][:publicURL] }/servers/#{ params[:id] }/action"
|
39
|
+
"#{ base_url }/servers/#{ params[:id] }/action"
|
50
40
|
end
|
51
41
|
|
52
42
|
end
|