From 9d80323abb8f4964162670bbadfed6e3b13e898f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zolt=C3=A1n=20Bedi?= Date: Thu, 13 Jun 2024 15:37:59 +0200 Subject: [PATCH 1/3] Fix: Problems panel failing for versions before 7.0.0 --- .../zabbix/connectors/zabbix_api/zabbixAPIConnector.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/datasource/zabbix/connectors/zabbix_api/zabbixAPIConnector.ts b/src/datasource/zabbix/connectors/zabbix_api/zabbixAPIConnector.ts index 89ef2200..9a0b8598 100644 --- a/src/datasource/zabbix/connectors/zabbix_api/zabbixAPIConnector.ts +++ b/src/datasource/zabbix/connectors/zabbix_api/zabbixAPIConnector.ts @@ -548,7 +548,7 @@ export class ZabbixAPIConnector { }; // Before version 7.0.0 proxy_hostid was used, after - proxyid - if (semver.lte(this.version, '7.0.0')) { + if (semver.lt(this.version, '7.0.0')) { params.selectHosts.push('proxy_hostid'); } else { params.selectHosts.push('proxyid'); @@ -582,7 +582,7 @@ export class ZabbixAPIConnector { }; // Before version 7.0.0 proxy_hostid was used, after - proxyid - if (semver.lte(this.version, '7.0.0')) { + if (semver.lt(this.version, '7.0.0')) { params.selectHosts.push('proxy_hostid'); } else { params.selectHosts.push('proxyid'); @@ -877,10 +877,10 @@ export class ZabbixAPIConnector { const params = { output: ['proxyid'], }; - if (semver.lte(this.version, '7.0.0')) { - params.output.push('name'); - } else { + if (semver.lt(this.version, '7.0.0')) { params.output.push('host'); + } else { + params.output.push('name'); } return this.request('proxy.get', params); From f38349074971c5a8ea81261a24817ac2901933f2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zolt=C3=A1n=20Bedi?= Date: Thu, 13 Jun 2024 16:18:20 +0200 Subject: [PATCH 2/3] Add tests --- .../zabbix_api/zabbixAPIConnector.test.ts | 21 +++++++++++++++++++ .../zabbix_api/zabbixAPIConnector.ts | 5 ++++- 2 files changed, 25 insertions(+), 1 deletion(-) create mode 100644 src/datasource/zabbix/connectors/zabbix_api/zabbixAPIConnector.test.ts diff --git a/src/datasource/zabbix/connectors/zabbix_api/zabbixAPIConnector.test.ts b/src/datasource/zabbix/connectors/zabbix_api/zabbixAPIConnector.test.ts new file mode 100644 index 00000000..343df2b4 --- /dev/null +++ b/src/datasource/zabbix/connectors/zabbix_api/zabbixAPIConnector.test.ts @@ -0,0 +1,21 @@ +import { ZabbixAPIConnector } from './zabbixAPIConnector'; + +describe('Zabbix API connector', () => { + describe('getProxies function', () => { + it('should send the name parameter to the request when version is 7 or greater for the getProxies', async () => { + const zabbixAPIConnector = new ZabbixAPIConnector(true, true, 123, '7.0.0'); + zabbixAPIConnector.request = jest.fn(); + + await zabbixAPIConnector.getProxies(); + expect(zabbixAPIConnector.request).toHaveBeenCalledWith('proxy.get', { output: ['proxyid', 'name'] }); + }); + + it('should send the host parameter when version is less than 7.0.0', () => { + const zabbixAPIConnector = new ZabbixAPIConnector(true, true, 123, '6.0.0'); + zabbixAPIConnector.request = jest.fn(); + + zabbixAPIConnector.getProxies(); + expect(zabbixAPIConnector.request).toHaveBeenCalledWith('proxy.get', { output: ['proxyid', 'host'] }); + }); + }); +}); diff --git a/src/datasource/zabbix/connectors/zabbix_api/zabbixAPIConnector.ts b/src/datasource/zabbix/connectors/zabbix_api/zabbixAPIConnector.ts index 9a0b8598..5ded01ba 100644 --- a/src/datasource/zabbix/connectors/zabbix_api/zabbixAPIConnector.ts +++ b/src/datasource/zabbix/connectors/zabbix_api/zabbixAPIConnector.ts @@ -28,7 +28,7 @@ export class ZabbixAPIConnector { getVersionPromise: Promise; datasourceId: number; - constructor(basicAuth: any, withCredentials: boolean, datasourceId: number) { + constructor(basicAuth: any, withCredentials: boolean, datasourceId: number, zabbixVersion?: string) { this.datasourceId = datasourceId; this.backendAPIUrl = `/api/datasources/${this.datasourceId}/resources/zabbix-api`; @@ -37,6 +37,8 @@ export class ZabbixAPIConnector { withCredentials: withCredentials, }; + this.version = zabbixVersion || null; + this.getTrend = this.getTrend_ZBXNEXT1193; //getTrend = getTrend_30; @@ -877,6 +879,7 @@ export class ZabbixAPIConnector { const params = { output: ['proxyid'], }; + // Before version 7.0.0 host was used, after - name if (semver.lt(this.version, '7.0.0')) { params.output.push('host'); } else { From ff940a3754be32ed9eedf381d0d2a8ca2aef1bd7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zolt=C3=A1n=20Bedi?= Date: Thu, 13 Jun 2024 16:35:09 +0200 Subject: [PATCH 3/3] Use spy instead of new argument --- .../connectors/zabbix_api/zabbixAPIConnector.test.ts | 10 ++++++++-- .../zabbix/connectors/zabbix_api/zabbixAPIConnector.ts | 4 +--- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/src/datasource/zabbix/connectors/zabbix_api/zabbixAPIConnector.test.ts b/src/datasource/zabbix/connectors/zabbix_api/zabbixAPIConnector.test.ts index 343df2b4..d2ff32ea 100644 --- a/src/datasource/zabbix/connectors/zabbix_api/zabbixAPIConnector.test.ts +++ b/src/datasource/zabbix/connectors/zabbix_api/zabbixAPIConnector.test.ts @@ -2,8 +2,13 @@ import { ZabbixAPIConnector } from './zabbixAPIConnector'; describe('Zabbix API connector', () => { describe('getProxies function', () => { + beforeAll(() => { + jest.spyOn(ZabbixAPIConnector.prototype, 'initVersion').mockResolvedValue(''); + }); + it('should send the name parameter to the request when version is 7 or greater for the getProxies', async () => { - const zabbixAPIConnector = new ZabbixAPIConnector(true, true, 123, '7.0.0'); + const zabbixAPIConnector = new ZabbixAPIConnector(true, true, 123); + zabbixAPIConnector.version = '7.0.0'; zabbixAPIConnector.request = jest.fn(); await zabbixAPIConnector.getProxies(); @@ -11,7 +16,8 @@ describe('Zabbix API connector', () => { }); it('should send the host parameter when version is less than 7.0.0', () => { - const zabbixAPIConnector = new ZabbixAPIConnector(true, true, 123, '6.0.0'); + const zabbixAPIConnector = new ZabbixAPIConnector(true, true, 123); + zabbixAPIConnector.version = '6.0.0'; zabbixAPIConnector.request = jest.fn(); zabbixAPIConnector.getProxies(); diff --git a/src/datasource/zabbix/connectors/zabbix_api/zabbixAPIConnector.ts b/src/datasource/zabbix/connectors/zabbix_api/zabbixAPIConnector.ts index 5ded01ba..845e08a4 100644 --- a/src/datasource/zabbix/connectors/zabbix_api/zabbixAPIConnector.ts +++ b/src/datasource/zabbix/connectors/zabbix_api/zabbixAPIConnector.ts @@ -28,7 +28,7 @@ export class ZabbixAPIConnector { getVersionPromise: Promise; datasourceId: number; - constructor(basicAuth: any, withCredentials: boolean, datasourceId: number, zabbixVersion?: string) { + constructor(basicAuth: any, withCredentials: boolean, datasourceId: number) { this.datasourceId = datasourceId; this.backendAPIUrl = `/api/datasources/${this.datasourceId}/resources/zabbix-api`; @@ -37,8 +37,6 @@ export class ZabbixAPIConnector { withCredentials: withCredentials, }; - this.version = zabbixVersion || null; - this.getTrend = this.getTrend_ZBXNEXT1193; //getTrend = getTrend_30;