puppet-nova/spec/classes/nova_compute_libvirt_services_spec.rb
Francesco Di Nucci 3cd25fb69e CentOS/RHEL: Use modular libvirt daemons by default
As of RHEL9 (and thus CentOS 9), modular libvirt is the recommended
mechanism for libvirtd. Adjust the default deployment architecture
accordingly.

Reference
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/9/html/considerations_in_adopting_rhel_9/assembly_virtualization_considerations-in-adopting-rhel-9#ref_changes-to-libvirt_assembly_virtualization

Change-Id: I9317d86cd83b686757ff3a0a7335f99503488d1d
2024-06-11 16:17:25 +09:00

276 lines
9.8 KiB
Ruby

require 'spec_helper'
describe 'nova::compute::libvirt::services' do
shared_examples_for 'nova compute libvirt services' do
context 'with default parameters' do
it 'installs ovmf' do
is_expected.to contain_package('ovmf').with(
:ensure => 'present',
:name => platform_params[:ovmf_package_name],
:tag => ['openstack', 'nova-support-package'],
)
end
it 'skips installs swtpm' do
is_expected.to_not contain_package('swtpm')
end
end
context 'when libvirt service is not managed' do
before :each do
params.merge!({
:libvirt_service_name => false,
})
end
it 'skips installing libvirt' do
is_expected.not_to contain_package('libvirt')
is_expected.not_to contain_package('libvirt-daemon')
is_expected.not_to contain_service('libvirt')
end
end
context 'when ovmf package is not managed' do
before :each do
params.merge!({
:manage_ovmf => false,
})
end
it 'skips installing ovmf' do
is_expected.not_to contain_package('ovmf')
end
end
context 'when swtpm package is managed' do
before :each do
params.merge!({
:manage_swtpm => true,
})
end
it 'installs swtpm' do
is_expected.to contain_package('swtpm').with(
:ensure => 'present',
:name => platform_params[:swtpm_package_name],
:tag => ['openstack', 'nova-support-package'],
)
end
end
end
shared_examples_for 'nova compute libvirt services with monolithic libvirt' do
context 'with default parameters' do
it 'deploys libvirt service' do
is_expected.to contain_package('libvirt').with(
:ensure => 'present',
:name => platform_params[:libvirt_package_name],
:tag => ['openstack', 'nova-support-package'],
)
if facts[:os]['family'] == 'RedHat'
is_expected.to contain_package('libvirt-daemon').with(
:ensure => 'present',
:name => platform_params[:libvirt_daemon_package_name],
:tag => ['openstack', 'nova-support-package'],
)
end
is_expected.to contain_service('libvirt').with(
:ensure => 'running',
:enable => true,
:name => platform_params[:libvirt_service_name],
:tag => ['libvirt-service', 'libvirt-qemu-service'],
)
is_expected.to contain_service('virtlogd').with(
:ensure => 'running',
:enable => true,
:name => platform_params[:virtlog_service_name],
:tag => ['libvirt-service'],
)
is_expected.to contain_service('virtlockd').with(
:ensure => 'running',
:enable => true,
:name => platform_params[:virtlock_service_name],
:tag => ['libvirt-service'],
)
end
it 'does not deploy modular libvirt services' do
is_expected.to_not contain_package('virtsecret')
is_expected.to_not contain_package('virtnodedev')
is_expected.to_not contain_package('virtqemu')
is_expected.to_not contain_package('virtstorage')
is_expected.to_not contain_service('virtsecretd')
is_expected.to_not contain_service('virtnodedevd')
is_expected.to_not contain_service('virtqemud')
is_expected.to_not contain_service('virtproxyd')
is_expected.to_not contain_service('virtstoraged')
end
end
end
shared_examples_for 'nova compute libvirt services with modular libvirt' do
context 'with default parameters' do
before :each do
params.merge!({
:modular_libvirt => true
})
end
it 'deploys libvirt service' do
is_expected.to contain_package('libvirt').with(
:ensure => 'present',
:name => platform_params[:libvirt_package_name],
:tag => ['openstack', 'nova-support-package'],
)
is_expected.to_not contain_package('libvirt-daemon')
is_expected.to contain_service('libvirt').with(
:ensure => 'stopped',
:enable => false,
:name => platform_params[:libvirt_service_name],
:tag => ['libvirt-service', 'libvirt-qemu-service'],
)
is_expected.to contain_service('virtlogd').with(
:ensure => 'running',
:enable => true,
:name => platform_params[:virtlog_service_name],
:tag => ['libvirt-service'],
)
is_expected.to contain_service('virtlockd').with(
:ensure => 'running',
:enable => true,
:name => platform_params[:virtlock_service_name],
:tag => ['libvirt-service'],
)
end
it 'deploys modular libvirt services' do
is_expected.to contain_package('virtsecret').with(
:ensure => 'present',
:name => platform_params[:virtsecret_package_name],
:tag => ['openstack', 'nova-support-package'],
)
is_expected.to contain_package('virtnodedev').with(
:ensure => 'present',
:name => platform_params[:virtnodedev_package_name],
:tag => ['openstack', 'nova-support-package'],
)
is_expected.to contain_package('virtqemu').with(
:ensure => 'present',
:name => platform_params[:virtqemu_package_name],
:tag => ['openstack', 'nova-support-package'],
)
is_expected.to contain_package('virtstorage').with(
:ensure => 'present',
:name => platform_params[:virtstorage_package_name],
:tag => ['openstack', 'nova-support-package'],
)
is_expected.to contain_service('virtsecretd').with(
:ensure => 'running',
:enable => true,
:name => platform_params[:virtsecret_service_name],
:tag => ['libvirt-service', 'libvirt-modular-service'],
)
is_expected.to contain_service('virtnodedevd').with(
:ensure => 'running',
:enable => true,
:name => platform_params[:virtnodedev_service_name],
:tag => ['libvirt-service', 'libvirt-modular-service'],
)
is_expected.to contain_service('virtqemud').with(
:ensure => 'running',
:enable => true,
:name => platform_params[:virtqemu_service_name],
:tag => ['libvirt-service', 'libvirt-qemu-service', 'libvirt-modular-service'],
)
is_expected.to contain_service('virtproxyd').with(
:ensure => 'running',
:enable => true,
:name => platform_params[:virtproxy_service_name],
:tag => ['libvirt-service', 'libvirt-modular-service'],
)
is_expected.to contain_service('virtnodedevd').with(
:ensure => 'running',
:enable => true,
:name => platform_params[:virtnodedev_service_name],
:tag => ['libvirt-service', 'libvirt-modular-service'],
)
is_expected.to contain_service('virtstoraged').with(
:ensure => 'running',
:enable => true,
:name => platform_params[:virtstorage_service_name],
:tag => ['libvirt-service', 'libvirt-modular-service'],
)
end
end
end
on_supported_os({
:supported_os => OSDefaults.get_supported_os
}).each do |os,facts|
context "on #{os}" do
let :facts do
facts.merge!(OSDefaults.get_facts())
end
let :platform_params do
case facts[:os]['family']
when 'Debian'
{
:libvirt_package_name => 'libvirt-daemon-system',
:libvirt_service_name => 'libvirtd',
:virtlock_service_name => 'virtlockd',
:virtlog_service_name => 'virtlogd',
:ovmf_package_name => 'ovmf',
:swtpm_package_name => 'swtpm'
}
when 'RedHat'
{
:libvirt_package_name => 'libvirt-daemon-kvm',
:libvirt_daemon_package_name => 'libvirt-daemon',
:libvirt_service_name => 'libvirtd',
:virtlock_service_name => 'virtlockd',
:virtlog_service_name => 'virtlogd',
:virtsecret_package_name => 'libvirt-daemon-driver-secret',
:virtnodedev_package_name => 'libvirt-daemon-driver-nodedev',
:virtqemu_package_name => 'libvirt-daemon-driver-qemu',
:virtstorage_package_name => 'libvirt-daemon-driver-storage',
:virtsecret_service_name => 'virtsecretd.socket',
:virtnodedev_service_name => 'virtnodedevd.socket',
:virtqemu_service_name => 'virtqemud.socket',
:virtproxy_service_name => 'virtproxyd.socket',
:virtstorage_service_name => 'virtstoraged.socket',
:ovmf_package_name => 'edk2-ovmf',
:swtpm_package_name => 'swtpm'
}
end
end
let :params do
{}
end
it_configures 'nova compute libvirt services'
if facts[:os]['family'] == 'Debian'
# NOTE(tkajinam): Debian family uses monolithic libvirt by default, and
# does not support modular libvirt
it_configures 'nova compute libvirt services with monolithic libvirt'
else
# NOTE(tkajinam): RedHat family uses modular libvirt by default
it_configures 'nova compute libvirt services with modular libvirt'
context 'with modular libvirt disabled' do
before :each do
params.merge!({ :modular_libvirt => false })
end
it_configures 'nova compute libvirt services with monolithic libvirt'
end
end
end
end
end