core: add option to not lock for Machine#action [GH-4574]
This commit is contained in:
parent
adf7c17e65
commit
7b5e5668c5
|
@ -88,6 +88,8 @@ BUG FIXES:
|
||||||
|
|
||||||
PLUGIN AUTHOR CHANGES:
|
PLUGIN AUTHOR CHANGES:
|
||||||
|
|
||||||
|
- `Machine#action` can be called with the option `lock: false` to not
|
||||||
|
acquire a machine lock.
|
||||||
- `Machine#reload` will now properly trigger the `machine_id_changed`
|
- `Machine#reload` will now properly trigger the `machine_id_changed`
|
||||||
callback on providers.
|
callback on providers.
|
||||||
|
|
||||||
|
|
|
@ -144,9 +144,12 @@ module Vagrant
|
||||||
# @param [Hash] extra_env This data will be passed into the action runner
|
# @param [Hash] extra_env This data will be passed into the action runner
|
||||||
# as extra data set on the environment hash for the middleware
|
# as extra data set on the environment hash for the middleware
|
||||||
# runner.
|
# runner.
|
||||||
def action(name, extra_env=nil)
|
def action(name, extra_env=nil, **opts)
|
||||||
@logger.info("Calling action: #{name} on provider #{@provider}")
|
@logger.info("Calling action: #{name} on provider #{@provider}")
|
||||||
|
|
||||||
|
# Default to locking
|
||||||
|
opts[:lock] = true if !opts.has_key?(:lock)
|
||||||
|
|
||||||
# Create a deterministic ID for this machine
|
# Create a deterministic ID for this machine
|
||||||
vf = nil
|
vf = nil
|
||||||
vf = @env.vagrantfile_name[0] if @env.vagrantfile_name
|
vf = @env.vagrantfile_name[0] if @env.vagrantfile_name
|
||||||
|
@ -157,7 +160,7 @@ module Vagrant
|
||||||
# we will want to do more fine-grained unlocking in actions themselves
|
# we will want to do more fine-grained unlocking in actions themselves
|
||||||
# but for a 1.6.2 release this will work.
|
# but for a 1.6.2 release this will work.
|
||||||
locker = Proc.new { |*args, &block| block.call }
|
locker = Proc.new { |*args, &block| block.call }
|
||||||
locker = @env.method(:lock) if !name.to_s.start_with?("ssh")
|
locker = @env.method(:lock) if opts[:lock] && !name.to_s.start_with?("ssh")
|
||||||
|
|
||||||
# Lock this machine for the duration of this action
|
# Lock this machine for the duration of this action
|
||||||
locker.call("machine-action-#{id}") do
|
locker.call("machine-action-#{id}") do
|
||||||
|
|
Loading…
Reference in New Issue