class Fog::Hetznercloud::Compute::Real
Public Class Methods
new(options)
click to toggle source
FIXME: Make @location and @datacenter used in server creation
as default
# File lib/fog/hetznercloud/compute.rb, line 100 def initialize(options) @token = options[:hetznercloud_token] @location = options[:hetznercloud_location] || 'fsn1' @datacenter = options[:hetznercloud_datacenter] || 'fsn1-dc8' @connection_options = options[:connection_options] || {} end
Public Instance Methods
create_floating_ip(type, options = {})
click to toggle source
# File lib/fog/hetznercloud/requests/compute/create_floating_ip.rb, line 5 def create_floating_ip(type, options = {}) body = { type: type } # if !@datacenter.nil? # body.merge!({datacenter: @datacenter}) # elsif !@location.nil? # body.merge!({location: @location}) # end body.merge!(options) create('/floating_ips', body) end
create_server(name, image, server_type, options = {})
click to toggle source
# File lib/fog/hetznercloud/requests/compute/create_server.rb, line 5 def create_server(name, image, server_type, options = {}) body = { name: name, image: image, server_type: server_type } # if !@datacenter.nil? # body.merge!({datacenter: @datacenter}) # elsif !@location.nil? # body.merge!({location: @location}) # end body.merge!(options) create('/servers', body) end
create_ssh_key(name, public_key, options = {})
click to toggle source
# File lib/fog/hetznercloud/requests/compute/create_ssh_key.rb, line 5 def create_ssh_key(name, public_key, options = {}) body = { name: name, public_key: public_key } body.merge!(options) create('/ssh_keys', body) end
delete_floating_ip(id)
click to toggle source
# File lib/fog/hetznercloud/requests/compute/delete_floating_ip.rb, line 5 def delete_floating_ip(id) delete("/floating_ips/#{id}") end
delete_image(id)
click to toggle source
# File lib/fog/hetznercloud/requests/compute/delete_image.rb, line 5 def delete_image(id) delete("/images/#{id}") end
delete_server(server_id)
click to toggle source
# File lib/fog/hetznercloud/requests/compute/delete_server.rb, line 5 def delete_server(server_id) delete("/servers/#{server_id}") end
delete_ssh_key(id)
click to toggle source
# File lib/fog/hetznercloud/requests/compute/delete_ssh_key.rb, line 5 def delete_ssh_key(id) delete("/ssh_keys/#{id}") end
execute_server_action(id, action, body = {})
click to toggle source
# File lib/fog/hetznercloud/requests/compute/execute_server_action.rb, line 5 def execute_server_action(id, action, body = {}) create("/servers/#{id}/actions/#{action}", body) end
floating_ip_assign_to_server(id, body)
click to toggle source
# File lib/fog/hetznercloud/requests/compute/floating_ip_assign_to_server.rb, line 5 def floating_ip_assign_to_server(id, body) create("/floating_ips/#{id}/actions/assign", body) end
floating_ip_unassign(id, body)
click to toggle source
# File lib/fog/hetznercloud/requests/compute/floating_ip_unassign.rb, line 5 def floating_ip_unassign(id, body) create("/floating_ips/#{id}/actions/unassign", body) end
floating_ip_update_dns_ptr(id, body)
click to toggle source
# File lib/fog/hetznercloud/requests/compute/floating_ip_update_dns_ptr.rb, line 5 def floating_ip_update_dns_ptr(id, body) create("/floating_ips/#{id}/actions/change_dns_ptr", body) end
get_action(id)
click to toggle source
# File lib/fog/hetznercloud/requests/compute/get_action.rb, line 5 def get_action(id) get("/actions/#{id}") end
get_datacenter(id)
click to toggle source
# File lib/fog/hetznercloud/requests/compute/get_datacenter.rb, line 5 def get_datacenter(id) get("/datacenters/#{id}") end
get_floating_ip(id)
click to toggle source
# File lib/fog/hetznercloud/requests/compute/get_floating_ip.rb, line 5 def get_floating_ip(id) get("/floating_ips/#{id}") end
get_image(image_id)
click to toggle source
# File lib/fog/hetznercloud/requests/compute/get_image.rb, line 5 def get_image(image_id) get("/images/#{image_id}") end
get_location(id)
click to toggle source
# File lib/fog/hetznercloud/requests/compute/get_location.rb, line 5 def get_location(id) get("/locations/#{id}") end
get_server(server_id)
click to toggle source
# File lib/fog/hetznercloud/requests/compute/get_server.rb, line 5 def get_server(server_id) get("/servers/#{server_id}") end
get_server_type(server_type_id)
click to toggle source
# File lib/fog/hetznercloud/requests/compute/get_server_type.rb, line 5 def get_server_type(server_type_id) get("/server_types/#{server_type_id}") end
get_ssh_key(id)
click to toggle source
# File lib/fog/hetznercloud/requests/compute/get_ssh_key.rb, line 5 def get_ssh_key(id) get("/ssh_keys/#{id}") end
list_datacenters(filters = {})
click to toggle source
# File lib/fog/hetznercloud/requests/compute/list_datacenters.rb, line 5 def list_datacenters(filters = {}) get('/datacenters', filters) end
list_floating_ips(filters = {})
click to toggle source
# File lib/fog/hetznercloud/requests/compute/list_floating_ips.rb, line 5 def list_floating_ips(filters = {}) get('/floating_ips', filters) end
list_images(filters = {})
click to toggle source
# File lib/fog/hetznercloud/requests/compute/list_images.rb, line 5 def list_images(filters = {}) get('/images', filters) end
list_locations(filters = {})
click to toggle source
# File lib/fog/hetznercloud/requests/compute/list_locations.rb, line 5 def list_locations(filters = {}) get('/locations', filters) end
list_server_types(filters = {})
click to toggle source
# File lib/fog/hetznercloud/requests/compute/list_server_types.rb, line 5 def list_server_types(filters = {}) get('/server_types', filters) end
list_servers(filters = {})
click to toggle source
# File lib/fog/hetznercloud/requests/compute/list_servers.rb, line 5 def list_servers(filters = {}) get('/servers', filters) end
list_ssh_keys(filters = {})
click to toggle source
# File lib/fog/hetznercloud/requests/compute/list_actions.rb, line 5 def list_ssh_keys(filters = {}) get('/ssh_keys', filters) end
request(params)
click to toggle source
# File lib/fog/hetznercloud/compute.rb, line 107 def request(params) client.request(params) rescue Excon::Errors::HTTPStatusError => error decoded = Fog::Hetznercloud::Errors.decode_error(error) raise if decoded.nil? code = decoded[:code] message = decoded[:message] raise case code when 'unauthorized', 'forbidden', 'invalid_input', 'json_error', 'locked', 'not_found', 'rate_limit_exceeded', 'resource_limit_exceeded', 'resource_unavailable', 'service_error', 'uniqueness_error' Fog::Hetznercloud::Compute.const_get("#{camelize(code)}Error").slurp(error, message) else Fog::Hetznercloud::Compute::Error.slurp(error, message) end end
update_floating_ip(id, body)
click to toggle source
# File lib/fog/hetznercloud/requests/compute/update_floating_ip.rb, line 5 def update_floating_ip(id, body) update("/floating_ips/#{id}", body) end
update_image(id, body)
click to toggle source
# File lib/fog/hetznercloud/requests/compute/update_image.rb, line 5 def update_image(id, body) update("/images/#{id}", body) end
update_server(server_id, body)
click to toggle source
# File lib/fog/hetznercloud/requests/compute/update_server.rb, line 5 def update_server(server_id, body) update("/servers/#{server_id}", body) end
update_ssh_key(id, body)
click to toggle source
# File lib/fog/hetznercloud/requests/compute/update_ssh_key.rb, line 5 def update_ssh_key(id, body) update("/ssh_keys/#{id}", body) end
Private Instance Methods
camelize(str)
click to toggle source
# File lib/fog/hetznercloud/compute.rb, line 134 def camelize(str) str.split('_').collect(&:capitalize).join end
client()
click to toggle source
# File lib/fog/hetznercloud/compute.rb, line 126 def client @client ||= Fog::Hetznercloud::Client.new(endpoint, @token, @connection_options) end
endpoint()
click to toggle source
# File lib/fog/hetznercloud/compute.rb, line 130 def endpoint 'https://api.hetzner.cloud/' end