choria-mcorpc-support 2.23.3 → 2.24.4

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.
Files changed (59) hide show
  1. checksums.yaml +5 -5
  2. data/lib/mcollective.rb +3 -3
  3. data/lib/mcollective/agent/choria_provision.ddl +214 -0
  4. data/lib/mcollective/agent/choria_provision.json +272 -0
  5. data/lib/mcollective/agent/choria_util.ddl +226 -107
  6. data/lib/mcollective/agent/choria_util.json +125 -25
  7. data/lib/mcollective/agent/rpcutil.ddl +242 -183
  8. data/lib/mcollective/agent/rpcutil.json +53 -57
  9. data/lib/mcollective/agent/scout.ddl +1 -1
  10. data/lib/mcollective/agent/scout.json +108 -136
  11. data/lib/mcollective/application/find.rb +1 -1
  12. data/lib/mcollective/application/plugin.rb +8 -173
  13. data/lib/mcollective/client.rb +1 -1
  14. data/lib/mcollective/config.rb +145 -103
  15. data/lib/mcollective/ddl.rb +0 -1
  16. data/lib/mcollective/discovery.rb +11 -63
  17. data/lib/mcollective/discovery/broadcast.ddl +11 -0
  18. data/lib/mcollective/discovery/choria.ddl +6 -4
  19. data/lib/mcollective/discovery/delegate.ddl +13 -0
  20. data/lib/mcollective/discovery/delegate.rb +72 -0
  21. data/lib/mcollective/discovery/external.ddl +13 -0
  22. data/lib/mcollective/discovery/file.ddl +13 -0
  23. data/lib/mcollective/discovery/flatfile.ddl +7 -5
  24. data/lib/mcollective/discovery/inventory.ddl +13 -0
  25. data/lib/mcollective/discovery/mc.ddl +3 -3
  26. data/lib/mcollective/log.rb +1 -2
  27. data/lib/mcollective/optionparser.rb +1 -1
  28. data/lib/mcollective/pluginpackager/forge_packager.rb +1 -1
  29. data/lib/mcollective/rpc/client.rb +4 -2
  30. data/lib/mcollective/util.rb +2 -4
  31. data/lib/mcollective/util/choria.rb +14 -8
  32. data/lib/mcollective/util/tasks_support.rb +15 -2
  33. metadata +11 -29
  34. data/lib/mcollective/data.rb +0 -96
  35. data/lib/mcollective/data/agent_data.ddl +0 -22
  36. data/lib/mcollective/data/agent_data.rb +0 -17
  37. data/lib/mcollective/data/base.rb +0 -68
  38. data/lib/mcollective/data/bolt_task_data.ddl +0 -90
  39. data/lib/mcollective/data/bolt_task_data.rb +0 -32
  40. data/lib/mcollective/data/collective_data.ddl +0 -20
  41. data/lib/mcollective/data/collective_data.rb +0 -9
  42. data/lib/mcollective/data/fact_data.ddl +0 -28
  43. data/lib/mcollective/data/fact_data.rb +0 -55
  44. data/lib/mcollective/data/fstat_data.ddl +0 -89
  45. data/lib/mcollective/data/fstat_data.rb +0 -54
  46. data/lib/mcollective/data/result.rb +0 -50
  47. data/lib/mcollective/ddl/dataddl.rb +0 -56
  48. data/lib/mcollective/discovery/choria.rb +0 -223
  49. data/lib/mcollective/discovery/flatfile.rb +0 -47
  50. data/lib/mcollective/discovery/stdin.ddl +0 -11
  51. data/lib/mcollective/discovery/stdin.rb +0 -67
  52. data/lib/mcollective/generators.rb +0 -7
  53. data/lib/mcollective/generators/agent_generator.rb +0 -50
  54. data/lib/mcollective/generators/base.rb +0 -45
  55. data/lib/mcollective/generators/data_generator.rb +0 -50
  56. data/lib/mcollective/generators/templates/action_snippet.erb +0 -13
  57. data/lib/mcollective/generators/templates/data_input_snippet.erb +0 -7
  58. data/lib/mcollective/generators/templates/ddl.erb +0 -8
  59. data/lib/mcollective/generators/templates/plugin.erb +0 -7
@@ -16,7 +16,7 @@ class MCollective::Application::Find < MCollective::Application # rubocop:disabl
16
16
 
17
17
  nodes.each {|c| puts c}
18
18
 
