# class MCollective::DDL::DataDDL

A DDL file for the data query plugins.

Query plugins can today take only one input by convention in the DDL that is called :query, otherwise the input is identical to the standard input.

metadata :name => “Agent”,

    :description => "Meta data about installed MColletive Agents",
    :author      => "R.I.Pienaar <rip@devco.net>",
    :license     => "ASL 2.0",
    :version     => "1.0",
    :url         => "http://marionette-collective.org/",
    :timeout     => 1

dataquery :description => “Agent Meta Data” do

    input :query,
          :prompt => "Agent Name",
          :description => "Valid agent name",
          :type => :string,
          :validation => /^[\w\_]+$/,
          :maxlength => 20

    [:license, :timeout, :description, :url, :version, :author].each do |item|
      output item,
             :description => "Agent #{item}",
             :display_as => item.to_s.capitalize
    end

end

### Public Instance Methods

dataquery(input, &block) click to toggle source

    # File lib/mcollective/ddl/dataddl.rb, line 31
    def dataquery(input, &block)
      raise "Data queries need a :description" unless input.include?(:description)
      raise "Data queries can only have one definition" if @entities[:data]

      @entities[:data]  = {:description => input[:description],
                           :input => {},
                           :output => {}}

      @current_entity = :data
      block.call if block_given?
      @current_entity = nil
    end

dataquery_interface() click to toggle source

Returns the interface for the data query

    # File lib/mcollective/ddl/dataddl.rb, line 51
    def dataquery_interface
      @entities[:data] || {}
    end

input(argument, properties) click to toggle source

    # File lib/mcollective/ddl/dataddl.rb, line 44
    def input(argument, properties)
      raise "The only valid input name for a data query is 'query'" if argument != :query

      super
    end