Initial commit: Extract base Zabbix GraphQl - API functionality from VCR Project and add dynamic schema samples
This commit is contained in:
commit
92ffe71684
42 changed files with 4234 additions and 0 deletions
89
src/datasources/zabbix-script.ts
Normal file
89
src/datasources/zabbix-script.ts
Normal file
|
|
@ -0,0 +1,89 @@
|
|||
import {ZabbixAPI} from "./zabbix-api.js";
|
||||
import {ApiErrorCode} from "../model/model_enum_values.js";
|
||||
import {isZabbixErrorResult, ParsedArgs, ZabbixErrorResult, ZabbixParams, ZabbixRequest} from "./zabbix-request.js";
|
||||
import {ZabbixQueryHostsMetaRequest} from "./zabbix-hosts.js";
|
||||
|
||||
export class ZabbixForceCacheReloadParams extends ParsedArgs {
|
||||
constructor(public hostid: number) {
|
||||
super();
|
||||
}
|
||||
}
|
||||
|
||||
export class ZabbixForceCacheReloadRequest extends ZabbixRequest<{
|
||||
response: string
|
||||
value: string
|
||||
}, ZabbixForceCacheReloadParams> {
|
||||
private static ZABBIX_RELOAD_CACHE_SCRIPT_NAME = "Reload configuration cache";
|
||||
private static reloadCacheScriptId = 0;
|
||||
private reloadCacheHostId = 0;
|
||||
private static ZABBIX_RELOAD_CACHE_SCRIPT_PARAMS = {
|
||||
"name": this.ZABBIX_RELOAD_CACHE_SCRIPT_NAME,
|
||||
"command": "/usr/lib/zabbix/alertscripts/config_cache_reload.sh",
|
||||
"host_access": "2",
|
||||
"description": "Reload the configuration cache making config changes like new hosts/items visible to zabbix_server. Without this new values cannot be received.",
|
||||
"type": "0",
|
||||
"execute_on": "1",
|
||||
"timeout": "30s",
|
||||
"scope": "2"
|
||||
};
|
||||
|
||||
constructor(authToken?: string | null, cookie?: string | null) {
|
||||
super("script.execute", authToken, cookie);
|
||||
}
|
||||
|
||||
async prepare(zabbixAPI: ZabbixAPI, args?: ZabbixForceCacheReloadParams) {
|
||||
this.reloadCacheHostId = args?.hostid || 0;
|
||||
if (!this.reloadCacheHostId) {
|
||||
let someHost = await new ZabbixQueryHostsMetaRequest(this.authToken, this.cookie).executeRequestReturnError(zabbixAPI, new ParsedArgs({limit: 1}))
|
||||
if (!isZabbixErrorResult(someHost) && someHost && someHost.length && someHost[0].hostid) {
|
||||
this.reloadCacheHostId = Number(someHost[0].hostid)
|
||||
} else {
|
||||
this.prepResult = {
|
||||
error: {
|
||||
message: "Unable to find host for executing scripts",
|
||||
code: ApiErrorCode.ZABBIX_HOST_NOT_FOUND,
|
||||
path: this.path,
|
||||
args: args,
|
||||
}
|
||||
} as ZabbixErrorResult
|
||||
return this.prepResult
|
||||
}
|
||||
}
|
||||
if (!args?.zabbix_params?.hasOwnProperty("scriptid") && !ZabbixForceCacheReloadRequest.reloadCacheScriptId) {
|
||||
let scriptResult = await new ZabbixRequest<{
|
||||
scriptid: string
|
||||
}[]>("script.get", this.authToken, this.cookie).executeRequestThrowError(zabbixAPI, new ParsedArgs(
|
||||
{filter_name: ZabbixForceCacheReloadRequest.ZABBIX_RELOAD_CACHE_SCRIPT_NAME}))
|
||||
if (scriptResult && scriptResult.length && scriptResult[0].scriptid) {
|
||||
ZabbixForceCacheReloadRequest.reloadCacheScriptId = Number(scriptResult[0].scriptid)
|
||||
} else {
|
||||
let createScriptResult = await new ZabbixRequest<{
|
||||
scriptids: string[]
|
||||
}>("script.create", this.authToken, this.cookie).executeRequestThrowError(zabbixAPI,
|
||||
new ParsedArgs(ZabbixForceCacheReloadRequest.ZABBIX_RELOAD_CACHE_SCRIPT_PARAMS))
|
||||
if (!isZabbixErrorResult(createScriptResult) && createScriptResult?.scriptids && createScriptResult.scriptids.length) {
|
||||
ZabbixForceCacheReloadRequest.reloadCacheScriptId = Number(createScriptResult.scriptids[0]);
|
||||
} else {
|
||||
this.prepResult = {
|
||||
error: {
|
||||
message: "Unable to find or create script for reloading cache",
|
||||
code: ApiErrorCode.ZABBIX_SCRIPT_NOT_FOUND,
|
||||
data: createScriptResult,
|
||||
path: this.path,
|
||||
args: args,
|
||||
}
|
||||
} as ZabbixErrorResult
|
||||
}
|
||||
}
|
||||
return this.prepResult
|
||||
}
|
||||
}
|
||||
|
||||
createZabbixParams(_args?: ZabbixForceCacheReloadParams): ZabbixParams {
|
||||
return {
|
||||
"scriptid": ZabbixForceCacheReloadRequest.reloadCacheScriptId,
|
||||
"hostid": this.reloadCacheHostId,
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue