Project StructureΒΆ

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