mcollective-client 2.2.4 → 2.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of mcollective-client might be problematic. Click here for more details.

Files changed (66) hide show
  1. checksums.yaml +7 -0
  2. data/lib/mcollective/application.rb +25 -34
  3. data/lib/mcollective/client.rb +91 -33
  4. data/lib/mcollective/config.rb +42 -43
  5. data/lib/mcollective/data/base.rb +1 -1
  6. data/lib/mcollective/data/result.rb +6 -2
  7. data/lib/mcollective/ddl/agentddl.rb +28 -1
  8. data/lib/mcollective/ddl/base.rb +8 -6
  9. data/lib/mcollective/log.rb +11 -3
  10. data/lib/mcollective/logger/file_logger.rb +4 -4
  11. data/lib/mcollective/matcher.rb +9 -1
  12. data/lib/mcollective/message.rb +14 -23
  13. data/lib/mcollective/optionparser.rb +9 -1
  14. data/lib/mcollective/pluginpackager.rb +24 -3
  15. data/lib/mcollective/pluginpackager/agent_definition.rb +12 -12
  16. data/lib/mcollective/pluginpackager/standard_definition.rb +12 -12
  17. data/lib/mcollective/rpc/agent.rb +15 -12
  18. data/lib/mcollective/rpc/client.rb +67 -31
  19. data/lib/mcollective/rpc/helpers.rb +7 -1
  20. data/lib/mcollective/rpc/reply.rb +3 -1
  21. data/lib/mcollective/shell.rb +45 -8
  22. data/lib/mcollective/util.rb +37 -1
  23. data/lib/mcollective/windows_daemon.rb +14 -3
  24. data/spec/spec_helper.rb +2 -0
  25. data/spec/unit/application_spec.rb +45 -26
  26. data/spec/unit/cache_spec.rb +3 -3
  27. data/spec/unit/client_spec.rb +269 -24
  28. data/spec/unit/config_spec.rb +89 -26
  29. data/spec/unit/data/base_spec.rb +1 -0
  30. data/spec/unit/data/result_spec.rb +19 -1
  31. data/spec/unit/data_spec.rb +3 -0
  32. data/spec/unit/ddl/agentddl_spec.rb +32 -0
  33. data/spec/unit/ddl/base_spec.rb +4 -0
  34. data/spec/unit/ddl/dataddl_spec.rb +1 -1
  35. data/spec/unit/log_spec.rb +44 -27
  36. data/spec/unit/logger/base_spec.rb +1 -1
  37. data/spec/unit/matcher_spec.rb +14 -0
  38. data/spec/unit/message_spec.rb +24 -0
  39. data/spec/unit/optionparser_spec.rb +99 -0
  40. data/spec/unit/pluginpackager/agent_definition_spec.rb +48 -17
  41. data/spec/unit/pluginpackager/standard_definition_spec.rb +44 -20
  42. data/spec/unit/pluginpackager_spec.rb +31 -7
  43. data/spec/unit/plugins/mcollective/agent/rpcutil_spec.rb +176 -0
  44. data/spec/unit/plugins/mcollective/application/plugin_spec.rb +81 -0
  45. data/spec/unit/plugins/mcollective/audit/logfile_spec.rb +44 -0
  46. data/spec/unit/plugins/mcollective/connector/activemq_spec.rb +118 -27
  47. data/spec/unit/plugins/mcollective/connector/rabbitmq_spec.rb +168 -34
  48. data/spec/unit/plugins/mcollective/data/agent_data_spec.rb +1 -0
  49. data/spec/unit/plugins/mcollective/data/fstat_data_spec.rb +1 -0
  50. data/spec/unit/plugins/mcollective/discovery/flatfile_spec.rb +10 -0
  51. data/spec/unit/plugins/mcollective/discovery/stdin_spec.rb +65 -0
  52. data/spec/unit/plugins/mcollective/facts/yaml_facts_spec.rb +65 -0
  53. data/spec/unit/plugins/mcollective/packagers/debpackage_packager_spec.rb +240 -219
  54. data/spec/unit/plugins/mcollective/packagers/modulepackage_packager_spec.rb +209 -0
  55. data/spec/unit/plugins/mcollective/packagers/rpmpackage_packager_spec.rb +223 -109
  56. data/spec/unit/rpc/actionrunner_spec.rb +2 -1
  57. data/spec/unit/rpc/agent_spec.rb +130 -1
  58. data/spec/unit/rpc/client_spec.rb +169 -3
  59. data/spec/unit/security/base_spec.rb +0 -1
  60. data/spec/unit/shell_spec.rb +76 -3
  61. data/spec/unit/util_spec.rb +69 -1
  62. data/spec/unit/windows_daemon_spec.rb +30 -9
  63. metadata +104 -90
  64. data/spec/unit/plugins/mcollective/connector/stomp/eventlogger_spec.rb +0 -34
  65. data/spec/unit/plugins/mcollective/connector/stomp_spec.rb +0 -424
  66. data/spec/unit/plugins/mcollective/validator/any_validator_spec.rb +0 -15
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 56381fee132b101d5841676045d4294419404fba
4
+ data.tar.gz: cfeb66a43d1179d79489d9dfef032d936bdda499
5
+ SHA512:
6
+ metadata.gz: 44e8c61ac26956818a744e4a3daa1b5513a6da8c80b25747d9864d2394825337438817eeab07b8edd195947ea123d07310d1479df84c1ad09e75823a94e71998
7
+ data.tar.gz: b09053846889112bdad071459484f8511418a0fef51e1a26d3d2b39a04b34f7e2d9d87752ff0beb96785f3acd463d9b0a69234f892ca0a6177458895ca824090
@@ -149,6 +149,8 @@ module MCollective
149
149
  parser.separator ""
