| Class | MCollective::Config |
| In: |
lib/mcollective/config.rb
|
| Parent: | Object |
A pretty sucky config class, ripe for refactoring/improving
| classesfile | [R] | |
| collectives | [R] | |
| color | [R] | |
| configdir | [R] | |
| configfile | [R] | |
| configured | [R] | |
| connector | [R] | |
| daemonize | [R] | |
| daemonize | [R] | |
| fact_cache_time | [R] | |
| factsource | [R] | |
| identity | [R] | |
| keeplogs | [R] | |
| libdir | [R] | |
| logfile | [R] | |
| logger_type | [R] | |
| loglevel | [R] | |
| main_collective | [R] | |
| max_log_size | [R] | |
| pluginconf | [R] | |
| registerinterval | [R] | |
| registration | [R] | |
| rpcaudit | [R] | |
| rpcauditprovider | [R] | |
| rpcauthorization | [R] | |
| rpcauthprovider | [R] | |
| rpchelptemplate | [R] | |
| rpclimitmethod | [R] | |
| securityprovider | [R] | |
| ssl_cipher | [R] | |
| topicprefix | [R] | |
| topicsep | [R] |
# File lib/mcollective/config.rb, line 17
17: def loadconfig(configfile)
18: set_config_defaults(configfile)
19:
20: if File.exists?(configfile)
21: File.open(configfile, "r").each do |line|
22:
23: # strip blank spaces, tabs etc off the end of all lines
24: line.gsub!(/\s*$/, "")
25:
26: unless line =~ /^#|^$/
27: if (line =~ /(.+?)\s*=\s*(.+)/)
28: key = $1
29: val = $2
30:
31: case key
32: when "topicsep"
33: @topicsep = val
34: when "registration"
35: @registration = val.capitalize
36: when "registerinterval"
37: @registerinterval = val.to_i
38: when "collectives"
39: @collectives = val.split(",").map {|c| c.strip}
40: when "main_collective"
41: @main_collective = val
42: when "topicprefix"
43: @topicprefix = val
44: when "logfile"
45: @logfile = val
46: when "keeplogs"
47: @keeplogs = val.to_i
48: when "max_log_size"
49: @max_log_size = val.to_i
50: when "loglevel"
51: @loglevel = val
52: when "libdir"
53: paths = val.split(/:/)
54: paths.each do |path|
55: @libdir << path
56: unless $LOAD_PATH.include?(path)
57: $LOAD_PATH << path
58: end
59: end
60: when "identity"
61: @identity = val
62: when "color"
63: val =~ /^1|y/i ? @color = true : @color = false
64: when "daemonize"
65: val =~ /^1|y/i ? @daemonize = true : @daemonize = false
66: when "securityprovider"
67: @securityprovider = val.capitalize
68: when "factsource"
69: @factsource = val.capitalize
70: when "connector"
71: @connector = val.capitalize
72: when "classesfile"
73: @classesfile = val
74: when /^plugin.(.+)$/
75: @pluginconf[$1] = val
76: when "rpcaudit"
77: val =~ /^1|y/i ? @rpcaudit = true : @rpcaudit = false
78: when "rpcauditprovider"
79: @rpcauditprovider = val.capitalize
80: when "rpcauthorization"
81: val =~ /^1|y/i ? @rpcauthorization = true : @rpcauthorization = false
82: when "rpcauthprovider"
83: @rpcauthprovider = val.capitalize
84: when "rpchelptemplate"
85: @rpchelptemplate = val
86: when "rpclimitmethod"
87: @rpclimitmethod = val.to_sym
88: when "logger_type"
89: @logger_type = val
90: when "fact_cache_time"
91: @fact_cache_time = val.to_i
92: when "ssl_cipher"
93: @ssl_cipher = val
94: else
95: raise("Unknown config parameter #{key}")
96: end
97: end
98: end
99: end
100:
101: read_plugin_config_dir("#{@configdir}/plugin.d")
102:
103: @configured = true
104:
105: @libdir.each {|dir| Log.warn("Cannot find libdir: #{dir}") unless File.directory?(dir)}
106:
107: PluginManager.loadclass("Mcollective::Facts::#{@factsource}_facts")
108: PluginManager.loadclass("Mcollective::Connector::#{@connector}")
109: PluginManager.loadclass("Mcollective::Security::#{@securityprovider}")
110: PluginManager.loadclass("Mcollective::Registration::#{@registration}")
111: PluginManager.loadclass("Mcollective::Audit::#{@rpcauditprovider}") if @rpcaudit
112: PluginManager << {:type => "global_stats", :class => RunnerStats.new}
113: else
114: raise("Cannot find config file '#{configfile}'")
115: end
116: end
# File lib/mcollective/config.rb, line 150
150: def read_plugin_config_dir(dir)
151: return unless File.directory?(dir)
152:
153: Dir.new(dir).each do |pluginconfigfile|
154: next unless pluginconfigfile =~ /^([\w]+).cfg$/
155:
156: plugin = $1
157: File.open("#{dir}/#{pluginconfigfile}", "r").each do |line|
158: # strip blank lines
159: line.gsub!(/\s*$/, "")
160: next if line =~ /^#|^$/
161: if (line =~ /(.+?)\s*=\s*(.+)/)
162: key = $1
163: val = $2
164: @pluginconf["#{plugin}.#{key}"] = val
165: end
166: end
167: end
168: end
# File lib/mcollective/config.rb, line 118
118: def set_config_defaults(configfile)
119: @stomp = Hash.new
120: @subscribe = Array.new
121: @pluginconf = Hash.new
122: @connector = "Stomp"
123: @securityprovider = "Psk"
124: @factsource = "Yaml"
125: @identity = Socket.gethostname
126: @registration = "Agentlist"
127: @registerinterval = 0
128: @topicsep = "."
129: @classesfile = "/var/lib/puppet/classes.txt"
130: @rpcaudit = false
131: @rpcauditprovider = ""
132: @rpcauthorization = false
133: @rpcauthprovider = ""
134: @configdir = File.dirname(configfile)
135: @color = true
136: @configfile = configfile
137: @rpchelptemplate = "/etc/mcollective/rpc-help.erb"
138: @logger_type = "file"
139: @keeplogs = 5
140: @max_log_size = 2097152
141: @rpclimitmethod = :first
142: @libdir = Array.new
143: @fact_cache_time = 300
144: @loglevel = "info"
145: @collectives = ["mcollective"]
146: @main_collective = @collectives.first
147: @ssl_cipher = "aes-256-cbc"
148: end