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)