rbd: make sure libvirt is run before get-or-set virsh secret

If we try to get-or-set virsh secret before starting libvirt, we got
this:
Failed to connect socket to '/var/run/libvirt/libvirt-sock'

Also, drop the requirement on nova::config::end Anchor for libvirt
service, that already needs to run before nova-compute service.
It's created a dependency cycle:
Anchor[nova::config::end] => Service[libvirt] => Exec[get-or-set virsh
secret] => Exec[set-secret-value virsh] => Anchor[nova::config::end]

Also, stop requiring ceph-client-package Package resource in the
'get-or-set virsh secret' Exec, since the resource is not required in
this class.

This patch is an attempt to prevent this situation and allow to deploy
nova-compute with RBD in a single Puppet run.

Change-Id: I69a7d40e7d1847be06a843986ace4f0602272fe1
This commit is contained in:
Emilien Macchi
2016-02-18 15:16:24 -05:00
parent e0e1f617be
commit c336c7bfe5
4 changed files with 3 additions and 9 deletions

View File

@@ -191,7 +191,6 @@ class nova::compute::libvirt (
enable => true,
name => $libvirt_service_name,
provider => $::nova::params::special_service_provider,
require => Anchor['nova::config::end'],
}
nova_config {

View File

@@ -103,7 +103,7 @@ class nova::compute::rbd (
exec { 'get-or-set virsh secret':
command => '/usr/bin/virsh secret-define --file /etc/nova/secret.xml | /usr/bin/awk \'{print $2}\' | sed \'/^$/d\' > /etc/nova/virsh.secret',
creates => '/etc/nova/virsh.secret',
require => [File['/etc/nova/secret.xml'], Package['ceph-client-package']],
require => [File['/etc/nova/secret.xml'], Service['libvirt']],
}
if $libvirt_rbd_secret_key {

View File

@@ -35,8 +35,6 @@ describe 'nova::compute::libvirt' do
:ensure => 'running',
:provider => 'upstart',
)
is_expected.to contain_service('libvirt').that_requires('Anchor[nova::config::end]')
}
it { is_expected.to contain_nova_config('DEFAULT/compute_driver').with_value('libvirt.LibvirtDriver')}
@@ -94,7 +92,6 @@ describe 'nova::compute::libvirt' do
:ensure => 'running',
:before => ['Service[nova-compute]']
)
is_expected.to contain_service('libvirt').that_requires('Anchor[nova::config::end]')
}
end
@@ -190,7 +187,6 @@ describe 'nova::compute::libvirt' do
:enable => true,
:ensure => 'running',
:provider => 'init',
:require => 'Anchor[nova::config::end]',
:before => ['Service[nova-compute]'],
)}
it { is_expected.to contain_service('messagebus').with(
@@ -320,7 +316,6 @@ describe 'nova::compute::libvirt' do
:enable => true,
:ensure => 'running',
:provider => nil,
:require => 'Anchor[nova::config::end]',
:before => ['Service[nova-compute]']
)}

View File

@@ -90,7 +90,7 @@ describe 'nova::compute::rbd' do
is_expected.to contain_exec('get-or-set virsh secret').with(
:command => '/usr/bin/virsh secret-define --file /etc/nova/secret.xml | /usr/bin/awk \'{print $2}\' | sed \'/^$/d\' > /etc/nova/virsh.secret',
:creates => '/etc/nova/virsh.secret',
:require => ['File[/etc/nova/secret.xml]', 'Package[ceph-client-package]']
:require => ['File[/etc/nova/secret.xml]', 'Service[libvirt]'],
)
is_expected.to contain_exec('set-secret-value virsh').with(
:command => "/usr/bin/virsh secret-set-value --secret UUID --base64 $(ceph auth get-key client.rbd_test)"
@@ -141,7 +141,7 @@ describe 'nova::compute::rbd' do
is_expected.to contain_exec('get-or-set virsh secret').with(
:command => '/usr/bin/virsh secret-define --file /etc/nova/secret.xml | /usr/bin/awk \'{print $2}\' | sed \'/^$/d\' > /etc/nova/virsh.secret',
:creates => '/etc/nova/virsh.secret',
:require => ['File[/etc/nova/secret.xml]', 'Package[ceph-client-package]'],
:require => ['File[/etc/nova/secret.xml]', 'Service[libvirt]'],
)
is_expected.to contain_exec('set-secret-value virsh').with(
:command => "/usr/bin/virsh secret-set-value --secret UUID --base64 $(ceph auth get-key client.rbd_test)"