Class: Deltacloud::Drivers::RimuHosting::RimuHostingClient

Inherits:
Object
  • Object
show all
Defined in:
lib/deltacloud/drivers/rimuhosting/rimuhosting_client.rb

Instance Method Summary collapse

Constructor Details

#initialize(credentials, baseuri = 'https://rimuhosting.com/r') ⇒ RimuHostingClient

Returns a new instance of RimuHostingClient.



26
27
28
29
30
31
# File 'lib/deltacloud/drivers/rimuhosting/rimuhosting_client.rb', line 26

def initialize(credentials ,baseuri = 'https://rimuhosting.com/r')
  @uri = URI.parse(baseuri)
  @service = Net::HTTP.new(@uri.host, @uri.port)
  @service.use_ssl = true
  @auth = "rimuhosting apikey=#{credentials.password}"
end

Instance Method Details

#create_server(image_id, plan_code, name) ⇒ Object



71
72
73
74
75
# File 'lib/deltacloud/drivers/rimuhosting/rimuhosting_client.rb', line 71

def create_server(image_id, plan_code, name)
  json = {:new_vps => {:instantiation_options => {:domain_name => name, :distro => image_id},
                       :pricing_plan_code => plan_code}}.to_json
  request('/orders/new-vps',json, 'POST')[:about_order]
end

#delete_server(id) ⇒ Object



67
68
69
# File 'lib/deltacloud/drivers/rimuhosting/rimuhosting_client.rb', line 67

def delete_server(id)
  request("/orders/order-#{id}-a/vps",'', 'DELETE')
end

#list_imagesObject



50
51
52
# File 'lib/deltacloud/drivers/rimuhosting/rimuhosting_client.rb', line 50

def list_images
  request('/distributions')["distro_infos"]
end

#list_nodesObject



58
59
60
# File 'lib/deltacloud/drivers/rimuhosting/rimuhosting_client.rb', line 58

def list_nodes
  request('/orders;include_inactive=N')["about_orders"]
end

#list_plansObject



54
55
56
# File 'lib/deltacloud/drivers/rimuhosting/rimuhosting_client.rb', line 54

def list_plans
  request('/pricing-plans;server-type=VPS')["pricing_plan_infos"]
end

#request(resource, data = '', method = 'GET') ⇒ Object



33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
# File 'lib/deltacloud/drivers/rimuhosting/rimuhosting_client.rb', line 33

def request(resource, data='', method='GET')
  headers = {"Accept" => "application/json", "Content-Type" => "application/json"}
  if(!@auth.nil?)
    headers["Authorization"] = @auth
  end
  safely do
    r = @service.send_request(method, @uri.path + resource, data, headers)
    res = JSON.parse(r.body)
    res = res[res.keys[0]]

    if(res['response_type'] == "ERROR" and ( (res['error_info']['error_class'] == "PermissionException") or 
                                            (res['error_info']['error_class'] == "LoginRequired") ))
      raise "AuthFailure"
    end
    res
  end

  def list_images
    request('/distributions')["distro_infos"]
  end

  def list_plans
    request('/pricing-plans;server-type=VPS')["pricing_plan_infos"]
  end

  def list_nodes
    request('/orders;include_inactive=N')["about_orders"]
  end

  def set_server_state(id, state)
    json = {"reboot_request" => {"running_state" => state}}.to_json
    request("/orders/order-#{id}-a/vps/running-state", json, 'PUT')
  end

  def delete_server(id)
    request("/orders/order-#{id}-a/vps",'', 'DELETE')
  end

  def create_server(image_id, plan_code, name)
    json = {:new_vps => {:instantiation_options => {:domain_name => name, :distro => image_id},
                         :pricing_plan_code => plan_code}}.to_json
    request('/orders/new-vps',json, 'POST')[:about_order]
  end
end

#set_server_state(id, state) ⇒ Object



62
63
64
65
# File 'lib/deltacloud/drivers/rimuhosting/rimuhosting_client.rb', line 62

def set_server_state(id, state)
  json = {"reboot_request" => {"running_state" => state}}.to_json
  request("/orders/order-#{id}-a/vps/running-state", json, 'PUT')
end