19
- warn "\nDiscovered %s nodes in %.2f seconds using the %s discovery plugin" % [nodes.size, discoverytime, mc.client.discoverer.discovery_method] if options[:verbose]
19
+ warn "\nDiscovered %s nodes in %.2f seconds using the %s discovery plugin" % [nodes.size, discoverytime, mc.client.options[:discovery_method]] if options[:verbose]
20
20
 
21
21
  !nodes.empty? ? exit(0) : exit(1)
22
22
  end
@@ -8,19 +8,14 @@ mco plugin package [options] <directory>
8
8
  mco plugin info <directory>
9
9
  mco plugin doc <plugin>
10
10
  mco plugin doc <type/plugin>
11
- mco plugin generate agent <pluginname> [actions=val,val]
12
- mco plugin generate data <pluginname> [outputs=val,val]
11
+ mco plugin generate client <ddl> <target>
12
+ mco plugin generate ddl <json_output> <ruby_output>
13
13
 
14
14
  info : Display plugin information including package details.
15
15
  package : Create all available plugin packages.
16
16
  doc : Display documentation for a specific plugin.
17
17
  END_OF_USAGE
18
18
 
19
- option :pluginname,
20
- :description => "Plugin name",
21
- :arguments => ["-n", "--name NAME"],
22
- :type => String
23
-
24
19
  option :postinstall,
25
20
  :description => "Post install script",
26
21
  :arguments => ["--postinstall POSTINSTALL"],
@@ -67,7 +62,7 @@ mco plugin package [options] <directory>
67
62
  :type => :array
68
63
 
69
64
  option :format,
70
- :description => "Package output format. Defaults to rpmpackage or debpackage",
65
+ :description => "Package output format. Defaults to forge",
71
66
  :arguments => ["--format OUTPUTFORMAT"],
72
67
  :type => String
73
68
 
@@ -81,46 +76,11 @@ mco plugin package [options] <directory>
81
76
  :arguments => ["--template HELPTEMPLATE"],
82
77
  :type => String
83
78
 
84
- option :description,
85
- :description => "Plugin description",
86
- :arguments => ["--description DESCRIPTION"],
87
- :type => String
88
-
89
- option :author,
90
- :description => "The author of the plugin",
91
- :arguments => ["--author AUTHOR"],
92
- :type => String
93
-
94
- option :license,
95
- :description => "The license under which the plugin is distributed",
96
- :arguments => ["--license LICENSE"],
97
- :type => String
98
-
99
79
  option :version,
100
80
  :description => "The version of the plugin",
101
81
  :arguments => ["--pluginversion VERSION"],
102
82
  :type => String
103
83
 
104
- option :url,
105
- :description => "Url at which information about the plugin can be found",
106
- :arguments => ["--url URL"],
107
- :type => String
108
-
109
- option :timeout,
110
- :description => "The plugin's timeout",
111
- :arguments => ["--timeout TIMEOUT"],
112
- :type => Integer
113
-
114
- option :actions,
115
- :description => "Actions to be generated for an Agent Plugin",
116
- :arguments => ["--actions [ACTIONS]"],
117
- :type => Array
118
-
119
- option :outputs,
120
- :description => "Outputs to be generated for an Data Plugin",
121
- :arguments => ["--outputs [OUTPUTS]"],
122
- :type => Array
123
-
124
84
  option :keep_artifacts,
125
85
  :description => "Don't remove artifacts after building packages",
126
86
  :arguments => ["--keep-artifacts"],
@@ -137,59 +97,12 @@ mco plugin package [options] <directory>
137
97
  configuration[:action] = ARGV.delete_at(0)
138
98
 
139
99
  configuration[:target] = ARGV.delete_at(0) || "."
140
-
141
- if configuration[:action] == "generate"
142
- unless ARGV[0] && ARGV[0].match(/(actions|outputs)=(.+)/i)
143
- if configuration[:pluginname] # rubocop:disable Metrics/BlockNesting
144
- ARGV.delete_at(0)
145
- else
146
- configuration[:pluginname] = ARGV.delete_at(0)
147
- end
148
- end
149
-
150
- ARGV.each do |argument|
151
- if argument.match(/(actions|outputs)=(.+)/i)
152
- configuration[$1.downcase.to_sym] = $2.split(",")
153
- else
154
- raise "Could not parse --arg '#{argument}'"
155
- end
156
- end
157
- end
158
100
  end
159
101
  end
