class Fog::Scaleway::Compute::Real

Public Class Methods

new(options) click to toggle source
# File lib/fog/scaleway/compute.rb, line 120
def initialize(options)
  @token              = options[:scaleway_token]
  @organization       = options[:scaleway_organization]
  @region             = options[:scaleway_region] || 'par1'
  @connection_options = options[:connection_options] || {}
end

Public Instance Methods

create_image(name, arch, root_volume, options = {}) click to toggle source
# File lib/fog/scaleway/requests/compute/create_image.rb, line 5
def create_image(name, arch, root_volume, options = {})
  body = {
    organization: @organization,
    name: name,
    arch: arch,
    root_volume: root_volume
  }

  body.merge!(options)

  create('/images', body)
end
create_ip(options = {}) click to toggle source
# File lib/fog/scaleway/requests/compute/create_ip.rb, line 5
def create_ip(options = {})
  body = {
    organization: @organization
  }

  body.merge!(options)

  create('/ips', body)
end
create_security_group(name, options = {}) click to toggle source
# File lib/fog/scaleway/requests/compute/create_security_group.rb, line 5
def create_security_group(name, options = {})
  body = {
    organization: @organization,
    name: name
  }

  body.merge!(options)

  create('/security_groups', body)
end
create_security_group_rule(security_group_id, action, direction, ip_range, protocol, dest_port_from = nil) click to toggle source
# File lib/fog/scaleway/requests/compute/create_security_group_rule.rb, line 5
def create_security_group_rule(security_group_id, action, direction, ip_range, protocol, dest_port_from = nil)
  create("/security_groups/#{security_group_id}/rules", action: action,
                                                        direction: direction,
                                                        ip_range: ip_range,
                                                        protocol: protocol,
                                                        dest_port_from: dest_port_from)
end
create_server(name, image, volumes, options = {}) click to toggle source
# File lib/fog/scaleway/requests/compute/create_server.rb, line 5
def create_server(name, image, volumes, options = {})
  body = {
    organization: @organization,
    name: name,
    image: image,
    volumes: volumes
  }

  body.merge!(options)

  create('/servers', body)
end
create_snapshot(name, volume_id) click to toggle source
# File lib/fog/scaleway/requests/compute/create_snapshot.rb, line 5
def create_snapshot(name, volume_id)
  create('/snapshots', organization: @organization,
                       name: name,
                       volume_id: volume_id)
end
create_volume(name, volume_type, options) click to toggle source
# File lib/fog/scaleway/requests/compute/create_volume.rb, line 5
def create_volume(name, volume_type, options)
  if options[:size].nil? && options[:base_volume].nil? && options[:base_snapshot].nil?
    raise ArgumentError, 'size, base_volume or base_snapshot are required to create a volume'
  end

  body = {
    organization: @organization,
    name: name,
    volume_type: volume_type
  }

  if !options[:size].nil?
    body[:size] = options[:size]
  elsif !options[:base_volume].nil?
    body[:base_volume] = options[:base_volume]
  else
    body[:base_snapshot] = options[:base_snapshot]
  end

  create('/volumes', body)
end
delete_image(image_id) click to toggle source
# File lib/fog/scaleway/requests/compute/delete_image.rb, line 5
def delete_image(image_id)
  delete("/images/#{image_id}")
end
delete_ip(ip_id) click to toggle source
# File lib/fog/scaleway/requests/compute/delete_ip.rb, line 5
def delete_ip(ip_id)
  delete("/ips/#{ip_id}")
end
delete_security_group(security_group_id) click to toggle source
# File lib/fog/scaleway/requests/compute/delete_security_group.rb, line 5
def delete_security_group(security_group_id)
  delete("/security_groups/#{security_group_id}")
end
delete_security_group_rule(security_group_id, rule_id) click to toggle source
# File lib/fog/scaleway/requests/compute/delete_security_group_rule.rb, line 5
def delete_security_group_rule(security_group_id, rule_id)
  delete("/security_groups/#{security_group_id}/rules/#{rule_id}")
end
delete_server(server_id) click to toggle source
# File lib/fog/scaleway/requests/compute/delete_server.rb, line 5
def delete_server(server_id)
  delete("/servers/#{server_id}")
end
delete_snapshot(snapshot_id) click to toggle source
# File lib/fog/scaleway/requests/compute/delete_snapshot.rb, line 5
def delete_snapshot(snapshot_id)
  delete("/snapshots/#{snapshot_id}")