150
150
  end
151
151
 
152
+ parser.separator "Application Options" unless application_cli_arguments.empty?
153
+
152
154
  parser.define_tail ""
153
155
  parser.define_tail "The Marionette Collective #{MCollective.version}"
154
156
 
@@ -180,7 +182,7 @@ module MCollective
180
182
  parser.send(*opts_array) do |v|
181
183
  validate_option(carg[:validate], carg[:name], v)
182
184
 
183
- configuration[carg[:name]] = true
185
+ configuration[carg[:name]] = v
184
186
  end
185
187
 
186
188
  elsif carg[:type] == :array
@@ -255,7 +257,11 @@ module MCollective
255
257
  raise(e)
256
258
  end
257
259
 
258
- err_dest.puts "\nThe %s application failed to run, use -v for full error details: %s\n" % [ Util.colorize(:bold, $0), Util.colorize(:red, e.to_s)]
260
+ if options[:verbose]
261
+ err_dest.puts "\nThe %s application failed to run: %s\n" % [ Util.colorize(:bold, $0), Util.colorize(:red, e.to_s)]
262
+ else
263
+ err_dest.puts "\nThe %s application failed to run, use -v for full error backtrace details: %s\n" % [ Util.colorize(:bold, $0), Util.colorize(:red, e.to_s)]
264
+ end
259
265
 
260
266
  if options.nil? || options[:verbose]
261
267
  e.backtrace.first << Util.colorize(:red, " <----")
@@ -302,46 +308,31 @@ module MCollective
302
308
  exit 1
303
309
  end
304
310
 
311
+ def halt_code(stats)
312
+ request_stats = {:discoverytime => 0,
313
+ :discovered => 0,
314
+ :okcount => 0,
315
+ :failcount => 0}.merge(stats.to_hash)
316
+
317
+ return 4 if request_stats[:discoverytime] == 0 && request_stats[:responses] == 0
318
+ return 3 if request_stats[:discovered] > 0 && request_stats[:responses] == 0
319
+ return 2 if request_stats[:discovered] > 0 && request_stats[:failcount] > 0
320
+ return 1 if request_stats[:discovered] == 0
321
+ return 0 if request_stats[:discoverytime] == 0 && request_stats[:discovered] == request_stats[:okcount]
322
+ return 0 if request_stats[:discovered] == request_stats[:okcount]
323
+ end
324
+
305
325
  # A helper that creates a consistent exit code for applications by looking at an
