From bba6eb743d8ad16ef99e3df32c708b3d50984cfc Mon Sep 17 00:00:00 2001 From: Lauri Nevala Date: Wed, 6 May 2020 20:37:32 +0300 Subject: [PATCH] Add support for Prometheus api prefix (#341) Signed-off-by: Lauri Nevala --- src/main/cluster.ts | 8 ++++++++ src/main/routes/metrics.ts | 2 +- .../components/ClusterSettings/Preferences/index.vue | 8 +++++--- 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/src/main/cluster.ts b/src/main/cluster.ts index 1398bf2f7f..cb900e898a 100644 --- a/src/main/cluster.ts +++ b/src/main/cluster.ts @@ -46,6 +46,7 @@ export type ClusterPreferences = { namespace: string; service: string; port: number; + prefix: string; }; prometheusProvider?: { type: string; @@ -153,6 +154,13 @@ export class Cluster implements ClusterInfo { this.save() } + public getPrometheusApiPrefix() { + if (!this.preferences.prometheus?.prefix) { + return "" + } + return this.preferences.prometheus.prefix + } + public save() { clusterStore.storeCluster(this) } diff --git a/src/main/routes/metrics.ts b/src/main/routes/metrics.ts index 6bd965394d..289698a835 100644 --- a/src/main/routes/metrics.ts +++ b/src/main/routes/metrics.ts @@ -26,7 +26,7 @@ class MetricsRoute extends LensApi { let prometheusProvider: PrometheusProvider try { const prometheusPath = await cluster.contextHandler.getPrometheusPath() - metricsUrl = `${serverUrl}/api/v1/namespaces/${prometheusPath}/proxy/api/v1/query_range` + metricsUrl = `${serverUrl}/api/v1/namespaces/${prometheusPath}/proxy${cluster.getPrometheusApiPrefix()}/api/v1/query_range` prometheusProvider = await cluster.contextHandler.getPrometheusProvider() } catch { this.respondJson(response, {}) diff --git a/src/renderer/components/ClusterSettings/Preferences/index.vue b/src/renderer/components/ClusterSettings/Preferences/index.vue index a94f0b59d8..00753e9ff7 100644 --- a/src/renderer/components/ClusterSettings/Preferences/index.vue +++ b/src/renderer/components/ClusterSettings/Preferences/index.vue @@ -111,7 +111,7 @@ export default { updateValues: function(){ if (this.cluster.preferences.prometheus) { const prom = this.cluster.preferences.prometheus; - this.prometheusPath = `${prom.namespace}/${prom.service}:${prom.port}` + this.prometheusPath = `${prom.namespace}/${prom.service}:${prom.port}${prom.prefix}` } else { this.prometheusPath = "" } @@ -122,11 +122,13 @@ export default { } }, parsePrometheusPath: function(path) { - let parsed = path.split(/\/|:/) + const parsed = path.split(/\/|:/, 3) + const apiPrefix = path.substring(parsed.join("/").length) return { namespace: parsed[0], service: parsed[1], - port: parsed[2] + port: parsed[2], + prefix: apiPrefix } }, expandPath: function(value, event) {