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] 
ttl  [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:                 when "ttl"
105:                   @ttl = val.to_i
106:                 else
107:                   raise("Unknown config parameter #{key}")
108:               end
109:             end
110:           end
111:         end
112: 
113:         read_plugin_config_dir("#{@configdir}/plugin.d")
114: 
115:         raise 'Identities can only match /\w\.\-/' unless @identity.match(/^[\w\.\-]+$/)
116: 
117:         @configured = true
118: 
119:         @libdir.each {|dir| Log.warn("Cannot find libdir: #{dir}") unless File.directory?(dir)}
120: 
121:         PluginManager.loadclass("Mcollective::Facts::#{@factsource}_facts")
122:         PluginManager.loadclass("Mcollective::Connector::#{@connector}")
123:         PluginManager.loadclass("Mcollective::Security::#{@securityprovider}")
124:         PluginManager.loadclass("Mcollective::Registration::#{@registration}")
125:         PluginManager.loadclass("Mcollective::Audit::#{@rpcauditprovider}") if @rpcaudit
126:         PluginManager << {:type => "global_stats", :class => RunnerStats.new}
127:       else
128:         raise("Cannot find config file '#{configfile}'")
129:       end
130:     end

[Source]

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

[Source]

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

[Validate]