From 1f7ce4fe78b5e913ff5f9cd973c3c5803694a7c0 Mon Sep 17 00:00:00 2001 From: PierreDemailly Date: Sun, 7 Jan 2024 22:21:42 +0100 Subject: [PATCH] feat(agent): use default Loki datasource --- src/agent/src/datasource.ts | 12 ++++++++++-- src/agent/src/utils/getLokiUrl.ts | 4 ++-- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/src/agent/src/datasource.ts b/src/agent/src/datasource.ts index 16771f3..648c020 100644 --- a/src/agent/src/datasource.ts +++ b/src/agent/src/datasource.ts @@ -1,10 +1,11 @@ // Import Third-party Dependencies -import { GrafanaApi } from "@myunisoft/loki"; +import { GrafanaApi, Datasource as GrafanaDatasource } from "@myunisoft/loki"; export class Datasource { #lokiApi: GrafanaApi; private static datasource: Datasource; + private static cache: GrafanaDatasource; private constructor(host: string) { this.#lokiApi = new GrafanaApi({ @@ -17,10 +18,17 @@ export class Datasource { } static async Loki(host: string) { + if (this.cache !== undefined) { + return this.cache; + } + this.datasource ??= new Datasource(host); const datasources = await this.datasource.fetchDatasources(); + const lokiDatasources = datasources.filter((datasource) => datasource.type === "loki")!; + const datasource = datasources.find((datasource) => datasource.isDefault) ?? lokiDatasources.at(0)!; + this.cache = datasource; - return datasources.find((datasource) => datasource.type === "loki")!; + return datasource; } } diff --git a/src/agent/src/utils/getLokiUrl.ts b/src/agent/src/utils/getLokiUrl.ts index c9a6e83..7cc2850 100644 --- a/src/agent/src/utils/getLokiUrl.ts +++ b/src/agent/src/utils/getLokiUrl.ts @@ -5,10 +5,10 @@ import { SigynInitializedRule, getConfig } from "@sigyn/config"; // Import Internal Dependencies import { Datasource } from "../datasource"; import { durationOrCronToDate } from "./cron"; -import { NotifierAlert } from "../notifier"; +import { RuleNotifierAlert } from "../notifiers/rules.notifier"; export async function getLokiUrl( - rule: NotifierAlert["rule"], + rule: RuleNotifierAlert["rule"], config: SigynInitializedRule ): Promise { const { loki } = getConfig();