Skip to content

Commit ed9267f

Browse files
committed
refactor: remove grafanaDataSourceId from AppMetrics and related components, introduce getDataSourceDetailsFromEnvironment function
1 parent 57da8a8 commit ed9267f

File tree

5 files changed

+34
-19
lines changed

5 files changed

+34
-19
lines changed

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

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

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

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -51,15 +51,14 @@ import {
5151
ModuleNameMap,
5252
URLS,
5353
} from '../../../../config'
54-
import { isDatasourceConfigured, isDatasourceHealthy } from './appDetails.service'
54+
import { getDataSourceDetailsFromEnvironment, isDatasourceHealthy } from './appDetails.service'
5555
import { getHostURLConfiguration } from '../../../../services/service'
5656
import PrometheusErrorImage from '../../../../assets/img/ic-error-prometheus.png'
5757
import HostErrorImage from '../../../../assets/img/ic-error-hosturl.png'
5858
import { ReactComponent as DropDownIcon } from '../../../../assets/icons/appstatus/ic-chevron-down.svg'
5959
import { getModuleInfo } from '../../../v2/devtronStackManager/DevtronStackManager.service'
6060
import { ModuleStatus } from '../../../v2/devtronStackManager/DevtronStackManager.type'
6161
import { APP_METRICS_CALENDAR_INPUT_DATE_FORMAT } from './constants'
62-
import { AppDetails } from '@Components/app/types'
6362

6463
export const AppMetrics: React.FC<
6564
{
@@ -68,10 +67,10 @@ export const AppMetrics: React.FC<
6867
podMap: Map<string, any>
6968
k8sVersion
7069
addExtraSpace: boolean
71-
} & Pick<AppDetails, 'grafanaDataSourceId'>
72-
> = ({ appName, podMap, k8sVersion, addExtraSpace, environment, grafanaDataSourceId }) => {
70+
}
71+
> = ({ appName, podMap, k8sVersion, addExtraSpace, environment }) => {
7372
const { appTheme } = useTheme()
74-
const { appMetrics, infraMetrics } = environment
73+
const { appMetrics, infraMetrics, environmentName } = environment
7574
const [calendar, setDateRange] = useState<{ startDate: Moment; endDate: Moment }>({
7675
startDate: moment().subtract(5, 'minute'),
7776
endDate: moment(),
@@ -150,17 +149,16 @@ export const AppMetrics: React.FC<
150149
const hostUrlRes = await getHostURLConfiguration()
151150
setHostURLConfig(hostUrlRes.result)
152151

153-
if (grafanaDataSourceId) {
154-
const [datasourceConfiguredRes, datasourceHealthyRes] = await Promise.all([
155-
isDatasourceConfigured(grafanaDataSourceId),
156-
isDatasourceHealthy(grafanaDataSourceId),
157-
])
152+
const { dataSourceName, dataSourceId } = await getDataSourceDetailsFromEnvironment(environmentName)
153+
154+
if (dataSourceId) {
155+
const datasourceHealthyRes = await isDatasourceHealthy(dataSourceId)
158156

159157
setDatasource({
160158
isLoading: false,
161159
isConfigured: true,
162160
isHealthy: datasourceHealthyRes?.status.toLowerCase() === 'success',
163-
dataSourceName: datasourceConfiguredRes?.name || '',
161+
dataSourceName,
164162
})
165163
} else {
166164
setDatasource({

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

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,16 +14,30 @@
1414
* limitations under the License.
1515
*/
1616

17-
import { ResponseType, get, trash } from '@devtron-labs/devtron-fe-common-lib'
17+
import { ResponseType, get, getUrlWithSearchParams, trash } from '@devtron-labs/devtron-fe-common-lib'
1818
import { Routes } from '../../../../config'
1919
import { fetchWithFullRoute } from '../../../../services/fetchWithFullRoute'
20-
import { ClusterConnectionResponse, DeploymentStatusDetailsResponse, ModuleConfigResponse } from './appDetails.type'
20+
import {
21+
ClusterConnectionResponse,
22+
DataSourceDetailsDTO,
23+
DeploymentStatusDetailsResponse,
24+
ModuleConfigResponse,
25+
} from './appDetails.type'
2126
import { AppType } from '../../../v2/appDetails/appDetails.type'
2227

23-
export function isDatasourceConfigured(grafanaDataSourceId: number) {
24-
const root = window.__ORCHESTRATOR_ROOT__.replace('/orchestrator', '')
25-
const URL = `${root}/grafana/api/datasources/${grafanaDataSourceId}`
26-
return fetchWithFullRoute(URL, 'GET')
28+
export const getDataSourceDetailsFromEnvironment = async (envName: string): Promise<DataSourceDetailsDTO> => {
29+
try {
30+
const {
31+
result: { dataSourceName, dataSourceId },
32+
} = await get<DataSourceDetailsDTO>(getUrlWithSearchParams('/health', { envName }))
33+
34+
return { dataSourceName, dataSourceId }
35+
} catch {
36+
return {
37+
dataSourceName: '',
38+
dataSourceId: null,
39+
}
40+
}
2741
}
2842

2943
export function isDatasourceHealthy(datasourceId: number | string) {

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,11 @@ export interface ModuleConfigResponse extends ResponseType {
132132
}
133133
}
134134

135+
export interface DataSourceDetailsDTO {
136+
dataSourceName: string
137+
dataSourceId: number
138+
}
139+
135140
export interface ClusterConnectionResponse extends ResponseType {
136141
result?: {
137142
clusterReachable: boolean

src/components/app/types.ts

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

137136
export interface LabelTag {

0 commit comments

Comments
 (0)