(Not documented)
A pretty sucky config class, ripe for refactoring/improving
(Not documented)
# File lib/mcollective/config.rb, line 24 24: def loadconfig(configfile) 25: set_config_defaults(configfile) 26: 27: if File.exists?(configfile) 28: File.readlines(configfile).each do |line| 29: 30: # strip blank spaces, tabs etc off the end of all lines 31: line.gsub!(/\s*$/, "") 32: 33: unless line =~ /^#|^$/ 34: if (line =~ /(.+?)\s*=\s*(.+)/) 35: key = $1.strip 36: val = $2 37: 38: case key 39: when "registration" 40: @registration = val.capitalize 41: when "registration_collective" 42: @registration_collective = val 43: when "registerinterval" 44: @registerinterval = val.to_i 45: when "collectives" 46: @collectives = val.split(",").map {|c| c.strip} 47: when "main_collective" 48: @main_collective = val 49: when "logfile" 50: @logfile = val 51: when "keeplogs" 52: @keeplogs = val.to_i 53: when "max_log_size" 54: @max_log_size = val.to_i 55: when "loglevel" 56: @loglevel = val 57: when "logfacility" 58: @logfacility = val 59: when "libdir" 60: paths = val.split(File::PATH_SEPARATOR) 61: paths.each do |path| 62: raise("libdir paths should be absolute paths but '%s' is relative" % path) unless Util.absolute_path?(path) 63: 64: @libdir << path 65: unless $LOAD_PATH.include?(path) 66: $LOAD_PATH << path 67: end 68: end 69: when "identity" 70: @identity = val 71: when "direct_addressing" 72: @direct_addressing = Util.str_to_bool(val) 73: when "direct_addressing_threshold" 74: @direct_addressing_threshold = val.to_i 75: when "color" 76: @color = Util.str_to_bool(val) 77: when "daemonize" 78: @daemonize = Util.str_to_bool(val) 79: when "securityprovider" 80: @securityprovider = val.capitalize 81: when "factsource" 82: @factsource = val.capitalize 83: when "connector" 84: @connector = val.capitalize 85: when "classesfile" 86: @classesfile = val 87: when /^plugin.(.+)$/ 88: @pluginconf[$1] = val 89: when "publish_timeout" 90: @publish_timeout = val.to_i 91: when "rpcaudit" 92: @rpcaudit = Util.str_to_bool(val) 93: when "rpcauditprovider" 94: @rpcauditprovider = val.capitalize 95: when "rpcauthorization" 96: @rpcauthorization = Util.str_to_bool(val) 97: when "rpcauthprovider" 98: @rpcauthprovider = val.capitalize 99: when "rpclimitmethod" 100: @rpclimitmethod = val.to_sym 101: when "logger_type" 102: @logger_type = val 103: when "fact_cache_time" 104: @fact_cache_time = val.to_i 105: when "ssl_cipher" 106: @ssl_cipher = val 107: when "threaded" 108: @threaded = Util.str_to_bool(val) 109: when "ttl" 110: @ttl = val.to_i 111: when "default_discovery_options" 112: @default_discovery_options << val 113: when "default_discovery_method" 114: @default_discovery_method = val 115: else 116: raise("Unknown config parameter '#{key}'") 117: end 118: end 119: end 120: end 121: 122: raise('The %s config file does not specify a libdir setting, cannot continue' % configfile) if @libdir.empty? 123: 124: I18n.load_path = Dir[File.expand_path(File.join(File.dirname(__FILE__), "locales", "*.yml"))] 125: I18n.locale = :en 126: 127: read_plugin_config_dir("#{@configdir}/plugin.d") 128: 129: raise 'Identities can only match /\w\.\-/' unless @identity.match(/^[\w\.\-]+$/) 130: 131: @configured = true 132: 133: @libdir.each {|dir| Log.warn("Cannot find libdir: #{dir}") unless File.directory?(dir)} 134: 135: if @logger_type == "syslog" 136: raise "The sylog logger is not usable on the Windows platform" if Util.windows? 137: end 138: 139: PluginManager.loadclass("Mcollective::Facts::#{@factsource}_facts") 140: PluginManager.loadclass("Mcollective::Connector::#{@connector}") 141: PluginManager.loadclass("Mcollective::Security::#{@securityprovider}") 142: PluginManager.loadclass("Mcollective::Registration::#{@registration}") 143: PluginManager.loadclass("Mcollective::Audit::#{@rpcauditprovider}") if @rpcaudit 144: PluginManager << {:type => "global_stats", :class => RunnerStats.new} 145: 146: Log.logmsg(:PLMC1, "The Marionette Collective version %{version} started by %{name} using config file %{config}", :info, :version => MCollective::VERSION, :name => $0, :config => configfile) 147: else 148: raise("Cannot find config file '#{configfile}'") 149: end 150: end
(Not documented)
# File lib/mcollective/config.rb, line 192 192: def read_plugin_config_dir(dir) 193: return unless File.directory?(dir) 194: 195: Dir.new(dir).each do |pluginconfigfile| 196: next unless pluginconfigfile =~ /^([\w]+).cfg$/ 197: 198: plugin = $1 199: File.open("#{dir}/#{pluginconfigfile}", "r").each do |line| 200: # strip blank lines 201: line.gsub!(/\s*$/, "") 202: next if line =~ /^#|^$/ 203: if (line =~ /(.+?)\s*=\s*(.+)/) 204: key = $1.strip 205: val = $2 206: @pluginconf["#{plugin}.#{key}"] = val 207: end 208: end 209: end 210: end
(Not documented)
# File lib/mcollective/config.rb, line 152 152: def set_config_defaults(configfile) 153: @stomp = Hash.new 154: @subscribe = Array.new 155: @pluginconf = Hash.new 156: @connector = "activemq" 157: @securityprovider = "Psk" 158: @factsource = "Yaml" 159: @identity = Socket.gethostname 160: @registration = "Agentlist" 161: @registerinterval = 0 162: @registration_collective = nil 163: @classesfile = "/var/lib/puppet/state/classes.txt" 164: @rpcaudit = false 165: @rpcauditprovider = "" 166: @rpcauthorization = false 167: @rpcauthprovider = "" 168: @configdir = File.dirname(configfile) 169: @color = !Util.windows? 170: @configfile = configfile 171: @logger_type = "file" 172: @keeplogs = 5 173: @max_log_size = 2097152 174: @rpclimitmethod = :first 175: @libdir = Array.new 176: @fact_cache_time = 300 177: @loglevel = "info" 178: @logfacility = "user" 179: @collectives = ["mcollective"] 180: @main_collective = @collectives.first 181: @ssl_cipher = "aes-256-cbc" 182: @direct_addressing = true 183: @direct_addressing_threshold = 10 184: @default_discovery_method = "mc" 185: @default_discovery_options = [] 186: @ttl = 60 187: @mode = :client 188: @publish_timeout = 2 189: @threaded = false 190: end
Disabled; run with --debug to generate this.
Generated with the Darkfish Rdoc Generator 1.1.6.