Class: Fog::Brightbox::Config

Inherits:
Object
  • Object
show all
Defined in:
lib/fog/brightbox/config.rb

Overview

The Config class is designed to encapsulate a group of settings for reuse between Brightbox services. The same config can be used for any service.

The config also holds the latest set of access tokens which when shared means when one service is told a token has expired then another will not retry it.

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ Config

Creates a new set of configuration settings based on the options provided.

Examples:

Use Fog.credentials

# Assuming credentials are setup to return Brightbox settings and not other providers!
@config = Fog::Brightbox::Config.new(Fog.credentials)

Parameters:

  • options (Hash) (defaults to: {})

    The configuration settings

Options Hash (options):

  • :brightbox_access_token (String)

    Set to use a cached OAuth access token to avoid having to request new access rights.

  • :brightbox_account (String)

    Set to specify the account to scope requests to if relevant. API clients are limited to their owning accounts but users can access any account they collaborate on.

  • :brightbox_api_url (String) — default: https://api.gb1.brightbox.com

    Set an alternative API endpoint to send requests to.

  • :brightbox_auth_url (String) — default: https://api.gb1.brightbox.com

    Set an alternative OAuth authentication endpoint to send requests to.

  • :brightbox_client_id (String)

    Set to specify the client identifier to use for requests. Either cli-12345 or app-12345 are suitable settings.

  • :brightbox_default_image (String)

    Set to specify a preferred image to use by default in the Compute service.

  • :brightbox_password (String)

    Set to specify your user’s password to authenticate yourself. This is independent of the client used to access the API.

  • :brightbox_refresh_token (String)

    Set to use a cached OAuth refresh token to avoid having to request new access rights.

  • :brightbox_secret (String)

    Set to specify the client secret to use for requests.

  • :brightbox_token_management (String) — default: true

    Set to specify if the service should handle expired tokens or raise an error instead.

  • :brightbox_username (String)

    Set to specify your user account. Either user identifier (usr-12345) or email address may be used.

  • :connection_options (String) — default: {}

    Set to pass options through to the HTTP connection.

  • :persistent (Boolean) — default: false

    Set to specify if the HTTP connection be persistent



48
49
50
# File 'lib/fog/brightbox/config.rb', line 48

def initialize(options = {})
  @options = options
end

Instance Method Details

#accountString

Returns The configured account identifier to scope API requests by.

Returns:

  • (String)

    The configured account identifier to scope API requests by.



135
136
137
# File 'lib/fog/brightbox/config.rb', line 135

def 
  @current_account ||= @options[:brightbox_account]
end

#auth_urlURI::HTTPS

Returns A URI object for the authentication endpoint.

Returns:

  • (URI::HTTPS)

    A URI object for the authentication endpoint



79
80
81
# File 'lib/fog/brightbox/config.rb', line 79

def auth_url
  URI.parse(@options.fetch(:brightbox_auth_url, "https://api.gb1.brightbox.com"))
end

#cached_access_tokenObject



162
163
164
# File 'lib/fog/brightbox/config.rb', line 162

def cached_access_token
  @options[:brightbox_access_token]
end

#cached_refresh_tokenObject



170
171
172
# File 'lib/fog/brightbox/config.rb', line 170

def cached_refresh_token
  @options[:brightbox_refresh_token]
end

#change_account(new_account) ⇒ String

This changes the scoped account from the originally configured one to another.

Returns:

  • (String)

    The new account identifier used to scope API requests by.



142
143
144
# File 'lib/fog/brightbox/config.rb', line 142

def ()
  @current_account = 
end

#client_idString

Returns The configured identifier of the API client or user application.

Returns:

  • (String)

    The configured identifier of the API client or user application.



115
116
117
# File 'lib/fog/brightbox/config.rb', line 115

def client_id
  @options[:brightbox_client_id]
end

#client_secretString

Returns The configured secret to use to identify the client.

Returns:

  • (String)

    The configured secret to use to identify the client.



120
121
122
# File 'lib/fog/brightbox/config.rb', line 120

def client_secret
  @options[:brightbox_secret]
end

#compute_urlURI::HTTPS Also known as: api_url

Returns A URI object for the main API/compute service endpoint.

Returns:

  • (URI::HTTPS)

    A URI object for the main API/compute service endpoint



84
85
86
# File 'lib/fog/brightbox/config.rb', line 84

def compute_url
  URI.parse(@options.fetch(:brightbox_api_url, "https://api.gb1.brightbox.com"))
end

#config_service?true

Can this be used to configure services? Yes, yes it can.

Returns:

  • (true)


70
71
72
# File 'lib/fog/brightbox/config.rb', line 70

def config_service?
  true
end

#connection_optionsObject



153
154
155
156
# File 'lib/fog/brightbox/config.rb', line 153

def connection_options
  # These are pretty much passed through to the requests as is.
  @options.fetch(:connection_options, {})
end

#connection_persistent?Boolean

Returns:

  • (Boolean)


158
159
160
# File 'lib/fog/brightbox/config.rb', line 158

def connection_persistent?
  @options.fetch(:persistent, false)
end

#credentialsOAuth2::CredentialSet



53
54
55
56
57
58
59
60
# File 'lib/fog/brightbox/config.rb', line 53