306
326
  # instance of MCollective::RPC::Stats
307
327
  #
308
328
  # Exit with 0 if nodes were discovered and all passed
309
- # Exit with 0 if no discovery were done and > 0 responses were received
329
+ # Exit with 0 if no discovery were done and > 0 responses were received, all ok
310
330
  # Exit with 1 if no nodes were discovered
311
331
  # Exit with 2 if nodes were discovered but some RPC requests failed
312
- # Exit with 3 if nodes were discovered, but not responses received
332
+ # Exit with 3 if nodes were discovered, but no responses received
313
333
  # Exit with 4 if no discovery were done and no responses were received
314
334
  def halt(stats)
315
- request_stats = {:discoverytime => 0,
316
- :discovered => 0,
317
- :failcount => 0}.merge(stats.to_hash)
318
-
319
- # was discovery done?
320
- if request_stats[:discoverytime] != 0
321
- # was any nodes discovered
322
- if request_stats[:discovered] == 0
323
- exit 1
324
-
325
- # nodes were discovered, did we get responses
326
- elsif request_stats[:responses] == 0
327
- exit 3
328
-
329
- else
330
- # we got responses and discovery was done, no failures
331
- if request_stats[:failcount] == 0
332
- exit 0
333
- else
334
- exit 2
335
- end
336
- end
337
- else
338
- # discovery wasnt done and we got no responses
339
- if request_stats[:responses] == 0
340
- exit 4
341
- else
342
- exit 0
343
- end
344
- end
335
+ exit(halt_code(stats))
345
336
  end
346
337
 
347
338
  # Wrapper around MC::RPC#rpcclient that forcably supplies our options hash
@@ -37,6 +37,15 @@ module MCollective
37
37
  # Sends a request and returns the generated request id, doesn't wait for
38
38
  # responses and doesn't execute any passed in code blocks for responses
39
39
  def sendreq(msg, agent, filter = {})
40
+ request = createreq(msg, agent, filter)
41
+
42
+ Log.debug("Sending request #{request.requestid} to the #{request.agent} agent with ttl #{request.ttl} in collective #{request.collective}")
43
+
44
+ request.publish
45
+ request.requestid
46
+ end
47
+
48
+ def createreq(msg, agent, filter ={})
40
49
  if msg.is_a?(Message)
41
50
  request = msg
42
51
  agent = request.agent
@@ -47,14 +56,8 @@ module MCollective
47
56
  end
48
57
 
49
58
  request.encode!
50
-
51
- Log.debug("Sending request #{request.requestid} to the #{request.agent} agent with ttl #{request.ttl} in collective #{request.collective}")
52
-
53
59
  subscribe(agent, :reply) unless request.reply_to
54
-
55
- request.publish
56
-
57
- request.requestid
60
+ request
58
61
  end
59
62
 
60
63
  def subscribe(agent, type)
@@ -91,15 +94,14 @@ module MCollective
91
94
  reply.expected_msgid = requestid
92
95
 
93
96
  reply.decode!
94
-
95
- reply.payload[:senderid] = Digest::MD5.hexdigest(reply.payload[:senderid]) if ENV.include?("MCOLLECTIVE_ANON")
96
-
97
- raise(MsgDoesNotMatchRequestID, "Message reqid #{requestid} does not match our reqid #{reply.requestid}") unless reply.requestid == requestid
97
+ unless reply.requestid == requestid
98
+ raise(MsgDoesNotMatchRequestID, "Message reqid #{reply.requestid} does not match our reqid #{requestid}")
99
+ end
98
100
  rescue SecurityValidationFailed => e
99
101
  Log.warn("Ignoring a message that did not pass security validations")
100
102
  retry
