3 # DDL for discovery plugins, a full example can be seen below
5 # metadata :name => "mc",
6 # :description => "MCollective Broadcast based discovery",
7 # :author => "R.I.Pienaar <rip@devco.net>",
8 # :license => "ASL 2.0",
10 # :url => "http://marionette-collective.org/",
14 # capabilities [:classes, :facts, :identity, :agents, :compound]
16 class DiscoveryDDL<Base
17 def discovery_interface
21 # records valid capabilities for discovery plugins
22 def capabilities(*caps)
25 raise "Discovery plugin capabilities can't be empty" if caps.empty?
28 if [:classes, :facts, :identity, :agents, :compound].include?(cap)
29 @entities[:discovery][:capabilities] << cap
31 raise "%s is not a valid capability, valid capabilities are :classes, :facts, :identity, :agents and :compound" % cap
36 # Creates the definition for new discovery plugins
39 # capabilities [:classes, :facts, :identity, :agents, :compound]
42 raise "Discovery plugins can only have one definition" if @entities[:discovery]
44 @entities[:discovery] = {:capabilities => []}
46 @current_entity = :discovery
47 block.call if block_given?