class Fog::Compute::Glesys::Real

Public Class Methods

new(options) click to toggle source
# File lib/fog/glesys/compute.rb, line 77
def initialize(options)
  require 'base64'

  @api_url            = options[:glesys_api_url] || API_URL
  @glesys_username    = options[:glesys_username]
  @glesys_api_key     = options[:glesys_api_key]
  @connection_options = options[:connection_options] || {}
  @persistent         = options[:persistent] || false
  @connection = Fog::XML::Connection.new(@api_url, @persistent, @connection_options)
end

Public Instance Methods

create(options = {}) click to toggle source
# File lib/fog/glesys/requests/compute/create.rb, line 5
def create(options = {})
  request('server/create/',options)
end
destroy(options) click to toggle source
# File lib/fog/glesys/requests/compute/destroy.rb, line 5
def destroy(options)
  if options[:keepip].nil?
    options[:keepip] = 0
  end

  request("/server/destroy", options)
end
edit(options = {}) click to toggle source
# File lib/fog/glesys/requests/compute/edit.rb, line 5
def edit(options = {})
  request('server/edit/',options)
end
ip_add(params) click to toggle source
# File lib/fog/glesys/requests/compute/ip_add.rb, line 5
def ip_add(params)
  request("/ip/add", params)
end
ip_details(params) click to toggle source
# File lib/fog/glesys/requests/compute/ip_details.rb, line 5
def ip_details(params)
  request("/ip/details", params)
end
ip_list_free(options = {}) click to toggle source
# File lib/fog/glesys/requests/compute/ip_list_free.rb, line 5
def ip_list_free(options = {})
  request("/ip/listfree", options)
end
ip_list_own(options = {}) click to toggle source
# File lib/fog/glesys/requests/compute/ip_list_own.rb, line 5
def ip_list_own(options = {})
  request("/ip/listown", options)
end
ip_release(params) click to toggle source
# File lib/fog/glesys/requests/compute/ip_release.rb, line 5
def ip_release(params)
  request("/ip/release", params)
end
ip_remove(params) click to toggle source
# File lib/fog/glesys/requests/compute/ip_remove.rb, line 5
def ip_remove(params)
  request("/ip/remove", params)
end
ip_take(params) click to toggle source
# File lib/fog/glesys/requests/compute/ip_take.rb, line 5
def ip_take(params)
  request("/ip/take", params)
end
list_servers(serverid = nil, options = {}) click to toggle source
# File lib/fog/glesys/requests/compute/list_servers.rb, line 5
def list_servers(serverid = nil, options = {})
  unless serverid.nil?
    options[:serverid] = serverid
  end

  request("/server/list", options)
end
reboot(param) click to toggle source
# File lib/fog/glesys/requests/compute/reboot.rb, line 5
def reboot(param)
  request("/server/reboot", param)
end
request(method_name, options = {}) click to toggle source
# File lib/fog/glesys/compute.rb, line 88
def request(method_name, options = {})
  options.merge!( {:format => 'json'})

  begin
    parser = options.delete(:parser)
    data = @connection.request(
      :expects => 200,
      :method  => "POST",
      :body    => urlencode(options),
      :parser  => parser,
      :path    => method_name,
      :headers => {
        'Authorization' => "Basic #{encoded_api_auth}",
        'Content-Type'  => 'application/x-www-form-urlencoded'
      }
    )

    data.body = Fog::JSON.decode(data.body)

    response_code =  data.body['response']['status']['code']

    unless response_code.to_i == 200
      raise Fog::Compute::Glesys::Error, "#{data.body['response']['status']['text']}"
    end
    data
  rescue Excon::Errors::HTTPStatusError => error
    raise case error
    when Excon::Errors::NotFound
      Fog::Compute::Glesys::NotFound.slurp(error)
    else
      error
    end
  end
end
server_details(serverid, options = {}) click to toggle source
# File lib/fog/glesys/requests/compute/server_details.rb, line 5
def server_details(serverid, options = {})
  request("/server/details", { :serverid => serverid }.merge!(options) )
end
server_status(serverid) click to toggle source
# File lib/fog/glesys/requests/compute/server_status.rb, line 5
def server_status(serverid)
  request("/server/status", { :serverid => serverid } )
end
ssh_key_add(options) click to toggle source
# File lib/fog/glesys/requests/compute/ssh_key_add.rb, line 5
def ssh_key_add(options)
  request("sshkey/add", options)
end
ssh_key_list(options = {}) click to toggle source
# File lib/fog/glesys/requests/compute/ssh_key_list.rb, line 5
def ssh_key_list(options = {})
  request("sshkey/list", options)
end
ssh_key_remove(options) click to toggle source
# File lib/fog/glesys/requests/compute/ssh_key_remove.rb, line 5
def ssh_key_remove(options)
  request("sshkey/remove", options)
end
start(param) click to toggle source
# File lib/fog/glesys/requests/compute/start.rb, line 5
def start(param)
  request("/server/start", param)
end
stop(param) click to toggle source
# File lib/fog/glesys/requests/compute/stop.rb, line 5
def stop(param)
  request("/server/stop", param)
end
template_list() click to toggle source
# File lib/fog/glesys/requests/compute/template_list.rb, line 5
def template_list
  request("/server/templates")
end

Private Instance Methods

encoded_api_auth() click to toggle source
# File lib/fog/glesys/compute.rb, line 125
def encoded_api_auth
  token = [@glesys_username, @glesys_api_key].join(':')
  Base64.encode64(token).delete("\r\n")
end
urlencode(hash) click to toggle source
# File lib/fog/glesys/compute.rb, line 130
def urlencode(hash)
  hash.to_a.map! { |k, v| "#{k}=#{CGI.escape(v.to_s)}" }.join("&")
end