mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
Throw an error on invalid prometheus provider
Signed-off-by: Lauri Nevala <lauri.nevala@gmail.com>
This commit is contained in:
parent
2fc8daaff6
commit
40dcbdbf67
@ -16,12 +16,14 @@ export interface PrometheusProvider {
|
|||||||
|
|
||||||
export class PrometheusProviderFactory {
|
export class PrometheusProviderFactory {
|
||||||
static createProvider(type: string): PrometheusProvider {
|
static createProvider(type: string): PrometheusProvider {
|
||||||
if (type == "helm") {
|
if (type == "lens") {
|
||||||
|
return new PrometheusLens()
|
||||||
|
} else if (type == "helm") {
|
||||||
return new PrometheusHelm()
|
return new PrometheusHelm()
|
||||||
} else if (type == "operator") {
|
} else if (type == "operator") {
|
||||||
return new PrometheusOperator()
|
return new PrometheusOperator()
|
||||||
} else {
|
} else {
|
||||||
return new PrometheusLens()
|
throw "Unknown Prometheus provider";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1,7 +1,7 @@
|
|||||||
import { LensApiRequest } from "../router"
|
import { LensApiRequest } from "../router"
|
||||||
import { LensApi } from "../lens-api"
|
import { LensApi } from "../lens-api"
|
||||||
import * as requestPromise from "request-promise-native"
|
import * as requestPromise from "request-promise-native"
|
||||||
import { PrometheusProviderFactory} from "../prometheus/provider"
|
import { PrometheusProviderFactory, PrometheusProvider} from "../prometheus/provider"
|
||||||
|
|
||||||
type MetricsQuery = string | string[] | {
|
type MetricsQuery = string | string[] | {
|
||||||
[metricName: string]: string;
|
[metricName: string]: string;
|
||||||
@ -24,6 +24,12 @@ class MetricsRoute extends LensApi {
|
|||||||
})
|
})
|
||||||
|
|
||||||
const prometheusInstallationSource = cluster.preferences.prometheusSource || "lens"
|
const prometheusInstallationSource = cluster.preferences.prometheusSource || "lens"
|
||||||
|
let prometheusProvider: PrometheusProvider
|
||||||
|
try {
|
||||||
|
prometheusProvider = PrometheusProviderFactory.createProvider(prometheusInstallationSource)
|
||||||
|
} catch {
|
||||||
|
this.respondJson(response, {})
|
||||||
|
}
|
||||||
// prometheus metrics loader
|
// prometheus metrics loader
|
||||||
const attempts: { [query: string]: number } = {};
|
const attempts: { [query: string]: number } = {};
|
||||||
const maxAttempts = 5;
|
const maxAttempts = 5;
|
||||||
@ -66,7 +72,7 @@ class MetricsRoute extends LensApi {
|
|||||||
Object.entries(query).map((queryEntry: any) => {
|
Object.entries(query).map((queryEntry: any) => {
|
||||||
const queryName = queryEntry[0]
|
const queryName = queryEntry[0]
|
||||||
const queryOpts = queryEntry[1]
|
const queryOpts = queryEntry[1]
|
||||||
const q = PrometheusProviderFactory.createProvider(prometheusInstallationSource).getQueries(queryOpts)[queryName]
|
const q = prometheusProvider.getQueries(queryOpts)[queryName]
|
||||||
return loadMetrics(q)
|
return loadMetrics(q)
|
||||||
})
|
})
|
||||||
);
|
);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user