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$/ ? plugin.to_s.downcase : "%s_data" % plugin.to_s.downcase
end