class VdlConnection
Constants
- MAX_DISK_WARN
Attributes
serverName[R]
vddk[R]
vdl_connection[R]
Public Class Methods
new(connect_parms, vddk)
click to toggle source
# File lib/VMwareWebService/VixDiskLib/vdl_wrapper.rb, line 91 def initialize(connect_parms, vddk) @serverName = connect_parms[:server_name] logger.info "VdlConnection.initialize: #{@serverName}" @vdl_connection = VixDiskLibApi.connect(connect_parms) @disks = [] @disk_lock = Sync.new @vddk = vddk end
Public Instance Methods
__close_disk__(diskObj)
click to toggle source
# File lib/VMwareWebService/VixDiskLib/vdl_wrapper.rb, line 144 def __close_disk__(diskObj) @disk_lock.sync_lock(:EX) if (unlock = !@disk_lock.sync_exclusive?) @vddk.running = true VixDiskLibApi.close(diskObj.handle) if !@vdl_connection logger.warn "VDLConnection.disconnect: server: #{@serverName} not connected" else @disks.delete(diskObj) nd = VdlWrapper.dec_server_disk_count logger.warn "VdlConnection.__close_disk__: #{@serverName} open disks = #{nd}" end ensure @disk_lock.sync_unlock if unlock end
disconnect()
click to toggle source
# File lib/VMwareWebService/VixDiskLib/vdl_wrapper.rb, line 100 def disconnect logger.info "VdlConnection.disconnect: #{@serverName}" @disk_lock.synchronize(:EX) do if !@vdl_connection logger.warn "VDLConnection.disconnect: server: #{@serverName} not connected" else __close_disks__ VdlWrapper.__disconnect__(self) @vdl_connection = nil @vddk.running = true @vddk.shutdown = true end end end
dumpDisks()
click to toggle source
# File lib/VMwareWebService/VixDiskLib/vdl_wrapper.rb, line 115 def dumpDisks raise VixDiskLibError, "VdlConnection.getDisk: server #{@serverName} not connected" unless @vdl_connection @vddk.running = true @disk_lock.sync_lock(:SH) if (unlock = !@disk_lock.sync_locked?) @disks.each do |d| logger.warn " VdlDisk: #{d.path}, opened: #{d.timeStamp}" end ensure @disk_lock.sync_unlock if unlock end
getDisk(path, flags)
click to toggle source
# File lib/VMwareWebService/VixDiskLib/vdl_wrapper.rb, line 126 def getDisk(path, flags) @disk_lock.synchronize(:EX) do raise VixDiskLibError, "VdlConnection.getDisk: server #{@serverName} not connected" unless @vdl_connection @vddk.running = true disk = VdlDisk.new(self, path, flags) @disks << disk nd = VdlWrapper.inc_server_disk_count logger.info "VdlConnection.getDisk: #{@serverName} open disks = #{nd}" if nd >= MAX_DISK_WARN logger.warn "VdlConnection::getDisk: connection to server: #{@serverName}" logger.warn "VdlConnection::getDisk: number of open disks = #{nd}" logger.warn "VdlConnection::getDisk: subsequent open calls may fail" VdlWrapper.dumpDisks(@serverName) end return disk end end
Private Instance Methods
__close_disks__()
click to toggle source
# File lib/VMwareWebService/VixDiskLib/vdl_wrapper.rb, line 160 def __close_disks__ raise VixDiskLibError, "VdlConnection::__close_disks__: exclusive disk lock not held" unless @disk_lock.sync_exclusive? if !@vdl_connection logger.warn "VDLConnection.disconnect: server: #{@serverName} not connected" else @disks.each(&:close) end end