Class: Saklient::Cloud::Resources::Disk

Inherits:
Resource
  • Object
show all
Defined in:
lib/saklient/cloud/resources/disk.rb

Overview

ディスクの実体1つに対応し, 属性の取得や操作を行うためのクラス.

Instance Attribute Summary (collapse)

Instance Method Summary (collapse)

Instance Attribute Details

- (DiskActivity) activity (readonly)

アクティビティ

Returns:



140
141
142
# File 'lib/saklient/cloud/resources/disk.rb', line 140

def activity
  @activity
end

- (String) availability (readonly)

有効状態 Enums::EAvailability

Returns:

  • (String)


679
680
681
# File 'lib/saklient/cloud/resources/disk.rb', line 679

def availability
  @availability
end

- (String) description

説明

Returns:

  • (String)


440
441
442
# File 'lib/saklient/cloud/resources/disk.rb', line 440

def description
  @description
end

- (Icon) icon

アイコン

Returns:



521
522
523
# File 'lib/saklient/cloud/resources/disk.rb', line 521

def icon
  @icon
end

- (String) id (readonly)

ID

Returns:

  • (String)


364
365
366
# File 'lib/saklient/cloud/resources/disk.rb', line 364

def id
  @id
end

- (bool) is_available (readonly)

ディスクが利用可能なときtrueを返します.

Returns:

  • (bool)


171
172
173
# File 'lib/saklient/cloud/resources/disk.rb', line 171

def is_available
  @is_available
end

- (String) name

名前

Returns:

  • (String)


400
401
402
# File 'lib/saklient/cloud/resources/disk.rb', line 400

def name
  @name
end

- (DiskPlan) plan

プラン

Returns:



627
628
629
# File 'lib/saklient/cloud/resources/disk.rb', line 627

def plan
  @plan
end

- (Server) server (readonly)

接続先のサーバ

Returns:



655
656
657
# File 'lib/saklient/cloud/resources/disk.rb', line 655

def server
  @server
end

- (String) service_class (readonly)

サービスクラス

Returns:

  • (String)


590
591
592
# File 'lib/saklient/cloud/resources/disk.rb', line 590

def service_class
  @service_class
end

- (Fixnum) size_gib

Returns:

  • (Fixnum)


200
201
202
# File 'lib/saklient/cloud/resources/disk.rb', line 200

def size_gib
  @size_gib
end

- (Fixnum) size_mib

Returns:

  • (Fixnum)


562
563
564
# File 'lib/saklient/cloud/resources/disk.rb', line 562

def size_mib
  @size_mib
end

- (Resource) source

ディスクのコピー元

Returns:

  • (Resource)


236
237
238
# File 'lib/saklient/cloud/resources/disk.rb', line 236

def source
  @source
end

- (Array<String>) tags

タグ文字列の配列

Returns:

  • (Array<String>)


481
482
483
# File 'lib/saklient/cloud/resources/disk.rb', line 481

def tags
  @tags
end

Instance Method Details

- (Disk) connect_to(server)

ディスクをサーバに取り付けます.

Parameters:

Returns:



301
302
303
304
305
# File 'lib/saklient/cloud/resources/disk.rb', line 301

def connect_to(server)
  Saklient::Util::validate_type(server, 'Saklient::Cloud::Resources::Server')
  @_client.request('PUT', '/disk/' + _id + '/to/server/' + server._id)
  return self
end

- (DiskConfig) create_config

ディスク修正を行うためのオブジェクトを用意します.

返り値のオブジェクトにパラメータを設定し, write() を呼ぶことで修正を行います.

Returns:



320
321
322
# File 'lib/saklient/cloud/resources/disk.rb', line 320

def create_config
  return Saklient::Cloud::Resources::DiskConfig.new(@_client, _id)
end

- (Disk) disconnect

ディスクをサーバから取り外します.

Returns:



310
311
312
313
# File 'lib/saklient/cloud/resources/disk.rb', line 310

def disconnect
  @_client.request('DELETE', '/disk/' + _id + '/to/server')
  return self
end

- (Disk) reload

最新のリソース情報を再取得します.

Returns:



119
120
121
# File 'lib/saklient/cloud/resources/disk.rb', line 119

def reload
  return _reload
end

- (Disk) save

このローカルオブジェクトに現在設定されているリソース情報をAPIに送信し, 新規作成または上書き保存します.

Returns:



112
113
114
# File 'lib/saklient/cloud/resources/disk.rb', line 112

def save
  return _save
end

- (bool) sleep_while_copying(timeoutSec = 3600)

コピー中のディスクが利用可能になるまで待機します.

Parameters:

  • timeoutSec (Fixnum) (defaults to: 3600)

Returns:

  • (bool)

    成功時はtrue, タイムアウトやエラーによる失敗時はfalseを返します.



328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
# File 'lib/saklient/cloud/resources/disk.rb', line 328

def sleep_while_copying(timeoutSec = 3600)
  Saklient::Util::validate_type(timeoutSec, 'Fixnum')
  step = 10
  while 0 < timeoutSec do
    begin
      reload
    rescue Saklient::Errors::HttpException
      {}
    end
    a = get_availability
    return true if a == Saklient::Cloud::Enums::EAvailability::available
    timeoutSec = 0 if a != Saklient::Cloud::Enums::EAvailability::migrating
    timeoutSec -= step
    sleep(step) if 0 < timeoutSec
  end
  return false
end