class Fog::Volume::SakuraCloud::Real

Public Class Methods

new(options = {}) click to toggle source
# File lib/fog/sakuracloud/volume.rb, line 30
def initialize(options = {})
  @auth_encode = Base64.strict_encode64([
    options[:sakuracloud_api_token],
    options[:sakuracloud_api_token_secret]
  ].join(':'))
  Fog.credentials[:sakuracloud_api_token]        = options[:sakuracloud_api_token]
  Fog.credentials[:sakuracloud_api_token_secret] = options[:sakuracloud_api_token_secret]

  @sakuracloud_api_url = options[:sakuracloud_api_url] || 'https://secure.sakura.ad.jp'

  @connection = Fog::Core::Connection.new(@sakuracloud_api_url)
end

Public Instance Methods

associate_ip_to_disk( disk_id, subnet ) click to toggle source
# File lib/fog/sakuracloud/requests/volume/associate_ip_to_disk.rb, line 6
def associate_ip_to_disk( disk_id, subnet )
  body = {
    "UserIPAddress" => subnet[:ipaddress],
    "UserSubnet" => {
      "NetworkMaskLen" => subnet[:networkmasklen],
      "DefaultRoute" => subnet[:defaultroute]
    }
  }

  request(
    :headers => {
      'Authorization' => "Basic #{@auth_encode}"
    },
    :expects  => [200],
    :method => 'PUT',
    :path => "#{Fog::SakuraCloud::SAKURACLOUD_API_ENDPOINT}/disk/#{disk_id.to_s}/config",
    :body => Fog::JSON.encode(body)
  )
end
attach_disk( disk_id, server_id ) click to toggle source
# File lib/fog/sakuracloud/requests/volume/attach_disk.rb, line 6
def attach_disk( disk_id, server_id )
  request(
    :headers => {
      'Authorization' => "Basic #{@auth_encode}"
    },
    :expects  => [200],
    :method => 'PUT',
    :path => "#{Fog::SakuraCloud::SAKURACLOUD_API_ENDPOINT}/disk/#{disk_id.to_s}/to/server/#{server_id.to_s}"
  )
end
carve_hostname_on_disk( disk_id, hostname ) click to toggle source
# File lib/fog/sakuracloud/requests/volume/carve_hostname_on_disk.rb, line 6
def carve_hostname_on_disk( disk_id, hostname )
  body = {
    "HostName" => hostname
  }

  request(
    :headers => {
      'Authorization' => "Basic #{@auth_encode}"
    },
    :expects  => [200],
    :method => 'PUT',
    :path => "#{Fog::SakuraCloud::SAKURACLOUD_API_ENDPOINT}/disk/#{disk_id.to_s}/config",
    :body => Fog::JSON.encode(body)
  )
end
configure_disk( disk_id, sshkey_id ) click to toggle source
# File lib/fog/sakuracloud/requests/volume/configure_disk.rb, line 6
def configure_disk( disk_id, sshkey_id )
  body = {
    "SSHKey" => {"ID" => sshkey_id.to_s }
  }

  request(
    :headers => {
      'Authorization' => "Basic #{@auth_encode}"
    },
    :expects  => [200],
    :method => 'PUT',
    :path => "#{Fog::SakuraCloud::SAKURACLOUD_API_ENDPOINT}/disk/#{disk_id.to_s}/config",
    :body => Fog::JSON.encode(body)
  )
end
create_disk( name, plan, options = {} ) click to toggle source
# File lib/fog/sakuracloud/requests/volume/create_disk.rb, line 6
def create_disk( name, plan, options = {} )
  body = { "Disk" => { "Name" => name, "Plan" => { "ID" => plan.to_i } } }

  if !options[:source_archive].nil?
    body["Disk"]["SourceArchive"] = { "ID"=>options[:source_archive].to_s }
  end

  if !options[:size_mb].nil?
    body["Disk"]["SizeMB"] = options[:size_mb].to_i
  end

  request(
    :headers => {
      'Authorization' => "Basic #{@auth_encode}"
    },
    :expects  => [201, 202],
    :method => 'POST',
    :path => "#{Fog::SakuraCloud::SAKURACLOUD_API_ENDPOINT}/disk",
    :body => Fog::JSON.encode(body)
  )
end
delete_disk( id ) click to toggle source
# File lib/fog/sakuracloud/requests/volume/delete_disk.rb, line 6
def delete_disk( id )
  request(
    :headers => {
      'Authorization' => "Basic #{@auth_encode}"
    },
    :expects  => [200],
    :method => 'DELETE',
    :path => "#{Fog::SakuraCloud::SAKURACLOUD_API_ENDPOINT}/disk/#{id}"
  )
end
list_archives(options = {}) click to toggle source
# File lib/fog/sakuracloud/requests/volume/list_archives.rb, line 6
def list_archives(options = {})
  request(
    :headers => {
      'Authorization' => "Basic #{@auth_encode}"
    },
    :method => 'GET',
    :path => "#{Fog::SakuraCloud::SAKURACLOUD_API_ENDPOINT}/archive"
  )
end
list_disks(options = {}) click to toggle source
# File lib/fog/sakuracloud/requests/volume/list_disks.rb, line 6
def list_disks(options = {})
  request(
    :headers => {
      'Authorization' => "Basic #{@auth_encode}"
    },
    :method => 'GET',
    :path => "#{Fog::SakuraCloud::SAKURACLOUD_API_ENDPOINT}/disk"
  )
end
list_plans(options = {}) click to toggle source
# File lib/fog/sakuracloud/requests/volume/list_plans.rb, line 6
def list_plans(options = {})
  request(
    :headers => {
      'Authorization' => "Basic #{@auth_encode}"
    },
    :method => 'GET',
    :path => "#{Fog::SakuraCloud::SAKURACLOUD_API_ENDPOINT}/product/disk"
  )
end
register_note_to_disk( disk_id, notes ) click to toggle source
# File lib/fog/sakuracloud/requests/volume/register_note_to_disk.rb, line 6
def register_note_to_disk( disk_id, notes )
  body = {
    "Notes" => notes.map {|note| { "ID" => note }}
  }

  request(
    :headers => {
      'Authorization' => "Basic #{@auth_encode}"
    },
    :expects  => [200],
    :method => 'PUT',
    :path => "#{Fog::SakuraCloud::SAKURACLOUD_API_ENDPOINT}/disk/#{disk_id.to_s}/config",
    :body => Fog::JSON.encode(body)
  )
end
request(params) click to toggle source
# File lib/fog/sakuracloud/volume.rb, line 43
def request(params)
  response = parse @connection.request(params)
  response
end

Private Instance Methods

parse(response) click to toggle source
# File lib/fog/sakuracloud/volume.rb, line 49
def parse(response)
  return response if response.body.empty?
  response.body = Fog::JSON.decode(response.body)
  response
end