Sha256: 2a7e537901534e7292e6da2e0884b91d2623a990cde201495526bf28cb53f3d3

Contents?: true

Size: 1.67 KB

Versions: 28

Compression:

Stored size: 1.67 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         => "https://docs.puppetlabs.com/mcollective/",
    #             :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

28 entries across 28 versions & 2 rubygems

Version Path
mcollective-client-2.10.2 lib/mcollective/ddl/discoveryddl.rb
mcollective-client-2.10.1 lib/mcollective/ddl/discoveryddl.rb
mcollective-client-2.10.0 lib/mcollective/ddl/discoveryddl.rb
mcollective-client-2.8.7 lib/mcollective/ddl/discoveryddl.rb
mcollective-client-2.8.8 lib/mcollective/ddl/discoveryddl.rb
mcollective-client-2.9.1 lib/mcollective/ddl/discoveryddl.rb
mcollective-client-2.9.0 lib/mcollective/ddl/discoveryddl.rb
mcollective-client-2.8.9 lib/mcollective/ddl/discoveryddl.rb