class Saklient::Cloud::Resources::Disk

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

Attributes

_activity[RW]

@private @return [DiskActivity]

_source[RW]

@private @return [Resource]

activity[R]

アクティビティ

@return [DiskActivity]

availability[R]

有効状態 {Saklient::Cloud::Enums::EAvailability}

@return [String]

description[RW]

説明

@return [String]

icon[RW]

アイコン

@return [Icon]

id[R]

ID

@return [String]

is_available[R]

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

@return [bool]

m_availability[RW]

有効状態 {Saklient::Cloud::Enums::EAvailability}

@return [String]

m_description[RW]

説明

@return [String]

m_icon[RW]

アイコン

@return [Icon]

m_id[RW]

ID

@return [String]

m_name[RW]

名前

@return [String]

m_plan[RW]

プラン

@return [DiskPlan]

m_server[RW]

接続先のサーバ

@return [Server]

m_service_class[RW]

サービスクラス

@return [String]

m_size_mib[RW]

サイズ

@return [Fixnum]

m_tags[RW]

タグ文字列の配列

@return [Array<String>]

n_availability[RW]

@return [bool]

n_description[RW]

@return [bool]

n_icon[RW]

@return [bool]

n_id[RW]

@return [bool]

n_name[RW]

@return [bool]

n_plan[RW]

@return [bool]

n_server[RW]

@return [bool]

n_service_class[RW]

@return [bool]

n_size_mib[RW]

@return [bool]

n_tags[RW]

@return [bool]

name[RW]

名前

@return [String]

plan[RW]

プラン

@return [DiskPlan]

server[RW]

接続先のサーバ

@return [Server]

service_class[R]

サービスクラス

@return [String]

size_gib[RW]

サイズ

@return [Fixnum]

size_mib[RW]

サイズ

@return [Fixnum]

source[RW]

ディスクのコピー元

@return [Resource]

tags[RW]

タグ文字列の配列

@return [Array<String>]

Public Class Methods

new(client, obj, wrapped = false) click to toggle source

@private @param [Saklient::Cloud::Client] client @param [any] obj @param [bool] wrapped

# File lib/saklient/cloud/resources/disk.rb, line 149
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

Public Instance Methods

_class_name() click to toggle source

@private @return [String]

# File lib/saklient/cloud/resources/disk.rb, line 98
def _class_name
  return 'Disk'
end
_id() click to toggle source

@private @return [String]

# File lib/saklient/cloud/resources/disk.rb, line 104
def _id
  return get_id
end
connect_to(server) click to toggle source

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

@param [Server] server @return [Disk] this

# File lib/saklient/cloud/resources/disk.rb, line 300
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_config() click to toggle source

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

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

@return [DiskConfig]

# File lib/saklient/cloud/resources/disk.rb, line 319
def create_config
  return Saklient::Cloud::Resources::DiskConfig.new(@_client, _id)
end
description=(v) click to toggle source
# File lib/saklient/cloud/resources/disk.rb, line 445
def description=(v)
  set_description(v)
end
disconnect() click to toggle source

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

@return [Disk] this

# File lib/saklient/cloud/resources/disk.rb, line 309
def disconnect
  @_client.request('DELETE', '/disk/' + _id + '/to/server')
  return self
end
get_activity() click to toggle source

@private @return [DiskActivity]

# File lib/saklient/cloud/resources/disk.rb, line 132
def get_activity
  return @_activity
end
get_source() click to toggle source

@private @return [Resource]

# File lib/saklient/cloud/resources/disk.rb, line 219
def get_source
  return @_source
end
icon=(v) click to toggle source
# File lib/saklient/cloud/resources/disk.rb, line 526
def icon=(v)
  set_icon(v)
end
name=(v) click to toggle source
# File lib/saklient/cloud/resources/disk.rb, line 405
def name=(v)
  set_name(v)
end
plan=(v) click to toggle source
# File lib/saklient/cloud/resources/disk.rb, line 632
def plan=(v)
  set_plan(v)
