Sha256: 7d91f3ac10b8ac2f897cb21133560fd3a2f661af544679e85d6a628cd6dc5a6e

Contents?: true

Size: 1.66 KB

Versions: 22

Compression:

Stored size: 1.66 KB

Contents

module MCollective
  module DDL
    # DDL for discovery plugins, a full example can be seen below
    #
    # metadata    :name        => "mc",
    #             :description => "MCollective Broadcast based discovery",
    #             :author      => "R.I.Pienaar <rip@devco.net>",
    #             :license     => "ASL 2.0",
    #             :version     => "0.1",
    #             :url         => "http://marionette-collective.org/",
    #             :timeout     => 2
    #
    # discovery do
    #     capabilities [:classes, :facts, :identity, :agents, :compound]
    # end
    class DiscoveryDDL<Base
      def discovery_interface
        @entities[:discovery]
      end

      # records valid capabilities for discovery plugins
      def capabilities(*caps)
        caps = [caps].flatten

        raise "Discovery plugin capabilities can't be empty" if caps.empty?

        caps.each do |cap|
          if [:classes, :facts, :identity, :agents, :compound].include?(cap)
            @entities[:discovery][:capabilities] << cap
          else
            raise "%s is not a valid capability, valid capabilities are :classes, :facts, :identity, :agents and :compound" % cap
          end
        end
      end

      # Creates the definition for new discovery plugins
      #
      #    discovery do
      #       capabilities [:classes, :facts, :identity, :agents, :compound]
      #    end
      def discovery(&block)
        raise "Discovery plugins can only have one definition" if @entities[:discovery]

        @entities[:discovery] = {:capabilities => []}

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

Version data entries

22 entries across 22 versions & 1 rubygems

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