class Saklient::Cloud::Resources::Disk
ディスクの実体1つに対応し, 属性の取得や操作を行うためのクラス.
Attributes
@private @return [DiskActivity]
@private @return [Resource]
アクティビティ
@return [DiskActivity]
有効状態 {Saklient::Cloud::Enums::EAvailability}
@return [String]
説明
@return [String]
アイコン
@return [Icon]
ID
@return [String]
ディスクが利用可能なときtrueを返します.
@return [bool]
有効状態 {Saklient::Cloud::Enums::EAvailability}
@return [String]
説明
@return [String]
アイコン
@return [Icon]
ID
@return [String]
名前
@return [String]
プラン
@return [DiskPlan]
接続先のサーバ
@return [Server]
サービスクラス
@return [String]
@return [Fixnum]
@return [bool]
@return [bool]
@return [bool]
@return [bool]
@return [bool]
@return [bool]
@return [bool]
@return [bool]
@return [bool]
名前
@return [String]
プラン
@return [DiskPlan]
接続先のサーバ
@return [Server]
サービスクラス
@return [String]
@return [Fixnum]
@return [Fixnum]
ディスクのコピー元
@return [Resource]
Public Class Methods
@private @param [Saklient::Cloud::Client] client @param [any] obj @param [bool] wrapped
Saklient::Cloud::Resources::Resource::new
# 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
@private @return [String]
# File lib/saklient/cloud/resources/disk.rb, line 98 def _class_name return 'Disk' end
@private @return [String]
# File lib/saklient/cloud/resources/disk.rb, line 104 def _id return get_id end
ディスクをサーバに取り付けます.
@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
ディスク修正を行うためのオブジェクトを用意します.
返り値のオブジェクトにパラメータを設定し, write() を呼ぶことで修正を行います.
@return [DiskConfig]
# File lib/saklient/cloud/resources/disk.rb, line 319 def create_config return Saklient::Cloud::Resources::DiskConfig.new(@_client, _id) end
# File lib/saklient/cloud/resources/disk.rb, line 445 def description=(v) set_description(v) end
ディスクをサーバから取り外します.
@return [Disk] this
# File lib/saklient/cloud/resources/disk.rb, line 309 def disconnect @_client.request('DELETE', '/disk/' + _id + '/to/server') return self end
@private @return [DiskActivity]
# File lib/saklient/cloud/resources/disk.rb, line 132 def get_activity return @_activity end
@private @return [Resource]
# File lib/saklient/cloud/resources/disk.rb, line 219 def get_source return @_source end
# File lib/saklient/cloud/resources/disk.rb, line 526 def icon=(v) set_icon(v) end
# File lib/saklient/cloud/resources/disk.rb, line 405 def name=(v) set_name(v) end
# File lib/saklient/cloud/resources/disk.rb, line 632 def plan=(v) set_plan(v) end
最新のリソース情報を再取得します.
@return [Disk] this
# File lib/saklient/cloud/resources/disk.rb, line 118 def reload return _reload end
このローカルオブジェクトに現在設定されているリソース情報をAPIに送信し, 新規作成または上書き保存します.
@return [Disk] this
# File lib/saklient/cloud/resources/disk.rb, line 111 def save return _save end
# File lib/saklient/cloud/resources/disk.rb, line 673 def server=(v) set_server(v) end
@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
# File lib/saklient/cloud/resources/disk.rb, line 205 def size_gib=(v) set_size_gib(v) end
# File lib/saklient/cloud/resources/disk.rb, line 567 def size_mib=(v) set_size_mib(v) end
コピー中のディスクが利用可能になるまで待機します.
@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
# File lib/saklient/cloud/resources/disk.rb, line 241 def source=(v) set_source(v) end
Protected Instance Methods
@private @return [String]
# File lib/saklient/cloud/resources/disk.rb, line 78 def _api_path return '/disk' end
@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
@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
@private @return [String]
# File lib/saklient/cloud/resources/disk.rb, line 84 def _root_key return 'Disk' end
@private @return [String]
# File lib/saklient/cloud/resources/disk.rb, line 90 def _root_key_m return 'Disks' end
(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
@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
(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
(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
(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
(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
@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
(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
(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
(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
(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
@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
(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
(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
(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
(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
(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
(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
@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
(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