
This change updates the puppet-nova module to use the correct libvirt service name and log group for the debian packages. In addition the tests have been updated to properly test the debian and ubuntu packages. Change-Id: I8fcca7c1d14f5dec3840789ef00c9ccd11c6191b Closes-Bug: #1515076
353 lines
15 KiB
Ruby
353 lines
15 KiB
Ruby
require 'spec_helper'
|
|
describe 'nova::compute::libvirt' do
|
|
|
|
let :pre_condition do
|
|
"include nova\ninclude nova::compute"
|
|
end
|
|
|
|
shared_examples 'debian-nova-compute-libvirt' do
|
|
describe 'with default parameters' do
|
|
|
|
it { is_expected.to contain_class('nova::params')}
|
|
|
|
it { is_expected.to contain_package('nova-compute-kvm').with(
|
|
:ensure => 'present',
|
|
:before => 'Package[nova-compute]',
|
|
:tag => ['openstack']
|
|
) }
|
|
|
|
it { is_expected.to contain_package('libvirt').with(
|
|
:name => 'libvirt-bin',
|
|
:ensure => 'present'
|
|
) }
|
|
|
|
it { is_expected.to contain_service('libvirt').with(
|
|
:name => 'libvirt-bin',
|
|
:enable => true,
|
|
:ensure => 'running',
|
|
:provider => 'upstart',
|
|
:require => 'Package[libvirt]',
|
|
:before => ['Service[nova-compute]']
|
|
)}
|
|
|
|
it { is_expected.to contain_nova_config('DEFAULT/compute_driver').with_value('libvirt.LibvirtDriver')}
|
|
it { is_expected.to contain_nova_config('libvirt/virt_type').with_value('kvm')}
|
|
it { is_expected.to contain_nova_config('libvirt/cpu_mode').with_value('host-model')}
|
|
it { is_expected.to contain_nova_config('libvirt/cpu_model').with_ensure('absent')}
|
|
it { is_expected.to contain_nova_config('libvirt/disk_cachemodes').with_ensure('absent')}
|
|
it { is_expected.to contain_nova_config('libvirt/inject_password').with_value(false)}
|
|
it { is_expected.to contain_nova_config('libvirt/inject_key').with_value(false)}
|
|
it { is_expected.to contain_nova_config('libvirt/inject_partition').with_value(-2)}
|
|
it { is_expected.to contain_nova_config('DEFAULT/vncserver_listen').with_value('127.0.0.1')}
|
|
it { is_expected.to contain_nova_config('DEFAULT/remove_unused_base_images').with_ensure('absent')}
|
|
it { is_expected.to contain_nova_config('DEFAULT/remove_unused_original_minimum_age_seconds').with_ensure('absent')}
|
|
it { is_expected.to contain_nova_config('libvirt/remove_unused_kernels').with_ensure('absent')}
|
|
it { is_expected.to contain_nova_config('libvirt/remove_unused_resized_minimum_age_seconds').with_ensure('absent')}
|
|
end
|
|
|
|
describe 'with params' do
|
|
let :params do
|
|
{ :libvirt_virt_type => 'qemu',
|
|
:vncserver_listen => '0.0.0.0',
|
|
:libvirt_cpu_mode => 'host-passthrough',
|
|
:libvirt_cpu_model => 'kvm64',
|
|
:libvirt_disk_cachemodes => ['file=directsync','block=none'],
|
|
:remove_unused_base_images => true,
|
|
:remove_unused_kernels => true,
|
|
:remove_unused_resized_minimum_age_seconds => 3600,
|
|
:remove_unused_original_minimum_age_seconds => 3600,
|
|
:libvirt_service_name => 'custom_service',
|
|
:compute_driver => 'libvirt.FoobarDriver',
|
|
}
|
|
end
|
|
|
|
it { is_expected.to contain_nova_config('DEFAULT/compute_driver').with_value('libvirt.FoobarDriver')}
|
|
it { is_expected.to contain_nova_config('libvirt/virt_type').with_value('qemu')}
|
|
it { is_expected.to contain_nova_config('libvirt/cpu_mode').with_value('host-passthrough')}
|
|
it { is_expected.to contain_nova_config('libvirt/cpu_model').with_ensure('absent')}
|
|
it { is_expected.to contain_nova_config('libvirt/disk_cachemodes').with_value('file=directsync,block=none')}
|
|
it { is_expected.to contain_nova_config('DEFAULT/vncserver_listen').with_value('0.0.0.0')}
|
|
it { is_expected.to contain_nova_config('DEFAULT/remove_unused_base_images').with_value(true)}
|
|
it { is_expected.to contain_nova_config('DEFAULT/remove_unused_original_minimum_age_seconds').with_value(3600)}
|
|
it { is_expected.to contain_nova_config('libvirt/remove_unused_kernels').with_value(true)}
|
|
it { is_expected.to contain_nova_config('libvirt/remove_unused_resized_minimum_age_seconds').with_value(3600)}
|
|
it { is_expected.to contain_service('libvirt').with(
|
|
:name => 'custom_service',
|
|
:enable => true,
|
|
:ensure => 'running',
|
|
:require => 'Package[libvirt]',
|
|
:before => ['Service[nova-compute]']
|
|
)}
|
|
end
|
|
|
|
describe 'with custom cpu_mode' do
|
|
let :params do
|
|
{ :libvirt_cpu_mode => 'custom',
|
|
:libvirt_cpu_model => 'kvm64' }
|
|
end
|
|
|
|
it { is_expected.to contain_nova_config('libvirt/cpu_mode').with_value('custom')}
|
|
it { is_expected.to contain_nova_config('libvirt/cpu_model').with_value('kvm64')}
|
|
end
|
|
|
|
describe 'with migration_support enabled' do
|
|
|
|
context 'with vncserver_listen set to 0.0.0.0' do
|
|
let :params do
|
|
{ :vncserver_listen => '0.0.0.0',
|
|
:migration_support => true }
|
|
end
|
|
|
|
it { is_expected.to contain_class('nova::migration::libvirt')}
|
|
it { is_expected.to contain_nova_config('DEFAULT/vncserver_listen').with_value('0.0.0.0')}
|
|
it { is_expected.to contain_file_line('/etc/default/libvirt-bin libvirtd opts').with(:line => 'libvirtd_opts="-d -l"') }
|
|
it { is_expected.to contain_file_line('/etc/libvirt/libvirtd.conf listen_tls').with(:line => "listen_tls = 0") }
|
|
it { is_expected.to contain_file_line('/etc/libvirt/libvirtd.conf listen_tcp').with(:line => "listen_tcp = 1") }
|
|
it { is_expected.not_to contain_file_line('/etc/libvirt/libvirtd.conf auth_tls')}
|
|
it { is_expected.to contain_file_line('/etc/libvirt/libvirtd.conf auth_tcp').with(:line => "auth_tcp = \"none\"") }
|
|
end
|
|
|
|
context 'with vncserver_listen set to ::0' do
|
|
let :params do
|
|
{ :vncserver_listen => '::0',
|
|
:migration_support => true }
|
|
end
|
|
|
|
it { is_expected.to contain_class('nova::migration::libvirt')}
|
|
it { is_expected.to contain_nova_config('DEFAULT/vncserver_listen').with_value('::0')}
|
|
it { is_expected.to contain_file_line('/etc/default/libvirt-bin libvirtd opts').with(:line => 'libvirtd_opts="-d -l"') }
|
|
it { is_expected.to contain_file_line('/etc/libvirt/libvirtd.conf listen_tls').with(:line => "listen_tls = 0") }
|
|
it { is_expected.to contain_file_line('/etc/libvirt/libvirtd.conf listen_tcp').with(:line => "listen_tcp = 1") }
|
|
it { is_expected.not_to contain_file_line('/etc/libvirt/libvirtd.conf auth_tls')}
|
|
it { is_expected.to contain_file_line('/etc/libvirt/libvirtd.conf auth_tcp').with(:line => "auth_tcp = \"none\"") }
|
|
end
|
|
|
|
context 'with vncserver_listen not set to 0.0.0.0' do
|
|
let :params do
|
|
{ :vncserver_listen => '127.0.0.1',
|
|
:migration_support => true }
|
|
end
|
|
|
|
it { expect { is_expected.to contain_class('nova::compute::libvirt') }.to \
|
|
raise_error(Puppet::Error, /For migration support to work, you MUST set vncserver_listen to '0.0.0.0' or '::0'/) }
|
|
end
|
|
|
|
context 'with custom libvirt service name on Debian platforms' do
|
|
let :params do
|
|
{ :libvirt_service_name => 'libvirtd',
|
|
:vncserver_listen => '0.0.0.0',
|
|
:migration_support => true }
|
|
end
|
|
it { is_expected.to contain_file_line('/etc/default/libvirtd libvirtd opts').with(:line => 'libvirtd_opts="-d -l"') }
|
|
|
|
end
|
|
end
|
|
end
|
|
|
|
|
|
shared_examples 'redhat-nova-compute-libvirt' do
|
|
before do
|
|
facts.merge!({ :operatingsystem => 'RedHat', :osfamily => 'RedHat',
|
|
:operatingsystemrelease => 6.5,
|
|
:operatingsystemmajrelease => '6' })
|
|
end
|
|
|
|
describe 'with default parameters' do
|
|
|
|
it { is_expected.to contain_class('nova::params')}
|
|
|
|
it { is_expected.to contain_package('libvirt').with(
|
|
:name => 'libvirt-daemon-kvm',
|
|
:ensure => 'present',
|
|
) }
|
|
|
|
it { is_expected.to contain_package('libvirt-nwfilter').with(
|
|
:name => 'libvirt-daemon-config-nwfilter',
|
|
:ensure => 'present',
|
|
:before => 'Service[libvirt]',
|
|
) }
|
|
|
|
it { is_expected.to contain_service('libvirt').with(
|
|
:name => 'libvirtd',
|
|
:enable => true,
|
|
:ensure => 'running',
|
|
:provider => 'init',
|
|
:require => 'Package[libvirt]',
|
|
:before => ['Service[nova-compute]']
|
|
)}
|
|
it { is_expected.to contain_service('messagebus').with(
|
|
:ensure => 'running',
|
|
:enable => true,
|
|
:before => ['Service[libvirt]'],
|
|
:provider => 'init',
|
|
:name => 'messagebus'
|
|
) }
|
|
|
|
describe 'on rhel 7' do
|
|
before do
|
|
facts.merge!({
|
|
:operatingsystemrelease => 7.0,
|
|
:operatingsystemmajrelease => '7'
|
|
})
|
|
end
|
|
|
|
it { is_expected.to contain_service('libvirt').with(
|
|
:provider => nil
|
|
)}
|
|
|
|
it { is_expected.to contain_service('messagebus').with(
|
|
:provider => nil,
|
|
:name => 'dbus'
|
|
)}
|
|
end
|
|
|
|
it { is_expected.to contain_nova_config('DEFAULT/compute_driver').with_value('libvirt.LibvirtDriver')}
|
|
it { is_expected.to contain_nova_config('libvirt/virt_type').with_value('kvm')}
|
|
it { is_expected.to contain_nova_config('libvirt/inject_password').with_value(false)}
|
|
it { is_expected.to contain_nova_config('libvirt/inject_key').with_value(false)}
|
|
it { is_expected.to contain_nova_config('libvirt/inject_partition').with_value(-2)}
|
|
it { is_expected.to contain_nova_config('DEFAULT/vncserver_listen').with_value('127.0.0.1')}
|
|
it { is_expected.to contain_nova_config('DEFAULT/remove_unused_base_images').with_ensure('absent')}
|
|
it { is_expected.to contain_nova_config('DEFAULT/remove_unused_original_minimum_age_seconds').with_ensure('absent')}
|
|
it { is_expected.to contain_nova_config('libvirt/remove_unused_kernels').with_ensure('absent')}
|
|
it { is_expected.to contain_nova_config('libvirt/remove_unused_resized_minimum_age_seconds').with_ensure('absent')}
|
|
end
|
|
|
|
describe 'with params' do
|
|
let :params do
|
|
{ :libvirt_virt_type => 'qemu',
|
|
:vncserver_listen => '0.0.0.0',
|
|
:remove_unused_base_images => true,
|
|
:remove_unused_kernels => true,
|
|
:remove_unused_resized_minimum_age_seconds => 3600,
|
|
:remove_unused_original_minimum_age_seconds => 3600
|
|
}
|
|
end
|
|
|
|
it { is_expected.to contain_nova_config('libvirt/virt_type').with_value('qemu')}
|
|
it { is_expected.to contain_nova_config('DEFAULT/vncserver_listen').with_value('0.0.0.0')}
|
|
it { is_expected.to contain_nova_config('DEFAULT/remove_unused_base_images').with_value(true)}
|
|
it { is_expected.to contain_nova_config('DEFAULT/remove_unused_original_minimum_age_seconds').with_value(3600)}
|
|
it { is_expected.to contain_nova_config('libvirt/remove_unused_kernels').with_value(true)}
|
|
it { is_expected.to contain_nova_config('libvirt/remove_unused_resized_minimum_age_seconds').with_value(3600)}
|
|
it { is_expected.to contain_package('libvirt').with(
|
|
:name => 'libvirt-daemon-kvm',
|
|
:ensure => 'present'
|
|
) }
|
|
end
|
|
|
|
describe 'with migration_support enabled' do
|
|
|
|
context 'with vncserver_listen set to 0.0.0.0' do
|
|
let :params do
|
|
{ :vncserver_listen => '0.0.0.0',
|
|
:migration_support => true }
|
|
end
|
|
|
|
it { is_expected.to contain_class('nova::migration::libvirt')}
|
|
it { is_expected.to contain_nova_config('DEFAULT/vncserver_listen').with_value('0.0.0.0')}
|
|
it { is_expected.to contain_file_line('/etc/sysconfig/libvirtd libvirtd args').with(:line => 'LIBVIRTD_ARGS="--listen"') }
|
|
it { is_expected.to contain_file_line('/etc/libvirt/libvirtd.conf listen_tls').with(:line => "listen_tls = 0") }
|
|
it { is_expected.to contain_file_line('/etc/libvirt/libvirtd.conf listen_tcp').with(:line => "listen_tcp = 1") }
|
|
it { is_expected.not_to contain_file_line('/etc/libvirt/libvirtd.conf auth_tls')}
|
|
it { is_expected.to contain_file_line('/etc/libvirt/libvirtd.conf auth_tcp').with(:line => "auth_tcp = \"none\"") }
|
|
end
|
|
|
|
context 'with vncserver_listen set to ::0' do
|
|
let :params do
|
|
{ :vncserver_listen => '::0',
|
|
:migration_support => true }
|
|
end
|
|
|
|
it { is_expected.to contain_class('nova::migration::libvirt')}
|
|
it { is_expected.to contain_nova_config('DEFAULT/vncserver_listen').with_value('::0')}
|
|
it { is_expected.to contain_file_line('/etc/sysconfig/libvirtd libvirtd args').with(:line => 'LIBVIRTD_ARGS="--listen"') }
|
|
it { is_expected.to contain_file_line('/etc/libvirt/libvirtd.conf listen_tls').with(:line => "listen_tls = 0") }
|
|
it { is_expected.to contain_file_line('/etc/libvirt/libvirtd.conf listen_tcp').with(:line => "listen_tcp = 1") }
|
|
it { is_expected.not_to contain_file_line('/etc/libvirt/libvirtd.conf auth_tls')}
|
|
it { is_expected.to contain_file_line('/etc/libvirt/libvirtd.conf auth_tcp').with(:line => "auth_tcp = \"none\"") }
|
|
end
|
|
|
|
context 'with vncserver_listen not set to 0.0.0.0' do
|
|
let :params do
|
|
{ :vncserver_listen => '127.0.0.1',
|
|
:migration_support => true }
|
|
end
|
|
|
|
it { expect { is_expected.to contain_class('nova::compute::libvirt') }.to \
|
|
raise_error(Puppet::Error, /For migration support to work, you MUST set vncserver_listen to '0.0.0.0'/) }
|
|
end
|
|
end
|
|
|
|
describe 'with default parameters on Fedora' do
|
|
before do
|
|
facts.merge!({ :operatingsystem => 'Fedora', :osfamily => 'RedHat' })
|
|
end
|
|
|
|
it { is_expected.to contain_class('nova::params')}
|
|
|
|
it { is_expected.to contain_package('libvirt').with(
|
|
:name => 'libvirt-daemon-kvm',
|
|
:ensure => 'present'
|
|
) }
|
|
|
|
it { is_expected.to contain_package('libvirt-nwfilter').with(
|
|
:name => 'libvirt-daemon-config-nwfilter',
|
|
:ensure => 'present',
|
|
:before => 'Service[libvirt]',
|
|
) }
|
|
|
|
it { is_expected.to contain_service('libvirt').with(
|
|
:name => 'libvirtd',
|
|
:enable => true,
|
|
:ensure => 'running',
|
|
:provider => nil,
|
|
:require => 'Package[libvirt]',
|
|
:before => ['Service[nova-compute]']
|
|
)}
|
|
|
|
it { is_expected.to contain_nova_config('DEFAULT/compute_driver').with_value('libvirt.LibvirtDriver')}
|
|
it { is_expected.to contain_nova_config('libvirt/virt_type').with_value('kvm')}
|
|
it { is_expected.to contain_nova_config('DEFAULT/vncserver_listen').with_value('127.0.0.1')}
|
|
end
|
|
|
|
end
|
|
|
|
context 'on Debian platforms' do
|
|
let (:facts) do
|
|
{
|
|
:osfamily => 'Debian',
|
|
:operatingsystem => 'Debian',
|
|
:os_package_family => 'debian'
|
|
}
|
|
end
|
|
|
|
it_behaves_like 'debian-nova-compute-libvirt'
|
|
end
|
|
|
|
context 'on Debian platforms' do
|
|
let (:facts) do
|
|
{
|
|
:osfamily => 'Debian',
|
|
:operatingsystem => 'Ubuntu',
|
|
:os_package_family => 'ubuntu'
|
|
}
|
|
end
|
|
|
|
it_behaves_like 'debian-nova-compute-libvirt'
|
|
end
|
|
|
|
context 'on RedHat platforms' do
|
|
let (:facts) do
|
|
{
|
|
:osfamily => 'RedHat',
|
|
:os_package_type => 'rpm'
|
|
}
|
|
end
|
|
|
|
it_behaves_like 'redhat-nova-compute-libvirt'
|
|
end
|
|
|
|
|
|
end
|