Fix GH-8 by doing an extra check whether the VM is SSHable
This commit is contained in:
parent
24c1d3a8ac
commit
cfa2cc262f
1 changed files with 23 additions and 1 deletions
|
@ -1,3 +1,5 @@
|
||||||
|
require 'timeout'
|
||||||
|
|
||||||
module VagrantPlugins
|
module VagrantPlugins
|
||||||
module Cachier
|
module Cachier
|
||||||
class Action
|
class Action
|
||||||
|
@ -24,7 +26,27 @@ module VagrantPlugins
|
||||||
|
|
||||||
def should_remove_symlinks?
|
def should_remove_symlinks?
|
||||||
@logger.info 'Checking if cache symlinks should be removed'
|
@logger.info 'Checking if cache symlinks should be removed'
|
||||||
symlinks.any? && @machine.state.id == :running
|
symlinks.any? && @machine.state.id == :running && sshable?
|
||||||
|
end
|
||||||
|
|
||||||
|
def sshable?
|
||||||
|
# By default Vagrant will keep trying [1] to ssh connect to the VM for
|
||||||
|
# a long and we've got to prevent that from happening, so we just wait
|
||||||
|
# a few seconds and assume that the VM is halted / unresponsive and we
|
||||||
|
# carry on if it times out.
|
||||||
|
# [1] - https://github.com/mitchellh/vagrant/blob/57e95323b6600b146167f0f14f83b22dd31dd03f/plugins/communicators/ssh/communicator.rb#L185-L200
|
||||||
|
begin
|
||||||
|
Timeout.timeout(35) do
|
||||||
|
while true
|
||||||
|
return true if @machine.communicate.ready?
|
||||||
|
sleep 0.5
|
||||||
|
end
|
||||||
|
end
|
||||||
|
rescue Timeout::Error
|
||||||
|
# We timed out, we failed.
|
||||||
|
end
|
||||||
|
|
||||||
|
return false
|
||||||
end
|
end
|
||||||
|
|
||||||
def symlinks
|
def symlinks
|
||||||
|
|
Loading…
Reference in a new issue