class Fog::XenServer::Connection

Attributes

credentials[R]

Public Instance Methods

request(options, *params) click to toggle source
# File lib/chef/provisioning/fog_driver/providers/xenserver.rb, line 209
def request(options, *params)
  parser = options.delete(:parser)
  method = options.delete(:method)

  if params.empty?
    response = @factory.call_async(method, @credentials)
  else
    if params.length.eql?(1) && params.first.is_a?(Hash)
      response = @factory.call_async(method, @credentials, params.first)
    elsif params.length.eql?(2) && params.last.is_a?(Array)
      response = @factory.call_async(method, @credentials, params.first, params.last)
    else
      response = eval("@factory.call_async('#{method}', '#{@credentials}', #{params.map { |p| p.is_a?(String) ? "'#{p}'" : p }.join(',')})")
    end
  end
  raise RequestFailed, "#{method}: " + response["ErrorDescription"].to_s unless response["Status"].eql? "Success"
  if parser
    parser.parse(response["Value"])
    response = parser.response
  end

  response
end