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
|
end
|
||||||
|
|
||||||
def list_all_networks
|
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
|
begin
|
||||||
net.bridge_name
|
net.bridge_name
|
||||||
rescue Libvirt::Error
|
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
|
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)
|
expect(libvirt_client).to receive(:list_all_networks).and_return(libvirt_networks)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user