module MCollective::Data
Public Class Methods
[](plugin)
click to toggle source
# File lib/mcollective/data.rb, line 26 def self.[](plugin) PluginManager[pluginname(plugin)] end
ddl(plugin)
click to toggle source
# File lib/mcollective/data.rb, line 37 def self.ddl(plugin) DDL.new(pluginname(plugin), :data) end
ddl_has_output?(ddl, output)
click to toggle source
# File lib/mcollective/data.rb, line 62 def self.ddl_has_output?(ddl, output) ddl.entities[:data][:output].include?(output.to_sym) rescue false end
ddl_transform_input(ddl, input)
click to toggle source
For an input where the DDL requests a boolean or some number this will convert the input to the right type where possible else just returns the origin input unedited
if anything here goes wrong just return the input value this is not really the end of the world or anything since all that will happen is that DDL validation will fail and the user will get an error, no need to be too defensive here
# File lib/mcollective/data.rb, line 74 def self.ddl_transform_input(ddl, input) begin type = ddl.entities[:data][:input][:query][:type] case type when :boolean return DDL.string_to_boolean(input) when :number, :integer, :float return DDL.string_to_number(input) end rescue end return input end
ddl_validate(ddl, argument)
click to toggle source
# File lib/mcollective/data.rb, line 41 def self.ddl_validate(ddl, argument) name = ddl.meta[:name] query = ddl.entities[:data] raise DDLValidationError, "No dataquery has been defined in the DDL for data plugin #{name}" unless query input = query.fetch(:input, {}) output = query.fetch(:output, {}) raise DDLValidationError, "No output has been defined in the DDL for data plugin #{name}" if output.keys.empty? if input[:query] return true if argument.nil? && input[:query][:optional] ddl.validate_input_argument(input, :query, argument) else raise("No data plugin argument was declared in the %s DDL but an input was supplied" % name) if argument return true end end
load_data_sources()
click to toggle source
# File lib/mcollective/data.rb, line 6 def self.load_data_sources PluginManager.find_and_load("data") PluginManager.grep(/_data$/).each do |plugin| begin unless PluginManager[plugin].class.activate? Log.debug("Disabling data plugin %s due to plugin activation policy" % plugin) PluginManager.delete(plugin) end rescue Exception => e Log.debug("Disabling data plugin %s due to exception #{e.class}: #{e}" % plugin) PluginManager.delete(plugin) end end end
method_missing(method, *args)
click to toggle source
Data.package(“httpd”).architecture
Calls superclass method
# File lib/mcollective/data.rb, line 31 def self.method_missing(method, *args) super unless PluginManager.include?(pluginname(method)) PluginManager[pluginname(method)].lookup(args.first) end
pluginname(plugin)
click to toggle source
# File lib/mcollective/data.rb, line 22 def self.pluginname(plugin) plugin.to_s =~ /_data$/i ? plugin.to_s.downcase : "%s_data" % plugin.to_s.downcase end