end
delete_task(task_id) click to toggle source
# File lib/fog/scaleway/requests/compute/delete_task.rb, line 5
def delete_task(task_id)
  delete("/tasks/#{task_id}")
end
delete_user_data(server_id, key) click to toggle source
# File lib/fog/scaleway/requests/compute/delete_user_data.rb, line 5
def delete_user_data(server_id, key)
  delete("/servers/#{server_id}/user_data/#{key}")
end
delete_volume(volume_id) click to toggle source
# File lib/fog/scaleway/requests/compute/delete_volume.rb, line 5
def delete_volume(volume_id)
  delete("/volumes/#{volume_id}")
end
execute_server_action(server_id, action) click to toggle source
# File lib/fog/scaleway/requests/compute/execute_server_action.rb, line 5
def execute_server_action(server_id, action)
  request(method: :post,
          path: "/servers/#{server_id}/action",
          body: {
            action: action
          },
          expects: [202])
end
get_bootscript(bootscript_id) click to toggle source
# File lib/fog/scaleway/requests/compute/get_bootscript.rb, line 5
def get_bootscript(bootscript_id)
  get("/bootscripts/#{bootscript_id}")
end
get_container(container_id) click to toggle source
# File lib/fog/scaleway/requests/compute/get_container.rb, line 5
def get_container(container_id)
  get("/containers/#{container_id}")
end
get_dashboard() click to toggle source
# File lib/fog/scaleway/requests/compute/get_dashboard.rb, line 5
def get_dashboard # rubocop:disable Naming/AccessorMethodName
  get('/dashboard')
end
get_image(image_id) click to toggle source
# File lib/fog/scaleway/requests/compute/get_image.rb, line 5
def get_image(image_id)
  get("/images/#{image_id}")
end
get_ip(ip_id) click to toggle source
# File lib/fog/scaleway/requests/compute/get_ip.rb, line 5
def get_ip(ip_id)
  get("/ips/#{ip_id}")
end
get_security_group(security_group_id) click to toggle source
# File lib/fog/scaleway/requests/compute/get_security_group.rb, line 5
def get_security_group(security_group_id)
  get("/security_groups/#{security_group_id}")
end
get_security_group_rule(security_group_id, rule_id) click to toggle source
# File lib/fog/scaleway/requests/compute/get_security_group_rule.rb, line 5
def get_security_group_rule(security_group_id, rule_id)
  get("/security_groups/#{security_group_id}/rules/#{rule_id}")
end
get_server(server_id) click to toggle source
# File lib/fog/scaleway/requests/compute/get_server.rb, line 5
def get_server(server_id)
  get("/servers/#{server_id}")
end
get_snapshot(snapshot_id) click to toggle source
# File lib/fog/scaleway/requests/compute/get_snapshot.rb, line 5
def get_snapshot(snapshot_id)
  get("/snapshots/#{snapshot_id}")
end
get_task(task_id) click to toggle source
# File lib/fog/scaleway/requests/compute/get_task.rb, line 5
def get_task(task_id)
  get("/tasks/#{task_id}")
end
get_user_data(server_id, key) click to toggle source
# File lib/fog/scaleway/requests/compute/get_user_data.rb, line 5
def get_user_data(server_id, key)
  get("/servers/#{server_id}/user_data/#{key}")
end
get_volume(volume_id) click to toggle source
# File lib/fog/scaleway/requests/compute/get_volume.rb, line 5
def get_volume(volume_id)
  get("/volumes/#{volume_id}")
end
list_bootscripts(filters = {}) click to toggle source
# File lib/fog/scaleway/requests/compute/list_bootscripts.rb, line 5
def list_bootscripts(filters = {})
  get('/bootscripts', filters)
end
list_containers() click to toggle source
# File lib/fog/scaleway/requests/compute/list_containers.rb, line 5
def list_containers
  get('/containers')
end
list_images(filters = {}) click to toggle source
# File lib/fog/scaleway/requests/compute/list_images.rb, line 5
def list_images(filters = {})
  get('/images', filters)
end
list_ips() click to toggle source
# File lib/fog/scaleway/requests/compute/list_ips.rb, line 5
def list_ips
  get('/ips')
end
list_product_servers() click to toggle source
# File lib/fog/scaleway/requests/compute/list_product_servers.rb, line 5
def list_product_servers
  get('/products/servers')
end
list_security_group_rules(security_group_id) click to toggle source
# File lib/fog/scaleway/requests/compute/list_security_group_rules.rb, line 5
def list_security_group_rules(security_group_id)
  get("/security_groups/#{security_group_id}/rules")
