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)
common/ (Modules shared across other Barbican folders)
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 (API and worker))
rpmbuild/ (RPM package artifacts)
etc/barbican/ (Configuration files)
functionaltests (Functional Barbican tests, DevStack gate configuration)
doc/source (Sphinx documentation)
docs/src (Docbook documentation - on hold pending project tagging)