Parent

Class/Module Index [+]

Quicksearch

Fog::Service

Public Class Methods

coerce_options(options) click to toggle source
# File lib/fog/core/service.rb, line 157
def coerce_options(options)
  options.each do |key, value|
    value_string = value.to_s.downcase
    if value.nil?
      options.delete(key)
    elsif value == value_string.to_i.to_s
      options[key] = value.to_i
    else
      options[key] = case value_string
      when 'false'
        false
      when 'true'
        true
      else
        value
      end
    end
  end
end
collection(new_collection) click to toggle source
# File lib/fog/core/service.rb, line 149
def collection(new_collection)
  collections << new_collection
end
collections() click to toggle source
# File lib/fog/core/service.rb, line 153
def collections
  @collections ||= []
end
fetch_credentials(options) click to toggle source

@deprecated

# File lib/fog/core/service.rb, line 120
def fetch_credentials(options)
  # attempt to load credentials from config file
  begin
    Fog.credentials.reject { |key, value| !(recognized | requirements).include?(key) }
  rescue LoadError
    # if there are no configured credentials, do nothing
    {}
  end
end
inherited(child) click to toggle source
# File lib/fog/core/service.rb, line 33
def inherited(child)
  child.class_eval           class Error < Fog::Service::Error; end          class NotFound < Fog::Service::NotFound; end          module Collections            include Fog::Service::Collections            def service              #{child}            end          end          def self.service            #{child}          end, __FILE__, __LINE__
end
mocked_requests() click to toggle source
# File lib/fog/core/service.rb, line 177
def mocked_requests
  @mocked_requests ||= []
end
model(new_model) click to toggle source
# File lib/fog/core/service.rb, line 181
def model(new_model)
  models << new_model
end
model_path(new_path) click to toggle source

@note This path is used to require model and collection files

# File lib/fog/core/service.rb, line 145
def model_path(new_path)
  @model_path = new_path
end
models() click to toggle source
# File lib/fog/core/service.rb, line 185
def models
  @models ||= []
end
new(config = {}) click to toggle source

{Fog::Service} is (unfortunately) both a builder class and the subclass for any fog service.

Creating a {new} instance using the builder will return either an instance of +Fog::<Service>::<Provider>::Real+ or +Fog::<Service>::<Provider>::Mock+ based on the value of {Fog.mock?} when the builder is used.

Each provider can require or recognize different settings (often prefixed with the providers name). These settings map to keys in the +~/.fog+ file.

Settings can be passed as either a Hash or an object that responds to config_service? with true. This object will be passed through unchanged to the Real or Mock service that is created. It is up to providers to adapt services to use these config objects.

@abstract Subclass and implement real or mock code

@param [Hash,config_service?] config

Settings or an object used to build a service instance

@option config [Hash] :headers

Passed to the underlying {Fog::Core::Connection} unchanged

@return [Fog::Service::Provider::Real] if created while mocking is disabled @return [Fog::Service::Provider::Mock] if created while mocking is enabled @raise [ArgumentError] if a setting required by the provider was not passed in

@example Minimal options (dependent on ~/.fog)

@service = Fog::Compute::Example.new # => <#Fog::Compute::Example::Real>

@example Mocked service

Fog.mock!
@service = Fog::Compute::Example.new # => <#Fog::Compute::Example::Mock>

@example Configured using many options (options merged into ~/.fog)

@options = {
  :example_username => "fog",
  :example_password => "fog"
}
@service = Fog::Compute::Example.new(@options)

@example Configured using external config object (~/.fog ignored completely)

@config = Fog::Example::Config.new(...)
@service = Fog::Compute::Example.new(@config)
# File lib/fog/core/service.rb, line 94
def new(config = {})
  if config.respond_to?(:config_service?) && config.config_service?
    cleaned_settings = config
  else
    cleaned_settings = handle_settings(config)
  end
  setup_requirements

  svc = service
  if Fog.mocking?
    while svc != Fog::Service
      service::Mock.send(:include, svc::Collections)
      svc = svc.superclass
    end
    service::Mock.new(cleaned_settings)
  else
    while svc != Fog::Service
      service::Real.send(:include, svc::Collections)
      svc = svc.superclass
    end
    service::Real.send(:include, service::NoLeakInspector)
    service::Real.new(cleaned_settings)
  end
end
recognized() click to toggle source
# File lib/fog/core/service.rb, line 223
def recognized
  @recognized ||= [:connection_options]
end
recognizes(*args) click to toggle source
# File lib/fog/core/service.rb, line 219
def recognizes(*args)
  recognized.concat(args)
end
request(new_request) click to toggle source
# File lib/fog/core/service.rb, line 193
def request(new_request)
  requests << new_request
end
request_path(new_path) click to toggle source
# File lib/fog/core/service.rb, line 189
def request_path(new_path)
  @request_path = new_path
end
requests() click to toggle source
# File lib/fog/core/service.rb, line 197
def requests
  @requests ||= []
end
requirements() click to toggle source
# File lib/fog/core/service.rb, line 215
def requirements
  @requirements ||= []
end
requires(*args) click to toggle source
# File lib/fog/core/service.rb, line 211
def requires(*args)
  requirements.concat(args)
end
secrets(*args) click to toggle source
# File lib/fog/core/service.rb, line 201
def secrets(*args)
  if args.empty?
    @secrets ||= []
  else
    args.inject(secrets) do |secrets, secret|
      secrets << "@#{secret}".to_sym
    end
  end
end
setup_requirements() click to toggle source
# File lib/fog/core/service.rb, line 130
def setup_requirements
  if superclass.respond_to?(:setup_requirements)
    superclass.setup_requirements
  end

  @required ||= false
  unless @required
    require_models
    require_collections_and_define
    require_requests_and_mock
    @required = true
  end
end
validate_options(options) click to toggle source
# File lib/fog/core/service.rb, line 227
def validate_options(options)
  keys = []
  for key, value in options
    unless value.nil?
      keys << key
    end
  end
  missing = requirements - keys

  unless missing.empty?
    raise ArgumentError, "Missing required arguments: #{missing.join(', ')}"
  end

  unless recognizes.empty?
    unrecognized = options.keys - requirements - recognized
    unless unrecognized.empty?
      Fog::Logger.warning("Unrecognized arguments: #{unrecognized.join(', ')}")
    end
  end
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.