Skip to content

Commit

Permalink
feat(resource-control): show resource control entry for clinic (#1582)
Browse files Browse the repository at this point in the history
  • Loading branch information
baurine authored Aug 24, 2023
1 parent 1616d48 commit 949927a
Show file tree
Hide file tree
Showing 6 changed files with 107 additions and 22 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -140,7 +140,7 @@
showViewMoreMetrics: false
}
},
appsDisabled: ['monitoring', 'search_logs']
appsDisabled: ['monitoring', 'search_logs', 'system_report']
})
</script>
</body>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
import {
IResourceManagerDataSource,
IResourceManagerContext,
ReqConfig
} from '@pingcap/tidb-dashboard-lib'
import { AxiosPromise } from 'axios'

import client, {
ResourcemanagerCalibrateResponse,
ResourcemanagerGetConfigResponse,
ResourcemanagerResourceInfoRowDef
} from '~/client'

class DataSource implements IResourceManagerDataSource {
getConfig(
options?: ReqConfig
): AxiosPromise<ResourcemanagerGetConfigResponse> {
return client.getInstance().resourceManagerConfigGet(options)
}
getInformation(
options?: ReqConfig
): AxiosPromise<ResourcemanagerResourceInfoRowDef[]> {
return client.getInstance().resourceManagerInformationGet(options)
}

getCalibrateByHardware(
params: { workload: string },
options?: ReqConfig | undefined
): AxiosPromise<ResourcemanagerCalibrateResponse> {
return client
.getInstance()
.resourceManagerCalibrateHardwareGet(params, options)
}
getCalibrateByActual(
params: { startTime: number; endTime: number },
options?: ReqConfig | undefined
): AxiosPromise<ResourcemanagerCalibrateResponse> {
return client
.getInstance()
.resourceManagerCalibrateActualGet(params, options)
}

metricsQueryGet(params: {
endTimeSec?: number
query?: string
startTimeSec?: number
stepSec?: number
}) {
return client
.getInstance()
.metricsQueryGet(params, {
handleError: 'custom'
} as ReqConfig)
.then((res) => res.data)
}
}

export const getResourceManagerContext: () => IResourceManagerContext = () => {
return {
ds: new DataSource(),
cfg: {}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
import React from 'react'
import {
ResourceManagerApp,
ResourceManagerProvider
} from '@pingcap/tidb-dashboard-lib'
import { getResourceManagerContext } from './context-impl'

export default function () {
return (
<ResourceManagerProvider value={getResourceManagerContext()}>
<ResourceManagerApp />
</ResourceManagerProvider>
)
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
import { HddOutlined } from '@ant-design/icons'

export default {
id: 'resource_manager',
routerPrefix: '/resource_manager',
icon: HddOutlined,
reactRoot: () => import('.')
}
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,16 @@ import styles from './index.module.less'

import { store, useIsFeatureSupport } from '@pingcap/tidb-dashboard-lib'

function useAppMenuItem(registry, appId, title?: string, hideIcon?: boolean) {
function useAppMenuItem(
registry,
appId,
enable: boolean = true,
title?: string,
hideIcon?: boolean
) {
const { t } = useTranslation()
const app = registry.apps[appId]
if (!app) {
if (!enable || !app) {
return null
}
return (
Expand Down Expand Up @@ -63,17 +69,11 @@ function Sider({
const whoAmI = store.useState((s) => s.whoAmI)
const appInfo = store.useState((s) => s.appInfo)

const instanceProfilingMenuItem = useAppMenuItem(
registry,
'instance_profiling',
'',
true
)
const conprofMenuItem = useAppMenuItem(registry, 'conprof', '', true)
const profilingSubMenuItems = [instanceProfilingMenuItem]
if (useIsFeatureSupport('conprof')) {
profilingSubMenuItems.push(conprofMenuItem)
}
const supportConProf = useIsFeatureSupport('conprof')
const profilingSubMenuItems = [
useAppMenuItem(registry, 'instance_profiling', true, '', true),
useAppMenuItem(registry, 'conprof', supportConProf, '', true)
]

const profilingSubMenu = (
<Menu.SubMenu
Expand Down Expand Up @@ -142,29 +142,27 @@ function Sider({
</Menu.SubMenu>
)

const topSQLSupport = useIsFeatureSupport('topsql')
const topSQLMenu = useAppMenuItem(registry, 'topsql')

const supportTopSQL = useIsFeatureSupport('topsql')
const supportResourceManager = useIsFeatureSupport('resource_manager')
const menuItems = [
useAppMenuItem(registry, 'overview'),
useAppMenuItem(registry, 'cluster_info'),
// topSQL
useAppMenuItem(registry, 'topsql', supportTopSQL),
useAppMenuItem(registry, 'statement'),
useAppMenuItem(registry, 'slow_query'),
useAppMenuItem(registry, 'keyviz'),
// useAppMenuItem(registry, 'system_report'),
useAppMenuItem(registry, 'system_report'),
// warning: "diagnose" app doesn't release yet
// useAppMenuItem(registry, 'diagnose'),
useAppMenuItem(registry, 'monitoring'),
useAppMenuItem(registry, 'search_logs'),
useAppMenuItem(registry, 'resource_manager', supportResourceManager),
// useAppMenuItem(registry, '__APP_NAME__'),
// NOTE: Don't remove above comment line, it is a placeholder for code generator
debugSubMenu
// conflictSubMenu
]
if (topSQLSupport) {
menuItems.splice(2, 0, topSQLMenu)
}

if (appInfo?.enable_experimental) {
menuItems.push(experimentalSubMenu)
Expand All @@ -174,7 +172,7 @@ function Sider({

const extraMenuItems = [
useAppMenuItem(registry, 'dashboard_settings'),
useAppMenuItem(registry, 'user_profile', displayName)
useAppMenuItem(registry, 'user_profile', true, displayName)
]

const transSider = useSpring({
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ import AppUserProfile from '~/apps/UserProfile/meta'
import AppDiagnose from '~/apps/Diagnose/meta'
import AppOptimizerTrace from '~/apps/OptimizerTrace/meta'
import AppDeadlock from '~/apps/Deadlock/meta'
import AppResourceManager from '~/apps/ResourceManager/meta'

import LayoutMain from './layout/main'

Expand Down Expand Up @@ -169,6 +170,7 @@ async function webPageStart(appOptions: AppOptions) {
.register(AppDebugAPI)
.register(AppOptimizerTrace)
.register(AppDeadlock)
.register(AppResourceManager)

if (!appOptions.skipReloadWhoAmI) {
try {
Expand Down

0 comments on commit 949927a

Please sign in to comment.