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