feat: verify and enhance compatibility with Zabbix 6.0, 6.2, 6.4, and 7.0

This commit comprehensive updates the API to ensure full compatibility across all major Zabbix versions (6.0 LTS, 6.2, 6.4, and 7.0 LTS) and introduces a local development environment for multi-version testing.

Verified Zabbix Versions:
- Zabbix 7.0 (LTS): Full support, including native `history.push` for telemetry.
- Zabbix 6.4: Supported (excluding `history.push`); uses `hostgroup.propagate` and UUID-based matching.
- Zabbix 6.2: Supported (excluding `history.push`); uses `hostgroup.propagate` and `templategroup.*` methods.
- Zabbix 6.0 (LTS): Supported (excluding `history.push`); includes specific fallbacks:
    - JSON-RPC: Restored `auth` field in request body for versions lacking Bearer token support.
    - Permissions: Implemented name-based fallback for host/template groups (no UUIDs in 6.0).
    - Group Expansion: Automatic manual expansion of group rights during import.
    - API Methods: Fallback from `templategroup.*` to `hostgroup.*` methods.

Key Technical Changes:
- Local Development: Added `zabbix-local` Docker Compose profile to launch a complete Zabbix stack (Server, Web, Postgres) from scratch with dynamic versioning via `ZABBIX_VERSION`.
- Query Optimization: Refined dynamic field selection to handle implied fields and ensure consistent output regardless of initial Zabbix parameters.
- Documentation:
    - New `local_development.md` HOWTO guide.
    - Updated `README.md` with detailed version compatibility matrix.
    - Expanded `roadmap.md` with achieved milestones.
- Testing:
    - Updated entire Jest test suite (23 suites, 96 tests) to be version-aware and robust against naming collisions.
    - Enhanced Smoketest and Regression Test executors with better cleanup and error reporting.
This commit is contained in:
Andreas Hilbig 2026-02-04 04:41:36 +01:00
parent ec6ed422b1
commit 14a0df4c18
21 changed files with 397 additions and 111 deletions

10
samples/zabbix-local.env Normal file
View file

@ -0,0 +1,10 @@
# Zabbix Connection for local Docker Compose profile (zabbix-local)
# Use the contents of this file in your .env or pass them to docker compose
# when running with 'docker compose --profile zabbix-local up'
# Internal URL for the API to connect to the local Zabbix container
ZABBIX_BASE_URL=http://zabbix-web:8080/
# Note: After Zabbix starts, you must log in to http://localhost:8080 (Admin/zabbix)
# and create an API token to use as ZABBIX_PRIVILEGE_ESCALATION_TOKEN.
ZABBIX_PRIVILEGE_ESCALATION_TOKEN=your-newly-created-zabbix-token