module MCollective::Data - mcollective version 2.12.5

# module MCollective::Data

### Public Class Methods

[](plugin) click to toggle source

       # File lib/mcollective/data.rb
    26 def self.[](plugin)
    27   PluginManager[pluginname(plugin)]
    28 end

ddl(plugin) click to toggle source

       # File lib/mcollective/data.rb
    37 def self.ddl(plugin)
    38   DDL.new(pluginname(plugin), :data)
    39 end

ddl_has_output?(ddl, output) click to toggle source

       # File lib/mcollective/data.rb
    62 def self.ddl_has_output?(ddl, output)
    63   ddl.entities[:data][:output].include?(output.to_sym) rescue false
    64 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
    74 def self.ddl_transform_input(ddl, input)
    75   begin
    76     type = ddl.entities[:data][:input][:query][:type]
    77
    78     case type
    79       when :boolean
    80         return DDL.string_to_boolean(input)
    81
    82       when :number, :integer, :float
    83         return DDL.string_to_number(input)
    84     end
    85   rescue
    86   end
    87
    88   return input
    89 end

ddl_validate(ddl, argument) click to toggle source

       # File lib/mcollective/data.rb
    41 def self.ddl_validate(ddl, argument)
    42   name = ddl.meta[:name]
    43   query = ddl.entities[:data]
    44
    45   raise DDLValidationError, "No dataquery has been defined in the DDL for data plugin #{name}" unless query
    46
    47   input = query.fetch(:input, {})
    48   output = query.fetch(:output, {})
    49
    50   raise DDLValidationError, "No output has been defined in the DDL for data plugin #{name}" if output.keys.empty?
    51
    52   if input[:query]
    53     return true if argument.nil? && input[:query][:optional]
    54
    55     ddl.validate_input_argument(input, :query, argument)
    56   else
    57     raise("No data plugin argument was declared in the %s DDL but an input was supplied" % name) if argument
    58     return true
    59   end
    60 end

load_data_sources() click to toggle source

       # File lib/mcollective/data.rb
     6 def self.load_data_sources
     7   PluginManager.find_and_load("data")
     8
     9   PluginManager.grep(/_data$/).each do |plugin|
    10     begin
    11       unless PluginManager[plugin].class.activate?
    12         Log.debug("Disabling data plugin %s due to plugin activation policy" % plugin)
    13         PluginManager.delete(plugin)
    14       end
    15     rescue Exception => e
    16       Log.debug("Disabling data plugin %s due to exception #{e.class}: #{e}" % plugin)
    17       PluginManager.delete(plugin)
    18     end
    19   end
    20 end

method_missing(method, *args) click to toggle source

Data.package(“httpd”).architecture

Calls superclass method

       # File lib/mcollective/data.rb
    31 def self.method_missing(method, *args)
    32   super unless PluginManager.include?(pluginname(method))
    33
    34   PluginManager[pluginname(method)].lookup(args.first)
    35 end

pluginname(plugin) click to toggle source

       # File lib/mcollective/data.rb
    22 def self.pluginname(plugin)
    23   plugin.to_s =~ /_data$/i ? plugin.to_s.downcase : "%s_data" % plugin.to_s.downcase
    24 end