.. -*- mode: rst -*-

.. _server-plugins-plugin-roles:

============
Plugin Roles
============

* Metadata

  * Initial metadata construction
  * Connector data accumulation
  * ClientMetadata instance delivery
  * Introspection interface (for bcfg2-info & co)

* Connector

  * Provide additional data for ClientMetadata instances

* Probing

  * send executable probes to clients and receive data responses

* Structure

  * Produce a list of configuration entries that should be included in
    client configurations
  * Each structure plugin is produces a list of structures
  * Core verifies that each bundle listed has been constructed

* StructureValidator

  * Validate a client entry list's internal consistency, modifying if
    needed

* Generator

* GoalValidator

  * Validate client goals, modifying if needed

* PullSource

  * Plugin can provide entry information about clients

* PullTarget

  * Plugin can accept entry data and merge it into the specification

* Version

  * Plugin can read revision information from VCS of choice
  * Will provide an interface for producing commits made by the bcfg2-server

* Decision

* ClientRunHooks

  * Provides hooks executed at the start and end of each client run

Configuration of plugins
========================

A single list of plugins (including plugins of all capabilities) is
specified upon startup (either via bcfg2.conf or equivalent). All
plugins included in the startup list are initialized, and each is
enabled in all roles that it supports.
