From 603415304600b44b266f6825c1aa8048540df666 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zolt=C3=A1n=20Bedi?= Date: Mon, 24 Feb 2025 17:54:34 +0100 Subject: [PATCH] Fix: host groups not showing in problems panel (#1965) This PR fixes 2 issues mentioned below. Fixes #1943 Fixes #1946 ## Problems Panel not showing host groups: [src/panel-triggers/components/Problems/Problems.tsx](https://github.com/grafana/grafana-zabbix/blob/0355f40fc22fc0e7cb82fced61a9487745c7e640/src/panel-triggers/components/Problems/Problems.tsx) ![Image](https://github.com/user-attachments/assets/2d5d8207-dcd6-4e80-aef3-a9eadf4d3dc9) ### How to reproduce 1. Go to `Zabbix data source features` dashboard 2. Open Problems panel 3. In the panel config enable host groups field 4. Host groups should show up in the table ## Triggers not showing ![Image](https://github.com/user-attachments/assets/4319ebc1-bbdb-4648-b7d5-269e82351804) ### How to reproduce 1. Go to explore and select the zabbix ds 2. Select `Triggers` Query type 3. Add `Backend` as a group 4. Add `/.*/` as host 5. There should be 2 average triggers --- .changeset/gentle-bees-rescue.md | 5 +++ .../zabbix_api/zabbixAPIConnector.ts | 41 +++++++++++++++++-- 2 files changed, 42 insertions(+), 4 deletions(-) create mode 100644 .changeset/gentle-bees-rescue.md diff --git a/.changeset/gentle-bees-rescue.md b/.changeset/gentle-bees-rescue.md new file mode 100644 index 0000000..d6a2caf --- /dev/null +++ b/.changeset/gentle-bees-rescue.md @@ -0,0 +1,5 @@ +--- +'grafana-zabbix': patch +--- + +Fix problems panel not showing host groups diff --git a/src/datasource/zabbix/connectors/zabbix_api/zabbixAPIConnector.ts b/src/datasource/zabbix/connectors/zabbix_api/zabbixAPIConnector.ts index 055413f..36064cd 100644 --- a/src/datasource/zabbix/connectors/zabbix_api/zabbixAPIConnector.ts +++ b/src/datasource/zabbix/connectors/zabbix_api/zabbixAPIConnector.ts @@ -530,7 +530,7 @@ export class ZabbixAPIConnector { return this.request('problem.get', params).then(utils.mustArray); } - getTriggersByIds(triggerids: string[]) { + async getTriggersByIds(triggerids: string[]) { const params = { output: 'extend', triggerids: triggerids, @@ -555,10 +555,17 @@ export class ZabbixAPIConnector { params.selectHosts.push('proxyid'); } - return this.request('trigger.get', params).then(utils.mustArray); + const triggers = await this.request('trigger.get', params); + // When version is 7.0.0 or higher, groups are returned as hostgroups + if (semver.gte(this.version, '7.0.0')) { + Object.keys(triggers).forEach((trigger) => { + triggers[trigger].groups = triggers[trigger].hostgroups; + }); + } + return triggers; } - getTriggers(groupids, hostids, applicationids, options) { + async getTriggers(groupids, hostids, applicationids, options) { const { showTriggers, maintenance, timeFrom, timeTo } = options; const params: any = { @@ -604,7 +611,14 @@ export class ZabbixAPIConnector { params.lastChangeTill = timeTo; } - return this.request('trigger.get', params); + const triggers = await this.request('trigger.get', params); + // When version is 7.0.0 or higher, groups are returned as hostgroups + if (semver.gte(this.version, '7.0.0')) { + triggers.forEach((trigger) => { + trigger.groups = trigger.hostgroups; + }); + } + return triggers; } getEvents(objectids, timeFrom, timeTo, showEvents, limit) { @@ -778,7 +792,14 @@ export class ZabbixAPIConnector { if (count) { triggers = triggers.length; } + // When version is 7.0.0 or higher, groups are returned as hostgroups + if (semver.gte(this.version, '7.0.0')) { + triggers.forEach((trigger) => { + trigger.groups = trigger.hostgroups; + }); + } } + return triggers; } @@ -826,6 +847,12 @@ export class ZabbixAPIConnector { if (count) { triggers = triggers.length; } + // When version is 7.0.0 or higher, groups are returned as hostgroups + if (semver.gte(this.version, '7.0.0')) { + triggers.forEach((trigger) => { + trigger.groups = trigger.hostgroups; + }); + } } return triggers; }); @@ -869,6 +896,12 @@ export class ZabbixAPIConnector { if (count) { triggers = triggers.length; } + // When version is 7.0.0 or higher, groups are returned as hostgroups + if (semver.gte(this.version, '7.0.0')) { + triggers.forEach((trigger) => { + trigger.groups = trigger.hostgroups; + }); + } } return triggers; });