The Shared module consists of code that was duplicated between the Real and Mock implementations.
Creates a new instance of the Brightbox Compute service
@note If you create service using just a refresh token when it
expires the service will no longer be able to authenticate.
@see Fog::Brightbox::Config#initialize Config object for possible configuration options
@param [Brightbox::Config, Hash] config
Any configuration to be used for this service. This ideally should be in the newer form of a {Brightbox::Config} object but may be a Hash.
# File lib/fog/brightbox/compute/shared.rb, line 26 def initialize(config) if config.respond_to?(:config_service?) && config.config_service? @config = config else @config = Fog::Brightbox::Config.new(config) end @config = Fog::Brightbox::Compute::Config.new(@config) # Currently authentication and api endpoints are the same but may change @auth_url = @config.auth_url.to_s @auth_connection = Fog::Core::Connection.new(@auth_url) @api_url = @config.compute_url.to_s @connection_options = @config.connection_options @persistent = @config.connection_persistent? @connection = Fog::Core::Connection.new(@api_url, @persistent, @connection_options) # Authentication options client_id = @config.client_id client_secret = @config.client_secret username = @config.username password = @config.password @configured_account = @config.account # Request account can be changed at anytime and changes behaviour of future requests @scoped_account = @configured_account credential_options = { :username => username, :password => password } @credentials = CredentialSet.new(client_id, client_secret, credential_options) # If existing tokens have been cached, allow continued use of them in the service @credentials.update_tokens(@config.cached_access_token, @config.cached_refresh_token) @token_management = @config.managed_tokens? end
Returns the current access token or nil @return [String,nil]
# File lib/fog/brightbox/compute/shared.rb, line 110 def access_token @credentials.access_token end
Returns true if an access token is set @return [Boolean]
# File lib/fog/brightbox/compute/shared.rb, line 104 def access_token_available? !! @credentials.access_token end
Returns the scoped account being used for requests
For API clients this is the owning account
For User applications this is the account specified by either account_id option on the service or the brightbox_account setting in your configuration
@return [Fog::Compute::Brightbox::Account]
# File lib/fog/brightbox/compute/shared.rb, line 91 def account account_data = get_scoped_account.merge(:service => self) Fog::Compute::Brightbox::Account.new(account_data) end
Returns true if authentication is being performed as a user @return [Boolean]
# File lib/fog/brightbox/compute/shared.rb, line 98 def authenticating_as_user? @credentials.user_details? end
Returns an identifier for the default image for use
Currently tries to find the latest version of Ubuntu (i686) from Brightbox.
Highly recommended that you actually select the image you want to run on your servers yourself!
@return [String] if image is found, returns the identifier @return [NilClass] if no image is found or an error occurs
# File lib/fog/brightbox/compute/shared.rb, line 160 def default_image return @default_image_id unless @default_image_id.nil? @default_image_id = @config.default_image_id || select_default_image end
Returns the current token expiry time in seconds or nil @return [Number,nil]
# File lib/fog/brightbox/compute/shared.rb, line 122 def expires_in @credentials.expires_in end
Requests a new access token
@return [String] New access token
# File lib/fog/brightbox/compute/shared.rb, line 129 def get_access_token begin get_access_token! rescue Excon::Errors::Unauthorized, Excon::Errors::BadRequest @credentials.update_tokens(nil, nil) end @credentials.access_token end
Requests a new access token and raises if there is a problem
@return [String] New access token @raise [Excon::Errors::BadRequest] The credentials are expired or incorrect
# File lib/fog/brightbox/compute/shared.rb, line 143 def get_access_token! response = request_access_token(@auth_connection, @credentials) update_credentials_from_response(@credentials, response) @credentials.access_token end
Returns the current refresh token or nil @return [String,nil]
# File lib/fog/brightbox/compute/shared.rb, line 116 def refresh_token @credentials.refresh_token end
This returns the account identifier that the request should be scoped by based on the options passed to the request and current configuration
@param [String] options_account Any identifier passed into the request
@return [String, nil] The account identifier to scope the request to or nil
# File lib/fog/brightbox/compute/shared.rb, line 74 def scoped_account(options_account = nil) [options_account, @scoped_account].compact.first end
Sets the scoped account for future requests @param [String] scoped_account Identifier of the account to scope request to
# File lib/fog/brightbox/compute/shared.rb, line 64 def scoped_account=(scoped_account) @scoped_account = scoped_account end
Generated with the Darkfish Rdoc Generator 2.