end
reload() click to toggle source

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

@return [Disk] this

# File lib/saklient/cloud/resources/disk.rb, line 118
def reload
  return _reload
end
save() click to toggle source

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

@return [Disk] this

# File lib/saklient/cloud/resources/disk.rb, line 111
def save
  return _save
end
server=(v) click to toggle source
# File lib/saklient/cloud/resources/disk.rb, line 673
def server=(v)
  set_server(v)
end
set_source(source) click to toggle source

@private @param [Resource] source @return [Resource]

# File lib/saklient/cloud/resources/disk.rb, line 226
def set_source(source)
  Saklient::Util::validate_type(source, 'Saklient::Cloud::Resources::Resource')
  @_source = source
  return source
end
size_gib=(v) click to toggle source
# File lib/saklient/cloud/resources/disk.rb, line 205
def size_gib=(v)
  set_size_gib(v)
end
size_mib=(v) click to toggle source
# File lib/saklient/cloud/resources/disk.rb, line 567
def size_mib=(v)
  set_size_mib(v)
end
sleep_while_copying(timeoutSec = 3600) click to toggle source

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

@param [Fixnum] timeoutSec @return [bool] 成功時はtrue, タイムアウトやエラーによる失敗時はfalseを返します.

# File lib/saklient/cloud/resources/disk.rb, line 327
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
source=(v) click to toggle source
# File lib/saklient/cloud/resources/disk.rb, line 241
def source=(v)
  set_source(v)
end
tags=(v) click to toggle source
# File lib/saklient/cloud/resources/disk.rb, line 486
def tags=(v)
  set_tags(v)
end

Protected Instance Methods

_api_path() click to toggle source

@private @return [String]

# File lib/saklient/cloud/resources/disk.rb, line 78
def _api_path
  return '/disk'
end
_on_after_api_deserialize(r, root) click to toggle source

@private @param [any] r @param [any] root @return [void]

# File lib/saklient/cloud/resources/disk.rb, line 251
def _on_after_api_deserialize(r, root)
  if !(r).nil?
    @_activity.set_source_id(_id)
    if !r.nil? && r.key?(:SourceDisk)
      s = r[:SourceDisk]
      if !(s).nil?
        id = s[:ID]
        @_source = Saklient::Cloud::Resources::Disk.new(@_client, s) if !(id).nil?
      end
    end
    if !r.nil? && r.key?(:SourceArchive)
      s = r[:SourceArchive]
      if !(s).nil?
        id = s[:ID]
        @_source = Saklient::Cloud::Resources::Resource::create_with('Archive', @_client, s) if !(id).nil?
      end
    end
  end
end
_on_after_api_serialize(r, withClean) click to toggle source

@private @param [any] r @param [bool] withClean @return [void]

# File lib/saklient/cloud/resources/disk.rb, line 275
def _on_after_api_serialize(r, withClean)
  Saklient::Util::validate_type(withClean, 'bool')
  return nil if (r).nil?
  if !(@_source).nil?
    if @_source._class_name == 'Disk'
      s = withClean ? @_source.api_serialize(true) : { ID: @_source._id }
      r[:SourceDisk] = s
    else
      if @_source._class_name == 'Archive'
        s = withClean ? @_source.api_serialize(true) : { ID: @_source._id }
        r[:SourceArchive] = s
      else
        @_source = nil
        Saklient::Util::validate_type(@_source, 'Disk or Archive', true)
      end
    end
  end
end
_root_key() click to toggle source

@private @return [String]

# File lib/saklient/cloud/resources/disk.rb, line 84
def _root_key
  return 'Disk'
end
_root_key_m() click to toggle source

@private @return [String]

# File lib/saklient/cloud/resources/disk.rb, line 90
def _root_key_m
  return 'Disks'
end
api_deserialize_impl(r) click to toggle source

