Barbican uses an abstract class pattern to allow custom implementations of features like secret storage, secret generation, and event handling.
Key Concepts:
- Barbican Core: The central logic that manages the lifecycle of a request. It handles persisting required information on the plugin's behalf, meaning plugins typically do not interact with Barbican's data model directly.
- Discovery via
supports(): Barbican core invokes a variation of the plugin's supports() method to determine if the plugin is capable of performing a requested action. - Execution: Once a supporting plugin is selected, Barbican core invokes one or more specific methods on the plugin instance to complete the action.
This architecture allows operators to swap implementations (e.g., using a corporate database instead of the default) to suit their specific cloud environment.