160
102
 
161
- # Display info about plugin
162
- def info_command
163
- plugin = prepare_plugin
164
- packager = PluginPackager["#{configuration[:format].capitalize}Packager"]
165
- packager.new(plugin).package_information
166
- end
167
-
168
103
  # Generate a plugin skeleton
169
104
  def generate_command
170
- raise "undefined plugin type. cannot generate plugin. valid types are 'agent' and 'data'" if configuration["target"] == "."
171
-
172
- unless configuration[:pluginname]
173
- puts "No plugin name specified. Using 'new_plugin'"
174
- configuration[:pluginname] = "new_plugin"
175
- end
176
-
177
- load_plugin_config_values
178
-
179
- case configuration[:target].downcase
180
- when "agent"
181
- Generators::AgentGenerator.new(configuration[:pluginname], configuration[:actions], configuration[:pluginname],
182
- configuration[:description], configuration[:author], configuration[:license],
183
- configuration[:version], configuration[:url], configuration[:timeout])
184
- when "data"
185
- raise "data plugin must have at least one output" unless configuration[:outputs]
186
-
187
- Generators::DataGenerator.new(configuration[:pluginname], configuration[:outputs], configuration[:pluginname],
188
- configuration[:description], configuration[:author], configuration[:license],
189
- configuration[:version], configuration[:url], configuration[:timeout])
190
- else
191
- raise "invalid plugin type. cannot generate plugin '#{configuration[:target]}'"
192
- end
105
+ puts "CRITICAL: mco plugin generate is deprecated, please use 'choria plugin generate'"
193
106
  end
194
107
 
195
108
  # Package plugin
@@ -223,76 +136,10 @@ mco plugin package [options] <directory>
223
136
  end
224
137
 
225
138
  # Show application list and plugin help
