memcached (openstack) is no longer in use
[mirror/dsa-puppet.git] / 3rdparty / modules / nova / manifests / generic_service.pp
1 # == Define: nova::generic_service
2 #
3 # This defined type implements basic nova services.
4 # It is introduced to attempt to consolidate
5 # common code.
6 #
7 # It also allows users to specify ad-hoc services
8 # as needed
9 #
10 # This define creates a service resource with title nova-${name} and
11 # conditionally creates a package resource with title nova-${name}
12 #
13 define nova::generic_service(
14   $package_name,
15   $service_name,
16   $enabled        = false,
17   $manage_service = true,
18   $ensure_package = 'present'
19 ) {
20
21   include nova::params
22
23   $nova_title = "nova-${name}"
24   # ensure that the service is only started after
25   # all nova config entries have been set
26   Exec['post-nova_config'] ~> Service<| title == $nova_title |>
27   # ensure that the service has only been started
28   # after the initial db sync
29   Exec<| title == 'nova-db-sync' |> ~> Service<| title == $nova_title |>
30
31
32   # I need to mark that ths package should be
33   # installed before nova_config
34   if ($package_name) {
35     if !defined(Package[$package_name]) {
36       package { $nova_title:
37         ensure => $ensure_package,
38         name   => $package_name,
39         notify => Service[$nova_title],
40         tag    => ['openstack', 'nova'],
41       }
42     }
43   }
44
45   if $service_name {
46     if $manage_service {
47       if $enabled {
48         $service_ensure = 'running'
49       } else {
50         $service_ensure = 'stopped'
51       }
52     }
53
54     service { $nova_title:
55       ensure    => $service_ensure,
56       name      => $service_name,
57       enable    => $enabled,
58       hasstatus => true,
59       require   => [Package['nova-common'], Package[$package_name]],
60     }
61   }
62 }