Class: Hcloud::ServerResource

Inherits:
AbstractResource show all
Defined in:
lib/hcloud/server_resource.rb

Instance Attribute Summary

Attributes inherited from AbstractResource

#base_path, #client, #parent

Instance Method Summary collapse

Methods inherited from AbstractResource

#each, #initialize, #limit, #mj, #order, #page, #per_page

Constructor Details

This class inherits a constructor from Hcloud::AbstractResource

Instance Method Details

#[](arg) ⇒ Object



35
36
37
38
39
40
41
42
43
44
45
# File 'lib/hcloud/server_resource.rb', line 35

def [](arg)
  case arg
  when Integer
   begin
     find(arg)
   rescue Error::NotFound
   end
  when String
    find_by(name: arg)
  end
end

#allObject



23
24
25
26
27
# File 'lib/hcloud/server_resource.rb', line 23

def all
  mj("servers") do |j|
    j.flat_map{|x| x["servers"].map{ |x| Server.new(x, self, client) } }
  end
end

#create(name:, server_type:, datacenter: nil, location: nil, start_after_create: nil, image:, ssh_keys: [], user_data: nil) ⇒ Object



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/hcloud/server_resource.rb', line 3

def create(name:,
           server_type:,
           datacenter: nil,
           location: nil,
           start_after_create: nil,
           image:,
           ssh_keys: [],
           user_data: nil)
  query = {}
  method(:create).parameters.inject(query) do |r,x| 
    (var = eval(x.last.to_s)).nil? ? r : r.merge!(x.last => var)
  end
  j = Oj.load(request("servers", j: query, code: 200).run.body)
  [
    Action.new(j["action"], self, client),
    Server.new(j["server"], self, client),
    j["root_password"]
  ]
end

#find(id) ⇒ Object



29
30
31
32
33
# File 'lib/hcloud/server_resource.rb', line 29

def find(id)
  Server.new(
    Oj.load(request("servers/#{id.to_i}").run.body)["server"], self, client
  )
end

#find_by(name:) ⇒ Object



47
48
49
50
51
52
53
# File 'lib/hcloud/server_resource.rb', line 47

def find_by(name:)
  x = Oj.load(request("servers", q: {name: name}).run.body)["servers"]
  return nil if x.none?
  x.each do |s|
    return Server.new(s, self, client)
  end
end