diff --git a/manifests/dependencies.pp b/manifests/dependencies.pp index 15f39c5..3314ee2 100644 --- a/manifests/dependencies.pp +++ b/manifests/dependencies.pp @@ -6,6 +6,12 @@ $service_ensure = $sssd::service_ensure, ) { + if $manage_oddjobd == true { + $before = 'Service[oddjobd]' + } else { + $before = undef + } + if ! empty($service_dependencies) { ensure_resource('service', $service_dependencies, { @@ -13,6 +19,7 @@ hasstatus => true, hasrestart => true, enable => true, + before => $before, } ) } diff --git a/manifests/params.pp b/manifests/params.pp index a103cdd..617408e 100644 --- a/manifests/params.pp +++ b/manifests/params.pp @@ -38,23 +38,37 @@ $config_file = '/etc/sssd/sssd.conf' $mkhomedir = true - if versioncmp($::operatingsystemrelease, '6.0') < 0 { - $service_dependencies = ['messagebus'] - $extra_packages = [ - 'authconfig', - ] - $extra_packages_ensure = 'latest' - $manage_oddjobd = false - } else { - $service_dependencies = [] - $extra_packages = [ - 'authconfig', - 'oddjob-mkhomedir', - ] - $extra_packages_ensure = 'present' - $manage_oddjobd = true + case $::operatingsystemrelease { + default: { + fail("operatingsystemrelease is <${::operatingsystemrelease}> and must be in 5, 6 or 7.") + } + /^5/: { + $service_dependencies = ['messagebus'] + $extra_packages = [ + 'authconfig', + ] + $extra_packages_ensure = 'latest' + $manage_oddjobd = false + } + /^6/: { + $service_dependencies = ['messagebus'] + $extra_packages = [ + 'authconfig', + 'oddjob-mkhomedir', + ] + $extra_packages_ensure = 'present' + $manage_oddjobd = true + } + /^7/: { + $service_dependencies = [] + $extra_packages = [ + 'authconfig', + 'oddjob-mkhomedir', + ] + $extra_packages_ensure = 'present' + $manage_oddjobd = true + } } - } 'Debian': { diff --git a/spec/classes/init_spec.rb b/spec/classes/init_spec.rb index e2b8f0c..1d095f6 100644 --- a/spec/classes/init_spec.rb +++ b/spec/classes/init_spec.rb @@ -28,6 +28,7 @@ it { is_expected.to contain_service('sssd').with_ensure('running') } it { is_expected.to contain_package('sssd').with_ensure('present') } + it { is_expected.to contain_service('messagebus').with_ensure('running') } end context 'with service ensure stopped' do @@ -56,6 +57,23 @@ it { is_expected.to contain_package('sssd').with_ensure('1.1.1') } end end + + describe 'on unsupported version of RedHat (not 5, 6 or 7)' do + let(:facts) do + { + :osfamily => 'RedHat', + :operatingsystemrelease => '4.0', + :rubyversion => '1.9.3' + } + end + + it 'should fail' do + expect do + should contain_class('sssd') + end.to raise_error(Puppet::Error, /operatingsystemrelease is <4\.0> and must be in 5, 6 or 7/) + end + end + describe 'on RedHat 6.6' do let(:facts) do { @@ -85,6 +103,7 @@ it { is_expected.to contain_service('sssd').with_ensure('running') } it { is_expected.to contain_package('sssd').with_ensure('present') } it { is_expected.to contain_service('oddjobd').with_ensure('running') } + it { is_expected.to contain_service('messagebus').with_ensure('running') } end context 'with service ensure stopped' do @@ -143,6 +162,7 @@ it { is_expected.to contain_service('sssd').with_ensure('running') } it { is_expected.to contain_package('sssd').with_ensure('present') } it { is_expected.to contain_service('oddjobd').with_ensure('running') } + it { is_expected.not_to contain_service('messagebus') } end context 'with service ensure stopped' do @@ -200,6 +220,7 @@ it { is_expected.to contain_service('sssd').with_ensure('running') } it { is_expected.to contain_package('sssd').with_ensure('present') } + it { is_expected.not_to contain_service('messagebus') } end context 'with service ensure stopped' do