Sha256: a1bb7bc8dab48dfe9c81435cb54cfce12565d531c686f675d5fb201a56519019

Contents?: true

Size: 1.9 KB

Versions: 22

Compression:

Stored size: 1.9 KB

Contents

module MCollective
  module DDL
    # 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
    class DataDDL<Base
      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

      def input(argument, properties)
        raise "The only valid input name for a data query is 'query'" if argument != :query

        super
      end

      # Returns the interface for the data query
      def dataquery_interface
        @entities[:data] || {}
      end
    end
  end
end

Version data entries

22 entries across 22 versions & 1 rubygems

Version Path
mcollective-client-2.8.5 lib/mcollective/ddl/dataddl.rb
mcollective-client-2.8.6 lib/mcollective/ddl/dataddl.rb
mcollective-client-2.8.4 lib/mcollective/ddl/dataddl.rb
mcollective-client-2.8.3 lib/mcollective/ddl/dataddl.rb
mcollective-client-2.8.2 lib/mcollective/ddl/dataddl.rb
mcollective-client-2.8.1 lib/mcollective/ddl/dataddl.rb
mcollective-client-2.8.0 lib/mcollective/ddl/dataddl.rb
mcollective-client-2.7.0 lib/mcollective/ddl/dataddl.rb
mcollective-client-2.6.1 lib/mcollective/ddl/dataddl.rb
mcollective-client-2.6.0 lib/mcollective/ddl/dataddl.rb
mcollective-client-2.5.3 lib/mcollective/ddl/dataddl.rb
mcollective-client-2.5.2 lib/mcollective/ddl/dataddl.rb
mcollective-client-2.5.1 lib/mcollective/ddl/dataddl.rb
mcollective-client-2.5.0 lib/mcollective/ddl/dataddl.rb
mcollective-client-2.5.0.rc1 lib/mcollective/ddl/dataddl.rb
mcollective-client-2.4.1 lib/mcollective/ddl/dataddl.rb
mcollective-client-2.4.0 lib/mcollective/ddl/dataddl.rb
mcollective-client-2.2.4 lib/mcollective/ddl/dataddl.rb
mcollective-client-2.2.3 lib/mcollective/ddl/dataddl.rb
mcollective-client-2.2.2 lib/mcollective/ddl/dataddl.rb