(This method is generated in Translator_default#buildImpl)

@param [any] r

# File lib/saklient/cloud/resources/disk.rb, line 706
def api_deserialize_impl(r)
  @is_new = (r).nil?
  r = {} if @is_new
  @is_incomplete = false
  if Saklient::Util::exists_path(r, 'ID')
    @m_id = (Saklient::Util::get_by_path(r, 'ID')).nil? ? nil : Saklient::Util::get_by_path(r, 'ID').to_s
  else
    @m_id = nil
    @is_incomplete = true
  end
  @n_id = false
  if Saklient::Util::exists_path(r, 'Name')
    @m_name = (Saklient::Util::get_by_path(r, 'Name')).nil? ? nil : Saklient::Util::get_by_path(r, 'Name').to_s
  else
    @m_name = nil
    @is_incomplete = true
  end
  @n_name = false
  if Saklient::Util::exists_path(r, 'Description')
    @m_description = (Saklient::Util::get_by_path(r, 'Description')).nil? ? nil : Saklient::Util::get_by_path(r, 'Description').to_s
  else
    @m_description = nil
    @is_incomplete = true
  end
  @n_description = false
  if Saklient::Util::exists_path(r, 'Tags')
    if (Saklient::Util::get_by_path(r, 'Tags')).nil?
      @m_tags = []
    else
      @m_tags = []
      for t in Saklient::Util::get_by_path(r, 'Tags')
        v1 = nil
        v1 = (t).nil? ? nil : t.to_s
        @m_tags << v1
      end
    end
  else
    @m_tags = nil
    @is_incomplete = true
  end
  @n_tags = false
  if Saklient::Util::exists_path(r, 'Icon')
    @m_icon = (Saklient::Util::get_by_path(r, 'Icon')).nil? ? nil : Saklient::Cloud::Resources::Icon.new(@_client, Saklient::Util::get_by_path(r, 'Icon'))
  else
    @m_icon = nil
    @is_incomplete = true
  end
  @n_icon = false
  if Saklient::Util::exists_path(r, 'SizeMB')
    @m_size_mib = (Saklient::Util::get_by_path(r, 'SizeMB')).nil? ? nil : (Saklient::Util::get_by_path(r, 'SizeMB').to_s).to_s().to_i(10)
  else
    @m_size_mib = nil
    @is_incomplete = true
  end
  @n_size_mib = false
  if Saklient::Util::exists_path(r, 'ServiceClass')
    @m_service_class = (Saklient::Util::get_by_path(r, 'ServiceClass')).nil? ? nil : Saklient::Util::get_by_path(r, 'ServiceClass').to_s
  else
    @m_service_class = nil
    @is_incomplete = true
  end
  @n_service_class = false
  if Saklient::Util::exists_path(r, 'Plan')
    @m_plan = (Saklient::Util::get_by_path(r, 'Plan')).nil? ? nil : Saklient::Cloud::Resources::DiskPlan.new(@_client, Saklient::Util::get_by_path(r, 'Plan'))
  else
    @m_plan = nil
    @is_incomplete = true
  end
  @n_plan = false
  if Saklient::Util::exists_path(r, 'Server')
    @m_server = (Saklient::Util::get_by_path(r, 'Server')).nil? ? nil : Saklient::Cloud::Resources::Server.new(@_client, Saklient::Util::get_by_path(r, 'Server'))
  else
    @m_server = nil
    @is_incomplete = true
  end
  @n_server = false
  if Saklient::Util::exists_path(r, 'Availability')
    @m_availability = (Saklient::Util::get_by_path(r, 'Availability')).nil? ? nil : Saklient::Util::get_by_path(r, 'Availability').to_s
  else
    @m_availability = nil
    @is_incomplete = true
  end
  @n_availability = false
end
api_serialize_impl(withClean = false) click to toggle source

@private @param [bool] withClean @return [any]

# File lib/saklient/cloud/resources/disk.rb, line 794
def api_serialize_impl(withClean = false)
  Saklient::Util::validate_type(withClean, 'bool')
  missing = []
  ret = {}
  Saklient::Util::set_by_path(ret, 'ID', @m_id) if withClean || @n_id
  if withClean || @n_name
    Saklient::Util::set_by_path(ret, 'Name', @m_name)
  else
    missing << 'name' if @is_new
  end
  Saklient::Util::set_by_path(ret, 'Description', @m_description) if withClean || @n_description
  if withClean || @n_tags
    Saklient::Util::set_by_path(ret, 'Tags', [])
    for r1 in @m_tags
      v = nil
      v = r1
      ret[:Tags] << v
    end
  end
  Saklient::Util::set_by_path(ret, 'Icon', withClean ? ((@m_icon).nil? ? nil : @m_icon.api_serialize(withClean)) : ((@m_icon).nil? ? { ID: '0' } : @m_icon.api_serialize_id)) if withClean || @n_icon
  Saklient::Util::set_by_path(ret, 'SizeMB', @m_size_mib) if withClean || @n_size_mib
  Saklient::Util::set_by_path(ret, 'ServiceClass', @m_service_class) if withClean || @n_service_class
  if withClean || @n_plan
    Saklient::Util::set_by_path(ret, 'Plan', withClean ? ((@m_plan).nil? ? nil : @m_plan.api_serialize(withClean)) : ((@m_plan).nil? ? { ID: '0' } : @m_plan.api_serialize_id))
  else
    missing << 'plan' if @is_new
  end
  Saklient::Util::set_by_path(ret, 'Server', withClean ? ((@m_server).nil? ? nil : @m_server.api_serialize(withClean)) : ((@m_server).nil? ? { ID: '0' } : @m_server.api_serialize_id)) if withClean || @n_server
  Saklient::Util::set_by_path(ret, 'Availability', @m_availability) if withClean || @n_availability
  raise Saklient::Errors::SaklientException.new('required_field', 'Required fields must be set before the Disk creation: ' + missing.join(', ')) if missing.length > 0
  return ret
end
get_availability() click to toggle source

(This method is generated in Translator_default#buildImpl)

@private @return [String]

# File lib/saklient/cloud/resources/disk.rb, line 686
def get_availability
  return @m_availability
end
get_description() click to toggle source

(This method is generated in Translator_default#buildImpl)

@private @return [String]

# File lib/saklient/cloud/resources/disk.rb, line 418
def get_description
  return @m_description
end
get_icon() click to toggle source

(This method is generated in Translator_default#buildImpl)

@private @return [Icon]

# File lib/saklient/cloud/resources/disk.rb, line 499
def get_icon
  return @m_icon
end
get_id() click to toggle source

(This method is generated in Translator_default#buildImpl)

@private @return [String]

# File lib/saklient/cloud/resources/disk.rb, line 354
def get_id
  return @m_id
end
get_is_available() click to toggle source

@private @return [bool]

# File lib/saklient/cloud/resources/disk.rb, line 161
def get_is_available
  return get_availability == Saklient::Cloud::Enums::EAvailability::available
end
get_name() click to toggle source

(This method is generated in Translator_default#buildImpl)

@private @return [String]

# File lib/saklient/cloud/resources/disk.rb, line 378
def get_name
  return @m_name
end
get_plan() click to toggle source

(This method is generated in Translator_default#buildImpl)

@private @return [DiskPlan]

# File lib/saklient/cloud/resources/disk.rb, line 604
def get_plan
  return @m_plan
end
get_server() click to toggle source

(This method is generated in Translator_default#buildImpl)

@private @return [Server]

# File lib/saklient/cloud/resources/disk.rb, line 645
def get_server
  return @m_server
end
get_service_class() click to toggle source

(This method is generated in Translator_default#buildImpl)

@private @return [String]

# File lib/saklient/cloud/resources/disk.rb, line 580
def get_service_class
  return @m_service_class
end
get_size_gib() click to toggle source

@private @return [Fixnum]

# File lib/saklient/cloud/resources/disk.rb, line 180
def get_size_gib
  sizeMib = get_size_mib
  return (sizeMib).nil? ? nil : sizeMib >> 10
end
get_size_mib() click to toggle source

(This method is generated in Translator_default#buildImpl)

@private @return [Fixnum]

# File lib/saklient/cloud/resources/disk.rb, line 539
def get_size_mib
  return @m_size_mib
end
get_tags() click to toggle source

(This method is generated in Translator_default#buildImpl)

@private @return [Array<String>]

# File lib/saklient/cloud/resources/disk.rb, line 458
def get_tags
  @n_tags = true
  return @m_tags
end
set_description(v) click to toggle source

(This method is generated in Translator_default#buildImpl)

@private @param [String] v @return [String]

# File lib/saklient/cloud/resources/disk.rb, line 427
def set_description(v)
  Saklient::Util::validate_type(v, 'String')
  @m_description = v
  @n_description = true
  return @m_description
end
set_icon(v) click to toggle source

(This method is generated in Translator_default#buildImpl)

@private @param [Icon] v @return [Icon]

# File lib/saklient/cloud/resources/disk.rb, line 508
def set_icon(v)
  Saklient::Util::validate_type(v, 'Saklient::Cloud::Resources::Icon')
  @m_icon = v
  @n_icon = true
  return @m_icon
end
set_name(v) click to toggle source

(This method is generated in Translator_default#buildImpl)

@private @param [String] v @return [String]

# File lib/saklient/cloud/resources/disk.rb, line 387
def set_name(v)
  Saklient::Util::validate_type(v, 'String')
  @m_name = v
  @n_name = true
  return @m_name
end
set_plan(v) click to toggle source

(This method is generated in Translator_default#buildImpl)

@private @param [DiskPlan] v @return [DiskPlan]

# File lib/saklient/cloud/resources/disk.rb, line 613
def set_plan(v)
  Saklient::Util::validate_type(v, 'Saklient::Cloud::Resources::DiskPlan')
  raise Saklient::Errors::SaklientException.new('immutable_field', 'Immutable fields cannot be modified after the resource creation: ' + 'Saklient::Cloud::Resources::Disk#plan') if !@is_new
  @m_plan = v
  @n_plan = true
  return @m_plan
end
set_server(v) click to toggle source

(This method is generated in Translator_default#buildImpl)

@private @param [Server] v @return [Server]

# File lib/saklient/cloud/resources/disk.rb, line 654
def set_server(v)
  Saklient::Util::validate_type(v, 'Saklient::Cloud::Resources::Server')
  raise Saklient::Errors::SaklientException.new('immutable_field', 'Immutable fields cannot be modified after the resource creation: ' + 'Saklient::Cloud::Resources::Disk#server') if !@is_new
  @m_server = v
  @n_server = true
  return @m_server
end
set_size_gib(sizeGib) click to toggle source

@private @param [Fixnum] sizeGib @return [Fixnum]

# File lib/saklient/cloud/resources/disk.rb, line 188
def set_size_gib(sizeGib)
  Saklient::Util::validate_type(sizeGib, 'Fixnum')
  set_size_mib((sizeGib).nil? ? nil : sizeGib * 1024)
  return sizeGib
end
set_size_mib(v) click to toggle source

(This method is generated in Translator_default#buildImpl)

@private @param [Fixnum] v @return [Fixnum]

# File lib/saklient/cloud/resources/disk.rb, line 548
def set_size_mib(v)
  Saklient::Util::validate_type(v, 'Fixnum')
  raise Saklient::Errors::SaklientException.new('immutable_field', 'Immutable fields cannot be modified after the resource creation: ' + 'Saklient::Cloud::Resources::Disk#size_mib') if !@is_new
  @m_size_mib = v
  @n_size_mib = true
  return @m_size_mib
end
set_tags(v) click to toggle source

(This method is generated in Translator_default#buildImpl)

@private @param [Array<String>] v @return [Array<String>]

# File lib/saklient/cloud/resources/disk.rb, line 468
def set_tags(v)
  Saklient::Util::validate_type(v, 'Array')
  @m_tags = v
  @n_tags = true
  return @m_tags
end