226
- def doc_command # rubocop:disable Metrics/MethodLength
227
- known_plugin_types = [
228
- ["Agents", :agent],
229
- ["Aggregate", :aggregate],
230
- ["Connectors", :connector],
231
- ["Data Queries", :data],
232
- ["Discovery Methods", :discovery],
233
- ["Validator Plugins", :validator]
234
- ]
235
-
236
- if configuration.include?(:target) && configuration[:target] != "."
237
- if configuration[:target] =~ /^(.+?)\/(.+)$/
238
- ddl = load_plugin_ddl($2.to_sym, $1)
239
- else
240
- found_plugin_type = nil
241
-
242
- known_plugin_types.each do |plugin_type|
243
- PluginManager.find(plugin_type[1], "ddl").each do |ddlf|
244
- pluginname = ddlf.gsub(/_#{plugin_type[1]}$/, "")
245
-
246
- abort "Duplicate plugin name found, please specify a full path like agent/rpcutil" if pluginname == configuration[:target] && found_plugin_type
247
-
248
- found_plugin_type = plugin_type[1] if pluginname == configuration[:target]
249
- end
250
- end
251
-
252
- abort "Could not find a plugin named '%s' in any supported plugin type" % configuration[:target] unless found_plugin_type
253
- ddl = load_plugin_ddl(configuration[:target], found_plugin_type)
254
- end
255
-
256
- if ddl
257
- puts ddl.help(configuration[:rpctemplate])
258
- else
259
- abort "Could not find a '%s' plugin named '%s'" % configuration[:target].split("/")
260
- end
261
-
262
- else
263
- puts "Please specify a plugin. Available plugins are:"
264
- puts
265
-
266
- load_errors = []
267
-
268
- known_plugin_types.each do |plugin_type|
269
- puts "%s:" % plugin_type[0]
139
+ def doc_command
140
+ puts "WARNING: mco plugin doc is deprecated, please use choria plugin doc"
270
141
 
271
- PluginManager.find(plugin_type[1], "ddl").each do |ddlf|
272
- begin
273
- help = DDL.new(ddlf, plugin_type[1], false)
274
-
275
- next unless help.client_activated?
276
-
277
- help.loadddlfile
278
- pluginname = ddlf.gsub(/_#{plugin_type[1]}$/, "")
279
- puts " %-25s %s" % [pluginname, help.meta[:description]]
280
- rescue => e
281
- load_errors << [plugin_type[1], ddlf, e]
282
- end
283
- end
284
-
285
- puts
286
- end
287
-
288
- unless load_errors.empty?
289
- puts "Plugin Load Errors:"
290
-
291
- load_errors.each do |e|
292
- puts " %-25s %s" % ["#{e[0]}/#{e[1]}", Util.colorize(:yellow, e[2])]
293
- end
294
- end
295
- end
142
+ exec("choria plugin doc %s" % [configuration[:target]])
296
143
  end
297
144
 
298
145
  # Creates the correct package plugin object.
@@ -345,7 +192,7 @@ mco plugin package [options] <directory>
345
192
  # Return the name of the type of plugin as a string
346
193
  def identify_plugin
347
194
  plugintype = Dir.glob(File.join(configuration[:target], "*")).select do |file|
348
- File.directory?(file) && file.match(/(connector|facts|registration|security|audit|pluginpackager|data|discovery|validator)/)
195
+ File.directory?(file) && file.match(/(connector|facts|registration|security|audit|pluginpackager|discovery|validator)/)
349
196
  end
350
197
 
351
198
  raise "more than one plugin type detected in directory" if plugintype.size > 1
@@ -354,18 +201,6 @@ mco plugin package [options] <directory>
354
201
  File.basename(plugintype[0])
355
202
  end
356
203
 
357
- # Load preset metadata values from config if they are present
358
- # This makes it possible to override metadata values in a local
359
- # client config file.
360
- #
361
- # Example : plugin.metadata.license = Apache 2
362
- def load_plugin_config_values
363
- config = Config.instance
364
- [:pluginname, :description, :author, :license, :version, :url, :timeout].each do |confoption|
365
- configuration[confoption] = config.pluginconf["metadata.#{confoption}"] unless configuration[confoption]
366
- end
367
- end
368
-
369
204
  def main
370
205
  abort "No action specified, please run 'mco help plugin' for help" unless configuration.include?(:action)
371
206
 
@@ -150,7 +150,7 @@ module MCollective
150
150
  # of the discovery being cancelled soon as it reached the
151
151
  # requested limit of hosts
152
152
  def discover(filter, timeout, limit=0)
153
- @discoverer.discover(filter.merge("collective" => collective), timeout, limit)
153
+ @discoverer.discover(filter.merge("collective" => collective), timeout, limit, self)
154
154
  end
155
155
 
156
156
  # Send a request, performs the passed block for each response
@@ -17,123 +17,132 @@ module MCollective
17
17
  @configured = false
18
18
  end
19
19
 
20
- def loadconfig(configfile) # rubocop:disable Metrics/MethodLength
21
- set_config_defaults(configfile)
20
+ def parse_config_file(configfile, libdirs) # rubocop:disable Metrics/MethodLength
21
+ File.readlines(configfile).each do |line|
22
+ # strip blank spaces, tabs etc off the end of all lines
23
+ line.gsub!(/\s*$/, "")
22
24
 
23
- if File.exist?(configfile)
24
- libdirs = []
25
- File.readlines(configfile).each do |line|
26
- # strip blank spaces, tabs etc off the end of all lines
27
- line.gsub!(/\s*$/, "")
25
+ next if line =~ /^#|^$/
26
+ next unless line =~ /(.+?)\s*=\s*(.+)/
28
27
 
29
- next if line =~ /^#|^$/
30
- next unless line =~ /(.+?)\s*=\s*(.+)/
28
+ key = $1.strip
29
+ val = $2
31
30
 
32
- key = $1.strip
33
- val = $2
31
+ begin
32
+ case key
33
+ when "collectives"
34
+ @collectives = val.split(",").map(&:strip)
35
+ when "main_collective"
36
+ @main_collective = val
37
+ when "logfile"
38
+ @logfile = val
39
+ when "keeplogs"
40
+ @keeplogs = Integer(val)
41
+ when "max_log_size"
42
+ @max_log_size = Integer(val)
43
+ when "loglevel"
44
+ @loglevel = val
45
+ when "logfacility"
46
+ @logfacility = val
47
+ when "libdir"
48
+ paths = val.split(File::PATH_SEPARATOR)
49
+ paths.each do |path|
50
+ raise("libdir paths should be absolute paths but '%s' is relative" % path) unless Util.absolute_path?(path)
34
51
 
35
- begin
36
- case key
37
- when "collectives"
38
- @collectives = val.split(",").map(&:strip)
39
- when "main_collective"
40
- @main_collective = val
41
- when "logfile"
42
- @logfile = val
43
- when "keeplogs"
44
- @keeplogs = Integer(val)
45
- when "max_log_size"
46
- @max_log_size = Integer(val)
47
- when "loglevel"
48
- @loglevel = val
49
- when "logfacility"
50
- @logfacility = val
51
- when "libdir"
52
- paths = val.split(File::PATH_SEPARATOR)
53
- paths.each do |path|
54
- raise("libdir paths should be absolute paths but '%s' is relative" % path) unless Util.absolute_path?(path)
55
-
56
- libdirs << path
57
- end
58
- when "identity"
59
- @identity = val
60
- when "direct_addressing"
61
- @direct_addressing = Util.str_to_bool(val)
62
- when "direct_addressing_threshold"
63
- @direct_addressing_threshold = Integer(val)
64
- when "color"
65
- @color = Util.str_to_bool(val)
66
- when "daemonize"
67
- @daemonize = Util.str_to_bool(val)
68
- when "securityprovider"
69
- @securityprovider = val.capitalize
70
- when "factsource"
71
- @factsource = val.capitalize
72
- when "connector"
73
- @connector = val.capitalize
74
- when "classesfile"
75
- @classesfile = val
76
- when /^plugin.(.+)$/
77
- @pluginconf[$1] = val
78
- when "discovery_timeout"
79
- @discovery_timeout = Integer(val)
80
- when "publish_timeout"
81
- @publish_timeout = Integer(val)
82
- when "connection_timeout"
83
- @connection_timeout = Integer(val)
84
- when "rpcaudit"
85
- @rpcaudit = Util.str_to_bool(val)
86
- when "rpcauditprovider"
87
- @rpcauditprovider = val.capitalize
88
- when "rpcauthorization"
89
- @rpcauthorization = Util.str_to_bool(val)
90
- when "rpcauthprovider"
91
- @rpcauthprovider = val.capitalize
92
- when "rpclimitmethod"
93
- @rpclimitmethod = val.to_sym
94
- when "logger_type"
95
- @logger_type = val
96
- when "fact_cache_time"
97
- @fact_cache_time = Integer(val)
98
- when "ssl_cipher"
99
- @ssl_cipher = val
100
- when "threaded"
101
- @threaded = Util.str_to_bool(val)
102
- when "ttl"
103
- @ttl = Integer(val)
104
- when "default_discovery_options"
105
- @default_discovery_options << val
106
- when "default_discovery_method"
107
- @default_discovery_method = val
108
- when "soft_shutdown"
109
- @soft_shutdown = Util.str_to_bool(val)
110
- when "soft_shutdown_timeout"
111
- @soft_shutdown_timeout = Integer(val)
112
- when "activate_agents"
113
- @activate_agents = Util.str_to_bool(val)
114
- when "default_batch_size"
115
- @default_batch_size = Integer(val)
116
- when "default_batch_sleep_time"
117
- @default_batch_sleep_time = Float(val)
118
- else
119
- # server config might now be choria config which will divirge from mcollective
120
- # in time, so we only raise this error when it looks like we aren't loading
121
- # a server config else we try our best to load as much as we can
122
- raise("Unknown config parameter '#{key}'") unless configfile =~ /server/
52
+ libdirs << path
123
53
  end
124
- rescue ArgumentError
125
- raise("Could not parse value for configuration option '%s' with value '%s'" % [key, val])
54
+ when "identity"
55
+ @identity = val
56
+ when "direct_addressing"
57
+ @direct_addressing = Util.str_to_bool(val)
58
+ when "direct_addressing_threshold"
59
+ @direct_addressing_threshold = Integer(val)
60
+ when "color"
61
+ @color = Util.str_to_bool(val)
62
+ when "daemonize"
63
+ @daemonize = Util.str_to_bool(val)
64
+ when "securityprovider"
65
+ @securityprovider = val.capitalize
66
+ when "factsource"
67
+ @factsource = val.capitalize
68
+ when "connector"
69
+ @connector = val.capitalize
70
+ when "classesfile"
71
+ @classesfile = val
72
+ when /^plugin.(.+)$/
73
+ @pluginconf[$1] = val
74
+ when "discovery_timeout"
75
+ @discovery_timeout = Integer(val)
76
+ when "publish_timeout"
77
+ @publish_timeout = Integer(val)
78
+ when "connection_timeout"
79
+ @connection_timeout = Integer(val)
80
+ when "rpcaudit"
81
+ @rpcaudit = Util.str_to_bool(val)
82
+ when "rpcauditprovider"
83
+ @rpcauditprovider = val.capitalize
84
+ when "rpcauthorization"
85
+ @rpcauthorization = Util.str_to_bool(val)
86
+ when "rpcauthprovider"
87
+ @rpcauthprovider = val.capitalize
88
+ when "rpclimitmethod"
89
+ @rpclimitmethod = val.to_sym
90
+ when "logger_type"
91
+ @logger_type = val
92
+ when "fact_cache_time"
93
+ @fact_cache_time = Integer(val)
94
+ when "ssl_cipher"
95
+ @ssl_cipher = val
96
+ when "threaded"
97
+ @threaded = Util.str_to_bool(val)
98
+ when "ttl"
99
+ @ttl = Integer(val)
100
+ when "default_discovery_options"
101
+ @default_discovery_options << val
102
+ when "default_discovery_method"
103
+ @default_discovery_method = val
104
+ when "soft_shutdown"
105
+ @soft_shutdown = Util.str_to_bool(val)
106
+ when "soft_shutdown_timeout"
107
+ @soft_shutdown_timeout = Integer(val)
108
+ when "activate_agents"
109
+ @activate_agents = Util.str_to_bool(val)
110
+ when "default_batch_size"
111
+ @default_batch_size = Integer(val)
112
+ when "default_batch_sleep_time"
113
+ @default_batch_sleep_time = Float(val)
114
+ else
115
+ # server config might now be choria config which will divirge from mcollective
116
+ # in time, so we only raise this error when it looks like we aren't loading
117
+ # a server config else we try our best to load as much as we can
118
+ raise("Unknown config parameter '#{key}'") unless configfile =~ /server/
126
119
  end
120
+ rescue ArgumentError
121
+ raise("Could not parse value for configuration option '%s' with value '%s'" % [key, val])
127
122
  end
123
+ end
124
+ end
125
+
126
+ def loadconfig(configfile)
127
+ set_config_defaults(configfile)
128
+
129
+ if File.exist?(configfile)
130
+ libdirs = []
131
+
132
+ parse_config_file(configfile, libdirs)
128
133
 
129
134
  read_plugin_config_dir("#{@configdir}/plugin.d")
130
135
 
131
- raise 'Identities can only match /\w\.\-/' unless @identity =~ /^[\w.\-]+$/
136
+ parse_project_config(libdirs)
137
+
138
+ raise('Identities can only match /\w\.\-/') unless @identity =~ /^[\w.\-]+$/
139
+
140
+ check_deprecations
132
141
 
133
142
  @configured = true
134
143
 
135
144
  libdirs.each do |dir|
136
- Log.debug("Cannot find libdir: #{dir}") unless File.directory?(dir)
145
+ Log.debug("Cannot find libdir: %s" % dir) unless File.directory?(dir)
137
146
 
138
147
  # remove the old one if it exists, we're moving it to the front
139
148
  $LOAD_PATH.reject! { |elem| elem == dir }
@@ -154,6 +163,31 @@ module MCollective
154
163
  end
155
164
  end
156
165
 
166
+ def project_root
167
+ Dir.pwd
168
+ end
169
+
170
+ def parse_project_config(libdirs)
171
+ project_config_files(project_root).each do |pfile|
172
+ parse_config_file(pfile, libdirs)
173
+ end
174
+ end
175
+
176
+ def project_config_files(path)
177
+ paths = []
178
+
179
+ path = File.expand_path(path)
180
+ parent = File.expand_path("..", path)
181
+
182
+ paths << project_config_files(parent) if parent != path
183
+
184
+ config = File.join(path, "choria.conf")
185
+
186
+ paths << config if File.exist?(config)
187
+
188
+ paths.flatten
189
+ end
190
+
157
191
  def set_config_defaults(configfile) # rubocop:disable Naming/AccessorMethodName
158
192
  @subscribe = []
159
193
  @pluginconf = {}
@@ -222,5 +256,13 @@ module MCollective
222
256
  end
223
257
  end
224
258
  end
259
+
260
+ def check_deprecations
261
+ if @pluginconf["choria.use_srv_records"]
262
+ Log.warn("Configuration set 'choria.use_srv_records' which is deprecated in favor of 'choria.use_srv'.")
263
+ @pluginconf["choria.use_srv"] = @pluginconf["choria.use_srv_records"]
264
+ @pluginconf.delete("choria.use_srv_records")
265
+ end
266
+ end
225
267
  end
226
268
  end