101
103
  rescue MsgDoesNotMatchRequestID => e
102
- Log.debug("Ignoring a message for some other client")
104
+ Log.debug("Ignoring a message for some other client : #{e.message}")
103
105
  retry
104
106
  end
105
107
 
@@ -124,7 +126,7 @@ module MCollective
124
126
  #
125
127
  # It returns a hash of times and timeouts for discovery and total run is taken from the options
126
128
  # hash which in turn is generally built using MCollective::Optionparser
127
- def req(body, agent=nil, options=false, waitfor=0)
129
+ def req(body, agent=nil, options=false, waitfor=0, &block)
128
130
  if body.is_a?(Message)
129
131
  agent = body.agent
130
132
  waitfor = body.discovered_hosts.size || 0
@@ -132,46 +134,102 @@ module MCollective
132
134
  end
133
135
 
134
136
  @options = options if options
135
-
136
- stat = {:starttime => Time.now.to_f, :discoverytime => 0, :blocktime => 0, :totaltime => 0}
137
-
137
+ threaded = @options[:threaded]
138
138
  timeout = @discoverer.discovery_timeout(@options[:timeout], @options[:filter])
139
-
139
+ request = createreq(body, agent, @options[:filter])
140
+ publish_timeout = @options[:publish_timeout]
141
+ stat = {:starttime => Time.now.to_f, :discoverytime => 0, :blocktime => 0, :totaltime => 0}
140
142
  STDOUT.sync = true
141
-
142
143
  hosts_responded = 0
143
- reqid = nil
144
+
144
145
 
145
146
  begin
146
- Log.debug("Publishing request to agent %s with timeout %d" % [agent, timeout])
147
+ if threaded
148
+ hosts_responded = threaded_req(request, publish_timeout, timeout, waitfor, &block)
149
+ else
150
+ hosts_responded = unthreaded_req(request, publish_timeout, timeout, waitfor, &block)
151
+ end
152
+ rescue Interrupt => e
153
+ ensure
154
+ unsubscribe(agent, :reply)
155
+ end
147
156
 
148
- Timeout.timeout(timeout) do
149
- reqid = sendreq(body, agent, @options[:filter])
157
+ return update_stat(stat, hosts_responded, request.requestid)
158
+ end
150
159
 
151
- loop do
152
- resp = receive(reqid)
160
+ # Starts the client receiver and publisher unthreaded.
161
+ # This is the default client behaviour.
162
+ def unthreaded_req(request, publish_timeout, timeout, waitfor, &block)
163
+ start_publisher(request, publish_timeout)
164
+ start_receiver(request.requestid, waitfor, timeout, &block)
165
+ end
153
166
 
154
- hosts_responded += 1
167
+ # Starts the client receiver and publisher in threads.
168
+ # This is activated when the 'threader_client' configuration
169
+ # option is set.
170
+ def threaded_req(request, publish_timeout, timeout, waitfor, &block)
171
+ Log.debug("Starting threaded client")
172
+ publisher = Thread.new do
173
+ start_publisher(request, publish_timeout)
174
+ end
155
175
 
156
- yield(resp.payload)
176
+ # When the client is threaded we add the publishing timeout to
177
+ # the agent timeout so that the receiver doesn't time out before
178
+ # publishing has finished in cases where publish_timeout >= timeout.
179
+ total_timeout = publish_timeout + timeout
180
+ hosts_responded = 0
181
+
182
+ receiver = Thread.new do
183
+ hosts_responded = start_receiver(request.requestid, waitfor, total_timeout, &block)
184
+ end
157
185
 
158
- break if (waitfor != 0 && hosts_responded >= waitfor)
159
- end
186
+ receiver.join
187
+ hosts_responded
188
+ end
189
+
190
+ # Starts the request publishing routine
191
+ def start_publisher(request, publish_timeout)
192
+ Log.debug("Starting publishing with publish timeout of #{publish_timeout}")
193
+ begin
194
+ Timeout.timeout(publish_timeout) do
195
+ Log.debug("Sending request #{request.requestid} to the #{request.agent} agent with ttl #{request.ttl} in collective #{request.collective}")
196
+ request.publish
160
197
  end
161
- rescue Interrupt => e
162
198
  rescue Timeout::Error => e
163
- ensure
164
- unsubscribe(agent, :reply)
199
+ Log.warn("Could not publish all messages. Publishing timed out.")
200
+ end
201
+ end
202
+
203
+ # Starts the response receiver routine
204
+ # Expected to return the amount of received responses.
205
+ def start_receiver(requestid, waitfor, timeout, &block)
206
+ Log.debug("Starting response receiver with timeout of #{timeout}")
207
+ hosts_responded = 0
208
+ begin
209
+ Timeout.timeout(timeout) do
210
+ begin
211
+ resp = receive(requestid)
212
+ yield resp.payload
213
+ hosts_responded += 1
214
+ end while (waitfor == 0 || hosts_responded < waitfor)
215
+ end
216
+ rescue Timeout::Error => e
217
+ if (waitfor > hosts_responded)
218
+ Log.warn("Could not receive all responses. Expected : #{waitfor}. Received : #{hosts_responded}")
219
+ end
165
220
  end
166
221
 
222
+ hosts_responded
223
+ end
224
+
225
+ def update_stat(stat, hosts_responded, requestid)
167
226
  stat[:totaltime] = Time.now.to_f - stat[:starttime]
168
227
  stat[:blocktime] = stat[:totaltime] - stat[:discoverytime]
169
228
  stat[:responses] = hosts_responded
170
229
  stat[:noresponsefrom] = []
171
- stat[:requestid] = reqid
230
+ stat[:requestid] = requestid
172
231
 
173
232
  @stats = stat
174
- return stat
175
233
  end
176
234
 
177
235
  def discovered_req(body, agent, options=false)
@@ -5,16 +5,17 @@ module MCollective
5
5
 
6
6
  attr_accessor :mode
7
7
 
8
- attr_reader :topicprefix, :daemonize, :pluginconf, :libdir, :configured
8
+ attr_reader :daemonize, :pluginconf, :libdir, :configured
9
9
  attr_reader :logfile, :keeplogs, :max_log_size, :loglevel, :logfacility
10
10
  attr_reader :identity, :daemonize, :connector, :securityprovider, :factsource
11
- attr_reader :registration, :registerinterval, :topicsep, :classesfile
11
+ attr_reader :registration, :registerinterval, :classesfile
12
12
  attr_reader :rpcauditprovider, :rpcaudit, :configdir, :rpcauthprovider
13
- attr_reader :rpcauthorization, :color, :configfile, :rpchelptemplate
13
+ attr_reader :rpcauthorization, :color, :configfile
14
14
  attr_reader :rpclimitmethod, :logger_type, :fact_cache_time, :collectives
15
15
  attr_reader :main_collective, :ssl_cipher, :registration_collective
16
- attr_reader :direct_addressing, :direct_addressing_threshold, :ttl, :helptemplatedir
17
- attr_reader :queueprefix, :default_discovery_method, :default_discovery_options
16
+ attr_reader :direct_addressing, :direct_addressing_threshold, :ttl
17
+ attr_reader :default_discovery_method, :default_discovery_options
18
+ attr_reader :publish_timeout, :threaded
18
19
 
19
20
  def initialize
20
21
  @configured = false
@@ -24,39 +25,34 @@ module MCollective
24
25
  set_config_defaults(configfile)
25
26
 
26
27
  if File.exists?(configfile)
27
- File.open(configfile, "r").each do |line|
28
+ File.readlines(configfile).each do |line|
28
29
 
29
30
  # strip blank spaces, tabs etc off the end of all lines
30
31
  line.gsub!(/\s*$/, "")
31
32
 
32
33
  unless line =~ /^#|^$/
33
34
  if (line =~ /(.+?)\s*=\s*(.+)/)
