Class MCollective::Config
In: lib/mcollective/config.rb
Parent: Object

A pretty sucky config class, ripe for refactoring/improving

Methods

Included Modules

Singleton

Attributes

classesfile  [R] 
collectives  [R] 
color  [R] 
configdir  [R] 
configfile  [R] 
configured  [R] 
connector  [R] 
daemonize  [R] 
daemonize  [R] 
direct_addressing  [R] 
direct_addressing_threshold  [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] 
queueprefix  [R] 
registerinterval  [R] 
registration  [R] 
registration_collective  [R] 
rpcaudit  [R] 
rpcauditprovider  [R] 
rpcauthorization  [R] 
rpcauthprovider  [R] 
rpchelptemplate  [R] 
rpclimitmethod  [R] 
securityprovider  [R] 
ssl_cipher  [R] 
topicprefix  [R] 
topicsep  [R] 

Public Class methods

[Source]

    # File lib/mcollective/config.rb, line 15
15:         def initialize
16:             @configured = false
17:         end

Public Instance methods

[Source]

     # File lib/mcollective/config.rb, line 19
 19:         def loadconfig(configfile)
 20:             set_config_defaults(configfile)
 21: 
 22:             if File.exists?(configfile)
 23:                 File.open(configfile, "r").each do |line|
 24: 
 25:                     # strip blank spaces, tabs etc off the end of all lines
 26:                     line.gsub!(/\s*$/, "")
 27: 
 28:                     unless line =~ /^#|^$/
 29:                         if (line =~ /(.+?)\s*=\s*(.+)/)
 30:                             key = $1
 31:                             val = $2
 32: 
 33:                             case key
 34:                                 when "topicsep"
 35:                                     @topicsep = val
 36:                                 when "registration"
 37:                                     @registration = val.capitalize
 38:                                 when "registration_collective"
 39:                                     @registration_collective = val
 40:                                 when "registerinterval"
 41:                                     @registerinterval = val.to_i
 42:                                 when "collectives"
 43:                                     @collectives = val.split(",").map {|c| c.strip}
 44:                                 when "main_collective"
 45:                                     @main_collective = val
 46:                                 when "topicprefix"
 47:                                     @topicprefix = val
 48:                                 when "queueprefix"
 49:                                     @queueprefix = val
 50:                                 when "logfile"
 51:                                     @logfile = val
 52:                                 when "keeplogs"
 53:                                     @keeplogs = val.to_i
 54:                                 when "max_log_size"
 55:                                      @max_log_size = val.to_i
 56:                                 when "loglevel"
 57:                                      @loglevel = val
 58:                                 when "libdir"
 59:                                     paths = val.split(/:/)
 60:                                     paths.each do |path|
 61:                                         @libdir << path
 62:                                         unless $LOAD_PATH.include?(path)
 63:                                             $LOAD_PATH << path
 64:                                         end
 65:                                     end
 66:                                 when "identity"
 67:                                     @identity = val
 68:                                 when "direct_addressing"
 69:                                     val =~ /^1|y/i ? @direct_addressing = true : @direct_addressing = false
 70:                                 when "direct_addressing_threshold"
 71:                                     @direct_addressing_threshold = val.to_i
 72:                                 when "color"
 73:                                     val =~ /^1|y/i ? @color = true : @color = false
 74:                                 when "daemonize"
 75:                                     val =~ /^1|y/i ? @daemonize = true : @daemonize = false
 76:                                 when "securityprovider"
 77:                                     @securityprovider = val.capitalize
 78:                                 when "factsource"
 79:                                     @factsource = val.capitalize
 80:                                 when "connector"
 81:                                     @connector = val.capitalize
 82:                                 when "classesfile"
 83:                                     @classesfile = val
 84:                                 when /^plugin.(.+)$/
 85:                                     @pluginconf[$1] = val
 86:                                 when "rpcaudit"
 87:                                     val =~ /^1|y/i ? @rpcaudit = true : @rpcaudit = false
 88:                                 when "rpcauditprovider"
 89:                                     @rpcauditprovider = val.capitalize
 90:                                 when "rpcauthorization"
 91:                                     val =~ /^1|y/i ? @rpcauthorization = true : @rpcauthorization = false
 92:                                 when "rpcauthprovider"
 93:                                     @rpcauthprovider = val.capitalize
 94:                                 when "rpchelptemplate"
 95:                                     @rpchelptemplate = val
 96:                                 when "rpclimitmethod"
 97:                                     @rpclimitmethod = val.to_sym
 98:                                 when "logger_type"
 99:                                     @logger_type = val
