From b108a7c36bbc733b3aa90786540e978f5c0ec059 Mon Sep 17 00:00:00 2001 From: Cody Herriges Date: Tue, 3 May 2016 16:16:03 -0700 Subject: [PATCH] Conditionally fall back to redhat service provider This commit partially reverts Change-Id: Ic06ffc377f8982337d977bebb96ef7f6196e5c22 and puts in place conditionals to work around an issue in Puppet 4.0 through 4.4 installations where the systemd service provider does not function because of a bug managing statically enabled services[1]. [1] https://tickets.puppetlabs.com/browse/PUP-5353 Closes-Bug: #1577827 Change-Id: If5ea135b294995634506b745f80442e34b101a59 --- manifests/compute/libvirt.pp | 35 +++++++++------- manifests/params.pp | 41 ++++++++++++------- ...redhat_intelligently-d3a158ae263f6103.yaml | 3 ++ ...top_service_provider-557dea3058c3bcec.yaml | 3 -- 4 files changed, 49 insertions(+), 33 deletions(-) create mode 100644 releasenotes/notes/fallback_to_redhat_intelligently-d3a158ae263f6103.yaml delete mode 100644 releasenotes/notes/stop_service_provider-557dea3058c3bcec.yaml diff --git a/manifests/compute/libvirt.pp b/manifests/compute/libvirt.pp index 34d7e39e3..48135ba7f 100644 --- a/manifests/compute/libvirt.pp +++ b/manifests/compute/libvirt.pp @@ -155,9 +155,11 @@ class nova::compute::libvirt ( if($::osfamily == 'RedHat' and $::operatingsystem != 'Fedora') { service { 'messagebus': - ensure => running, - enable => true, - name => $::nova::params::messagebus_service_name, + ensure => running, + enable => true, + name => $::nova::params::messagebus_service_name, + provider => $::nova::params::special_service_provider, + } Package['libvirt'] -> Service['messagebus'] -> Service['libvirt'] } @@ -196,27 +198,30 @@ class nova::compute::libvirt ( } service { 'libvirt' : - ensure => running, - enable => true, - name => $libvirt_service_name, - require => Package['libvirt'], + ensure => running, + enable => true, + name => $libvirt_service_name, + provider => $::nova::params::special_service_provider, + require => Package['libvirt'], } if $virtlock_service_name { service { 'virtlockd': - ensure => running, - enable => true, - name => $virtlock_service_name, - require => Package['libvirt'] + 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, - require => Package['libvirt'] + ensure => running, + enable => true, + name => $virtlog_service_name, + provider => $::nova::params::special_service_provider, + require => Package['libvirt'] } } diff --git a/manifests/params.pp b/manifests/params.pp index df7f850d5..7d0434ae7 100644 --- a/manifests/params.pp +++ b/manifests/params.pp @@ -54,14 +54,21 @@ class nova::params { case $::operatingsystem { 'RedHat', 'CentOS', 'Scientific', 'OracleLinux': { if (versioncmp($::operatingsystemmajrelease, '7') < 0) { - $messagebus_service_name = 'messagebus' + $messagebus_service_name = 'messagebus' + $special_service_provider = undef } else { + if (versioncmp($::puppetversion, '4.5') < 0) { + $special_service_provider = 'redhat' + } else { + $special_service_provider = undef + } $messagebus_service_name = 'dbus' } } default: { - # not packaged on Fedora - $messagebus_service_name = undef + # not required on Fedora + $special_service_provider = undef + $messagebus_service_name = undef } } } @@ -105,20 +112,24 @@ class nova::params { $lock_path = '/var/lock/nova' case $::os_package_type { 'debian': { - $spicehtml5proxy_package_name = 'nova-consoleproxy' - $spicehtml5proxy_service_name = 'nova-spicehtml5proxy' - $vncproxy_package_name = 'nova-consoleproxy' - $libvirt_service_name = 'libvirtd' - $virtlock_service_name = undef - $virtlog_service_name = undef + $spicehtml5proxy_package_name = 'nova-consoleproxy' + $spicehtml5proxy_service_name = 'nova-spicehtml5proxy' + $vncproxy_package_name = 'nova-consoleproxy' + # 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' - $spicehtml5proxy_service_name = 'nova-spiceproxy' - $vncproxy_package_name = 'nova-novncproxy' - $libvirt_service_name = 'libvirt-bin' - $virtlock_service_name = 'virtlockd' - $virtlog_service_name = 'virtlogd' + $spicehtml5proxy_package_name = 'nova-spiceproxy' + $spicehtml5proxy_service_name = 'nova-spiceproxy' + $vncproxy_package_name = 'nova-novncproxy' + # Use default provider on Debian + $special_service_provider = undef + $libvirt_service_name = 'libvirt-bin' + $virtlock_service_name = 'virtlockd' + $virtlog_service_name = 'virtlogd' } } } diff --git a/releasenotes/notes/fallback_to_redhat_intelligently-d3a158ae263f6103.yaml b/releasenotes/notes/fallback_to_redhat_intelligently-d3a158ae263f6103.yaml new file mode 100644 index 000000000..1141050f0 --- /dev/null +++ b/releasenotes/notes/fallback_to_redhat_intelligently-d3a158ae263f6103.yaml @@ -0,0 +1,3 @@ +--- +features: + - Fallback to deprecated "redhat" service provider in an intellegent way to get around https://tickets.puppetlabs.com/browse/PUP-5353 on Puppet versions from 4.0 through 4.4. diff --git a/releasenotes/notes/stop_service_provider-557dea3058c3bcec.yaml b/releasenotes/notes/stop_service_provider-557dea3058c3bcec.yaml deleted file mode 100644 index 56555ea79..000000000 --- a/releasenotes/notes/stop_service_provider-557dea3058c3bcec.yaml +++ /dev/null @@ -1,3 +0,0 @@ ---- -features: - - Stop overriding service providers, and let Puppet finds which one is the best.