feat: implement weather sensor extension and enhance device interfaces
This change introduces the Weather Sensor device type which retrieves data from public APIs, and enhances the core Host/Device interfaces to provide consistent access to inventory and items across all specialized device types. It also improves search logic and fixes several bugs identified during implementation. - Weather Sensor Extension: Added schema and recipe for a device retrieving weather data via Zabbix HTTP agent items. - Interface Enhancements: Added inventory and items fields to Host and Device interfaces to ensure all device specialized types have consistent access to monitoring and inventory data. - Search Logic Improvements: Enhanced ParsedArgs to support searchByAny and technical name (host) searches when a name pattern is provided. - Bug Fixes: - Fixed getLocations argument order in the Zabbix API datasource. - Implemented deduplication for groupids and templateids in HostImporter to prevent Zabbix duplicate value errors. - Added missing url field to CreateTemplateItem for HTTP Agent item support. - Testing: - Extended the regression test suite with 4 new automated checks covering the fixed bugs. - Updated Jest tests to accommodate the improved search parameters. - Documentation: Updated cookbook and test specifications to reflect new features and regression testing obligations.
This commit is contained in:
parent
b84e4c0734
commit
5da4a17e36
20 changed files with 438 additions and 98 deletions
|
|
@ -1,9 +1,9 @@
|
|||
import {DeleteResponse} from "../schema/generated/graphql.js";
|
||||
import {
|
||||
TemplateHelper,
|
||||
ZabbixDeleteTemplateGroupsRequest,
|
||||
ZabbixDeleteTemplatesRequest,
|
||||
ZabbixQueryTemplateGroupRequest,
|
||||
ZabbixQueryTemplatesRequest
|
||||
ZabbixQueryTemplateGroupRequest
|
||||
} from "../datasources/zabbix-templates.js";
|
||||
import {isZabbixErrorResult, ParsedArgs} from "../datasources/zabbix-request.js";
|
||||
import {zabbixAPI} from "../datasources/zabbix-api.js";
|
||||
|
|
@ -15,11 +15,8 @@ export class TemplateDeleter {
|
|||
let idsToDelete = templateids ? [...templateids] : [];
|
||||
|
||||
if (name_pattern) {
|
||||
const queryResult = await new ZabbixQueryTemplatesRequest(zabbixAuthToken, cookie)
|
||||
.executeRequestReturnError(zabbixAPI, new ParsedArgs({ name_pattern: name_pattern }));
|
||||
|
||||
if (!isZabbixErrorResult(queryResult) && Array.isArray(queryResult)) {
|
||||
const foundIds = queryResult.map(t => Number(t.templateid));
|
||||
const foundIds = await TemplateHelper.findTemplateIdsByName([name_pattern], zabbixAPI, zabbixAuthToken, cookie);
|
||||
if (foundIds) {
|
||||
// Merge and deduplicate
|
||||
idsToDelete = Array.from(new Set([...idsToDelete, ...foundIds]));
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue