class MotherBrain::LockManager
A registry of locks obtained against resources on a Chef
Server
Attributes
locks[R]
@return [Set<ChefMutex>]
Public Class Methods
instance()
click to toggle source
@raise [Celluloid::DeadActorError] if lock manager has not been started
@return [Celluloid::Actor(LockManager
)]
# File lib/mb/lock_manager.rb, line 8 def instance MB::Application[:lock_manager] or raise Celluloid::DeadActorError, "lock manager not running" end
new()
click to toggle source
# File lib/mb/lock_manager.rb, line 21 def initialize log.debug { "Lock Manager starting..." } @locks = Set.new end
Public Instance Methods
async_lock(environment)
click to toggle source
Asynchronously lock an environment
@param [String] environment
@return [MB::JobRecord]
# File lib/mb/lock_manager.rb, line 63 def async_lock(environment) job = Job.new(:lock) async(:lock, job, environment) job.ticket end
async_unlock(environment)
click to toggle source
Asynchronously unlock an environment
@param [String] environment
@return [MB::JobRecord]
# File lib/mb/lock_manager.rb, line 89 def async_unlock(environment) job = Job.new(:unlock) async(:unlock, job, environment) job.ticket end
find(options)
click to toggle source
Find a lock of the given name in the list of registered locks
@see ChefMutex#initialize
@return [ChefMutex, nil]
# File lib/mb/lock_manager.rb, line 31 def find(options) type, name = options.to_a.flatten locks.find { |mutex| mutex.type == type && mutex.name == name } end
lock(job, environment)
click to toggle source
Lock an environment
@param [MB::Job] job @param [String] environment
@return [Boolean]
# File lib/mb/lock_manager.rb, line 75 def lock(job, environment) ChefMutex.new( chef_environment: environment, force: true, job: job, report_job_status: true ).lock end
register(mutex)
click to toggle source
Register the given lock
@param [ChefMutex] mutex
# File lib/mb/lock_manager.rb, line 43 def register(mutex) locks.add(mutex) end
reset()
click to toggle source
# File lib/mb/lock_manager.rb, line 47 def reset self.locks.clear end
unlock(job, environment)
click to toggle source
Unlock an environment
@param [MB::Job] job @param [String] environment
@return [Boolean]
# File lib/mb/lock_manager.rb, line 101 def unlock(job, environment) ChefMutex.new( chef_environment: environment, force: true, job: job, report_job_status: true ).unlock end
unregister(mutex)
click to toggle source
Unregister the given lock
@param [ChefMutex] mutex
# File lib/mb/lock_manager.rb, line 54 def unregister(mutex) locks.delete(mutex) end
Private Instance Methods
finalize_callback()
click to toggle source
# File lib/mb/lock_manager.rb, line 112 def finalize_callback log.debug { "Lock Manager stopping..." } end