From 99830f8a2d5f3f2b56ed4c050b36fd363c8911e6 Mon Sep 17 00:00:00 2001 From: Alfredo Moralejo Date: Fri, 28 Jan 2022 14:05:32 +0100 Subject: [PATCH] CentOS: Ensure /etc/sysconfig/libvirtd(-guests) exists Last build of libvirt in CentOS9 has removed default config files in /etc/sysconfig . This is making some file_line resources to fail as the original files no longer exist. This patch is creating empty files if the target files don't exist, so that this is compatible with centos8 and centos9 (before and after default config files removal). [1] https://bugzilla.redhat.com/show_bug.cgi?id=2042529 Closes-Bug: #1959601 Change-Id: Iff9daf3d284c725d40ecfb85500d77951c3fefcd --- manifests/compute/libvirt_guests.pp | 9 ++++++++ manifests/migration/libvirt.pp | 9 ++++++++ .../nova_compute_libvirt_guests_spec.rb | 23 ++++++++++++++++--- spec/classes/nova_migration_libvirt_spec.rb | 15 ++++++++++++ 4 files changed, 53 insertions(+), 3 deletions(-) diff --git a/manifests/compute/libvirt_guests.pp b/manifests/compute/libvirt_guests.pp index 6b146fe8f..19deca7e3 100644 --- a/manifests/compute/libvirt_guests.pp +++ b/manifests/compute/libvirt_guests.pp @@ -58,11 +58,20 @@ class nova::compute::libvirt_guests ( include nova::deps Anchor['nova::config::begin'] + -> File<| tag =='libvirt-guests-file' |> -> File_line<| tag == 'libvirt-guests-file_line'|> -> Anchor['nova::config::end'] case $::osfamily { 'RedHat': { + # NOTE(tkajinam): Since libvirt 8.1.0, the sysconfig files are + # no longer provided by packages. + file { '/etc/sysconfig/libvirt-guests': + ensure => present, + path => '/etc/sysconfig/libvirt-guests', + tag => 'libvirt-guests-file', + } + file_line { '/etc/sysconfig/libvirt-guests ON_BOOT': path => '/etc/sysconfig/libvirt-guests', line => "ON_BOOT=${on_boot}", diff --git a/manifests/migration/libvirt.pp b/manifests/migration/libvirt.pp index 405da200f..33691aca3 100644 --- a/manifests/migration/libvirt.pp +++ b/manifests/migration/libvirt.pp @@ -222,6 +222,7 @@ class nova::migration::libvirt( if $configure_libvirt { Anchor['nova::config::begin'] -> Libvirtd_config<||> + -> File<| tag == 'libvirt-file'|> -> File_line<| tag == 'libvirt-file_line'|> -> Anchor['nova::config::end'] @@ -348,6 +349,14 @@ class nova::migration::libvirt( $libvirtd_args = '' } + # NOTE(tkajinam): Since libvirt 8.1.0, the sysconfig files are + # no longer provided by packages. + file { '/etc/sysconfig/libvirtd': + ensure => present, + path => '/etc/sysconfig/libvirtd', + tag => 'libvirt-file', + } + file_line { '/etc/sysconfig/libvirtd libvirtd args': path => '/etc/sysconfig/libvirtd', line => "LIBVIRTD_ARGS=${libvirtd_args}", diff --git a/spec/classes/nova_compute_libvirt_guests_spec.rb b/spec/classes/nova_compute_libvirt_guests_spec.rb index 3d5c93cc8..8c3b0e3fd 100644 --- a/spec/classes/nova_compute_libvirt_guests_spec.rb +++ b/spec/classes/nova_compute_libvirt_guests_spec.rb @@ -39,9 +39,26 @@ describe 'nova::compute::libvirt_guests' do } end - it { is_expected.to contain_file_line('/etc/sysconfig/libvirt-guests ON_BOOT').with(:line => 'ON_BOOT=ignore') } - it { is_expected.to contain_file_line('/etc/sysconfig/libvirt-guests ON_SHUTDOWN').with(:line => "ON_SHUTDOWN=shutdown") } - it { is_expected.to contain_file_line('/etc/sysconfig/libvirt-guests SHUTDOWN_TIMEOUT').with(:line => "SHUTDOWN_TIMEOUT=300") } + it { is_expected.to contain_file('/etc/sysconfig/libvirt-guests').with( + :ensure => 'present', + :path => '/etc/sysconfig/libvirt-guests', + :tag => 'libvirt-guests-file', + ) } + it { is_expected.to contain_file_line('/etc/sysconfig/libvirt-guests ON_BOOT').with( + :path => '/etc/sysconfig/libvirt-guests', + :line => 'ON_BOOT=ignore', + :tag => 'libvirt-guests-file_line' + ) } + it { is_expected.to contain_file_line('/etc/sysconfig/libvirt-guests ON_SHUTDOWN').with( + :path => '/etc/sysconfig/libvirt-guests', + :line => "ON_SHUTDOWN=shutdown", + :tag => 'libvirt-guests-file_line' + ) } + it { is_expected.to contain_file_line('/etc/sysconfig/libvirt-guests SHUTDOWN_TIMEOUT').with( + :path => '/etc/sysconfig/libvirt-guests', + :line => "SHUTDOWN_TIMEOUT=300", + :tag => 'libvirt-guests-file_line' + ) } it { is_expected.to contain_package('libvirt-guests').with( :name => 'libvirt-client', diff --git a/spec/classes/nova_migration_libvirt_spec.rb b/spec/classes/nova_migration_libvirt_spec.rb index 9c15e8819..5b8a23123 100644 --- a/spec/classes/nova_migration_libvirt_spec.rb +++ b/spec/classes/nova_migration_libvirt_spec.rb @@ -482,6 +482,11 @@ describe 'nova::migration::libvirt' do :libvirt_version => '4.5' } end + it { is_expected.to contain_file('/etc/sysconfig/libvirtd').with( + :ensure => 'present', + :path => '/etc/sysconfig/libvirtd', + :tag => 'libvirt-file', + )} it { is_expected.to contain_file_line('/etc/sysconfig/libvirtd libvirtd args').with( :path => '/etc/sysconfig/libvirtd', :line => 'LIBVIRTD_ARGS="--listen"', @@ -500,6 +505,11 @@ describe 'nova::migration::libvirt' do :libvirt_version => '5.6' } end + it { is_expected.to contain_file('/etc/sysconfig/libvirtd').with( + :ensure => 'present', + :path => '/etc/sysconfig/libvirtd', + :tag => 'libvirt-file', + )} it { is_expected.to contain_file_line('/etc/sysconfig/libvirtd libvirtd args').with( :path => '/etc/sysconfig/libvirtd', :line => 'LIBVIRTD_ARGS=', @@ -519,6 +529,11 @@ describe 'nova::migration::libvirt' do :libvirt_version => '5.6' } end + it { is_expected.to contain_file('/etc/sysconfig/libvirtd').with( + :ensure => 'present', + :path => '/etc/sysconfig/libvirtd', + :tag => 'libvirt-file', + )} it { is_expected.to contain_file_line('/etc/sysconfig/libvirtd libvirtd args').with( :path => '/etc/sysconfig/libvirtd', :line => 'LIBVIRTD_ARGS=',