100:                                 when "fact_cache_time"
101:                                     @fact_cache_time = val.to_i
102:                                 when "ssl_cipher"
103:                                     @ssl_cipher = val
104:                                 else
105:                                     raise("Unknown config parameter #{key}")
106:                             end
107:                         end
108:                     end
109:                 end
110: 
111:                 read_plugin_config_dir("#{@configdir}/plugin.d")
112: 
113:                 @configured = true
114: 
115:                 @libdir.each {|dir| Log.warn("Cannot find libdir: #{dir}") unless File.directory?(dir)}
116: 
117:                 PluginManager.loadclass("Mcollective::Facts::#{@factsource}_facts")
118:                 PluginManager.loadclass("Mcollective::Connector::#{@connector}")
119:                 PluginManager.loadclass("Mcollective::Security::#{@securityprovider}")
120:                 PluginManager.loadclass("Mcollective::Registration::#{@registration}")
121:                 PluginManager.loadclass("Mcollective::Audit::#{@rpcauditprovider}") if @rpcaudit
122:                 PluginManager << {:type => "global_stats", :class => RunnerStats.new}
123:             else
124:                 raise("Cannot find config file '#{configfile}'")
125:             end
126:         end

[Source]

     # File lib/mcollective/config.rb, line 165
165:         def read_plugin_config_dir(dir)
166:             return unless File.directory?(dir)
167: 
168:             Dir.new(dir).each do |pluginconfigfile|
169:                 next unless pluginconfigfile =~ /^([\w]+).cfg$/
170: 
171:                 plugin = $1
172:                 File.open("#{dir}/#{pluginconfigfile}", "r").each do |line|
173:                     # strip blank lines
174:                     line.gsub!(/\s*$/, "")
175:                     next if line =~ /^#|^$/
176:                     if (line =~ /(.+?)\s*=\s*(.+)/)
177:                         key = $1
178:                         val = $2
179:                         @pluginconf["#{plugin}.#{key}"] = val
180:                     end
181:                 end
182:             end
183:         end

[Source]

     # File lib/mcollective/config.rb, line 128
128:         def set_config_defaults(configfile)
129:             @stomp = Hash.new
130:             @subscribe = Array.new
131:             @pluginconf = Hash.new
132:             @connector = "Stomp"
133:             @securityprovider = "Psk"
134:             @factsource = "Yaml"
135:             @identity = Socket.gethostname
136:             @registration = "Agentlist"
137:             @registerinterval = 0
138:             @registration_collective = nil
139:             @topicsep = "."
140:             @topicprefix = "/topic/"
141:             @queueprefix = "/queue/"
142:             @classesfile = "/var/lib/puppet/state/classes.txt"
143:             @rpcaudit = false
144:             @rpcauditprovider = ""
145:             @rpcauthorization = false
146:             @rpcauthprovider = ""
147:             @configdir = File.dirname(configfile)
148:             @color = true
149:             @configfile = configfile
150:             @rpchelptemplate = "/etc/mcollective/rpc-help.erb"
151:             @logger_type = "file"
152:             @keeplogs = 5
153:             @max_log_size = 2097152
154:             @rpclimitmethod = :first
155:             @libdir = Array.new
156:             @fact_cache_time = 300
157:             @loglevel = "info"
158:             @collectives = ["mcollective"]
159:             @main_collective = @collectives.first
160:             @ssl_cipher = "aes-256-cbc"
161:             @direct_addressing = false
162:             @direct_addressing_threshold = 10
163:         end

[Validate]