34
- key = $1
35
+ key = $1.strip
35
36
  val = $2
36
37
 
37
- case key
38
- when "topicsep"
39
- @topicsep = val
38
+ begin
39
+ case key
40
40
  when "registration"
41
41
  @registration = val.capitalize
42
42
  when "registration_collective"
43
43
  @registration_collective = val
44
44
  when "registerinterval"
45
- @registerinterval = val.to_i
45
+ @registerinterval = Integer(val)
46
46
  when "collectives"
47
47
  @collectives = val.split(",").map {|c| c.strip}
48
48
  when "main_collective"
49
49
  @main_collective = val
50
- when "topicprefix"
51
- @topicprefix = val
52
- when "queueprefix"
53
- @queueprefix = val
54
50
  when "logfile"
55
51
  @logfile = val
56
52
  when "keeplogs"
57
- @keeplogs = val.to_i
53
+ @keeplogs = Integer(val)
58
54
  when "max_log_size"
59
- @max_log_size = val.to_i
55
+ @max_log_size = Integer(val)
60
56
  when "loglevel"
61
57
  @loglevel = val
62
58
  when "logfacility"
@@ -64,6 +60,8 @@ module MCollective
64
60
  when "libdir"
65
61
  paths = val.split(File::PATH_SEPARATOR)
66
62
  paths.each do |path|
63
+ raise("libdir paths should be absolute paths but '%s' is relative" % path) unless Util.absolute_path?(path)
64
+
67
65
  @libdir << path
68
66
  unless $LOAD_PATH.include?(path)
69
67
  $LOAD_PATH << path
@@ -72,13 +70,13 @@ module MCollective
72
70
  when "identity"
73
71
  @identity = val
74
72
  when "direct_addressing"
75
- val =~ /^1|y/i ? @direct_addressing = true : @direct_addressing = false
73
+ @direct_addressing = Util.str_to_bool(val)
76
74
  when "direct_addressing_threshold"
77
- @direct_addressing_threshold = val.to_i
75
+ @direct_addressing_threshold = Integer(val)
78
76
  when "color"
79
- val =~ /^1|y/i ? @color = true : @color = false
77
+ @color = Util.str_to_bool(val)
80
78
  when "daemonize"
81
- val =~ /^1|y/i ? @daemonize = true : @daemonize = false
79
+ @daemonize = Util.str_to_bool(val)
82
80
  when "securityprovider"
83
81
  @securityprovider = val.capitalize
84
82
  when "factsource"
@@ -89,39 +87,46 @@ module MCollective
89
87
  @classesfile = val
90
88
  when /^plugin.(.+)$/
91
89
  @pluginconf[$1] = val
90
+ when "publish_timeout"
91
+ @publish_timeout = Integer(val)
92
92
  when "rpcaudit"
93
- val =~ /^1|y/i ? @rpcaudit = true : @rpcaudit = false
93
+ @rpcaudit = Util.str_to_bool(val)
94
94
  when "rpcauditprovider"
95
95
  @rpcauditprovider = val.capitalize
96
96
  when "rpcauthorization"
97
- val =~ /^1|y/i ? @rpcauthorization = true : @rpcauthorization = false
97
+ @rpcauthorization = Util.str_to_bool(val)
98
98
  when "rpcauthprovider"
99
99
  @rpcauthprovider = val.capitalize
100
- when "rpchelptemplate"
101
- @rpchelptemplate = val
102
100
  when "rpclimitmethod"
103
101
  @rpclimitmethod = val.to_sym
104
102
  when "logger_type"
105
103
  @logger_type = val
106
104
  when "fact_cache_time"
107
- @fact_cache_time = val.to_i
105
+ @fact_cache_time = Integer(val)
108
106
  when "ssl_cipher"
109
107
  @ssl_cipher = val
108
+ when "threaded"
109
+ @threaded = Util.str_to_bool(val)
110
110
  when "ttl"
111
- @ttl = val.to_i
112
- when "helptemplatedir"
113
- @helptemplatedir = val
111
+ @ttl = Integer(val)
114
112
  when "default_discovery_options"
