mirror of
https://github.com/fog/fog.git
synced 2022-11-09 13:51:43 -05:00
80 lines
2.4 KiB
Ruby
80 lines
2.4 KiB
Ruby
require 'yaml'
|
|
|
|
module Fog
|
|
# Assign a new set of credentials for use in Fog
|
|
# @param [String, Symbol] new_credential The name of the new credential to use in Fog
|
|
# @ return [String, Symbol] The name of the new Fog credential
|
|
def self.credential=(new_credential)
|
|
@credentials = nil
|
|
@credential = new_credential
|
|
end
|
|
|
|
# @return [String, Symbol] The credential in use by Fog
|
|
def self.credential
|
|
@credential ||= :default
|
|
end
|
|
|
|
# @return [String] The credential's configuration path, read by Fog
|
|
def self.config_path
|
|
File.expand_path(ENV["FOG_RC"] || '~/.fog')
|
|
end
|
|
|
|
# @return [Hash] The credentials pulled from the config_path file
|
|
def self.credentials
|
|
@credentials ||= parse_config
|
|
end
|
|
|
|
# @return [Hash] The credentials pulled from the config_path file
|
|
# @raise [LoadError] Incorrect credential for config file
|
|
def self.parse_config
|
|
config = YAML.load_file(config_path)
|
|
|
|
if config && config[credential]
|
|
return config[credential]
|
|
else
|
|
raise LoadError.new missing_credentials
|
|
end
|
|
end
|
|
|
|
private
|
|
# @return [String] The error message that will be raised, if credentials cannot be found
|
|
def self.missing_credentials
|
|
<<-YML
|
|
Missing Credentials
|
|
|
|
To run as '#{credential}', add the following to your resource config file: #{config_path}
|
|
An alternate file may be used by placing its path in the FOG_RC environment variable
|
|
|
|
#######################################################
|
|
# Fog Resource Config File
|
|
#
|
|
# Key-value pairs should look like:
|
|
# :aws_access_key_id: 022QF06E7MXBSAMPLE
|
|
:#{credential}:
|
|
:aws_access_key_id:
|
|
:aws_secret_access_key:
|
|
:bluebox_api_key:
|
|
:bluebox_customer_id:
|
|
:brightbox_client_id:
|
|
:brightbox_secret:
|
|
:go_grid_api_key:
|
|
:go_grid_shared_secret:
|
|
:google_storage_access_key_id:
|
|
:google_storage_secret_access_key:
|
|
:local_root:
|
|
:new_servers_password:
|
|
:new_servers_username:
|
|
:public_key_path:
|
|
:private_key_path:
|
|
:rackspace_api_key:
|
|
:rackspace_username:
|
|
:slicehost_password:
|
|
:terremark_username:
|
|
:terremark_password:
|
|
#
|
|
# End of Fog Resource Config File
|
|
#######################################################
|
|
|
|
YML
|
|
end
|
|
end
|