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
|
end
|
||||||
|
|
||||||
def call(env)
|
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)
|
domain = env[:machine].provider.driver.connection.servers.get(env[:machine].id.to_s)
|
||||||
raise Errors::NoDomainError if domain.nil?
|
if env[:machine].state.id == :running
|
||||||
|
env[:ui].info(I18n.t('vagrant_libvirt.halt_domain'))
|
||||||
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.')
|
|
||||||
domain.poweroff
|
domain.poweroff
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user