def credentials
  @credentials ||= OAuth2::CredentialSet.new(client_id, client_secret,
                                             :username => username,
                                             :password => password,
                                             :access_token => cached_access_token,
                                             :refresh_token => cached_refresh_token
                                            )
end

#default_image_idObject



198
199
200
# File 'lib/fog/brightbox/config.rb', line 198

def default_image_id
  @options.fetch(:brightbox_default_image, nil)
end

#expire_tokens!Object

Allows classes sharing to mark the tokens as invalid in response to API status codes.



184
185
186
# File 'lib/fog/brightbox/config.rb', line 184

def expire_tokens!
  update_tokens(nil)
end

#latest_access_tokenObject



166
167
168
# File 'lib/fog/brightbox/config.rb', line 166

def latest_access_token
  credentials.access_token
end

#latest_refresh_tokenObject

This is the current, most up to date refresh token.



175
176
177
# File 'lib/fog/brightbox/config.rb', line 175

def latest_refresh_token
  credentials.refresh_token
end

#latest_tokenObject



202
203
204
# File 'lib/fog/brightbox/config.rb', line 202

def latest_token
  @options[:brightbox_access_token]
end

#managed_tokens?Boolean

Returns:

  • (Boolean)


194
195
196
# File 'lib/fog/brightbox/config.rb', line 194

def managed_tokens?
  @options.fetch(:brightbox_token_management, true)
end

#must_authenticate?Boolean

Returns:

  • (Boolean)


179
180
181
# File 'lib/fog/brightbox/config.rb', line 179

def must_authenticate?
  !credentials.access_token?
end

#passwordString

Returns The configured password to use to identify the user.

Returns:

  • (String)

    The configured password to use to identify the user.



130
131
132
# File 'lib/fog/brightbox/config.rb', line 130

def password
  @options[:brightbox_password]
end

#regionObject



214
215
216
# File 'lib/fog/brightbox/config.rb', line 214

def region
  @options[:brightbox_region]
end

#reset_accountString

Sets the scoped account back to originally configured one.

Returns:

  • (String)

    The configured account identifier to scope API requests by.



149
150
151
# File 'lib/fog/brightbox/config.rb', line 149

def 
  @current_account = @options[:brightbox_account]
end

#service_nameObject



210
211
212
# File 'lib/fog/brightbox/config.rb', line 210

def service_name
  @options[:brightbox_service_name]
end

#service_typeObject



206
207
208
# File 'lib/fog/brightbox/config.rb', line 206

def service_type
  @options[:brightbox_service_type] || "object-store"
end

#storage_connection_optionsObject



222
223
224
# File 'lib/fog/brightbox/config.rb', line 222

def storage_connection_options
  @options[:connection_options] || {}
end

#storage_management_urlURI?

The #storage_management_url is based on the #storage_url and the account details used when autheticating. This is normally automatically discovered within the servive but can be overridden in the Fog::Brightbox::Config

Returns:

  • (URI)

    if the URL is configured

  • (nil)

    if the URL is not configured



99
100
101
102
103
104
105
# File 'lib/fog/brightbox/config.rb', line 99

def storage_management_url
  @storage_management_url ||= if @options.key?(:brightbox_storage_management_url)
                                URI.parse(@options[:brightbox_storage_management_url])
                              else
                                nil
                              end
end

#storage_management_url=(management_url) ⇒ Object

Parameters:

  • management_url (URI)

    The URI to use for management requests.

Raises:

  • (ArgumentError)

    if non URI object passed



109
110
111
112
# File 'lib/fog/brightbox/config.rb', line 109

def storage_management_url=(management_url)
  raise ArgumentError unless management_url.kind_of?(URI)
  @storage_management_url = management_url
end

#storage_temp_keyObject



226
227
228
# File 'lib/fog/brightbox/config.rb', line 226

def storage_temp_key
  @options[:brightbox_temp_url_key]
end

#storage_urlObject



89
90
91
# File 'lib/fog/brightbox/config.rb', line 89

def storage_url
  URI.parse(@options[:brightbox_storage_url] || "https://orbit.brightbox.com")
end

#tenantObject



218
219
220
# File 'lib/fog/brightbox/config.rb', line 218

def tenant
  @options[:brightbox_tenant]
end

#to_hashObject



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

def to_hash
  @options
end

#update_tokens(access_token, refresh_token = nil, expires_in = nil) ⇒ Object

Parameters:

  • access_token (String)

    The new access token to use

  • refresh_token (String) (defaults to: nil)

    The new refresh token to use



190
191
192
# File 'lib/fog/brightbox/config.rb', line 190

def update_tokens(access_token, refresh_token = nil, expires_in = nil)
  credentials.update_tokens(access_token, refresh_token, expires_in)
end

#user_credentials?Boolean

Returns:

  • (Boolean)


63
64
65
# File 'lib/fog/brightbox/config.rb', line 63

def user_credentials?
  credentials.user_details?
end

#usernameString

Returns The configured email or user identified to use when accessing the API.

Returns:

  • (String)

    The configured email or user identified to use when accessing the API.



125
126
127
# File 'lib/fog/brightbox/config.rb', line 125

def username
  @options[:brightbox_username]
end