From 465a1a7a35782d4e4522eb109d705689d792d6dc Mon Sep 17 00:00:00 2001 From: Alex Schultz Date: Fri, 15 Apr 2016 20:39:01 -0600 Subject: [PATCH] Add other virt services This change adds the management of virtlockd and virtlogd services to the nova::compute::libvirt. These services are actually required for nova to be able to communicate correctly with libvirt. Virtlockd exists for RedHat and Ubuntu but is not currently available under Debian. Virtlogd is Ubuntu specific service that is usually started automatically on install of the libvirt package. However if you disable that or some how prevent it from running, then it may interfere with nova. We should explicitly manage them since they are required. Change-Id: I52c6609e547fa50dccb4b31b9d93748b2b02dee0 --- manifests/compute/libvirt.pp | 30 +++++++++++++++++++ manifests/params.pp | 6 ++++ ...ock-virtlog-services-40ab5eae62817df7.yaml | 9 ++++++ spec/classes/nova_compute_libvirt_spec.rb | 13 ++++++++ 4 files changed, 58 insertions(+) create mode 100644 releasenotes/notes/virtlock-virtlog-services-40ab5eae62817df7.yaml diff --git a/manifests/compute/libvirt.pp b/manifests/compute/libvirt.pp index c28559c85..7e5b38346 100644 --- a/manifests/compute/libvirt.pp +++ b/manifests/compute/libvirt.pp @@ -93,6 +93,14 @@ # (optional) libvirt service name. # Defaults to $::nova::params::libvirt_service_name # +# [*virtlock_service_name*] +# (optional) virtlock service name. +# Defaults to $::nova::params::virtlock_service_name +# +# [*virtlog_service_name*] +# (optional) virtlog service name. +# Defaults to $::nova::params::virtlog_service_name +# # [*compute_driver*] # (optional) Compute driver. # Defaults to 'libvirt.LibvirtDriver' @@ -114,6 +122,8 @@ class nova::compute::libvirt ( $remove_unused_resized_minimum_age_seconds = undef, $remove_unused_original_minimum_age_seconds = undef, $libvirt_service_name = $::nova::params::libvirt_service_name, + $virtlock_service_name = $::nova::params::virtlock_service_name, + $virtlog_service_name = $::nova::params::virtlog_service_name, $compute_driver = 'libvirt.LibvirtDriver' ) inherits nova::params { @@ -194,6 +204,26 @@ class nova::compute::libvirt ( require => Package['libvirt'], } + if $virtlock_service_name { + service { 'virtlockd': + ensure => running, + enable => true, + name => $virtlock_service_name, + provider => $::nova::params::special_service_provider, + require => Package['libvirt'] + } + } + + if $virtlog_service_name { + service { 'virtlogd': + ensure => running, + enable => true, + name => $virtlog_service_name, + provider => $::nova::params::special_service_provider, + require => Package['libvirt'] + } + } + nova_config { 'DEFAULT/compute_driver': value => $compute_driver; 'vnc/vncserver_listen': value => $vncserver_listen; diff --git a/manifests/params.pp b/manifests/params.pp index be01e1c19..fccb9328c 100644 --- a/manifests/params.pp +++ b/manifests/params.pp @@ -36,6 +36,8 @@ class nova::params { $conductor_service_name = 'openstack-nova-conductor' $consoleauth_service_name = 'openstack-nova-consoleauth' $libvirt_service_name = 'libvirtd' + $virtlock_service_name = 'virtlockd' + $virtlog_service_name = undef $network_service_name = 'openstack-nova-network' $objectstore_service_name = 'openstack-nova-objectstore' $scheduler_service_name = 'openstack-nova-scheduler' @@ -113,6 +115,8 @@ class nova::params { # Use default provider on Debian $special_service_provider = undef $libvirt_service_name = 'libvirtd' + $virtlock_service_name = undef + $virtlog_service_name = undef } default: { $spicehtml5proxy_package_name = 'nova-spiceproxy' @@ -121,6 +125,8 @@ class nova::params { # some of the services need to be started form the special upstart provider $special_service_provider = 'upstart' $libvirt_service_name = 'libvirt-bin' + $virtlock_service_name = 'virtlockd' + $virtlog_service_name = 'virtlogd' } } } diff --git a/releasenotes/notes/virtlock-virtlog-services-40ab5eae62817df7.yaml b/releasenotes/notes/virtlock-virtlog-services-40ab5eae62817df7.yaml new file mode 100644 index 000000000..4218c7acb --- /dev/null +++ b/releasenotes/notes/virtlock-virtlog-services-40ab5eae62817df7.yaml @@ -0,0 +1,9 @@ +--- +fixes: + - Manage virtlockd and virtlogd services as part of + the nova::compute::libvirt as they are needed for + nova. The virtlockd service is currently managed + for RedHat and Ubuntu but skipped under Debian. + The virtlogd service is Ubuntu specific but can + be managed if the virtlog_service_name is provided + to the nova::compute::libvirt class. diff --git a/spec/classes/nova_compute_libvirt_spec.rb b/spec/classes/nova_compute_libvirt_spec.rb index 93e9fbe8e..002986fe8 100644 --- a/spec/classes/nova_compute_libvirt_spec.rb +++ b/spec/classes/nova_compute_libvirt_spec.rb @@ -66,6 +66,8 @@ describe 'nova::compute::libvirt' do :remove_unused_resized_minimum_age_seconds => 3600, :remove_unused_original_minimum_age_seconds => 3600, :libvirt_service_name => 'custom_service', + :virtlock_service_name => 'virtlock', + :virtlog_service_name => 'virtlog', :compute_driver => 'libvirt.FoobarDriver', } end @@ -92,6 +94,17 @@ describe 'nova::compute::libvirt' do :ensure => 'running', :before => ['Service[nova-compute]'] ) + is_expected.to contain_service('virtlockd').with( + :name => 'virtlock', + :enable => true, + :ensure => 'running' + ) + is_expected.to contain_service('virtlogd').with( + :name => 'virtlog', + :enable => true, + :ensure => 'running' + ) + } end