mirror of
https://github.com/vagrant-libvirt/vagrant-libvirt.git
synced 2025-02-25 18:55:27 -06:00
Fix list networks being read-only (#1651)
Change driver list of networks returned to only be read-only when using qemu session, to allow for VMs using the system context to be able to restart any networks needed.
This commit is contained in:
parent
fddc9c32d6
commit
554166cdc7
@ -198,7 +198,13 @@ module VagrantPlugins
|
||||
end
|
||||
|
||||
def list_all_networks
|
||||
system_connection.list_all_networks.select do |net|
|
||||
client = if @machine.provider_config.qemu_use_session
|
||||
system_connection
|
||||
else
|
||||
connection.client
|
||||
end
|
||||
|
||||
client.list_all_networks.select do |net|
|
||||
begin
|
||||
net.bridge_name
|
||||
rescue Libvirt::Error
|
||||
|
41
spec/acceptance/networking_spec.rb
Normal file
41
spec/acceptance/networking_spec.rb
Normal file
@ -0,0 +1,41 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
require 'spec_helper'
|
||||
|
||||
describe 'package domain', acceptance: true do
|
||||
include_context 'libvirt_acceptance'
|
||||
|
||||
before(:all) do
|
||||
expect(Vagrant::Util::Which.which('virsh')).to be_truthy,
|
||||
'networking tests require virsh, please install'
|
||||
expect(system('virsh --connect=qemu:///system uri >/dev/null')).to be_truthy,
|
||||
'network tests require access to qemu:///system context, please ensure test user has correct permissions'
|
||||
end
|
||||
|
||||
after(:each) do
|
||||
assert_execute('vagrant', 'destroy', '--force')
|
||||
end
|
||||
|
||||
before do
|
||||
environment.skeleton('network_no_autostart')
|
||||
end
|
||||
|
||||
context 'when host is rebooted' do
|
||||
before do
|
||||
result = environment.execute('vagrant', 'up')
|
||||
expect(result).to exit_with(0)
|
||||
|
||||
result = environment.execute('vagrant', 'halt')
|
||||
expect(result).to exit_with(0)
|
||||
|
||||
result = environment.execute('virsh', '--connect=qemu:///system', 'net-destroy', 'vagrant-libvirt-test')
|
||||
expect(result).to exit_with(0)
|
||||
end
|
||||
|
||||
it 'should start networking on restart' do
|
||||
status('Test: machine restarts networking')
|
||||
result = environment.execute('vagrant', 'up')
|
||||
expect(result).to exit_with(0)
|
||||
end
|
||||
end
|
||||
end
|
18
spec/acceptance/support-skeletons/network_no_autostart/Vagrantfile
vendored
Normal file
18
spec/acceptance/support-skeletons/network_no_autostart/Vagrantfile
vendored
Normal file
@ -0,0 +1,18 @@
|
||||
# -*- mode: ruby -*-
|
||||
# vi: set ft=ruby :
|
||||
#
|
||||
# frozen_string_literal: true
|
||||
|
||||
Vagrant.configure("2") do |config|
|
||||
config.vm.box = "infernix/tinycore"
|
||||
config.ssh.shell = "/bin/sh"
|
||||
config.ssh.insert_key = false
|
||||
config.vm.synced_folder ".", "/vagrant", disabled: true
|
||||
|
||||
config.vm.provider :libvirt do |libvirt|
|
||||
# try to use a separate network
|
||||
libvirt.management_network_name = 'vagrant-libvirt-test'
|
||||
# aim for a network address not in use, hopefully!
|
||||
libvirt.management_network_address = '192.168.120.0/24'
|
||||
end
|
||||
end
|
@ -242,7 +242,8 @@ describe VagrantPlugins::ProviderLibvirt::Driver do
|
||||
] }
|
||||
|
||||
before do
|
||||
allow(subject).to receive(:system_connection).and_return(libvirt_client)
|
||||
allow(subject).to receive(:connection).and_return(connection)
|
||||
allow(connection).to receive(:client).and_return(libvirt_client)
|
||||
expect(libvirt_client).to receive(:list_all_networks).and_return(libvirt_networks)
|
||||
end
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user