feat: implement storeGroupValue and getGroupValue with unified locator

- API Refactoring: Extracted GroupValueLocator input type to unify parameters for storeGroupValue (mutation) and getGroupValue (query).

- Data Retrieval: Implemented getGroupValue query to allow direct retrieval of JSON values stored in host groups via Zabbix Trapper items.

- Enhanced Logic: Added ZabbixGetGroupValueRequest to fetch latest history values for group-associated items.

- Improved Verification: Updated the regression suite (REG-STORE) to include a full 'Store-Update-Retrieve' verification cycle.

- Documentation:

    - Updated docs/howtos/cookbook.md recipes to use the new locator structure and getGroupValue for verification.

    - Updated sample query files (docs/queries/) with corrected variables and verification queries.

- Tests:

    - Added unit and integration tests for getGroupValue.

    - Updated existing tests to match the refactored storeGroupValue schema.

- Verification: Verified 100% pass rate for all 16 regression steps and all unit/integration tests.
This commit is contained in:
Andreas Hilbig 2026-02-20 00:24:05 +01:00
parent 8f00082c6a
commit ce340ccf2e
27 changed files with 2788 additions and 228 deletions

View file

@ -159,3 +159,27 @@ enum SortOrder {
"Deliver values in descending order"
desc
}
"""
Input for locating a specific value stored within a host group.
Used by both retrieval queries and storage mutations.
"""
input GroupValueLocator {
"""ID of the target host group (either groupid or groupName is required)."""
groupid: Int
"""Name of the target host group (either groupid or groupName is required)."""
groupName: String
"""Name of the host to store/retrieve the value (optional). If not provided, valueType is used to find or create a storage host."""
host: String
"""
The value for the "valueType" tag of the storage host.
Mandatory if no host is provided. Used to identify the host within the group.
"""
valueType: String
"""Item ID if an existing item should be used."""
itemid: Int
"""The technical key of the item."""
key: String!
"""The visible name of the item (optional)."""
name: String
}