Class: VSphereCloud::DrsLock

Inherits:
Object
  • Object
show all
Includes:
RetryBlock
Defined in:
lib/cloud/vsphere/drs_rules/drs_lock.rb

Defined Under Namespace

Classes: LockError

Constant Summary collapse

DRS_LOCK_NAME =
'drs_lock'
MAX_LOCK_TIMEOUT_IN_SECONDS =
30

Instance Method Summary collapse

Methods included from RetryBlock

#retry_block, #retry_with_timeout

Constructor Details

#initialize(vm_attribute_manager, logger) ⇒ DrsLock

Returns a new instance of DrsLock.



10
11
12
13
# File 'lib/cloud/vsphere/drs_rules/drs_lock.rb', line 10

def initialize(vm_attribute_manager, logger)
  @vm_attribute_manager = vm_attribute_manager
  @logger = logger
end

Instance Method Details

#with_drs_lockObject



15
16
17
18
19
20
21
22
23
24
25
# File 'lib/cloud/vsphere/drs_rules/drs_lock.rb', line 15

def with_drs_lock
  acquire_lock
  @logger.debug('Acquired drs lock')
  # Ensure to release the lock only after it is successfully acquired
  begin
    yield
  ensure
    @logger.debug('Releasing drs lock')
    release_lock
  end
end