This is an unoffical ruby client for HetznerCloud Api service.
Its currently in development and lacking a lot of feature. The bindings are also not considered stable.
Add this line to your application's Gemfile:
gem 'hcloud'
And then execute:
$ bundle
Or install it yourself as:
$ gem install hcloud
c = Hcloud::Client.new(token: "<your project token>")
c = Hcloud::Client.new(
token: "<your project token>",
auto_pagination: true,
concurrency: 50 # default 20
)
Hcloud::Client.connection = Hcloud::Client.new(...)
Each action could be handled concurrently. The actual downsides are located at the exception handling. Means one request could break the whole bunch of requests, you currently have to deal with that.
servers = []
client.concurrent do
10.times do
servers << client.servers.create(...)
end
end
servers.each do |(action, server, root_password)|
# do something with your servers ...
end
# default page(1)
# default per_page(50)
c.servers.page(2).per_page(40).each do |server|
server.datacenter.location.id #=> 1
end
# default nolimit
c.servers.limit(80).each do |server|
server.datacenter.location.id #=> 1
end
Server.limit(10).each do |server|
# do something with the server
end
Nonblocking:
c.servers.create(name: "moo5", server_type: "cx11", image: "ubuntu-16.04")
#=> [#<Hcloud::Action>, <#Hcloud::Server>, "root_password"]
Wating for finish:
action,server = c.servers.create(name: "moo5", server_type: "cx11", image: "ubuntu-16.04")
while action.status == "running"
puts "Waiting for Action #{action.id} to complete ..."
action = c.actions.find(action.id)
server = c.servers.find(server.id)
puts "Action Status: #{action.status}"
puts "Server Status: #{server.status}"
puts "Server IP Config: #{server.public_net["ipv4"]}"
sleep 5
end
c.servers.count
#=> 2
c.servers.first.update(name: "moo")
#=> #<Hcloud::Server>
c.servers.each{|x| x.update(name: "moo") }
Hcloud::Error::UniquenessError: server name is already used
c.servers.first.destroy
#=> #<Hcloud::Action>