b2d210f11ee1c7bf22e64de11f02aafce761df9c
[mirror/dsa-puppet.git] / modules / dsa_systemd / manifests / override.pp
1 define dsa_systemd::override (
2         $source=undef,
3         $content=undef,
4         $ensure=present
5 ) {
6
7         $dir = "/etc/systemd/system/${name}.service.d"
8         $dest = "${dir}/override.conf"
9         case $ensure {
10                 present: {
11                         if ! ($source or $content) {
12                                 fail ( "No configuration found for ${name}" )
13                         }
14
15                         file { "${dir}":
16                                 ensure => directory,
17                                 mode   => '0755'
18                         }
19                         if $content {
20                                 file { "${dest}":
21                                         ensure  => $ensure,
22                                         content => $content,
23                                         notify  => [ Exec['systemctl daemon-reload'],
24                                                      Service["${name}"],
25                                                     ]
26                                 }
27                         } elsif $source {
28                                 file { "${dest}":
29                                         ensure  => $ensure,
30                                         source  => $source,
31                                         notify  => [ Exec['systemctl daemon-reload'],
32                                                      Service["${name}"],
33                                                    ]
34                                         }
35                         }
36                 }
37                 absent:  {
38                         if defined(Service["${name}"]) {
39                                 $notify = [ Exec['systemctl daemon-reload'], Service["${name}"] ]
40                         } else {
41                                 $notify = [ Exec['systemctl daemon-reload'] ]
42                         }
43
44                         file { "${dest}":
45                                 ensure  => $ensure,
46                                 notify  => $notify,
47                         }
48                         file { "${dir}":
49                                 ensure => $ensure
50                         }
51                 }
52                 default: { fail ( "Unknown ensure value: '$ensure'" ) }
53         }
54 }