From 4daff194ab403f64d7039d393d1101864c3fd4ff Mon Sep 17 00:00:00 2001 From: Lauri Nevala Date: Thu, 30 Apr 2020 17:21:36 +0300 Subject: [PATCH] Use provider registry also on cluster settings preferences Signed-off-by: Lauri Nevala --- src/common/prometheus-providers.ts | 13 +++++++++++++ src/main/index.ts | 2 +- src/main/prometheus/helm.ts | 2 ++ src/main/prometheus/index.ts | 9 --------- src/main/prometheus/lens.ts | 4 +++- src/main/prometheus/operator.ts | 4 +++- .../{provider.ts => provider-registry.ts} | 12 +++++++++--- .../ClusterSettings/Preferences/index.vue | 18 +++++++++--------- 8 files changed, 40 insertions(+), 24 deletions(-) create mode 100644 src/common/prometheus-providers.ts delete mode 100644 src/main/prometheus/index.ts rename src/main/prometheus/{provider.ts => provider-registry.ts} (70%) diff --git a/src/common/prometheus-providers.ts b/src/common/prometheus-providers.ts new file mode 100644 index 0000000000..bbe0d19c7b --- /dev/null +++ b/src/common/prometheus-providers.ts @@ -0,0 +1,13 @@ +import { PrometheusLens } from "../main/prometheus/lens"; +import { PrometheusHelm } from "../main/prometheus/helm"; +import { PrometheusOperator } from "../main/prometheus/operator"; +import { PrometheusProviderRegistry } from "../main/prometheus/provider-registry"; +import logger from "../main/logger"; + +[PrometheusLens, PrometheusHelm, PrometheusOperator].forEach(providerClass => { + const provider = new providerClass() + logger.info(provider.id) + PrometheusProviderRegistry.registerProvider(provider.id, provider) +}); + +export const prometheusProviders = PrometheusProviderRegistry.getProviders() \ No newline at end of file diff --git a/src/main/index.ts b/src/main/index.ts index a56090a03a..700b44a4e3 100644 --- a/src/main/index.ts +++ b/src/main/index.ts @@ -15,7 +15,7 @@ import { shellSync } from "./shell-sync" import { getFreePort } from "./port" import { mangleProxyEnv } from "./proxy-env" import { findMainWebContents } from "./webcontents" -import "./prometheus/index" +import "../common/prometheus-providers" mangleProxyEnv() if (app.commandLine.getSwitchValue("proxy-server") !== "") { diff --git a/src/main/prometheus/helm.ts b/src/main/prometheus/helm.ts index 4d6a63b3e6..c69df755d5 100644 --- a/src/main/prometheus/helm.ts +++ b/src/main/prometheus/helm.ts @@ -3,6 +3,8 @@ import { PrometheusLens } from "./lens" export class PrometheusHelm extends PrometheusLens { constructor() { super() + this.id = "helm" + this.name = "Helm" this.rateAccuracy = "5m" } } \ No newline at end of file diff --git a/src/main/prometheus/index.ts b/src/main/prometheus/index.ts deleted file mode 100644 index 9e90e84c36..0000000000 --- a/src/main/prometheus/index.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { PrometheusLens } from "./lens"; -import { PrometheusHelm } from "./helm"; -import { PrometheusOperator } from "./operator"; -import { PrometheusProviderRegistry } from "./provider"; - - -PrometheusProviderRegistry.registerProvider("lens", new PrometheusLens()) -PrometheusProviderRegistry.registerProvider("helm", new PrometheusHelm()) -PrometheusProviderRegistry.registerProvider("operator", new PrometheusOperator()) \ No newline at end of file diff --git a/src/main/prometheus/lens.ts b/src/main/prometheus/lens.ts index a0b8391c44..17019af619 100644 --- a/src/main/prometheus/lens.ts +++ b/src/main/prometheus/lens.ts @@ -1,6 +1,8 @@ -import { PrometheusProvider, PrometheusQuery, PrometheusQueryOpts } from "./provider"; +import { PrometheusProvider, PrometheusQuery, PrometheusQueryOpts } from "./provider-registry"; export class PrometheusLens implements PrometheusProvider { + id = "lens" + name = "Lens" rateAccuracy = "1m" public getQueries(opts: PrometheusQueryOpts): PrometheusQuery { diff --git a/src/main/prometheus/operator.ts b/src/main/prometheus/operator.ts index f92ea7665f..6def71e7eb 100644 --- a/src/main/prometheus/operator.ts +++ b/src/main/prometheus/operator.ts @@ -1,7 +1,9 @@ -import { PrometheusProvider, PrometheusQuery, PrometheusQueryOpts } from "./provider"; +import { PrometheusProvider, PrometheusQuery, PrometheusQueryOpts } from "./provider-registry"; export class PrometheusOperator implements PrometheusProvider { rateAccuracy = "1m" + id = "operator" + name = "Prometheus Operator" public getQueries(opts: PrometheusQueryOpts): PrometheusQuery { switch(opts.category) { diff --git a/src/main/prometheus/provider.ts b/src/main/prometheus/provider-registry.ts similarity index 70% rename from src/main/prometheus/provider.ts rename to src/main/prometheus/provider-registry.ts index 6e4db82ac3..6fd793311b 100644 --- a/src/main/prometheus/provider.ts +++ b/src/main/prometheus/provider-registry.ts @@ -10,10 +10,12 @@ export interface PrometheusProvider { getQueries(opts: PrometheusQueryOpts): PrometheusQuery; } +export type PrometheusProviderList = { + [key: string]: PrometheusProvider; +} + export class PrometheusProviderRegistry { - private static prometheusProviders: { - [key: string]: PrometheusProvider; - } = {} + private static prometheusProviders: PrometheusProviderList = {} static getProvider(type: string): PrometheusProvider { if (!this.prometheusProviders[type]) { @@ -25,4 +27,8 @@ export class PrometheusProviderRegistry { static registerProvider(key: string, provider: PrometheusProvider) { this.prometheusProviders[key] = provider } + + static getProviders(): PrometheusProvider[] { + return Object.values(this.prometheusProviders) + } } \ No newline at end of file diff --git a/src/renderer/components/ClusterSettings/Preferences/index.vue b/src/renderer/components/ClusterSettings/Preferences/index.vue index 180e3dbc8e..108b6ad207 100644 --- a/src/renderer/components/ClusterSettings/Preferences/index.vue +++ b/src/renderer/components/ClusterSettings/Preferences/index.vue @@ -67,6 +67,8 @@