diff --git a/manifests/generic_service.pp b/manifests/generic_service.pp index 7ceb827be..438d5f20d 100644 --- a/manifests/generic_service.pp +++ b/manifests/generic_service.pp @@ -32,7 +32,7 @@ define nova::generic_service( # I need to mark that ths package should be # installed before nova_config if ($package_name) { - if !defined(Package[$package_name]) { + if !defined(Package[$nova_title]) and !defined(Package[$package_name]) { package { $nova_title: ensure => $ensure_package, name => $package_name, @@ -40,6 +40,14 @@ define nova::generic_service( tag => ['openstack'], } } + + if $service_name { + # Do the dependency relationship here in case the package + # has been defined elsewhere, either as Package[$nova_title] + # or Package[$package_name] + Package<| title == $nova_title |> -> Service[$nova_title] + Package<| title == $package_name |> -> Service[$nova_title] + } } if $service_name { @@ -56,7 +64,7 @@ define nova::generic_service( name => $service_name, enable => $enabled, hasstatus => true, - require => [Package['nova-common'], Package[$nova_title]], + require => [Package['nova-common']], } } } diff --git a/spec/defines/nova_generic_service_spec.rb b/spec/defines/nova_generic_service_spec.rb index b354f5f22..3b2a8a4bb 100644 --- a/spec/defines/nova_generic_service_spec.rb +++ b/spec/defines/nova_generic_service_spec.rb @@ -25,8 +25,11 @@ describe 'nova::generic_service' do it { is_expected.to contain_service('nova-foo').with( 'name' => 'food', 'ensure' => 'running', - 'enable' => true, - 'require' => ['Package[nova-common]', 'Package[nova-foo]'] + 'enable' => true + )} + + it { is_expected.to contain_service('nova-foo').that_requires( + ['Package[nova-common]', 'Package[nova-foo]'] )} end end