2016-12-06 23:20:29 +01:00
|
|
|
require 'support/sharedcontext'
|
2016-11-24 17:54:15 +00:00
|
|
|
|
2016-12-06 23:20:29 +01:00
|
|
|
require 'vagrant-libvirt/config'
|
|
|
|
|
require 'vagrant-libvirt/util/erb_template'
|
2016-11-24 17:54:15 +00:00
|
|
|
|
2016-12-06 23:20:29 +01:00
|
|
|
describe 'templates/domain' do
|
|
|
|
|
include_context 'unit'
|
2016-11-24 17:54:15 +00:00
|
|
|
|
|
|
|
|
class DomainTemplateHelper < VagrantPlugins::ProviderLibvirt::Config
|
|
|
|
|
include VagrantPlugins::ProviderLibvirt::Util::ErbTemplate
|
2017-05-29 14:01:11 +01:00
|
|
|
|
|
|
|
|
def finalize!
|
|
|
|
|
super
|
|
|
|
|
end
|
2016-11-24 17:54:15 +00:00
|
|
|
end
|
|
|
|
|
|
|
|
|
|
let(:domain) { DomainTemplateHelper.new }
|
|
|
|
|
let(:xml_expected) { File.read(File.join(File.dirname(__FILE__), test_file)) }
|
|
|
|
|
|
2016-12-06 23:20:29 +01:00
|
|
|
context 'when only defaults used' do
|
2016-11-24 17:54:15 +00:00
|
|
|
let(:test_file) { 'domain_defaults.xml' }
|
2016-12-06 23:20:29 +01:00
|
|
|
it 'renders template' do
|
2016-11-24 17:54:15 +00:00
|
|
|
domain.finalize!
|
|
|
|
|
expect(domain.to_xml('domain')).to eq xml_expected
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
2016-12-06 23:20:29 +01:00
|
|
|
context 'when all settings enabled' do
|
2016-11-24 17:54:15 +00:00
|
|
|
before do
|
2020-08-12 21:26:36 +01:00
|
|
|
domain.title = 'title'
|
|
|
|
|
domain.description = 'description'
|
2016-11-24 17:54:15 +00:00
|
|
|
domain.instance_variable_set('@domain_type', 'kvm')
|
|
|
|
|
domain.cpu_mode = 'custom'
|
2016-12-06 23:20:29 +01:00
|
|
|
domain.cpu_feature(name: 'AAA', policy: 'required')
|
2018-03-21 19:00:28 +01:00
|
|
|
domain.hyperv_feature(name: 'BBB', state: 'on')
|
2018-01-12 19:47:49 +07:00
|
|
|
domain.cputopology(sockets: '1', cores: '3', threads: '2')
|
2016-11-24 17:54:15 +00:00
|
|
|
domain.machine_type = 'pc-compatible'
|
|
|
|
|
domain.machine_arch = 'x86_64'
|
|
|
|
|
domain.loader = '/efi/loader'
|
|
|
|
|
domain.boot('network')
|
|
|
|
|
domain.boot('cdrom')
|
|
|
|
|
domain.boot('hd')
|
|
|
|
|
domain.emulator_path = '/usr/bin/kvm-spice'
|
|
|
|
|
domain.instance_variable_set('@domain_volume_path', '/var/lib/libvirt/images/test.qcow2')
|
|
|
|
|
domain.instance_variable_set('@domain_volume_cache', 'unsafe')
|
|
|
|
|
domain.disk_bus = 'ide'
|
2017-01-30 17:06:31 +01:00
|
|
|
domain.disk_device = 'vda'
|
2016-12-06 23:20:29 +01:00
|
|
|
domain.storage(:file, path: 'test-disk1.qcow2')
|
|
|
|
|
domain.storage(:file, path: 'test-disk2.qcow2')
|
2016-11-24 17:54:15 +00:00
|
|
|
domain.disks.each do |disk|
|
|
|
|
|
disk[:absolute_path] = '/var/lib/libvirt/images/' + disk[:path]
|
|
|
|
|
end
|
2016-12-06 23:20:29 +01:00
|
|
|
domain.storage(:file, device: :cdrom)
|
|
|
|
|
domain.storage(:file, device: :cdrom)
|
|
|
|
|
domain.channel(type: 'unix',
|
|
|
|
|
target_name: 'org.qemu.guest_agent.0',
|
|
|
|
|
target_type: 'virtio')
|
2017-11-28 18:23:47 +01:00
|
|
|
domain.channel(type: 'spicevmc',
|
|
|
|
|
target_name: 'com.redhat.spice.0',
|
|
|
|
|
target_type: 'virtio')
|
2016-12-06 23:20:29 +01:00
|
|
|
domain.channel(type: 'unix',
|
|
|
|
|
target_type: 'guestfwd',
|
|
|
|
|
target_address: '192.0.2.42',
|
|
|
|
|
target_port: '4242',
|
|
|
|
|
source_path: '/tmp/foo')
|
|
|
|
|
domain.random(model: 'random')
|
|
|
|
|
domain.pci(bus: '0x06', slot: '0x12', function: '0x5')
|
2020-05-10 05:40:29 -05:00
|
|
|
domain.pci(domain: '0x0001', bus: '0x03', slot: '0x00', function: '0x0')
|
2018-03-18 19:25:01 +11:00
|
|
|
domain.usb_controller(model: 'nec-xhci', ports: '4')
|
2016-12-06 23:20:29 +01:00
|
|
|
domain.usb(bus: '1', device: '2', vendor: '0x1234', product: '0xabcd')
|
|
|
|
|
domain.redirdev(type: 'tcp', host: 'localhost', port: '4000')
|
|
|
|
|
domain.redirfilter(class: '0x0b', vendor: '0x08e6',
|
|
|
|
|
product: '0x3437', version: '2.00', allow: 'yes')
|
2017-01-10 00:10:56 +01:00
|
|
|
domain.watchdog(model: 'i6300esb', action: 'reset')
|
2017-01-12 09:31:12 +01:00
|
|
|
domain.smartcard(mode: 'passthrough')
|
2016-11-24 17:54:15 +00:00
|
|
|
domain.tpm_path = '/dev/tpm0'
|
2017-01-10 20:07:15 +03:00
|
|
|
|
|
|
|
|
domain.qemuargs(value: '-device')
|
|
|
|
|
domain.qemuargs(value: 'dummy-device')
|
2020-05-10 09:37:31 -04:00
|
|
|
|
|
|
|
|
domain.qemuenv(QEMU_AUDIO_DRV: 'pa')
|
|
|
|
|
domain.qemuenv(QEMU_AUDIO_TIMER_PERIOD: '150')
|
|
|
|
|
domain.qemuenv(QEMU_PA_SAMPLES: '1024')
|
|
|
|
|
domain.qemuenv(QEMU_PA_SERVER: '/run/user/1000/pulse/native')
|
|
|
|
|
|
2020-05-10 05:24:06 -05:00
|
|
|
domain.shares = '1024'
|
2020-04-29 13:08:01 -05:00
|
|
|
domain.cpuset = '1-4,^3,6'
|
2020-05-10 04:52:46 -05:00
|
|
|
domain.nodeset = '1-4,^3,6'
|
2016-11-24 17:54:15 +00:00
|
|
|
end
|
|
|
|
|
let(:test_file) { 'domain_all_settings.xml' }
|
2016-12-06 23:20:29 +01:00
|
|
|
it 'renders template' do
|
2016-11-24 17:54:15 +00:00
|
|
|
domain.finalize!
|
|
|
|
|
expect(domain.to_xml('domain')).to eq xml_expected
|
|
|
|
|
end
|
|
|
|
|
end
|
2018-02-14 13:13:41 -05:00
|
|
|
|
|
|
|
|
context 'when custom cpu model enabled' do
|
|
|
|
|
before do
|
|
|
|
|
domain.cpu_mode = 'custom'
|
|
|
|
|
domain.cpu_model = 'SandyBridge'
|
|
|
|
|
end
|
|
|
|
|
let(:test_file) { 'domain_custom_cpu_model.xml' }
|
|
|
|
|
it 'renders template' do
|
|
|
|
|
domain.finalize!
|
|
|
|
|
expect(domain.to_xml('domain')).to eq xml_expected
|
|
|
|
|
end
|
|
|
|
|
end
|
2020-12-15 06:43:46 -06:00
|
|
|
|
|
|
|
|
context 'when tpm 2.0 device is specified' do
|
|
|
|
|
before do
|
|
|
|
|
domain.tpm_version = '2.0'
|
|
|
|
|
domain.tpm_type = 'emulator'
|
|
|
|
|
domain.tpm_model = 'tpm-crb'
|
|
|
|
|
end
|
|
|
|
|
let(:test_file) { 'tpm/version_2.0.xml' }
|
|
|
|
|
it 'renders template' do
|
|
|
|
|
domain.finalize!
|
|
|
|
|
expect(domain.to_xml('domain')).to eq xml_expected
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
context 'when tpm 1.2 device is implicitly used' do
|
|
|
|
|
before do
|
|
|
|
|
domain.tpm_path = '/dev/tpm0'
|
|
|
|
|
end
|
|
|
|
|
let(:test_file) { 'tpm/version_1.2.xml' }
|
|
|
|
|
it 'renders template' do
|
|
|
|
|
domain.finalize!
|
|
|
|
|
expect(domain.to_xml('domain')).to eq xml_expected
|
|
|
|
|
end
|
|
|
|
|
end
|
2016-11-24 17:54:15 +00:00
|
|
|
end
|