diff --git a/lib/aviator/openstack/common/v2/admin/base.rb b/lib/aviator/openstack/common/v2/admin/base.rb new file mode 100644 index 0000000..08dc585 --- /dev/null +++ b/lib/aviator/openstack/common/v2/admin/base.rb @@ -0,0 +1,9 @@ +module Aviator + + define_request :base, inherit: [:openstack, :common, :v2, :public, :base] do + + meta :endpoint_type, :admin + + end + +end diff --git a/lib/aviator/openstack/common/v2/public/base.rb b/lib/aviator/openstack/common/v2/public/base.rb index 02b4dd8..8843a51 100644 --- a/lib/aviator/openstack/common/v2/public/base.rb +++ b/lib/aviator/openstack/common/v2/public/base.rb @@ -21,6 +21,17 @@ module Aviator service_spec[:endpoints][0]["#{ endpoint_type }URL".to_sym] end + + def params_to_querystring(param_names) + filters = [] + + param_names.each do |param_name| + filters << "#{ param_name }=#{ params[param_name] }" if params[param_name] + end + + filters.empty? ? "" : "?#{ filters.join('&') }" + end + end end diff --git a/lib/aviator/openstack/compute/v2/admin/confirm_server_resize.rb b/lib/aviator/openstack/compute/v2/admin/confirm_server_resize.rb index b249276..13cd6b9 100644 --- a/lib/aviator/openstack/compute/v2/admin/confirm_server_resize.rb +++ b/lib/aviator/openstack/compute/v2/admin/confirm_server_resize.rb @@ -1,11 +1,8 @@ module Aviator - define_request :confirm_server_resize do + define_request :confirm_server_resize, inherit: [:openstack, :common, :v2, :admin, :base] do - meta :provider, :openstack - meta :service, :compute - meta :api_version, :v2 - meta :endpoint_type, :admin + meta :service, :compute link 'documentation', 'http://docs.openstack.org/api/openstack-compute/2/content/Confirm_Resized_Server-d1e3868.html' @@ -21,13 +18,7 @@ module Aviator def headers - h = {} - - unless self.anonymous? - h['X-Auth-Token'] = session_data[:access][:token][:id] - end - - h + super end @@ -37,8 +28,7 @@ module Aviator def url - service_spec = session_data[:access][:serviceCatalog].find{|s| s[:type] == service.to_s } - "#{ service_spec[:endpoints][0][:adminURL] }/servers/#{ params[:id] }/action" + "#{ base_url_for :admin }/servers/#{ params[:id] }/action" end end diff --git a/lib/aviator/openstack/compute/v2/admin/get_host_details.rb b/lib/aviator/openstack/compute/v2/admin/get_host_details.rb index 70d14af..1ac9e6a 100644 --- a/lib/aviator/openstack/compute/v2/admin/get_host_details.rb +++ b/lib/aviator/openstack/compute/v2/admin/get_host_details.rb @@ -1,11 +1,8 @@ module Aviator - define_request :get_host_details do + define_request :get_host_details, inherit: [:openstack, :common, :v2, :admin, :base] do - meta :provider, :openstack - meta :service, :compute - meta :api_version, :v2 - meta :endpoint_type, :admin + meta :service, :compute link 'documentation', 'http://api.openstack.org/api-ref.html#ext-os-hosts' @@ -14,13 +11,7 @@ module Aviator def headers - h = {} - - unless self.anonymous? - h['X-Auth-Token'] = session_data[:access][:token][:id] - end - - h + super end @@ -30,9 +21,7 @@ module Aviator def url - service_spec = session_data[:access][:serviceCatalog].find { |s| s[:type] == service.to_s } - - "#{ service_spec[:endpoints][0][:adminURL] }/os-hosts/#{ params[:host_name] }" + "#{ base_url_for :admin }/os-hosts/#{ params[:host_name] }" end end diff --git a/lib/aviator/openstack/compute/v2/admin/list_hosts.rb b/lib/aviator/openstack/compute/v2/admin/list_hosts.rb index 7c508c0..98afd00 100644 --- a/lib/aviator/openstack/compute/v2/admin/list_hosts.rb +++ b/lib/aviator/openstack/compute/v2/admin/list_hosts.rb @@ -1,14 +1,11 @@ module Aviator - define_request :list_hosts, inherit: [:openstack, :common, :v2, :public, :base] do + define_request :list_hosts, inherit: [:openstack, :common, :v2, :admin, :base] do - meta :provider, :openstack - meta :service, :compute - meta :api_version, :v2 - meta :endpoint_type, :admin + meta :service, :compute link 'documentation', - 'http://api.openstack.org/api-ref.html#ext-os-hosts' + 'http://api.openstack.org/api-ref.html#ext-os-hosts' link 'documentation bug', 'https://bugs.launchpad.net/nova/+bug/1224763' @@ -28,7 +25,7 @@ module Aviator def url - url = "#{ base_url_for(:admin) }/os-hosts" + url = "#{ base_url_for :admin }/os-hosts" filters = [] diff --git a/lib/aviator/openstack/compute/v2/admin/resize_server.rb b/lib/aviator/openstack/compute/v2/admin/resize_server.rb index 39b39fb..2c6c01f 100644 --- a/lib/aviator/openstack/compute/v2/admin/resize_server.rb +++ b/lib/aviator/openstack/compute/v2/admin/resize_server.rb @@ -1,11 +1,8 @@ module Aviator - define_request :resize_server do + define_request :resize_server, inherit: [:openstack, :common, :v2, :admin, :base] do - meta :provider, :openstack - meta :service, :compute - meta :api_version, :v2 - meta :endpoint_type, :admin + meta :service, :compute link 'documentation', 'http://docs.openstack.org/api/openstack-compute/2/content/Resize_Server-d1e3707.html' @@ -26,13 +23,7 @@ module Aviator def headers - h = {} - - unless self.anonymous? - h['X-Auth-Token'] = session_data[:access][:token][:id] - end - - h + super end @@ -42,8 +33,7 @@ module Aviator def url - service_spec = session_data[:access][:serviceCatalog].find{|s| s[:type] == service.to_s } - "#{ service_spec[:endpoints][0][:adminURL] }/servers/#{ params[:id] }/action" + "#{ base_url_for :admin }/servers/#{ params[:id] }/action" end end diff --git a/lib/aviator/openstack/compute/v2/public/change_admin_password.rb b/lib/aviator/openstack/compute/v2/public/change_admin_password.rb index bd7e592..13d7ff8 100644 --- a/lib/aviator/openstack/compute/v2/public/change_admin_password.rb +++ b/lib/aviator/openstack/compute/v2/public/change_admin_password.rb @@ -1,11 +1,8 @@ module Aviator - define_request :change_admin_password do + define_request :change_admin_password, inherit: [:openstack, :common, :v2, :public, :base] do - meta :provider, :openstack - meta :service, :compute - meta :api_version, :v2 - meta :endpoint_type, :public + meta :service, :compute link 'documentation', 'http://docs.openstack.org/api/openstack-compute/2/content/Change_Password-d1e3234.html' @@ -29,13 +26,7 @@ module Aviator def headers - h = {} - - unless self.anonymous? - h['X-Auth-Token'] = session_data[:access][:token][:id] - end - - h + super end @@ -45,8 +36,7 @@ module Aviator def url - service_spec = session_data[:access][:serviceCatalog].find{|s| s[:type] == service.to_s } - "#{ service_spec[:endpoints][0][:publicURL] }/servers/#{ params[:id] }/action" + "#{ base_url_for :public }/servers/#{ params[:id] }/action" end end diff --git a/lib/aviator/openstack/compute/v2/public/create_image.rb b/lib/aviator/openstack/compute/v2/public/create_image.rb index c7edbe4..c26d268 100644 --- a/lib/aviator/openstack/compute/v2/public/create_image.rb +++ b/lib/aviator/openstack/compute/v2/public/create_image.rb @@ -1,11 +1,8 @@ module Aviator - define_request :create_image do + define_request :create_image, inherit: [:openstack, :common, :v2, :public, :base] do - meta :provider, :openstack - meta :service, :compute - meta :api_version, :v2 - meta :endpoint_type, :public + meta :service, :compute link 'documentation', 'http://docs.openstack.org/api/openstack-compute/2/content/Create_Image-d1e4655.html' @@ -31,13 +28,7 @@ module Aviator def headers - h = {} - - unless self.anonymous? - h['X-Auth-Token'] = session_data[:access][:token][:id] - end - - h + super end @@ -47,8 +38,7 @@ module Aviator def url - service_spec = session_data[:access][:serviceCatalog].find{|s| s[:type] == service.to_s } - "#{ service_spec[:endpoints][0][:publicURL] }/servers/#{ params[:id] }/action" + "#{ base_url_for :public }/servers/#{ params[:id] }/action" end end diff --git a/lib/aviator/openstack/compute/v2/public/create_server.rb b/lib/aviator/openstack/compute/v2/public/create_server.rb index 8a10c53..24fa68a 100644 --- a/lib/aviator/openstack/compute/v2/public/create_server.rb +++ b/lib/aviator/openstack/compute/v2/public/create_server.rb @@ -1,11 +1,8 @@ module Aviator - define_request :create_server do + define_request :create_server, inherit: [:openstack, :common, :v2, :public, :base] do - meta :provider, :openstack - meta :service, :compute - meta :api_version, :v2 - meta :endpoint_type, :public + meta :service, :compute link 'documentation', 'http://docs.openstack.org/api/openstack-compute/2/content/CreateServers.html' @@ -39,13 +36,7 @@ module Aviator def headers - h = {} - - unless self.anonymous? - h['X-Auth-Token'] = session_data[:access][:token][:id] - end - - h + super end @@ -55,8 +46,7 @@ module Aviator def url - service_spec = session_data[:access][:serviceCatalog].find{|s| s[:type] == service.to_s } - "#{ service_spec[:endpoints][0][:publicURL] }/servers" + "#{ base_url_for :public }/servers" end end diff --git a/lib/aviator/openstack/compute/v2/public/delete_image.rb b/lib/aviator/openstack/compute/v2/public/delete_image.rb index 0b54798..cd1fa12 100644 --- a/lib/aviator/openstack/compute/v2/public/delete_image.rb +++ b/lib/aviator/openstack/compute/v2/public/delete_image.rb @@ -1,11 +1,8 @@ module Aviator - define_request :delete_image do + define_request :delete_image, inherit: [:openstack, :common, :v2, :public, :base] do - meta :provider, :openstack - meta :service, :compute - meta :api_version, :v2 - meta :endpoint_type, :public + meta :service, :compute link 'documentation', 'http://docs.openstack.org/api/openstack-compute/2/content/Delete_Image-d1e4957.html' @@ -14,13 +11,7 @@ module Aviator def headers - h = {} - - unless self.anonymous? - h['X-Auth-Token'] = session_data[:access][:token][:id] - end - - h + super end @@ -30,9 +21,7 @@ module Aviator def url - service_spec = session_data[:access][:serviceCatalog].find{|s| s[:type] == service.to_s } - - "#{ service_spec[:endpoints][0][:publicURL] }/images/#{ params[:id]}" + "#{ base_url_for :public }/images/#{ params[:id]}" end end diff --git a/lib/aviator/openstack/compute/v2/public/delete_server.rb b/lib/aviator/openstack/compute/v2/public/delete_server.rb index 6fe6fc2..cb81586 100644 --- a/lib/aviator/openstack/compute/v2/public/delete_server.rb +++ b/lib/aviator/openstack/compute/v2/public/delete_server.rb @@ -1,11 +1,8 @@ module Aviator - define_request :delete_server do + define_request :delete_server, inherit: [:openstack, :common, :v2, :public, :base] do - meta :provider, :openstack - meta :service, :compute - meta :api_version, :v2 - meta :endpoint_type, :public + meta :service, :compute link 'documentation', 'http://docs.openstack.org/api/openstack-compute/2/content/Delete_Server-d1e2883.html' @@ -14,13 +11,7 @@ module Aviator def headers - h = {} - - unless self.anonymous? - h['X-Auth-Token'] = session_data[:access][:token][:id] - end - - h + super end @@ -30,8 +21,7 @@ module Aviator def url - service_spec = session_data[:access][:serviceCatalog].find{|s| s[:type] == service.to_s } - "#{ service_spec[:endpoints][0][:publicURL] }/servers/#{ params[:id] }" + "#{ base_url_for :public }/servers/#{ params[:id] }" end end diff --git a/lib/aviator/openstack/compute/v2/public/get_image_details.rb b/lib/aviator/openstack/compute/v2/public/get_image_details.rb index 28b6915..814308c 100644 --- a/lib/aviator/openstack/compute/v2/public/get_image_details.rb +++ b/lib/aviator/openstack/compute/v2/public/get_image_details.rb @@ -1,11 +1,8 @@ module Aviator - define_request :get_image_details do + define_request :get_image_details, inherit: [:openstack, :common, :v2, :public, :base] do - meta :provider, :openstack - meta :service, :compute - meta :api_version, :v2 - meta :endpoint_type, :public + meta :service, :compute link 'documentation', 'http://docs.openstack.org/api/openstack-compute/2/content/Get_Image_Details-d1e4848.html' @@ -14,13 +11,7 @@ module Aviator def headers - h = {} - - unless self.anonymous? - h['X-Auth-Token'] = session_data[:access][:token][:id] - end - - h + super end @@ -30,9 +21,7 @@ module Aviator def url - service_spec = session_data[:access][:serviceCatalog].find{|s| s[:type] == service.to_s } - - "#{ service_spec[:endpoints][0][:publicURL] }/images/#{ params[:id]}" + "#{ base_url_for :public }/images/#{ params[:id]}" end end diff --git a/lib/aviator/openstack/compute/v2/public/get_server.rb b/lib/aviator/openstack/compute/v2/public/get_server.rb index 7bfda35..4a87905 100644 --- a/lib/aviator/openstack/compute/v2/public/get_server.rb +++ b/lib/aviator/openstack/compute/v2/public/get_server.rb @@ -1,11 +1,8 @@ module Aviator - define_request :get_server do + define_request :get_server, inherit: [:openstack, :common, :v2, :public, :base] do - meta :provider, :openstack - meta :service, :compute - meta :api_version, :v2 - meta :endpoint_type, :public + meta :service, :compute link 'documentation', 'http://docs.openstack.org/api/openstack-compute/2/content/Get_Server_Details-d1e2623.html' @@ -13,13 +10,7 @@ module Aviator param :id, required: true def headers - h = {} - - unless self.anonymous? - h['X-Auth-Token'] = session_data[:access][:token][:id] - end - - h + super end @@ -29,9 +20,7 @@ module Aviator def url - service_spec = session_data[:access][:serviceCatalog].find{|s| s[:type] == service.to_s } - - "#{ service_spec[:endpoints][0][:publicURL] }/servers/#{ params[:id] }" + "#{ base_url_for :public }/servers/#{ params[:id] }" end end diff --git a/lib/aviator/openstack/compute/v2/public/list_addresses.rb b/lib/aviator/openstack/compute/v2/public/list_addresses.rb index 3cdaa31..a2c2797 100644 --- a/lib/aviator/openstack/compute/v2/public/list_addresses.rb +++ b/lib/aviator/openstack/compute/v2/public/list_addresses.rb @@ -1,11 +1,8 @@ module Aviator - define_request :list_addresses do + define_request :list_addresses, inherit: [:openstack, :common, :v2, :public, :base] do - meta :provider, :openstack - meta :service, :compute - meta :api_version, :v2 - meta :endpoint_type, :public + meta :service, :compute link 'documentation', 'http://docs.openstack.org/api/openstack-compute/2/content/List_Addresses-d1e3014.html' @@ -19,13 +16,7 @@ module Aviator def headers - h = {} - - unless self.anonymous? - h['X-Auth-Token'] = session_data[:access][:token][:id] - end - - h + super end @@ -35,11 +26,8 @@ module Aviator def url - service_spec = session_data[:access][:serviceCatalog].find{|s| s[:type] == service.to_s } - - url = "#{ service_spec[:endpoints][0][:publicURL] }/servers/#{ params[:id] }/ips" + url = "#{ base_url_for :public }/servers/#{ params[:id] }/ips" url += "/#{ params[:networkID] }" if params[:networkID] - url end diff --git a/lib/aviator/openstack/compute/v2/public/list_flavors.rb b/lib/aviator/openstack/compute/v2/public/list_flavors.rb index bb77930..09ec059 100644 --- a/lib/aviator/openstack/compute/v2/public/list_flavors.rb +++ b/lib/aviator/openstack/compute/v2/public/list_flavors.rb @@ -1,11 +1,8 @@ module Aviator - - define_request :list_flavors do - meta :provider, :openstack - meta :service, :compute - meta :api_version, :v2 - meta :endpoint_type, :public + define_request :list_flavors, inherit: [:openstack, :common, :v2, :public, :base] do + + meta :service, :compute link 'documentation', 'http://docs.openstack.org/api/openstack-compute/2/content/List_Flavors-d1e4188.html' @@ -18,13 +15,7 @@ module Aviator def headers - h = {} - - unless self.anonymous? - h['X-Auth-Token'] = session_data[:access][:token][:id] - end - - h + super end @@ -34,20 +25,9 @@ module Aviator def url - service_spec = session_data[:access][:serviceCatalog].find{|s| s[:type] == service.to_s } - - str = "#{ service_spec[:endpoints][0][:publicURL] }/flavors" + str = "#{ base_url_for :public }/flavors" str += "/detail" if params[:details] - - filters = [] - - (optional_params + required_params - [:details]).each do |param_name| - filters << "#{ param_name }=#{ params[param_name] }" if params[param_name] - end - - str += "?#{ filters.join('&') }" unless filters.empty? - - str + str += params_to_querystring(optional_params + required_params - [:details]) end end diff --git a/lib/aviator/openstack/compute/v2/public/list_images.rb b/lib/aviator/openstack/compute/v2/public/list_images.rb index 1baa41a..fd0fb23 100644 --- a/lib/aviator/openstack/compute/v2/public/list_images.rb +++ b/lib/aviator/openstack/compute/v2/public/list_images.rb @@ -1,11 +1,8 @@ module Aviator - define_request :list_images do + define_request :list_images, inherit: [:openstack, :common, :v2, :public, :base] do - meta :provider, :openstack - meta :service, :compute - meta :api_version, :v2 - meta :endpoint_type, :public + meta :service, :compute link 'documentation', 'http://docs.openstack.org/api/openstack-compute/2/content/List_Images-d1e4435.html' @@ -21,13 +18,7 @@ module Aviator def headers - h = {} - - unless self.anonymous? - h['X-Auth-Token'] = session_data[:access][:token][:id] - end - - h + super end @@ -37,20 +28,9 @@ module Aviator def url - service_spec = session_data[:access][:serviceCatalog].find{|s| s[:type] == 'compute' } - - str = "#{ service_spec[:endpoints][0][:publicURL] }/images" + str = "#{ base_url_for :public }/images" str += "/detail" if params[:details] - - filters = [] - - (optional_params + required_params - [:details]).each do |param_name| - filters << "#{ param_name }=#{ params[param_name] }" if params[param_name] - end - - str += "?#{ filters.join('&') }" unless filters.empty? - - str + str += params_to_querystring(optional_params + required_params - [:details]) end end diff --git a/lib/aviator/openstack/compute/v2/public/list_servers.rb b/lib/aviator/openstack/compute/v2/public/list_servers.rb index 5d1037b..74cad0e 100644 --- a/lib/aviator/openstack/compute/v2/public/list_servers.rb +++ b/lib/aviator/openstack/compute/v2/public/list_servers.rb @@ -1,11 +1,8 @@ module Aviator - define_request :list_servers do + define_request :list_servers, inherit: [:openstack, :common, :v2, :public, :base] do - meta :provider, :openstack - meta :service, :compute - meta :api_version, :v2 - meta :endpoint_type, :public + meta :service, :compute link 'documentation', 'http://docs.openstack.org/api/openstack-compute/2/content/List_Servers-d1e2078.html' @@ -31,13 +28,7 @@ module Aviator def headers - h = {} - - unless self.anonymous? - h['X-Auth-Token'] = session_data[:access][:token][:id] - end - - h + super end @@ -47,9 +38,7 @@ module Aviator def url - service_spec = session_data[:access][:serviceCatalog].find{|s| s[:type] == service.to_s } - - str = "#{ service_spec[:endpoints][0][:publicURL] }/servers" + str = "#{ base_url_for :public }/servers" str += "/detail" if params[:details] filters = [] diff --git a/lib/aviator/openstack/compute/v2/public/reboot_server.rb b/lib/aviator/openstack/compute/v2/public/reboot_server.rb index 49171e1..1831abb 100644 --- a/lib/aviator/openstack/compute/v2/public/reboot_server.rb +++ b/lib/aviator/openstack/compute/v2/public/reboot_server.rb @@ -1,11 +1,8 @@ module Aviator - define_request :reboot_server do + define_request :reboot_server, inherit: [:openstack, :common, :v2, :public, :base] do - meta :provider, :openstack - meta :service, :compute - meta :api_version, :v2 - meta :endpoint_type, :public + meta :service, :compute link 'documentation', 'http://docs.openstack.org/api/openstack-compute/2/content/Reboot_Server-d1e3371.html' @@ -26,13 +23,7 @@ module Aviator def headers - h = {} - - unless self.anonymous? - h['X-Auth-Token'] = session_data[:access][:token][:id] - end - - h + super end @@ -42,8 +33,7 @@ module Aviator def url - service_spec = session_data[:access][:serviceCatalog].find{|s| s[:type] == service.to_s } - "#{ service_spec[:endpoints][0][:publicURL] }/servers/#{ params[:id] }/action" + "#{ base_url_for :public }/servers/#{ params[:id] }/action" end end diff --git a/lib/aviator/openstack/compute/v2/public/rebuild_server.rb b/lib/aviator/openstack/compute/v2/public/rebuild_server.rb index 86fc9a9..ee788c3 100644 --- a/lib/aviator/openstack/compute/v2/public/rebuild_server.rb +++ b/lib/aviator/openstack/compute/v2/public/rebuild_server.rb @@ -1,11 +1,8 @@ module Aviator - define_request :rebuild_server do + define_request :rebuild_server, inherit: [:openstack, :common, :v2, :public, :base] do - meta :provider, :openstack - meta :service, :compute - meta :api_version, :v2 - meta :endpoint_type, :public + meta :service, :compute link 'documentation', 'http://docs.openstack.org/api/openstack-compute/2/content/Rebuild_Server-d1e3538.html' @@ -38,13 +35,7 @@ module Aviator def headers - h = {} - - unless self.anonymous? - h['X-Auth-Token'] = session_data[:access][:token][:id] - end - - h + super end @@ -54,8 +45,7 @@ module Aviator def url - service_spec = session_data[:access][:serviceCatalog].find{|s| s[:type] == service.to_s } - "#{ service_spec[:endpoints][0][:publicURL] }/servers/#{ params[:id] }/action" + "#{ base_url_for :public }/servers/#{ params[:id] }/action" end end diff --git a/lib/aviator/openstack/compute/v2/public/root.rb b/lib/aviator/openstack/compute/v2/public/root.rb index f46be91..13b4dee 100644 --- a/lib/aviator/openstack/compute/v2/public/root.rb +++ b/lib/aviator/openstack/compute/v2/public/root.rb @@ -1,20 +1,11 @@ module Aviator - define_request :root do + define_request :root, inherit: [:openstack, :common, :v2, :public, :base] do - meta :provider, :openstack - meta :service, :compute - meta :api_version, :v2 - meta :endpoint_type, :public + meta :service, :compute def headers - h = {} - - unless self.anonymous? - h['X-Auth-Token'] = session_data[:access][:token][:id] - end - - h + super end @@ -24,8 +15,7 @@ module Aviator def url - service_spec = session_data[:access][:serviceCatalog].find{|s| s[:type] == service.to_s } - uri = URI(service_spec[:endpoints][0][:publicURL]) + uri = URI(base_url_for(:public)) "#{ uri.scheme }://#{ uri.host }:#{ uri.port.to_s }/v2/" end diff --git a/lib/aviator/openstack/compute/v2/public/update_server.rb b/lib/aviator/openstack/compute/v2/public/update_server.rb index 4ee0dec..8406bef 100644 --- a/lib/aviator/openstack/compute/v2/public/update_server.rb +++ b/lib/aviator/openstack/compute/v2/public/update_server.rb @@ -1,11 +1,8 @@ module Aviator - define_request :update_server do + define_request :update_server, inherit: [:openstack, :common, :v2, :public, :base] do - meta :provider, :openstack - meta :service, :compute - meta :api_version, :v2 - meta :endpoint_type, :public + meta :service, :compute link 'documentation', 'http://docs.openstack.org/api/openstack-compute/2/content/ServerUpdate.html' @@ -30,13 +27,7 @@ module Aviator def headers - h = {} - - unless self.anonymous? - h['X-Auth-Token'] = session_data[:access][:token][:id] - end - - h + super end @@ -46,8 +37,7 @@ module Aviator def url - service_spec = session_data[:access][:serviceCatalog].find{|s| s[:type] == service.to_s } - "#{ service_spec[:endpoints][0][:publicURL] }/servers/#{ params[:id] }" + "#{ base_url_for :public }/servers/#{ params[:id] }" end end diff --git a/lib/aviator/openstack/identity/v2/admin/add_role_to_user_on_tenant.rb b/lib/aviator/openstack/identity/v2/admin/add_role_to_user_on_tenant.rb index 0513b47..0036e92 100644 --- a/lib/aviator/openstack/identity/v2/admin/add_role_to_user_on_tenant.rb +++ b/lib/aviator/openstack/identity/v2/admin/add_role_to_user_on_tenant.rb @@ -1,12 +1,8 @@ module Aviator - define_request :add_role_to_user_on_tenant do - - meta :provider, :openstack - meta :service, :identity - meta :api_version, :v2 - meta :endpoint_type, :admin + define_request :add_role_to_user_on_tenant, inherit: [:openstack, :common, :v2, :admin, :base] do + meta :service, :identity link 'documentation', 'http://docs.openstack.org/api/openstack-identity-service/2.0/content/PUT_addRolesToUserOnTenant_v2.0_tenants__tenantId__users__userId__roles_OS-KSADM__roleId__.html' @@ -18,13 +14,7 @@ module Aviator def headers - h = {} - - unless self.anonymous? - h['X-Auth-Token'] = session_data[:access][:token][:id] - end - - h + super end @@ -34,11 +24,8 @@ module Aviator def url - service_spec = session_data[:access][:serviceCatalog].find { |s| s[:type] == service.to_s } - "#{ service_spec[:endpoints][0][:adminURL] }" \ - "/tenants/#{ params[:tenant_id] }" \ - "/users/#{ params[:user_id] }" \ - "/roles/OS-KSADM/#{ params[:role_id] }" + p = params + "#{ base_url_for :admin }/tenants/#{ p[:tenant_id] }/users/#{ p[:user_id] }/roles/OS-KSADM/#{ p[:role_id] }" end end diff --git a/lib/aviator/openstack/identity/v2/admin/create_tenant.rb b/lib/aviator/openstack/identity/v2/admin/create_tenant.rb index 5786100..e81d2a9 100644 --- a/lib/aviator/openstack/identity/v2/admin/create_tenant.rb +++ b/lib/aviator/openstack/identity/v2/admin/create_tenant.rb @@ -1,11 +1,8 @@ module Aviator - define_request :create_tenant do + define_request :create_tenant, inherit: [:openstack, :common, :v2, :admin, :base] do - meta :provider, :openstack - meta :service, :identity - meta :api_version, :v2 - meta :endpoint_type, :admin + meta :service, :identity link 'documentation', 'http://docs.openstack.org/api/openstack-identity-service/2.0/content/' @@ -28,13 +25,7 @@ module Aviator def headers - h = {} - - unless self.anonymous? - h['X-Auth-Token'] = session_data[:access][:token][:id] - end - - h + super end @@ -44,8 +35,7 @@ module Aviator def url - service_spec = session_data[:access][:serviceCatalog].find{|s| s[:type] == 'identity' } - "#{ service_spec[:endpoints][0][:adminURL] }/tenants" + "#{ base_url_for :admin }/tenants" end end diff --git a/lib/aviator/openstack/identity/v2/admin/delete_role_from_user_on_tenant.rb b/lib/aviator/openstack/identity/v2/admin/delete_role_from_user_on_tenant.rb index 409d53c..da4dfab 100644 --- a/lib/aviator/openstack/identity/v2/admin/delete_role_from_user_on_tenant.rb +++ b/lib/aviator/openstack/identity/v2/admin/delete_role_from_user_on_tenant.rb @@ -1,15 +1,12 @@ module Aviator - define_request :delete_role_from_user_on_tenant do + define_request :delete_role_from_user_on_tenant, inherit: [:openstack, :common, :v2, :admin, :base] do - meta :provider, :openstack - meta :service, :identity - meta :api_version, :v2 - meta :endpoint_type, :admin + meta :service, :identity link 'documentation', - 'http://docs.openstack.org/api/openstack-identity-service/2.0/content/DELETE_deleteRoleFromUserOnTenant_v2.0_tenants__tenantId__users__userId__roles_OS-KSADM__roleId__.html' + 'http://docs.openstack.org/api/openstack-identity-service/2.0/content/DELETE_deleteRoleFromUserOnTenant_v2.0_tenants__tenantId__users__userId__roles_OS-KSADM__roleId__.html' param :tenant_id, required: true @@ -18,13 +15,7 @@ module Aviator def headers - h = {} - - unless self.anonymous? - h['X-Auth-Token'] = session_data[:access][:token][:id] - end - - h + super end @@ -34,11 +25,8 @@ module Aviator def url - service_spec = session_data[:access][:serviceCatalog].find { |s| s[:type] == service.to_s } - s = "#{ service_spec[:endpoints][0][:adminURL] }/tenants/#{ params[:tenant_id] }" - s += "/users/#{ params[:user_id] }" - s += "/roles/OS-KSADM/#{ params[:role_id] }" - s + p = params + "#{ base_url_for :admin }/tenants/#{ p[:tenant_id] }/users/#{ p[:user_id] }/roles/OS-KSADM/#{ p[:role_id] }" end end diff --git a/lib/aviator/openstack/identity/v2/admin/delete_tenant.rb b/lib/aviator/openstack/identity/v2/admin/delete_tenant.rb index d039fc6..c56ae4b 100644 --- a/lib/aviator/openstack/identity/v2/admin/delete_tenant.rb +++ b/lib/aviator/openstack/identity/v2/admin/delete_tenant.rb @@ -1,11 +1,8 @@ module Aviator - define_request :delete_tenant do + define_request :delete_tenant, inherit: [:openstack, :common, :v2, :admin, :base] do - meta :provider, :openstack - meta :service, :identity - meta :api_version, :v2 - meta :endpoint_type, :admin + meta :service, :identity link 'documentation', 'http://docs.openstack.org/api/openstack-identity-service/2.0/content/DELETE_deleteTenant_v2.0_tenants__tenantId__.html' @@ -14,13 +11,7 @@ module Aviator def headers - h = {} - - unless self.anonymous? - h['X-Auth-Token'] = session_data[:access][:token][:id] - end - - h + super end @@ -30,9 +21,7 @@ module Aviator def url - service_spec = session_data[:access][:serviceCatalog].find{|s| s[:type] == service.to_s } - - "#{ service_spec[:endpoints][0][:adminURL] }/tenants/#{ params[:id]}" + "#{ base_url_for :admin }/tenants/#{ params[:id]}" end end diff --git a/lib/aviator/openstack/identity/v2/admin/list_tenants.rb b/lib/aviator/openstack/identity/v2/admin/list_tenants.rb index a51df68..828d1f0 100644 --- a/lib/aviator/openstack/identity/v2/admin/list_tenants.rb +++ b/lib/aviator/openstack/identity/v2/admin/list_tenants.rb @@ -1,11 +1,8 @@ module Aviator - define_request :list_tenants do + define_request :list_tenants, inherit: [:openstack, :common, :v2, :admin, :base] do - meta :provider, :openstack - meta :service, :identity - meta :api_version, :v2 - meta :endpoint_type, :admin + meta :service, :identity link 'documentation', 'http://docs.openstack.org/api/openstack-identity-service/2.0/content/GET_listTenants_v2.0_tenants_Tenant_Operations.html' @@ -19,13 +16,7 @@ module Aviator def headers - h = {} - - unless self.anonymous? - h['X-Auth-Token'] = session_data[:access][:token][:id] - end - - h + super end @@ -35,18 +26,8 @@ module Aviator def url - service_spec = session_data[:access][:serviceCatalog].find{|s| s[:type] == 'identity' } - str = "#{ service_spec[:endpoints][0][:adminURL] }/tenants" - - filters = [] - - (optional_params + required_params).each do |param_name| - filters << "#{ param_name }=#{ params[param_name] }" if params[param_name] - end - - str += "?#{ filters.join('&') }" unless filters.empty? - - str + str = "#{ base_url_for :admin }/tenants" + str += params_to_querystring(optional_params + required_params) end end diff --git a/lib/aviator/openstack/identity/v2/admin/update_tenant.rb b/lib/aviator/openstack/identity/v2/admin/update_tenant.rb index 5b78f89..dd84d72 100644 --- a/lib/aviator/openstack/identity/v2/admin/update_tenant.rb +++ b/lib/aviator/openstack/identity/v2/admin/update_tenant.rb @@ -1,11 +1,8 @@ module Aviator - define_request :update_tenant do + define_request :update_tenant, inherit: [:openstack, :common, :v2, :admin, :base] do - meta :provider, :openstack - meta :service, :identity - meta :api_version, :v2 - meta :endpoint_type, :admin + meta :service, :identity link 'documentation', @@ -32,13 +29,7 @@ module Aviator def headers - h = {} - - unless self.anonymous? - h['X-Auth-Token'] = session_data[:access][:token][:id] - end - - h + super end @@ -48,8 +39,7 @@ module Aviator def url - service_spec = session_data[:access][:serviceCatalog].find { |s| s[:type] == service.to_s } - "#{ service_spec[:endpoints][0][:adminURL] }/tenants/#{ params[:id] }" + "#{ base_url_for :admin }/tenants/#{ params[:id] }" end end diff --git a/lib/aviator/openstack/identity/v2/public/create_token.rb b/lib/aviator/openstack/identity/v2/public/create_token.rb index cb424a8..60eb39a 100644 --- a/lib/aviator/openstack/identity/v2/public/create_token.rb +++ b/lib/aviator/openstack/identity/v2/public/create_token.rb @@ -1,12 +1,9 @@ module Aviator - define_request :create_token do + define_request :create_token, inherit: [:openstack, :common, :v2, :public, :base] do - meta :anonymous, true - meta :provider, :openstack - meta :service, :identity - meta :api_version, :v2 - meta :endpoint_type, :public + meta :anonymous, true + meta :service, :identity link 'documentation', 'http://docs.openstack.org/api/openstack-identity-service/2.0/content/POST_authenticate_v2.0_tokens_.html' @@ -58,8 +55,6 @@ module Aviator url = session_data[:auth_service][:host_uri] url += '/v2.0' if (URI(url).path =~ /^\/?\w+/).nil? url += "/tokens" - - url end end diff --git a/lib/aviator/openstack/identity/v2/public/list_tenants.rb b/lib/aviator/openstack/identity/v2/public/list_tenants.rb index 27eec33..12d8bec 100644 --- a/lib/aviator/openstack/identity/v2/public/list_tenants.rb +++ b/lib/aviator/openstack/identity/v2/public/list_tenants.rb @@ -1,11 +1,8 @@ module Aviator - define_request :list_tenants do + define_request :list_tenants, inherit: [:openstack, :common, :v2, :public, :base] do - meta :provider, :openstack - meta :service, :identity - meta :api_version, :v2 - meta :endpoint_type, :public + meta :service, :identity link 'documentation', 'http://docs.openstack.org/api/openstack-identity-service/2.0/content/GET_listTenants_v2.0_tokens_tenants_.html' @@ -19,29 +16,13 @@ module Aviator def url - service_spec = session_data[:access][:serviceCatalog].find{|s| s[:type] == 'identity' } - str = "#{ service_spec[:endpoints][0][:publicURL] }/tenants" - - filters = [] - - (optional_params + required_params).each do |param_name| - filters << "#{ param_name }=#{ params[param_name] }" if params[param_name] - end - - str += "?#{ filters.join('&') }" unless filters.empty? - - str + str = "#{ base_url_for :public }/tenants" + str += params_to_querystring(optional_params + required_params) end def headers - h = {} - - unless self.anonymous? - h['X-Auth-Token'] = session_data[:access][:token][:id] - end - - h + super end diff --git a/lib/aviator/openstack/identity/v2/public/root.rb b/lib/aviator/openstack/identity/v2/public/root.rb index b75a790..164086a 100644 --- a/lib/aviator/openstack/identity/v2/public/root.rb +++ b/lib/aviator/openstack/identity/v2/public/root.rb @@ -1,20 +1,12 @@ module Aviator - define_request :root do + define_request :root, inherit: [:openstack, :common, :v2, :public, :base] do + + meta :service, :identity - meta :provider, :openstack - meta :service, :identity - meta :api_version, :v2 - meta :endpoint_type, :public def headers - h = {} - - unless self.anonymous? - h['X-Auth-Token'] = session_data[:access][:token][:id] - end - - h + super end @@ -24,8 +16,7 @@ module Aviator def url - service_spec = session_data[:access][:serviceCatalog].find{|s| s[:type] == service.to_s } - uri = URI(service_spec[:endpoints][0][:publicURL]) + uri = URI(base_url_for(:public)) "#{ uri.scheme }://#{ uri.host }:#{ uri.port.to_s }/v2.0/" end diff --git a/lib/aviator/openstack/image/v1/public/root.rb b/lib/aviator/openstack/image/v1/public/root.rb index ff7fe3c..b6d0766 100644 --- a/lib/aviator/openstack/image/v1/public/root.rb +++ b/lib/aviator/openstack/image/v1/public/root.rb @@ -1,20 +1,12 @@ module Aviator - define_request :root do + define_request :root, inherit: [:openstack, :common, :v2, :public, :base] do - meta :provider, :openstack - meta :service, :image - meta :api_version, :v1 - meta :endpoint_type, :public + meta :service, :image + meta :api_version, :v1 def headers - h = {} - - unless self.anonymous? - h['X-Auth-Token'] = session_data[:access][:token][:id] - end - - h + super end @@ -24,8 +16,7 @@ module Aviator def url - service_spec = session_data[:access][:serviceCatalog].find{|s| s[:type] == service.to_s } - uri = URI(service_spec[:endpoints][0][:publicURL]) + uri = URI(base_url_for(:public)) "#{ uri.scheme }://#{ uri.host }:#{ uri.port.to_s }/v1/" end diff --git a/lib/aviator/openstack/volume/v1/public/root.rb b/lib/aviator/openstack/volume/v1/public/root.rb index ccfef13..802ab31 100644 --- a/lib/aviator/openstack/volume/v1/public/root.rb +++ b/lib/aviator/openstack/volume/v1/public/root.rb @@ -1,20 +1,13 @@ module Aviator - define_request :root do + define_request :root, inherit: [:openstack, :common, :v2, :public, :base] do + + meta :service, :volume + meta :api_version, :v1 - meta :provider, :openstack - meta :service, :volume - meta :api_version, :v1 - meta :endpoint_type, :public def headers - h = {} - - unless self.anonymous? - h['X-Auth-Token'] = session_data[:access][:token][:id] - end - - h + super end @@ -24,8 +17,7 @@ module Aviator def url - service_spec = session_data[:access][:serviceCatalog].find{|s| s[:type] == service.to_s } - uri = URI(service_spec[:endpoints][0][:publicURL]) + uri = URI(base_url_for(:public)) "#{ uri.scheme }://#{ uri.host }:#{ uri.port.to_s }/v1/" end diff --git a/test/aviator/openstack/identity/v2/public/create_token_test.rb b/test/aviator/openstack/identity/v2/public/create_token_test.rb index df711df..7818718 100644 --- a/test/aviator/openstack/identity/v2/public/create_token_test.rb +++ b/test/aviator/openstack/identity/v2/public/create_token_test.rb @@ -52,7 +52,7 @@ class Aviator::Test validate_attr :headers do - create_request.headers?.must_equal false + create_request.headers?.must_equal true end