Class: Fog::Volume::SakuraCloud::Real

Inherits:
Object
  • Object
show all
Defined in:
lib/fog/sakuracloud/volume.rb,
lib/fog/sakuracloud/requests/volume/list_disks.rb,
lib/fog/sakuracloud/requests/volume/list_plans.rb,
lib/fog/sakuracloud/requests/volume/attach_disk.rb,
lib/fog/sakuracloud/requests/volume/create_disk.rb,
lib/fog/sakuracloud/requests/volume/delete_disk.rb,
lib/fog/sakuracloud/requests/volume/list_archives.rb,
lib/fog/sakuracloud/requests/volume/configure_disk.rb

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ Real

Returns a new instance of Real.



31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/fog/sakuracloud/volume.rb', line 31

def initialize(options = {})
  @auth_encord = 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

Instance Method Details

#attach_disk(disk_id, server_id) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
# File 'lib/fog/sakuracloud/requests/volume/attach_disk.rb', line 8

def attach_disk( disk_id, server_id )

  request(
    :headers => {
      'Authorization' => "Basic #{@auth_encord}"
    },
    :expects  => [200],
    :method => 'PUT',
    :path => "#{Fog::SakuraCloud::SAKURACLOUD_API_ENDPOINT}/disk/#{disk_id.to_s}/to/server/#{server_id.to_s}"
  )
end

#configure_disk(disk_id, sshkey_id) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/fog/sakuracloud/requests/volume/configure_disk.rb', line 8

def configure_disk( disk_id, sshkey_id )
  body = {
    "SSHKey" => {"ID" => sshkey_id.to_s }
  }

  request(
    :headers => {
      'Authorization' => "Basic #{@auth_encord}"
    },
    :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, sourcearchive) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/fog/sakuracloud/requests/volume/create_disk.rb', line 8

def create_disk( name, plan, sourcearchive )
  body = {
   "Disk" => {
     "Name" => name,
     "SourceArchive" => {
       "ID" => sourcearchive.to_s
      },
      "Plan" => {
        "ID" => plan.to_i
      }
    }
  }

  request(
    :headers => {
      'Authorization' => "Basic #{@auth_encord}"
    },
    :expects  => [202],
    :method => 'POST',
    :path => "#{Fog::SakuraCloud::SAKURACLOUD_API_ENDPOINT}/disk",
    :body => Fog::JSON.encode(body)
  )
end

#delete_disk(id) ⇒ Object



8
9
10
11
12
13
14
15
16
17
# File 'lib/fog/sakuracloud/requests/volume/delete_disk.rb', line 8

def delete_disk( id )
  request(
    :headers => {
      'Authorization' => "Basic #{@auth_encord}"
    },
    :expects  => [200],
    :method => 'DELETE',
    :path => "#{Fog::SakuraCloud::SAKURACLOUD_API_ENDPOINT}/disk/#{id}"
  )
end

#list_archives(options = {}) ⇒ Object



7
8
9
10
11
12
13
14
15
# File 'lib/fog/sakuracloud/requests/volume/list_archives.rb', line 7

def list_archives(options = {})
  request(
    :headers => {
      'Authorization' => "Basic #{@auth_encord}"
    },
    :method => 'GET',
    :path => "#{Fog::SakuraCloud::SAKURACLOUD_API_ENDPOINT}/archive"
  )
end

#list_disks(options = {}) ⇒ Object



7
8
9
10
11
12
13
14
15
# File 'lib/fog/sakuracloud/requests/volume/list_disks.rb', line 7

def list_disks(options = {})
  request(
    :headers => {
      'Authorization' => "Basic #{@auth_encord}"
    },
    :method => 'GET',
    :path => "#{Fog::SakuraCloud::SAKURACLOUD_API_ENDPOINT}/disk"
  )
end

#list_plans(options = {}) ⇒ Object



7
8
9
10
11
12
13
14
15
# File 'lib/fog/sakuracloud/requests/volume/list_plans.rb', line 7

def list_plans(options = {})
  request(
    :headers => {
      'Authorization' => "Basic #{@auth_encord}"
    },
    :method => 'GET',
    :path => "#{Fog::SakuraCloud::SAKURACLOUD_API_ENDPOINT}/product/disk"
  )
end

#request(params) ⇒ Object



44
45
46
47
# File 'lib/fog/sakuracloud/volume.rb', line 44

def request(params)
  response = parse @connection.request(params)
  response
end