Project Structure
- barbican/ (Barbican-specific Python source files)
- api/ (REST API related source files)
- controllers/ (Pecan-based controllers handling REST-based requests)
 
- middleware/ (Middleware business logic to process REST requests)
 
 
- cmd/ (Barbican admin command source files)
 
- common/ (Modules shared across other Barbican folders)
 
- locale/ (Translation templates)
 
- model/ (SQLAlchemy-based model classes)
 
- plugin/ (Plugin related logic, interfaces and look-up management)
- resources.py (Supports interactions with plugins)
 
- crypto/ (Hardware security module (HSM) logic and plugins)
 
- interface/ (Certificate manager and secret store interface
classes)
 
- (The remaining modules here are implementations of above interfaces)
 
 
- queue/ (Client and server interfaces to the queue)
- client.py (Allows clients to publish tasks to queue)
 
- server.py (Runs the worker service, responds to enqueued tasks)
 
 
- tasks/ (Worker-related controllers and implementations)
 
- tests/ (Unit tests)
 
 
- bin/ (Start-up scripts for the Barbican nodes)
 
- devstack/ (Barbican DevStack plugin, DevStack gate configuration and
 
- Vagrantfile for installing DevStack VM)
 
 
- etc/barbican/ (Configuration files)
 
- functionaltests (Functional Barbican tests)
 
- doc/source (Sphinx documentation)
 
- releasenotes (Barbican Release Notes)