X-Git-Url: https://review.fuel-infra.org/gitweb?a=blobdiff_plain;ds=sidebyside;f=doc%2Fclasses%2FMCollective%2FConfig.html;fp=doc%2Fclasses%2FMCollective%2FConfig.html;h=72df34617349590fa4cf9b405c9713b9fffe8fa5;hb=d1f1649ba43c5cbc43c4beb2380096ba051d646a;hp=0000000000000000000000000000000000000000;hpb=8a3fe7daeecccf43dd71c59371c5005400d35101;p=packages%2Fprecise%2Fmcollective.git diff --git a/doc/classes/MCollective/Config.html b/doc/classes/MCollective/Config.html new file mode 100644 index 0000000..72df346 --- /dev/null +++ b/doc/classes/MCollective/Config.html @@ -0,0 +1,612 @@ + + + + +
+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] | ++ |
default_discovery_method | +[R] | ++ |
default_discovery_options | +[R] | ++ |
direct_addressing | +[R] | ++ |
direct_addressing_threshold | +[R] | ++ |
fact_cache_time | +[R] | ++ |
factsource | +[R] | ++ |
identity | +[R] | ++ |
keeplogs | +[R] | ++ |
libdir | +[R] | ++ |
logfacility | +[R] | ++ |
logfile | +[R] | ++ |
logger_type | +[R] | ++ |
loglevel | +[R] | ++ |
main_collective | +[R] | ++ |
max_log_size | +[R] | ++ |
mode | +[RW] | ++ |
pluginconf | +[R] | ++ |
publish_timeout | +[R] | ++ |
registerinterval | +[R] | ++ |
registration | +[R] | ++ |
registration_collective | +[R] | ++ |
rpcaudit | +[R] | ++ |
rpcauditprovider | +[R] | ++ |
rpcauthorization | +[R] | ++ |
rpcauthprovider | +[R] | ++ |
rpclimitmethod | +[R] | ++ |
securityprovider | +[R] | ++ |
ssl_cipher | +[R] | ++ |
threaded | +[R] | ++ |
ttl | +[R] | ++ |
+ # File lib/mcollective/config.rb, line 20 +20: def initialize +21: @configured = false +22: end ++
+ # 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 ++
+ # 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 ++
+ # 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 ++