diff --git a/lib/fog/openstack/core.rb b/lib/fog/openstack/core.rb index 0cb9fd39..b03972a8 100644 --- a/lib/fog/openstack/core.rb +++ b/lib/fog/openstack/core.rb @@ -16,6 +16,7 @@ module Core attr_reader :openstack_project_id attr_reader :openstack_project_domain_id attr_reader :openstack_identity_api_version + attr_reader :openstack_storage_url # fallback def self.not_found_class @@ -212,15 +213,7 @@ def authenticate token = Fog::OpenStack::Auth::Token.build(openstack_options, @connection_options) - @openstack_management_url = if token.catalog && !token.catalog.payload.empty? - token.catalog.get_endpoint_url( - @openstack_service_type, - @openstack_endpoint_type, - @openstack_region - ) - else - @openstack_auth_url - end + @openstack_management_url = management_url(token) @current_user = token.user['name'] @current_user_id = token.user['id'] @@ -246,6 +239,20 @@ def authenticate! @openstack_must_reauthenticate = true authenticate end + + private + + def management_url(token) + if token.catalog && !token.catalog.payload.empty? + token.catalog.get_endpoint_url( + @openstack_service_type, + @openstack_endpoint_type, + @openstack_region + ) + else + @openstack_auth_url + end + end end end end diff --git a/lib/fog/openstack/storage.rb b/lib/fog/openstack/storage.rb index c369f075..80e95bc8 100644 --- a/lib/fog/openstack/storage.rb +++ b/lib/fog/openstack/storage.rb @@ -1,5 +1,3 @@ - - module Fog module OpenStack class Storage < Fog::Service @@ -13,7 +11,7 @@ class Storage < Fog::Service :openstack_project_name, :openstack_project_id, :openstack_cache_ttl, :openstack_project_domain, :openstack_user_domain, :openstack_domain_name, :openstack_project_domain_id, :openstack_user_domain_id, :openstack_domain_id, - :openstack_identity_api_version, :openstack_temp_url_key + :openstack_identity_api_version, :openstack_temp_url_key, :openstack_storage_url model_path 'fog/openstack/storage/models' model :directory @@ -55,7 +53,16 @@ def require_mime_types Fog::Logger.warning("'mime-types' missing, please install and try again.") exit(1) end - end + end + + def setup(options) + @openstack_storage_url = options[:openstack_storage_url] + super + end + + def management_url(token) + @openstack_storage_url || super + end end class Mock @@ -101,8 +108,8 @@ def reset_account_name end class Real - include Utils include Fog::OpenStack::Core + include Utils def self.not_found_class Fog::OpenStack::Storage::NotFound