Skip to content

Commit 2ee2007

Browse files
committed
refactor: rename dataSourceId to grafanaDataSourceId in AppMetrics and related components
1 parent 55f3810 commit 2ee2007

File tree

4 files changed

+70
-53
lines changed

4 files changed

+70
-53
lines changed

src/components/app/details/appDetails/AppDetails.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -817,7 +817,7 @@ export const Details: React.FC<DetailsType> = ({
817817
{environment && !isVirtualEnvRef.current && (
818818
<AppMetrics
819819
appName={appDetails.appName}
820-
dataSourceId={appDetails.dataSourceId}
820+
grafanaDataSourceId={appDetails.grafanaDataSourceId}
821821
addExtraSpace={!isExternalToolAvailable}
822822
environment={environment}
823823
podMap={aggregatedNodes.nodes.Pod}

src/components/app/details/appDetails/AppMetrics.tsx

Lines changed: 66 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -15,18 +15,18 @@
1515
*/
1616

1717
import React, { useState, useEffect } from 'react'
18-
import { not, Progressing, ToastManager, ToastVariantType, useAsync, useTheme } from '@devtron-labs/devtron-fe-common-lib'
18+
import {
19+
not,
20+
Progressing,
21+
ToastManager,
22+
ToastVariantType,
23+
useAsync,
24+
useTheme,
25+
} from '@devtron-labs/devtron-fe-common-lib'
1926
import { useParams, Link, NavLink } from 'react-router-dom'
2027
import moment, { Moment } from 'moment'
2128
import Tippy from '@tippyjs/react'
22-
import {
23-
getIframeSrc,
24-
ThroughputSelect,
25-
getCalendarValue,
26-
isK8sVersionValid,
27-
LatencySelect,
28-
AppInfo,
29-
} from './utils'
29+
import { getIframeSrc, ThroughputSelect, getCalendarValue, isK8sVersionValid, LatencySelect, AppInfo } from './utils'
3030
import {
3131
ChartTypes,
3232
AppMetricsTab,
@@ -61,13 +61,15 @@ import { ModuleStatus } from '../../../v2/devtronStackManager/DevtronStackManage
6161
import { APP_METRICS_CALENDAR_INPUT_DATE_FORMAT } from './constants'
6262
import { AppDetails } from '@Components/app/types'
6363

64-
export const AppMetrics: React.FC<{
65-
appName: string
66-
environment
67-
podMap: Map<string, any>
68-
k8sVersion
69-
addExtraSpace: boolean
70-
} & Pick<AppDetails, 'dataSourceId'>> = ({ appName, podMap, k8sVersion, addExtraSpace, environment, dataSourceId }) => {
64+
export const AppMetrics: React.FC<
65+
{
66+
appName: string
67+
environment
68+
podMap: Map<string, any>
69+
k8sVersion
70+
addExtraSpace: boolean
71+
} & Pick<AppDetails, 'grafanaDataSourceId'>
72+
> = ({ appName, podMap, k8sVersion, addExtraSpace, environment, grafanaDataSourceId }) => {
7173
const { appTheme } = useTheme()
7274
const { appMetrics, infraMetrics } = environment
7375
const [calendar, setDateRange] = useState<{ startDate: Moment; endDate: Moment }>({
@@ -79,7 +81,7 @@ export const AppMetrics: React.FC<{
7981
endDate: 'now',
8082
})
8183
const [datasource, setDatasource] = useState<{
82-
isLoading: boolean,
84+
isLoading: boolean
8385
isConfigured: boolean
8486
isHealthy: boolean
8587
dataSourceName: string
@@ -145,24 +147,29 @@ export const AppMetrics: React.FC<{
145147

146148
async function checkDatasource() {
147149
try {
148-
let datasourceConfiguredRes
149-
let datasourceHealthyRes
150-
let hostUrlRes
151-
152-
hostUrlRes = await getHostURLConfiguration()
150+
const hostUrlRes = await getHostURLConfiguration()
153151
setHostURLConfig(hostUrlRes.result)
154-
datasourceConfiguredRes = await isDatasourceConfigured(dataSourceId)
155152

156-
if (datasourceConfiguredRes.id) {
157-
datasourceHealthyRes = await isDatasourceHealthy(datasourceConfiguredRes.id)
153+
if (grafanaDataSourceId) {
154+
const [datasourceConfiguredRes, datasourceHealthyRes] = await Promise.all([
155+
isDatasourceConfigured(grafanaDataSourceId),
156+
isDatasourceHealthy(grafanaDataSourceId),
157+
])
158+
159+
setDatasource({
160+
isLoading: false,
161+
isConfigured: !!grafanaDataSourceId,
162+
isHealthy: datasourceHealthyRes?.status.toLowerCase() === 'success',
163+
dataSourceName: datasourceConfiguredRes?.name || '',
164+
})
165+
} else {
166+
setDatasource({
167+
isLoading: false,
168+
isConfigured: false,
169+
isHealthy: false,
170+
dataSourceName: '',
171+
})
158172
}
159-
160-
setDatasource({
161-
isLoading: false,
162-
isConfigured: !!datasourceConfiguredRes.id,
163-
isHealthy: datasourceHealthyRes?.status.toLowerCase() === 'success',
164-
dataSourceName: datasourceConfiguredRes.name,
165-
})
166173
} catch (error) {
167174
setDatasource({
168175
...datasource,
@@ -184,10 +191,11 @@ export const AppMetrics: React.FC<{
184191
setCalendarValue(str)
185192
}
186193

187-
const getIframeSrcWrapper: GraphModalProps['getIframeSrcWrapper'] = (params) => getIframeSrc({
188-
...params,
189-
grafanaTheme: appTheme,
190-
})
194+
const getIframeSrcWrapper: GraphModalProps['getIframeSrcWrapper'] = (params) =>
195+
getIframeSrc({
196+
...params,
197+
grafanaTheme: appTheme,
198+
})
191199

192200
function handleStatusChange(selected): void {
193201
if (!isK8sVersionValid(k8sVersion)) {
@@ -206,7 +214,7 @@ export const AppMetrics: React.FC<{
206214
calendarInputs,
207215
tab,
208216
isLegendRequired: true,
209-
statusCode: selected.value
217+
statusCode: selected.value,
210218
})
211219
setStatusCode(selected.value)
212220
setGraphs({
@@ -227,7 +235,13 @@ export const AppMetrics: React.FC<{
227235
k8sVersion,
228236
}
229237
const latency = getIframeSrcWrapper({
230-
appInfo, chartName: ChartType.Latency, calendarInputs, tab, isLegendRequired: true, statusCode: undefined, latency: selected.value
238+
appInfo,
239+
chartName: ChartType.Latency,
240+
calendarInputs,
241+
tab,
242+
isLegendRequired: true,
243+
statusCode: undefined,
244+
latency: selected.value,
231245
})
232246
setLatency(selected.value)
233247
setGraphs({
@@ -259,10 +273,18 @@ export const AppMetrics: React.FC<{
259273
k8sVersion,
260274
}
261275
const cpu = getIframeSrcWrapper({
262-
appInfo, chartName: ChartType.Cpu, calendarInputs, tab: newTab, isLegendRequired: true
276+
appInfo,
277+
chartName: ChartType.Cpu,
278+
calendarInputs,
279+
tab: newTab,
280+
isLegendRequired: true,
263281
})
264282
const ram = getIframeSrcWrapper({
265-
appInfo, chartName: ChartType.Ram, calendarInputs, tab: newTab, isLegendRequired: true
283+
appInfo,
284+
chartName: ChartType.Ram,
285+
calendarInputs,
286+
tab: newTab,
287+
isLegendRequired: true,
266288
})
267289
const latency = getIframeSrcWrapper({
268290
appInfo,
@@ -279,7 +301,7 @@ export const AppMetrics: React.FC<{
279301
calendarInputs,
280302
tab: newTab,
281303
isLegendRequired: true,
282-
statusCode: StatusType.Throughput
304+
statusCode: StatusType.Throughput,
283305
})
284306
setGraphs({
285307
cpu,
@@ -309,6 +331,7 @@ export const AppMetrics: React.FC<{
309331
if (
310332
!datasource.isConfigured ||
311333
!datasource.isHealthy ||
334+
!datasource.dataSourceName ||
312335
!hostURLConfig ||
313336
hostURLConfig.value !== window.location.origin
314337
) {
@@ -323,10 +346,7 @@ export const AppMetrics: React.FC<{
323346
}
324347

325348
return (
326-
<section
327-
data-testid="app-metrices-wrapper"
328-
className="app-summary bg__primary pl-24 pr-24 pb-20 w-100"
329-
>
349+
<section data-testid="app-metrices-wrapper" className="app-summary bg__primary pl-24 pr-24 pb-20 w-100">
330350
{(appMetrics || infraMetrics) && (
331351
<div className="flex" style={{ justifyContent: 'space-between', height: '68px' }}>
332352
<span className="fs-14 fw-6 cn-7 flex left mr-9">
@@ -528,10 +548,7 @@ const EnableAppMetrics = () => {
528548

529549
const MonitoringModuleNotInstalled = ({ addSpace }: { addSpace: string }) => {
530550
return (
531-
<div
532-
data-testid="app-metrices-wrapper"
533-
className={`bcv-1 w-100 pt-18 pb-18 pl-20 pr-20 ${addSpace}`}
534-
>
551+
<div data-testid="app-metrices-wrapper" className={`bcv-1 w-100 pt-18 pb-18 pl-20 pr-20 ${addSpace}`}>
535552
<div className="flex left w-100 lh-20">
536553
<span className="fs-14 fw-6 cv-5 flex left mr-16">
537554
<GraphIcon className="mr-8 fcv-5 icon-dim-20" />

src/components/app/details/appDetails/appDetails.service.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,9 @@ import { fetchWithFullRoute } from '../../../../services/fetchWithFullRoute'
2020
import { ClusterConnectionResponse, DeploymentStatusDetailsResponse, ModuleConfigResponse } from './appDetails.type'
2121
import { AppType } from '../../../v2/appDetails/appDetails.type'
2222

23-
export function isDatasourceConfigured(dataSourceId: number) {
23+
export function isDatasourceConfigured(grafanaDataSourceId: number) {
2424
const root = window.__ORCHESTRATOR_ROOT__.replace('/orchestrator', '')
25-
const URL = `${root}/grafana/api/datasources/${dataSourceId}`
25+
const URL = `${root}/grafana/api/datasources/${grafanaDataSourceId}`
2626
return fetchWithFullRoute(URL, 'GET')
2727
}
2828

src/components/app/types.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@ export interface AppDetails extends CDModalProps {
131131
releaseMode: ReleaseMode
132132
trafficSwitched?: boolean
133133
pcoId?: number
134-
dataSourceId?: number
134+
grafanaDataSourceId?: number
135135
}
136136

137137
export interface LabelTag {

0 commit comments

Comments
 (0)