-
Notifications
You must be signed in to change notification settings - Fork 2.2k
/
run_mode.rb
106 lines (84 loc) · 2.44 KB
/
run_mode.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
require 'etc'
module Puppet
module Util
class RunMode
def initialize(name)
@name = name.to_sym
end
attr :name
def self.[](name)
@run_modes ||= {}
if Puppet.features.microsoft_windows?
@run_modes[name] ||= WindowsRunMode.new(name)
else
@run_modes[name] ||= UnixRunMode.new(name)
end
end
def master?
name == :master
end
def agent?
name == :agent
end
def user?
name == :user
end
def run_dir
RunMode[name].run_dir
end
def log_dir
RunMode[name].log_dir
end
private
##
# select the system or the user directory depending on the context of
# this process. The most common use is determining filesystem path
# values for confdir and vardir. The intended semantics are:
# {http://projects.puppetlabs.com/issues/16637 #16637} for Puppet 3.x
#
# @todo this code duplicates {Puppet::Settings#which\_configuration\_file}
# as described in {http://projects.puppetlabs.com/issues/16637 #16637}
def which_dir( system, user )
File.expand_path(if Puppet.features.root? then system else user end)
end
end
class UnixRunMode < RunMode
def conf_dir
which_dir("/etc/puppetlabs/puppet", "~/.puppet")
end
def code_dir
which_dir("/etc/puppetlabs/code", "~/.puppet/code")
end
def var_dir
which_dir("/opt/puppetlabs/puppet/cache", "~/.puppet/var")
end
def run_dir
which_dir("/var/run/puppetlabs", "~/.puppet/var/run")
end
def log_dir
which_dir("/var/log/puppetlabs", "~/.puppet/var/log")
end
end
class WindowsRunMode < RunMode
def conf_dir
which_dir(File.join(windows_common_base("puppet/etc")), "~/.puppet")
end
def code_dir
which_dir(File.join(windows_common_base("code")), "~/.puppet/code")
end
def var_dir
which_dir(File.join(windows_common_base("puppet/cache")), "~/.puppet/var")
end
def run_dir
which_dir(File.join(windows_common_base("puppet/var/run")), "~/.puppet/var/run")
end
def log_dir
which_dir(File.join(windows_common_base("puppet/var/log")), "~/.puppet/var/log")
end
private
def windows_common_base(*extra)
[Dir::COMMON_APPDATA, "PuppetLabs"] + extra
end
end
end
end