Module: Fog::Brightbox::Compute::Shared

Includes:
OAuth2
Included in:
Compute::Brightbox::Mock, Compute::Brightbox::Real
Defined in:
lib/fog/brightbox/compute/shared.rb

Overview

The Shared module consists of code that was duplicated between the Real and Mock implementations.

Constant Summary collapse

API_URL =
"https://api.gb1.brightbox.com/"

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from OAuth2

#request_access_token

Instance Attribute Details

#scoped_account(options_account = nil) ⇒ String?

This returns the account identifier that the request should be scoped by based on the options passed to the request and current configuration

Parameters:

  • options_account (String) (defaults to: nil)

    Any identifier passed into the request

Returns:

  • (String, nil)

    The account identifier to scope the request to or nil



69
70
71
# File 'lib/fog/brightbox/compute/shared.rb', line 69

def ( = nil)
  [, @scoped_account].compact.first
end

Instance Method Details

#access_tokenString?

Returns the current access token or nil

Returns:

  • (String, nil)


105
106
107
# File 'lib/fog/brightbox/compute/shared.rb', line 105

def access_token
  @credentials.access_token
end

#access_token_available?Boolean

Returns true if an access token is set

Returns:

  • (Boolean)


99
100
101
# File 'lib/fog/brightbox/compute/shared.rb', line 99

def access_token_available?
  !! @credentials.access_token
end

#accountFog::Compute::Brightbox::Account

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



86
87
88
89
# File 'lib/fog/brightbox/compute/shared.rb', line 86

def 
   = .merge(:service => self)
  Fog::Compute::Brightbox::Account.new()
end

#authenticating_as_user?Boolean

Returns true if authentication is being performed as a user

Returns:

  • (Boolean)


93
94
95
# File 'lib/fog/brightbox/compute/shared.rb', line 93

def authenticating_as_user?
  @credentials.user_details?
end

#default_imageString, NilClass

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!

Returns:

  • (String)

    if image is found, returns the identifier

  • (NilClass)

    if no image is found or an error occurs



155
156
157
158
# File 'lib/fog/brightbox/compute/shared.rb', line 155

def default_image
  return @default_image_id unless @default_image_id.nil?
  @default_image_id = @config.default_image_id || select_default_image
end

#expires_inNumber?

Returns the current token expiry time in seconds or nil

Returns:

  • (Number, nil)


117
118
119
# File 'lib/fog/brightbox/compute/shared.rb', line 117

def expires_in
  @credentials.expires_in
end

#get_access_tokenString

Requests a new access token

Returns:

  • (String)

    New access token



124
125
126
127
128
129
130
131
# File 'lib/fog/brightbox/compute/shared.rb', line 124

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

#get_access_token!String

Requests a new access token and raises if there is a problem

Returns:

  • (String)

    New access token

Raises:

  • (Excon::Errors::BadRequest)

    The credentials are expired or incorrect



138
139
140
141
142
# File 'lib/fog/brightbox/compute/shared.rb', line 138

def get_access_token!
  response = request_access_token(@auth_connection, @credentials)
  update_credentials_from_response(@credentials, response)
  @credentials.access_token
end

#initialize(config) ⇒ Object

Note:

If you create service using just a refresh token when it expires the service will no longer be able to authenticate.

Creates a new instance of the Brightbox Compute service

Parameters:

See Also:



27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# File 'lib/fog/brightbox/compute/shared.rb', line 27

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.
  # 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

#refresh_tokenString?

Returns the current refresh token or nil

Returns:

  • (String, nil)


111
112
113
# File 'lib/fog/brightbox/compute/shared.rb', line 111

def refresh_token
  @credentials.refresh_token
end

#scoped_account_resetObject

Resets the scoped account back to intially configured one



74
75
76
# File 'lib/fog/brightbox/compute/shared.rb', line 74

def 
  @scoped_account = @configured_account
end