115
113
  @default_discovery_options << val
116
114
  when "default_discovery_method"
117
115
  @default_discovery_method = val
116
+ when "topicprefix", "topicsep", "queueprefix", "rpchelptemplate", "helptemplatedir"
117
+ Log.warn("Use of deprecated '#{key}' option. This option is ignored and should be removed from '#{configfile}'")
118
118
  else
119
- raise("Unknown config parameter #{key}")
119
+ raise("Unknown config parameter '#{key}'")
120
+ end
121
+ rescue ArgumentError => e
122
+ raise "Could not parse value for configuration option '#{key}' with value '#{val}'"
120
123
  end
121
124
  end
122
125
  end
123
126
  end
124
127
 
128
+ raise('The %s config file does not specify a libdir setting, cannot continue' % configfile) if @libdir.empty?
129
+
125
130
  read_plugin_config_dir("#{@configdir}/plugin.d")
126
131
 
127
132
  raise 'Identities can only match /\w\.\-/' unless @identity.match(/^[\w\.\-]+$/)
@@ -140,6 +145,8 @@ module MCollective
140
145
  PluginManager.loadclass("Mcollective::Registration::#{@registration}")
141
146
  PluginManager.loadclass("Mcollective::Audit::#{@rpcauditprovider}") if @rpcaudit
142
147
  PluginManager << {:type => "global_stats", :class => RunnerStats.new}
148
+
149
+ Log.info("The Marionette Collective version #{MCollective::VERSION} started by #{$0} using config file #{configfile}")
143
150
  else
144
151
  raise("Cannot find config file '#{configfile}'")
145
152
  end
@@ -149,16 +156,13 @@ module MCollective
149
156
  @stomp = Hash.new
150
157
  @subscribe = Array.new
151
158
  @pluginconf = Hash.new
152
- @connector = "Stomp"
159
+ @connector = "activemq"
153
160
  @securityprovider = "Psk"
154
161
  @factsource = "Yaml"
155
162
  @identity = Socket.gethostname
156
163
  @registration = "Agentlist"
157
164
  @registerinterval = 0
158
165
  @registration_collective = nil
159
- @topicsep = "."
160
- @topicprefix = "/topic/"
161
- @queueprefix = "/queue/"
162
166
  @classesfile = "/var/lib/puppet/state/classes.txt"
163
167
  @rpcaudit = false
164
168
  @rpcauditprovider = ""
@@ -178,19 +182,14 @@ module MCollective
178
182
  @collectives = ["mcollective"]
179
183
  @main_collective = @collectives.first
180
184
  @ssl_cipher = "aes-256-cbc"
181
- @direct_addressing = false
185
+ @direct_addressing = true
182
186
  @direct_addressing_threshold = 10
183
187
  @default_discovery_method = "mc"
184
188
  @default_discovery_options = []
185
189
  @ttl = 60
186
190
  @mode = :client
187
-
188
- # look in the config dir for the template so users can provide their own and windows
189
- # with odd paths will just work more often, but fall back to old behavior if it does
190
- # not exist
191
- @rpchelptemplate = File.join(File.dirname(configfile), "rpc-help.erb")
192
- @rpchelptemplate = "/etc/mcollective/rpc-help.erb" unless File.exists?(@rpchelptemplate)
193
- @helptemplatedir = File.dirname(@rpchelptemplate)
191
+ @publish_timeout = 2
192
+ @threaded = false
194
193
  end
195
194
 
196
195
  def read_plugin_config_dir(dir)
@@ -205,7 +204,7 @@ module MCollective
205
204
  line.gsub!(/\s*$/, "")
206
205
  next if line =~ /^#|^$/
207
206
  if (line =~ /(.+?)\s*=\s*(.+)/)
208
- key = $1
207
+ key = $1.strip
209
208
  val = $2
210
209
  @pluginconf["#{plugin}.#{key}"] = val
211
210
  end