class RHC::Rest::Client

Public Class Methods

new(end_point, username, password, debug=false) click to toggle source
# File lib/rhc/rest/client.rb, line 8
def initialize(end_point, username, password, debug=false)
  # use mydebug for legacy reasons
  @mydebug = @mydebug || debug
  logger.debug "Connecting to #{end_point}" if @mydebug

  credentials = nil
  userpass = "#{username}:#{password}"
  # :nocov: version dependent code
  if RUBY_VERSION.to_f == 1.8
    credentials = Base64.encode64(userpass).delete("\n")
  else
    credentials = Base64.strict_encode64(userpass)
  end
  # :nocov:
  @@headers["Authorization"] = "Basic #{credentials}"
  @@headers["User-Agent"] = RHC::Helpers.user_agent rescue nil
  #first get the API
  RestClient.proxy = ENV['http_proxy']
  request = new_request(:url => end_point, :method => :get, :headers => @@headers)
  begin
    response = request.execute
    result = RHC::Json.decode(response)
    @links = request(request)
  rescue => e
    raise ResourceAccessException.new("Resource could not be accessed:#{e.message}")
  end
end

Public Instance Methods

add_domain(id) click to toggle source

Add Domain

# File lib/rhc/rest/client.rb, line 37
def add_domain(id)
  logger.debug "Adding domain #{id}" if @mydebug
  url = @links['ADD_DOMAIN']['href']
  method =  @links['ADD_DOMAIN']['method']
  payload = {:id => id}
  request = new_request(:url => url, :method => method, :headers => @@headers, :payload => payload)
  return request(request)
end
add_key(name, key, content) click to toggle source
# File lib/rhc/rest/client.rb, line 113
def add_key(name, key, content)
  logger.debug "Adding key #{key} for #{user.login}" if @mydebug
  user.add_key name, key, content
end
cartridges() click to toggle source

Get all Cartridge

# File lib/rhc/rest/client.rb, line 64
def cartridges
  logger.debug "Getting all cartridges" if @mydebug
  url = @links['LIST_CARTRIDGES']['href']
  method =  @links['LIST_CARTRIDGES']['method']
  request = new_request(:url => url, :method => method, :headers => @@headers)
  return request(request)
end
close() click to toggle source
Alias for: logout
delete_key(name) click to toggle source
# File lib/rhc/rest/client.rb, line 118
def delete_key(name)
  logger.debug "Deleting key '#{name}'" if @mydebug
  key = find_key(name)
  key.destroy
end
domains() click to toggle source

Get all Domain

# File lib/rhc/rest/client.rb, line 47
def domains
  logger.debug "Getting all domains" if @mydebug
  url = @links['LIST_DOMAINS']['href']
  method =  @links['LIST_DOMAINS']['method']
  request = new_request(:url => url, :method => method, :headers => @@headers)
  return request(request)
end
find_cartridges(name) click to toggle source

Find Cartridge by name or regex

# File lib/rhc/rest/client.rb, line 73
def find_cartridges(name)
  logger.debug "Finding cartridge #{name}" if @mydebug
  regex = nil
  if name.is_a?(Hash)
    name = name[:name] if name[:name]
    regex = name[:regex] if name[:regex]
  end

  filtered = Array.new
  cartridges.each do |cart|
    if regex
      filtered.push(cart) if cart.name.match(regex)
    else
      filtered.push(cart) if cart.name == name
    end
  end
  return filtered
end
find_domain(id) click to toggle source

Find Domain by namesapce

# File lib/rhc/rest/client.rb, line 56
def find_domain(id)
  logger.debug "Finding domain #{id}" if @mydebug
  domains.each { |domain| return domain if domain.id == id }

  raise RHC::DomainNotFoundException.new("Domain #{id} does not exist")
end
find_key(name) click to toggle source

find Key by name

# File lib/rhc/rest/client.rb, line 101
def find_key(name)
  logger.debug "Finding key #{name}" if @mydebug
  user.keys.each { |key| return key if key.name == name }

  raise RHC::KeyNotFoundException.new("Key #{name} does not exist")
end
logout() click to toggle source
# File lib/rhc/rest/client.rb, line 124
def logout
  #TODO logout
  logger.debug "Logout/Close client" if @mydebug
end
Also aliased as: close
sshkeys() click to toggle source
# File lib/rhc/rest/client.rb, line 108
def sshkeys
  logger.debug "Finding all keys for #{user.login}" if @mydebug
  user.keys
end
user() click to toggle source

Get User info

# File lib/rhc/rest/client.rb, line 93
def user
  url = @links['GET_USER']['href']
  method =  @links['GET_USER']['method']
  request = new_request(:url => url, :method => method, :headers => @@headers)
  return request(request)
end