class SolusVMClient::Server

Attributes

api_hash[RW]
api_key[RW]

Public Class Methods

new(api_key, api_hash) click to toggle source
# File lib/solusvm_client/server.rb, line 17
def initialize(api_key, api_hash)
  self.api_key = api_key
  self.api_hash = api_hash
end

Public Instance Methods

info(options = {}) click to toggle source
# File lib/solusvm_client/server.rb, line 30
def info(options = {})
  result = request("info", options)
  if options.include?(:ipaddr)
    result[:ipaddr] = result[:ipaddr].split(",")
  end

  [:hdd, :mem, :bw].each do |k|
    if options.include?(k)
      usage = result[k].split(",")
      result[k] = {
          total: usage[0].to_i,
          used: usage[1].to_i,
          free: usage[2].to_i,
          percentage: usage[3].to_i
      }
    end
  end

  result
end
method_missing(m, *args, &block) click to toggle source
Calls superclass method
# File lib/solusvm_client/server.rb, line 22
def method_missing(m, *args, &block)
  if @@actions.include?(m)
    request(m)
  else
    super
  end
end
request(action, options = {}) click to toggle source
# File lib/solusvm_client/server.rb, line 51
def request(action, options = {})
  uri = URI.parse(SolusVMClient.api_url)
  https = Net::HTTP.new(uri.host, uri.port)
  https.use_ssl = true
  if !SolusVMClient.verify_ssl
    https.verify_mode = OpenSSL::SSL::VERIFY_NONE
  end

  params = {
      key: self.api_key,
      hash: self.api_hash,
      action: action
  }.merge(options)

  request = Net::HTTP::Post.new(uri)
  request.set_form_data(params)

  response = https.request(request)

  result = {}
  hash = Hash.from_xml("<root>#{response.body}</root>")["root"]

  hash.each do |k,v|
    result[k.to_sym] = v
  end

  raise result[:statusmsg] if result[:status] != "success"

  result
end