• v1.2.1 9929928c8d

    v1.2.1
    All checks were successful
    Build and Publish Package / build-and-publish (push) Successful in 5s
    Stable

    faaleoleo-dev-team released this 2026-03-24 22:42:21 +00:00 | 16 commits to master since this release

    Signed by faaleoleo-dev-team
    GPG key ID: 088E9A2BE6C99853

    Overview

    v1.2.1 is a bug-fix release focused on TLS reliability. All components that previously hardcoded http:// or relied on an environment variable to detect TLS have been updated to read config.yaml as the single source of truth. The result is that server.tls.enabled: true now works end-to-end across the server, CLI, client simulator, SQLite sync tool, and both startup scripts without any additional configuration. One unrelated fix ensures install.sh always deploys bash completion, even when run from inside the install directory. No new features or breaking API changes.

    Highlights

    End-to-end TLS support — Setting server.tls.enabled: true in config.yaml now propagates automatically to every component. The CLI (bacula-mock), client_simulator.py, and sync_mock_to_sqlite.py each auto-detect TLS from config.yaml when the BACULA_MOCK_TLS environment variable is not set. The startup scripts (start_server.sh, start_all.sh) also derive the protocol from config.yaml rather than hard-coding http://.

    HTTPS health check in start_all.sh — The readiness loop that waits for the server to become available previously hard-coded http://. It now reads config.yaml so the health check works correctly when the server starts with TLS enabled.

    SSL context for self-signed certificatessync_mock_to_sqlite.py now constructs an SSL context with certificate verification disabled when connecting to a TLS-enabled mock server. Previously, Python's default SSL verification caused api_fetch() calls to fail immediately against the self-signed certificate generated by the installer.

    TLS close_notify fix — Python's http.server does not send the TLS close_notify alert on connection close, which caused OpenSSL-based clients (including curl) to report "unexpected EOF" errors. A handle() override now calls connection.unwrap() after each request to perform a clean TLS shutdown.

    install.sh bash completion — An early return in the installer skipped bash completion setup when the installer was executed from inside the install directory. The completion script is now always installed regardless of the working directory.

    Supported API Surface

    Category Endpoints
    Catalog /cat/Client, /cat/Job, /cat/JobTotals, /cat/JobLog, /cat/Pool, /cat/Storage
    Commands /cmd/run, /cmd/restore, /cmd/cancel, /cmd/estimate, /cmd/label, /cmd/purge, /cmd/prune
    Status /status/director (GET + POST), /status/client/, ?jobs=scheduled
    Resources /res/director, /res/filedaemon, /res/storagedaemon
    Auth /oauth/token
    Mock control /mock/health, /mock/initialize, /mock/reset
    bconsole bconsole-mock wrapper (.api 2, .status dir scheduled, show schedule, show job)

    System Requirements

    Component Minimum
    OS Latest Debian (other platforms untested)
    Python 3.8+
    Disk ~100 MB
    Memory 512 MB (1 GB recommended for 500+ clients)
    Port 9101 (configurable)

    All Python dependencies are installed automatically in a virtual environment during setup.

    Installation

    sudo ./install.sh
    sudo systemctl start bacula-mock
    bacula-mock init 100 0.25
    bacula-mock smoke-test
    

    BWeb Next Jobs (optional):

    sudo ./install-bweb-scheduled.sh
    

    Verifying the Package

    Release packages are GPG-signed. Import the public key, then verify with:

    gpg --verify BaculaMockServer-v1.2.1.tar.gz.asc BaculaMockServer-v1.2.1.tar.gz
    sha256sum -c BaculaMockServer-v1.2.1.tar.gz.sha256
    

    See the README for full verification instructions and download URLs.

    Documentation

    Known Limitations

    • This is a mock server — it does not perform actual backups or restores.
    • Self-signed TLS certificates require clients to disable certificate verification or trust the generated CA.
    • Very large client counts (1,000+) may require tuning memory allocation beyond the default 512 MB.
    • bconsole-mock implements the subset of bconsole commands used by BWeb; full bconsole emulation is out of scope.

    "Bacula" is a registered trademark of Bacula Systems SA. This software is not affiliated with or endorsed by Bacula Systems SA.

    Downloads
  • v1.2.0 8ad4c37232

    v1.2.0
    All checks were successful
    Build and Publish Package / build-and-publish (push) Successful in 5s
    Stable

    faaleoleo-dev-team released this 2026-03-24 22:29:19 +00:00 | 17 commits to master since this release

    Signed by faaleoleo-dev-team
    GPG key ID: 088E9A2BE6C99853

    Overview

    v1.2.0 delivers full BWeb Management Suite compatibility, including the Next Jobs page that previously required a live Director. A new bconsole-mock wrapper intercepts BWeb's bconsole calls and answers them via the mock REST API, with no Bacula infrastructure required. Alongside this, job history generation has been redesigned around a schedule-based model that produces strictly ascending JobId/StartTime pairs — matching real Director behaviour and fixing a class of BWeb display issues. Wire compatibility is hardened throughout. No breaking API changes.

    Highlights

    bconsole-mock wrapper — A new stdlib-only script (scripts/bconsole-mock) reads bconsole commands from stdin and returns wire-compatible text output by calling the mock REST API internally. This is the bridge that makes BWeb's Next Jobs page (action=next_job) work without a real Director. Handled commands include show schedule, show job, .api 2, .status dir scheduled, and the * prompt that BWeb's Bconsole.pm parser expects.

    Automated BWeb installerinstall-bweb-scheduled.sh deploys bconsole-mock to /opt/bacula/bin/bconsole-mock, writes credentials to /opt/bacula/etc/bconsole-mock.env, and patches bweb.conf in a single step. The existing install-bweb-mock.sh workflow is unchanged for sites that do not need the Next Jobs page.

    Schedule-based job history — Job timestamps are no longer scattered randomly across the catalog. Jobs are now created oldest-first at regular intervals going back history_days, so JobId and StartTime are always strictly correlated. This matches real Bacula Director behaviour and is a prerequisite for BWeb's scheduled jobs table. Three new config.yaml parameters control the model: history_days (default: 7), job_interval_hours (default: 24), and jitter (default: 0.1).

    Wire compatibility hardeningPOST /status/director is now routed. ?jobs=scheduled is added as a dedicated endpoint. Scheduled jobs responses use the correct schedtime and date key names. .api 2 JSON mode and .status dir scheduled key=value output match BWeb parser expectations exactly. JobIds are assigned chronologically across all clients. The simulated fleet now carries realistic mixed client OS versions and a wire-compatible uname format.

    Bug fixessync_mock_to_sqlite.py now selects recent jobs by StartTime instead of JobId, since a higher JobId no longer implies a newer job under schedule-based generation. A byte-range fix corrects HTTP response handling for range requests.

    Supported API Surface

    Category Endpoints
    Catalog /cat/Client, /cat/Job, /cat/JobTotals, /cat/JobLog, /cat/Pool, /cat/Storage
    Commands /cmd/run, /cmd/restore, /cmd/cancel, /cmd/estimate, /cmd/label, /cmd/purge, /cmd/prune
    Status /status/director (GET + POST), /status/client/, ?jobs=scheduled
    Resources /res/director, /res/filedaemon, /res/storagedaemon
    Auth /oauth/token
    Mock control /mock/health, /mock/initialize, /mock/reset
    bconsole bconsole-mock wrapper (.api 2, .status dir scheduled, show schedule, show job)

    System Requirements

    Component Minimum
    OS Debian 13, Other Platforms untested
    Python 3.8+
    Disk ~100 MB
    Memory 512 MB (1 GB recommended for 500+ clients)
    Port 9101 (configurable)

    All Python dependencies are installed automatically in a virtual environment during setup.

    Installation

    sudo ./install.sh
    sudo systemctl start bacula-mock
    bacula-mock init 100 0.25
    bacula-mock smoke-test
    

    BWeb Next Jobs (optional):

    sudo ./install-bweb-scheduled.sh
    

    Verifying the Package

    Release packages are GPG-signed. Import the public key, then verify with:

    gpg --verify BaculaMockServer-v1.2.0.tar.gz.asc BaculaMockServer-v1.2.0.tar.gz
    sha256sum -c BaculaMockServer-v1.2.0.tar.gz.sha256
    

    See the README for full verification instructions and download URLs.

    Documentation

    Known Limitations

    • This is a mock server — it does not perform actual backups or restores.
    • Self-signed TLS certificates require clients to disable certificate verification or trust the generated CA.
    • Very large client counts (1,000+) may require tuning memory allocation beyond the default 512 MB.
    • bconsole-mock implements the subset of bconsole commands used by BWeb; full bconsole emulation is out of scope.

    "Bacula" is a registered trademark of Bacula Systems SA. This software is not affiliated with or endorsed by Bacula Systems SA.

    Downloads
  • v1.1.0 099b608cde

    v1.1.0
    All checks were successful
    Build and Publish Package / build-and-publish (push) Successful in 5s
    Stable

    faaleoleo-dev-team released this 2026-03-18 19:38:11 +00:00 | 21 commits to master since this release

    Signed by faaleoleo-dev-team
    GPG key ID: 088E9A2BE6C99853

    Overview

    v1.1.0 is a stability and infrastructure release focused on making the CI/CD pipeline production-grade, hardening code quality, and fixing a handful of bugs that surfaced during early integrations. No breaking API changes.

    Highlights

    Production-grade CI/CD pipeline — The GitLab CI configuration was overhauled from top to bottom. Tests now run concurrently across stages, coverage reports are generated even on partial test failures, and server readiness checks use PID-based waits with proper curl timeouts instead of blind sleeps.

    Coverage reporting — A .coveragerc file is included to exclude standalone tools from measurement, giving an accurate picture of what the test suite actually covers. Coverage is published as a CI artifact on every pipeline run.

    Gitleaks integration — A .gitleaks.toml suppression file prevents false positives on the demo credentials that ship with the mock, so the secret-scan stage passes cleanly without masking real leaks.

    Bug fixes — Job logs now sort chronologically instead of insertion order. The server startup sequence correctly sets sys.path and the working directory. The BWeb install script pointed at a stale repository name — that is corrected.

    Code quality — Imports across src/ are sorted to satisfy isort, the MD5 call in data_generator.py is flagged usedforsecurity=False to pass FIPS-mode linters, and the secret-scan step no longer depends on a Python3 shim.

    Downloads
  • v1.0.0 ee1bed6048

    v1.0.0
    All checks were successful
    Build and Publish Package / build-and-publish (push) Successful in 5s
    Stable

    faaleoleo-dev-team released this 2026-03-12 19:52:36 +00:00 | 24 commits to master since this release

    Signed by faaleoleo-dev-team
    GPG key ID: 088E9A2BE6C99853

    Bacula Mock Server v1.0.0 — Release Notes

    Release date: March 2026
    License: BSD 2-Clause — Copyright © 2026 faaleoleo


    Overview

    We're excited to announce the first public release of Bacula Mock Server — a full, wire-compatible simulation of the Bacula Enterprise REST API. Build dashboards, run CI pipelines, train administrators, and demo Bacula workflows without needing a production Director.

    Highlights

    Wire-compatible API simulation — Every endpoint mirrors the real Bacula Enterprise REST API in structure, authentication, and response format. Swap out the base URL and your code works the same.

    30+ realistic client profiles — The mock ships with pre-built profiles spanning mail servers, databases, NFS shares, web servers, Windows hosts, VMware, Kubernetes, SAP HANA, IoT devices, and more. Each profile generates plausible job histories, logs, and statistics.

    OAuth2 and HTTP Basic authentication — Both auth flows match the real Bacula Enterprise behavior, including token issuance and expiry, so auth-related code gets exercised the same way it would in production.

    HTTPS with auto-generated TLS certificates — The server generates self-signed certificates at startup for TLS testing out of the box.

    Configurable error rates — Tune failure rates from 0% to 100% to test error-handling paths, alerting thresholds, and disaster-recovery dashboards. A single command like bacula-mock init 100 0.25 spins up 100 clients with a 25% job failure rate.

    Full CLI tool (bacula-mock) — Manage the server, query data, export reports, and run smoke tests from the terminal. Key commands include init, reset, clients, jobs-failed, jobtotals, export-csv, and smoke-test.

    86 automated tests across 13 groups — An external Go test client covers all API surface area and is ready to plug into any CI/CD pipeline.

    BVFS browsing endpoints — File-level restore browsing is fully simulated, enabling development and testing of restore UIs.

    CSV and JSON export — Pull job data out in structured formats for reporting, analysis, or integration with external tools.

    Systemd service — Ships with a unit file supporting auto-start, auto-restart on failure, and log rotation.

    BWeb integration — Can be placed behind a lighttpd reverse proxy for use with the BWeb Management Suite.

    Supported API Surface

    Category Endpoints
    Catalog /cat/Client, /cat/Job, /cat/JobTotals, /cat/JobLog, /cat/Pool, /cat/Storage
    Commands /cmd/run, /cmd/restore, /cmd/cancel, /cmd/estimate, /cmd/label, /cmd/purge, /cmd/prune
    Status /status/director, /status/client/
    Resources /res/director, /res/filedaemon, /res/storagedaemon
    Auth /oauth/token
    Mock control /mock/health, /mock/initialize, /mock/reset

    System Requirements

    Component Minimum
    OS Debian 11+, Ubuntu 20.04+, RHEL 8+, Fedora 35+, macOS 11+
    Python 3.8+
    Disk ~100 MB
    Memory 512 MB (1 GB recommended for 500+ clients)
    Port 9101 (configurable)

    All Python dependencies are installed automatically in a virtual environment during setup.

    Installation

    sudo ./install.sh
    sudo systemctl start bacula-mock
    bacula-mock init 100 0.25
    bacula-mock smoke-test
    

    Verifying the Package

    Release packages are GPG-signed. Import the public key, then verify with:

    gpg --verify BaculaMockServer-v1.0.0.tar.gz.asc BaculaMockServer-v1.0.0.tar.gz
    sha256sum -c BaculaMockServer-v1.0.0.tar.gz.sha256
    

    See the README for full verification instructions and download URLs.

    Documentation

    • Implementation GuideBacula-Mock-Server-Manual.md
    • End User GuideBacula_Mock_EndUser_Guide.md
    • Usage ExamplesUSAGE.md

    Known Limitations

    • This is a mock server — it does not perform actual backups or restores.
    • Self-signed TLS certificates require clients to disable certificate verification or trust the generated CA.
    • Very large client counts (1,000+) may require tuning memory allocation beyond the default 512 MB.

    "Bacula" is a registered trademark of Bacula Systems SA. This software is not affiliated with or endorsed by Bacula Systems SA.

    Downloads