Sha256: 6d5a44f10204a87e154f64eb3f927b247ebc32d26ebcd84b9fd0b8379d1941d3

Contents?: true

Size: 1.71 KB

Versions: 1

Compression:

Stored size: 1.71 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, :federations]
    # 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, :federations].include?(cap)
            @entities[:discovery][:capabilities] << cap
          else
            raise "%s is not a valid capability, valid capabilities are :classes, :facts, :identity, :agents, :compound, and :federations" % 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
        yield if block_given?
        @current_entity = nil
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
choria-mcorpc-support-2.26.5 lib/mcollective/ddl/discoveryddl.rb