diff --git a/lib/vagrant-libvirt/action/read_state.rb b/lib/vagrant-libvirt/action/read_state.rb index 4b06d3b..22d39c3 100644 --- a/lib/vagrant-libvirt/action/read_state.rb +++ b/lib/vagrant-libvirt/action/read_state.rb @@ -18,9 +18,15 @@ module VagrantPlugins def read_state(libvirt, machine) return :not_created if machine.id.nil? - + + begin + server = libvirt.servers.get(machine.id) + rescue Libvirt::RetrieveError => e + server = nil + @logger.debug('Machine not found #{e}.') + end # Find the machine - server = libvirt.servers.get(machine.id) + if server.nil? || [:'shutting-down', :terminated].include?(server.state.to_sym) # The machine can't be found @logger.info('Machine not found or terminated, assuming it got destroyed.') diff --git a/lib/vagrant-libvirt/action/set_name_of_domain.rb b/lib/vagrant-libvirt/action/set_name_of_domain.rb index a42e1eb..1aeffdf 100644 --- a/lib/vagrant-libvirt/action/set_name_of_domain.rb +++ b/lib/vagrant-libvirt/action/set_name_of_domain.rb @@ -21,10 +21,16 @@ module VagrantPlugins env[:domain_name] << '_' env[:domain_name] << env[:machine].name.to_s + begin @logger.info("Looking for domain #{env[:domain_name]} through list #{env[:libvirt_compute].servers.all}") # Check if the domain name is not already taken - domain = ProviderLibvirt::Util::Collection.find_matching( + + domain = ProviderLibvirt::Util::Collection.find_matching( env[:libvirt_compute].servers.all, env[:domain_name]) + rescue Fog::Errors::Error => e + @logger.info("#{e}") + domain = nil + end @logger.info("Looking for domain #{env[:domain_name]}")