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

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

Overview

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

Instance Attribute Summary collapse

Attributes inherited from Resource

#client

Instance Method Summary collapse

Methods inherited from Resource

#api_deserialize, #api_serialize, create_with, #destroy, #dump, #exists, #request_retry, #set_param

Constructor Details

#initialize(client, obj, wrapped = false) ⇒ Disk

Returns a new instance of Disk.

Parameters:



150
151
152
153
154
155
156
# File 'lib/saklient/cloud/resources/disk.rb', line 150

def initialize(client, obj, wrapped = false)
  super(client)
  Saklient::Util::validate_type(client, 'Saklient::Cloud::Client')
  Saklient::Util::validate_type(wrapped, 'bool')
  @_activity = Saklient::Cloud::Resources::DiskActivity.new(client)
  api_deserialize(obj, wrapped)
end

Instance Attribute Details

#activityDiskActivity (readonly)

アクティビティ

Returns:



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

def activity
  @activity
end

#availabilityString (readonly)

有効状態 Enums::EAvailability

Returns:

  • (String)


696
697
698
# File 'lib/saklient/cloud/resources/disk.rb', line 696

def availability
  @availability
end

#descriptionString

説明

Returns:

  • (String)


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

def description
  @description
end

#iconIcon

アイコン

Returns:



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

def icon
  @icon
end

#idString (readonly)

ID

Returns:

  • (String)


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

def id
  @id
end

#is_availablebool (readonly)

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

Returns:

  • (bool)


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

def is_available
  @is_available
end

#nameString

名前

Returns:

  • (String)


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

def name
  @name
end

#planDiskPlan

プラン

Returns:



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

def plan
  @plan
end

#serverServer

接続先のサーバ

Returns:



668
669
670
# File 'lib/saklient/cloud/resources/disk.rb', line 668

def server
  @server
end

#service_classString (readonly)

サービスクラス

Returns:

  • (String)


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

def service_class
  @service_class
end

#size_gibFixnum

Returns:

  • (Fixnum)


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

def size_gib
  @size_gib
end

#size_mibFixnum

Returns:

  • (Fixnum)


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

def size_mib
  @size_mib
end

#sourceResource

ディスクのコピー元

Returns:



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

def source
  @source
end

#tagsArray<String>

タグ文字列の配列

Returns:

  • (Array<String>)


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

def tags
  @tags
end

Instance Method Details

#_class_nameString

Returns:

  • (String)


99
100
101
# File 'lib/saklient/cloud/resources/disk.rb', line 99

def _class_name
  return 'Disk'
end

#_idString

Returns:

  • (String)


105
106
107
# File 'lib/saklient/cloud/resources/disk.rb', line 105

def _id
  return get_id
end

#connect_to(server) ⇒ Disk

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

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

#create_configDiskConfig

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

返り値のオブジェクトにパラメータを設定し, 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

#disconnectDisk

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

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

#get_activityDiskActivity

Returns:



133
134
135
# File 'lib/saklient/cloud/resources/disk.rb', line 133

def get_activity
  return @_activity
end

#get_sourceResource

Returns:



220
221
222
# File 'lib/saklient/cloud/resources/disk.rb', line 220

def get_source
  return @_source
end

#reloadDisk

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

Returns:



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

def reload
  return _reload
end

#saveDisk

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

Returns:



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

def save
  return _save
end

#set_source(source) ⇒ Resource

Parameters:

Returns:



227
228
229
230
231
# File 'lib/saklient/cloud/resources/disk.rb', line 227

def set_source(source)
  Saklient::Util::validate_type(source, 'Saklient::Cloud::Resources::Resource')
  @_source = source
  return source
end

#sleep_while_copying(timeoutSec = 3600) ⇒ bool

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

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