mirror of
https://github.com/vagrant-libvirt/vagrant-libvirt.git
synced 2025-02-25 18:55:27 -06:00
Update HaltDomain action to only forcibly halt domain
This commit is contained in:
committed by
Darragh Bailey
parent
cf51e451a0
commit
32f69c5361
@@ -13,41 +13,9 @@ module VagrantPlugins
|
||||
end
|
||||
|
||||
def call(env)
|
||||
env[:ui].info(I18n.t('vagrant_libvirt.halt_domain'))
|
||||
|
||||
timeout = env[:machine].config.vm.graceful_halt_timeout
|
||||
domain = env[:machine].provider.driver.connection.servers.get(env[:machine].id.to_s)
|
||||
raise Errors::NoDomainError if domain.nil?
|
||||
|
||||
if env[:force_halt]
|
||||
domain.poweroff
|
||||
return @app.call(env)
|
||||
end
|
||||
|
||||
begin
|
||||
Timeout.timeout(timeout) do
|
||||
begin
|
||||
env[:machine].guest.capability(:halt)
|
||||
rescue Timeout::Error
|
||||
raise
|
||||
rescue
|
||||
@logger.info('Trying Libvirt graceful shutdown.')
|
||||
# Read domain object again
|
||||
dom = env[:machine].provider.driver.connection.servers.get(env[:machine].id.to_s)
|
||||
if dom.state.to_s == 'running'
|
||||
dom.shutdown
|
||||
end
|
||||
end
|
||||
|
||||
domain.wait_for(timeout) do
|
||||
!ready?
|
||||
end
|
||||
end
|
||||
rescue Timeout::Error
|
||||
@logger.info('VM is still running. Calling force poweroff.')
|
||||
domain.poweroff
|
||||
rescue
|
||||
@logger.error('Failed to shutdown cleanly. Calling force poweroff.')
|
||||
if env[:machine].state.id == :running
|
||||
env[:ui].info(I18n.t('vagrant_libvirt.halt_domain'))
|
||||
domain.poweroff
|
||||
end
|
||||
|
||||
|
||||
Reference in New Issue
Block a user