end
list_security_groups() click to toggle source
# File lib/fog/scaleway/requests/compute/list_security_groups.rb, line 5
def list_security_groups
  get('/security_groups')
end
list_server_actions(server_id) click to toggle source
# File lib/fog/scaleway/requests/compute/list_server_actions.rb, line 5
def list_server_actions(server_id)
  get("/servers/#{server_id}/action")
end
list_servers() click to toggle source
# File lib/fog/scaleway/requests/compute/list_servers.rb, line 5
def list_servers
  get('/servers')
end
list_snapshots() click to toggle source
# File lib/fog/scaleway/requests/compute/list_snapshots.rb, line 5
def list_snapshots
  get('/snapshots')
end
list_tasks() click to toggle source
# File lib/fog/scaleway/requests/compute/list_tasks.rb, line 5
def list_tasks
  get('tasks')
end
list_user_data(server_id) click to toggle source
# File lib/fog/scaleway/requests/compute/list_user_data.rb, line 5
def list_user_data(server_id)
  get("/servers/#{server_id}/user_data")
end
list_volumes() click to toggle source
# File lib/fog/scaleway/requests/compute/list_volumes.rb, line 5
def list_volumes
  get('/volumes')
end
request(params) click to toggle source
# File lib/fog/scaleway/compute.rb, line 127
def request(params)
  client.request(params)
rescue Excon::Errors::HTTPStatusError => error
  decoded = Fog::Scaleway::Errors.decode_error(error)
  raise if decoded.nil?

  type    = decoded[:type]
  message = decoded[:message]

  raise case type
        when 'invalid_request_error', 'invalid_auth', 'authorization_required', 'unknown_resource', 'conflict'
          Fog::Scaleway::Compute.const_get(camelize(type)).slurp(error, message)
        when 'api_error'
          Fog::Scaleway::Compute::APIError.slurp(error, message)
        else
          Fog::Scaleway::Compute::Error.slurp(error, message)
        end
end
update_image(image_id, body) click to toggle source
# File lib/fog/scaleway/requests/compute/update_image.rb, line 5
def update_image(image_id, body)
  update("/images/#{image_id}", body)
end
update_ip(ip_id, body) click to toggle source
# File lib/fog/scaleway/requests/compute/update_ip.rb, line 5
def update_ip(ip_id, body)
  update("/ips/#{ip_id}", body)
end
update_security_group(security_group_id, body) click to toggle source
# File lib/fog/scaleway/requests/compute/update_security_group.rb, line 5
def update_security_group(security_group_id, body)
  update("/security_groups/#{security_group_id}", body)
end
update_security_group_rule(security_group_id, rule_id, body) click to toggle source
# File lib/fog/scaleway/requests/compute/update_security_group_rule.rb, line 5
def update_security_group_rule(security_group_id, rule_id, body)
  update("/security_groups/#{security_group_id}/rules/#{rule_id}", body)
end
update_server(server_id, body) click to toggle source
# File lib/fog/scaleway/requests/compute/update_server.rb, line 5
def update_server(server_id, body)
  update("/servers/#{server_id}", body)
end
update_snapshot(snapshot_id, body) click to toggle source
# File lib/fog/scaleway/requests/compute/update_snapshot.rb, line 5
def update_snapshot(snapshot_id, body)
  update("/snapshots/#{snapshot_id}", body)
end
update_user_data(server_id, key, value) click to toggle source
# File lib/fog/scaleway/requests/compute/update_user_data.rb, line 5
def update_user_data(server_id, key, value)
  request(method: :patch,
          path: "/servers/#{server_id}/user_data/#{key}",
          headers: { 'Content-Type' => 'text/plain' },
          body: value,
          expects: [204])
end
update_volume(volume_id, body) click to toggle source
# File lib/fog/scaleway/requests/compute/update_volume.rb, line 5
def update_volume(volume_id, body)
  update("/volumes/#{volume_id}", body)
end

Private Instance Methods

camelize(str) click to toggle source
# File lib/fog/scaleway/compute.rb, line 156
def camelize(str)
  str.split('_').collect(&:capitalize).join
end
client() click to toggle source
# File lib/fog/scaleway/compute.rb, line 148
def client
  @client ||= Fog::Scaleway::Client.new(endpoint, @token, @connection_options)
end
endpoint() click to toggle source
# File lib/fog/scaleway/compute.rb, line 152
def endpoint
  "https://cp-#{@region}.scaleway.com"
end