Class: Hcloud::Server

Inherits:
Object
  • Object
show all
Includes:
EntryLoader
Defined in:
lib/hcloud/server.rb

Constant Summary collapse

Attributes =
{
  id: nil,
  name: nil,
  status: nil,
  created: :time,
  public_net: nil,
  server_type: ServerType,
  datacenter: Datacenter,
  image: Image,
  iso: nil,
  rescue_enabled: nil,
  locked: nil,
  backup_window: nil,
  outgoing_traffic: nil,
  ingoing_traffic: nil,
  included_traffic: nil
}

Instance Method Summary collapse

Methods included from EntryLoader

#initialize, #request

Instance Method Details

#actionsObject



90
91
92
# File 'lib/hcloud/server.rb', line 90

def actions
  ActionResource.new(client: client, parent: self, base_path: base_path)
end

#attach_iso(iso:) ⇒ Object



76
77
78
79
# File 'lib/hcloud/server.rb', line 76

def attach_iso(iso:)
  action(request(base_path("actions/attach_iso"), 
                 j: {iso: iso}))[0]
end

#change_type(server_type:, upgrade_disk: nil) ⇒ Object



63
64
65
66
67
68
69
# File 'lib/hcloud/server.rb', line 63

def change_type(server_type:, upgrade_disk: nil)
  query = {}
  method(:change_type).parameters.inject(query) do |r,x| 
    (var = eval(x.last.to_s)).nil? ? r : r.merge!(x.last => var)
  end
  action(request(base_path("actions/change_type"), j: query))[0]
end

#create_image(description: nil, type: nil) ⇒ Object



49
50
51
52
53
54
55
56
# File 'lib/hcloud/server.rb', line 49

def create_image(description: nil, type: nil)
  query = {}
  method(:create_image).parameters.inject(query) do |r,x| 
    (var = eval(x.last.to_s)).nil? ? r : r.merge!(x.last => var)
  end
  a , j = action(request(base_path("actions/create_image"), j: query))
  [a, Image.new(j["image"], parent, client)]
end

#destroyObject



31
32
33
# File 'lib/hcloud/server.rb', line 31

def destroy
  action(request(base_path, method: :delete))[0]
end

#enable_backup(backup_window:) ⇒ Object



71
72
73
74
# File 'lib/hcloud/server.rb', line 71

def enable_backup(backup_window:)
  action(request(base_path("actions/enable_backup"), 
                 j: {backup_window: backup_window}))[0]
end

#enable_rescue(type: "linux64", ssh_keys: []) ⇒ Object



35
36
37
38
39
40
41
42
# File 'lib/hcloud/server.rb', line 35

def enable_rescue(type: "linux64", ssh_keys: [])
  query = {}
  method(:enable_rescue).parameters.inject(query) do |r,x| 
    (var = eval(x.last.to_s)).nil? ? r : r.merge!(x.last => var)
  end
  a , j = action(request(base_path("actions/enable_rescue"), j: query))
  [a, j["root_password"]]
end

#rebuild(image:) ⇒ Object



58
59
60
61
# File 'lib/hcloud/server.rb', line 58

def rebuild(image:)
  a , j = action(request(base_path("actions/rebuild"), j: {image: image}))
  [a, j["root_password"]]
end

#reset_passwordObject



44
45
46
47
# File 'lib/hcloud/server.rb', line 44

def reset_password
  a , j = action(request(base_path("actions/reset_password"), method: :post))
  [a, j["root_password"]]
end

#update(name:) ⇒ Object



23
24
25
26
27
28
29
# File 'lib/hcloud/server.rb', line 23

def update(name:) 
  Server.new(
    Oj.load(request(base_path, j: {name: name}, method: :put).run.body)["server"],
    parent,
    client
  )
end