From c0e17f948280062a22563fa5d401b468fb9dc1e5 Mon Sep 17 00:00:00 2001 From: Sebastian Malton Date: Fri, 2 Dec 2022 10:57:02 -0500 Subject: [PATCH] Fix type error Signed-off-by: Sebastian Malton --- .../metrics/add-metrics-route.injectable.ts | 93 ++++++++++--------- 1 file changed, 49 insertions(+), 44 deletions(-) diff --git a/src/main/routes/metrics/add-metrics-route.injectable.ts b/src/main/routes/metrics/add-metrics-route.injectable.ts index eb59f2840b..ef963ae407 100644 --- a/src/main/routes/metrics/add-metrics-route.injectable.ts +++ b/src/main/routes/metrics/add-metrics-route.injectable.ts @@ -67,56 +67,61 @@ const addMetricsRouteInjectable = getRouteInjectable({ const queryParams: Partial> = Object.fromEntries(query.entries()); const prometheusMetadata: ClusterPrometheusMetadata = {}; - try { - const { prometheusPath, provider } = await cluster.contextHandler.getPrometheusDetails(); + const detailsResult = await cluster.contextHandler.getPrometheusDetails(); - prometheusMetadata.provider = provider?.kind; - prometheusMetadata.autoDetected = !cluster.preferences.prometheusProvider?.type; - - if (!prometheusPath) { - prometheusMetadata.success = false; - - return { response: {}}; - } - - // return data in same structure as query - if (typeof payload === "string") { - const [data] = await loadMetrics([payload], cluster, prometheusPath, queryParams); - - return { response: data }; - } - - if (Array.isArray(payload)) { - const data = await loadMetrics(payload, cluster, prometheusPath, queryParams); - - return { response: data }; - } - - if (isObject(payload)) { - const data = payload as Record>; - const queries = object.entries(data) - .map(([queryName, queryOpts]) => ( - provider.getQuery(queryOpts, queryName) - )); - - const result = await loadMetrics(queries, cluster, prometheusPath, queryParams); - const response = object.fromEntries(object.keys(data).map((metricName, i) => [metricName, result[i]])); - - prometheusMetadata.success = true; - - return { response }; - } - - return { response: {}}; - } catch (error) { + if (!detailsResult.callWasSuccessful) { prometheusMetadata.success = false; + cluster.metadata[ClusterMetadataKey.PROMETHEUS] = prometheusMetadata; - logger.warn(`[METRICS-ROUTE]: failed to get metrics for clusterId=${cluster.id}:`, error); + logger.warn(`[METRICS-ROUTE]: failed to get metrics for clusterId=${cluster.id}:`, detailsResult.error); return { response: {}}; - } finally { - cluster.metadata[ClusterMetadataKey.PROMETHEUS] = prometheusMetadata; } + + const { provider, prometheusPath } = detailsResult.response; + + prometheusMetadata.provider = provider?.kind; + prometheusMetadata.autoDetected = !cluster.preferences.prometheusProvider?.type; + + if (!prometheusPath) { + prometheusMetadata.success = false; + cluster.metadata[ClusterMetadataKey.PROMETHEUS] = prometheusMetadata; + + return { response: {}}; + } + + prometheusMetadata.success = true; + cluster.metadata[ClusterMetadataKey.PROMETHEUS] = prometheusMetadata; + + // return data in same structure as query + if (typeof payload === "string") { + const [data] = await loadMetrics([payload], cluster, prometheusPath, queryParams); + + return { response: data }; + } + + if (Array.isArray(payload)) { + const data = await loadMetrics(payload, cluster, prometheusPath, queryParams); + + return { response: data }; + } + + if (isObject(payload)) { + const data = payload as Record>; + const queries = object.entries(data) + .map(([queryName, queryOpts]) => ( + provider.getQuery(queryOpts, queryName) + )); + + const result = await loadMetrics(queries, cluster, prometheusPath, queryParams); + const response = object.fromEntries(object.keys(data).map((metricName, i) => [metricName, result[i]])); + + prometheusMetadata.success = true; + + return { response }; + } + + return { response: {}}; }); }, });