diff --git a/web/console/src/modules/alarmPolicy/WebAPI.ts b/web/console/src/modules/alarmPolicy/WebAPI.ts index a6d377f04..fc67c9615 100644 --- a/web/console/src/modules/alarmPolicy/WebAPI.ts +++ b/web/console/src/modules/alarmPolicy/WebAPI.ts @@ -47,14 +47,14 @@ function humanizeDuration4Time(initSecons: number) { let result = ''; if (seconds > 3600) { - let hours = Math.floor(seconds / 3600); + const hours = Math.floor(seconds / 3600); result += hours >= 10 ? `${hours}:` : `0${hours}:`; seconds -= hours * 3600; } else { result += `00:`; } if (seconds > 60) { - let minutes = Math.floor(seconds / 60); + const minutes = Math.floor(seconds / 60); result += minutes >= 10 ? `${minutes}:` : `0${minutes}:`; seconds -= minutes * 60; } else { @@ -73,13 +73,13 @@ function operationResult(target: T[] | T, error?: any): OperationResult[] /**获取Alarm列表 */ export async function fetchAlarmPolicy(query: QueryState) { - let { + const { paging, filter: { clusterId, namespace, alarmPolicyType } } = query; let alarmPolicyList: AlarmPolicy[] = []; - let resourceInfo: ResourceInfo = resourceConfig().alarmPolicy; - let url = reduceK8sRestfulPath({ + const resourceInfo: ResourceInfo = resourceConfig().alarmPolicy; + const url = reduceK8sRestfulPath({ resourceInfo: { ...resourceInfo, requestType: { @@ -87,12 +87,12 @@ export async function fetchAlarmPolicy(query: QueryState) { } } }); - let params: RequestParams = { + const params: RequestParams = { method: Method.get, url }; if (paging) { - let { pageIndex, pageSize } = paging; + const { pageIndex, pageSize } = paging; params['page'] = pageIndex; params['page_size'] = pageSize; @@ -113,7 +113,7 @@ export async function fetchAlarmPolicy(query: QueryState) { let total = 0; let items = []; try { - let response = await reduceNetworkRequest(params); + const response = await reduceNetworkRequest(params); if (response.code === 0) { items = response.data.data.alarmPolicies.map(item => { return Object.assign({}, item, { id: uuid() }); @@ -130,12 +130,12 @@ export async function fetchAlarmPolicy(query: QueryState) { // let response = await sendCapiRequest('tke', 'DescribeAlarmPolicies', params, query.filter.regionId); alarmPolicyList = items.map(item => { - let alarmPolicyMetricsConfig = + const alarmPolicyMetricsConfig = (item.AlarmPolicySettings.AlarmPolicyType === 'cluster' ? AlarmPolicyMetrics['independentClusetr'] : AlarmPolicyMetrics[item.AlarmPolicySettings.AlarmPolicyType]) || []; item.ShieldSettings = item.ShieldSettings || {}; - let temp = { + const temp = { id: item.AlarmPolicyId || item.AlarmPolicySettings.AlarmPolicyName, alarmPolicyId: item.AlarmPolicyId || item.AlarmPolicySettings.AlarmPolicyName, clusterId: query.filter.clusterId, @@ -168,8 +168,8 @@ export async function fetchAlarmPolicy(query: QueryState) { temp.alarmObjetcs = item.AlarmPolicySettings.AlarmObjects ? item.AlarmPolicySettings.AlarmObjects.split(',') : []; } item.AlarmPolicySettings.AlarmMetrics.forEach(metric => { - let finder = alarmPolicyMetricsConfig.find(config => config.metricName === metric.MetricName); - let tempMetrics = { + const finder = alarmPolicyMetricsConfig.find(config => config.metricName === metric.MetricName); + const tempMetrics = { type: finder ? finder.type : 'percent', measurement: metric.Measurement, metricId: metric.MetricId, @@ -201,8 +201,93 @@ export async function fetchAlarmPolicy(query: QueryState) { return result; } +function getAlarmPolicyParams_({ + alarmPolicyEdition, + clusterId, + receiverGroups +}: { + alarmPolicyEdition: AlarmPolicyEdition; + clusterId: string; + receiverGroups: any; +}) { + let Namespace = undefined; + let WorkloadType = undefined; + const AlarmObjects = alarmPolicyEdition.alarmObjects.join(','); + + if (alarmPolicyEdition?.alarmPolicyType === 'pod' || alarmPolicyEdition?.alarmPolicyType === 'virtualMachine') { + if (alarmPolicyEdition?.alarmObjectsType === 'all') { + if (alarmPolicyEdition.alarmObjectNamespace !== 'ALL') { + Namespace = reduceNs(alarmPolicyEdition.alarmObjectNamespace); + } + if (alarmPolicyEdition.alarmObjectWorkloadType !== 'ALL') { + WorkloadType = alarmPolicyEdition.alarmObjectWorkloadType; + } + } else { + Namespace = reduceNs(alarmPolicyEdition?.alarmObjectNamespace); + WorkloadType = alarmPolicyEdition?.alarmObjectWorkloadType; + } + } + + return { + ClusterInstanceId: clusterId, + AlarmPolicyId: alarmPolicyEdition.alarmPolicyId, + AlarmPolicySettings: { + AlarmPolicyName: alarmPolicyEdition.alarmPolicyName, + AlarmPolicyDescription: alarmPolicyEdition.alarmPolicyDescription, + AlarmPolicyType: alarmPolicyEdition.alarmPolicyType, + statisticsPeriod: alarmPolicyEdition.statisticsPeriod * 60, + AlarmObjects, + AlarmObjectsType: alarmPolicyEdition.alarmObjectsType, + + AlarmMetrics: alarmPolicyEdition?.alarmMetrics + ?.filter(({ enable }) => enable) + ?.map( + ({ + measurement, + metricName, + metricDisplayName, + evaluatorType, + evaluatorValue, + continuePeriod, + unit, + metricId + }) => { + const isPodMem = ['k8s_pod_mem_no_cache_bytes', 'k8s_pod_mem_usage_bytes'].includes(metricName); + + return { + Measurement: measurement, + MetricName: metricName, + MetricDisplayName: metricDisplayName, + Evaluator: { + Type: evaluatorType, + Value: isPodMem ? +evaluatorValue * 1024 * 1024 + '' : evaluatorValue + }, + ContinuePeriod: continuePeriod, + Unit: isPodMem ? 'B' : unit, + MetricId: metricId || undefined + }; + } + ) + }, + NotifySettings: { + ReceiverGroups: receiverGroups?.selections?.map(group => group.metadata.name), + NotifyWay: alarmPolicyEdition?.notifyWays?.map(({ channel, template }) => ({ + ChannelName: channel, + TemplateName: template + })) + }, + + ShieldSettings: { + EnableShield: false + }, + + Namespace, + WorkloadType + }; +} + function getAlarmPolicyParams(alarmPolicyEdition: AlarmPolicyEdition[], opreator: AlarmPolicyOperator, receiverGroups) { - let params = { + const params = { ClusterInstanceId: opreator.clusterId, AlarmPolicyId: alarmPolicyEdition[0].alarmPolicyId, AlarmPolicySettings: { @@ -241,7 +326,7 @@ function getAlarmPolicyParams(alarmPolicyEdition: AlarmPolicyEdition[], opreator alarmPolicyEdition[0].alarmMetrics.forEach(item => { if (item.enable) { - let metrics = { + const metrics = { Measurement: item.measurement, // StatisticsPeriod: item.statisticsPeriod * 60, MetricName: item.metricName, @@ -273,10 +358,15 @@ export async function editAlarmPolicy( opreator: AlarmPolicyOperator, receiverGroup ) { - let params = getAlarmPolicyParams(alarmPolicyEdition, opreator, receiverGroup); - let clusterId = opreator.clusterId; + const clusterId = opreator.clusterId; + + const params = getAlarmPolicyParams_({ + alarmPolicyEdition: alarmPolicyEdition?.[0], + clusterId, + receiverGroups: receiverGroup + }); - let resourceInfo: ResourceInfo = resourceConfig().alarmPolicy; + const resourceInfo: ResourceInfo = resourceConfig().alarmPolicy; let url = reduceK8sRestfulPath({ resourceInfo: { ...resourceInfo, @@ -291,7 +381,7 @@ export async function editAlarmPolicy( } try { - let response = await reduceNetworkRequest({ + const response = await reduceNetworkRequest({ method: params.AlarmPolicyId ? Method.put : Method.post, data: params, url @@ -312,9 +402,9 @@ export async function editAlarmPolicy( /**删除告警设置列表 */ export async function deleteAlarmPolicy(alarmPolicys: AlarmPolicy[], opreator: AlarmPolicyOperator) { - let clusterId = opreator.clusterId; - let resourceInfo: ResourceInfo = resourceConfig().alarmPolicy; - let url = reduceK8sRestfulPath({ + const clusterId = opreator.clusterId; + const resourceInfo: ResourceInfo = resourceConfig().alarmPolicy; + const url = reduceK8sRestfulPath({ resourceInfo: { ...resourceInfo, requestType: { @@ -323,7 +413,7 @@ export async function deleteAlarmPolicy(alarmPolicys: AlarmPolicy[], opreator: A } }); try { - let response = await Promise.all( + const response = await Promise.all( alarmPolicys.map(alarmPolicy => reduceNetworkRequest({ method: Method.delete, @@ -350,11 +440,11 @@ export async function deleteAlarmPolicy(alarmPolicys: AlarmPolicy[], opreator: A * @param namespaceInfo 当前namespace查询api的配置 */ export async function fetchNamespaceList(query: QueryState, namespaceInfo: ResourceInfo) { - let { filter, search } = query; - let { clusterId, regionId } = filter; + const { filter, search } = query; + const { clusterId, regionId } = filter; let namespaceList = []; - let k8sUrl = `/${namespaceInfo.basicEntry}/${namespaceInfo.version}/${namespaceInfo.requestType['list']}`; + const k8sUrl = `/${namespaceInfo.basicEntry}/${namespaceInfo.version}/${namespaceInfo.requestType['list']}`; let url = k8sUrl; if (search) { @@ -362,7 +452,7 @@ export async function fetchNamespaceList(query: QueryState, nam } /** 构建参数 */ - let params: RequestParams = { + const params: RequestParams = { method: Method.get, url, apiParams: { @@ -381,10 +471,10 @@ export async function fetchNamespaceList(query: QueryState, nam }; try { - let response = await reduceNetworkRequest(params, clusterId); + const response = await reduceNetworkRequest(params, clusterId); if (response.code === 0) { - let list = JSON.parse(response.data.ResponseBody); + const list = JSON.parse(response.data.ResponseBody); if (list.items) { namespaceList = list.items.map(item => { return { @@ -421,15 +511,15 @@ export async function fetchNamespaceList(query: QueryState, nam * @param resourceInfo: ResouceInfo 当前请求数据url的基本配置 */ export async function fetchUserPortal(resourceInfo: ResourceInfo) { - let url = reduceK8sRestfulPath({ resourceInfo }); + const url = reduceK8sRestfulPath({ resourceInfo }); // 构建参数 - let params: RequestParams = { + const params: RequestParams = { method: Method.get, url }; - let response = await reduceNetworkRequest(params); + const response = await reduceNetworkRequest(params); return response.data; } @@ -438,25 +528,25 @@ export async function fetchUserPortal(resourceInfo: ResourceInfo) { * @param query Namespace查询的一些过滤条件 */ export async function fetchProjectNamespaceList(query: QueryState) { - let { filter } = query; - let NamespaceResourceInfo: ResourceInfo = resourceConfig().namespaces; - let url = reduceK8sRestfulPath({ + const { filter } = query; + const NamespaceResourceInfo: ResourceInfo = resourceConfig().namespaces; + const url = reduceK8sRestfulPath({ resourceInfo: NamespaceResourceInfo, specificName: filter.specificName, extraResource: 'namespaces' }); /** 构建参数 */ - let method = 'GET'; - let params: RequestParams = { + const method = 'GET'; + const params: RequestParams = { method, url }; - let response = await reduceNetworkRequest(params); + const response = await reduceNetworkRequest(params); let namespaceList = [], total = 0; if (response.code === 0) { - let list = response.data; + const list = response.data; total = list.items.length; namespaceList = list.items.map(item => { return Object.assign({}, item, { id: uuid(), name: item.metadata.name }); @@ -472,17 +562,17 @@ export async function fetchProjectNamespaceList(query: QueryState { return Object.assign({}, item, { id: uuid() }); diff --git a/web/console/src/modules/alarmPolicy/actions/alarmPolicyActions.ts b/web/console/src/modules/alarmPolicy/actions/alarmPolicyActions.ts index e26fbc5a7..032da869c 100644 --- a/web/console/src/modules/alarmPolicy/actions/alarmPolicyActions.ts +++ b/web/console/src/modules/alarmPolicy/actions/alarmPolicyActions.ts @@ -42,7 +42,7 @@ const _alarmPolicyActions = createFFListActions( return getState().alarmPolicy; }, onFinish: (record, dispatch, getState: GetState) => { - let { sub } = router.resolve(getState().route); + const { sub } = router.resolve(getState().route); if (sub !== '') { dispatch(alarmPolicyActions.initAlarmPolicyData()); } @@ -72,7 +72,7 @@ const editActions = { type: ActionType.InputAlarmPolicyType, payload: alarmpolicy.alarmPolicyType }); - if (alarmpolicy.alarmPolicyType === 'pod') { + if (alarmpolicy.alarmPolicyType === 'pod' || alarmpolicy.alarmPolicyType === 'virtualMachine') { dispatch({ type: ActionType.InputAlarmPolicyObjectsType, payload: 'part' @@ -101,40 +101,31 @@ const editActions = { type: ActionType.InputAlarmPolicyId, payload: alarmpolicy.alarmPolicyId }); + if (alarmpolicy.alarmPolicyType !== 'cluster') { dispatch(alarmPolicyActions.inputAlarmPolicyObjectsType(alarmpolicy.alarmObjetcsType)); //告警对象是workload且选择按工作负载选择初始化 + if (alarmpolicy.alarmPolicyType === 'pod') { - let namespace; - let workType; - if (alarmpolicy.alarmObjetcsType === 'part') { - namespace = reverseReduceNs(alarmpolicy.clusterId, alarmpolicy.alarmObjectNamespace); - workType = alarmpolicy.alarmObjectWorkloadType; - dispatch(alarmPolicyActions.inputAlarmPolicyObjects(alarmpolicy.alarmObjetcs)); - } else { - if (alarmpolicy.alarmObjectNamespace) { - namespace = reverseReduceNs(alarmpolicy.clusterId, alarmpolicy.alarmObjectNamespace); - } else { - namespace = 'ALL'; - } - if (alarmpolicy.alarmObjectWorkloadType) { - workType = alarmpolicy.alarmObjectWorkloadType; - } else { - workType = 'ALL'; - } - } + dispatch(alarmPolicyActions.inputAlarmObjectWorkloadType(alarmpolicy.alarmObjectWorkloadType)); + } + + if (alarmpolicy.alarmPolicyType === 'pod' || alarmpolicy.alarmPolicyType === 'virtualMachine') { + const hasNamespace = alarmpolicy?.alarmObjetcsType === 'part' || alarmpolicy?.alarmObjectNamespace; + dispatch({ type: ActionType.InputAlarmWorkLoadNameSpace, - payload: namespace + payload: hasNamespace ? reverseReduceNs(alarmpolicy.clusterId, alarmpolicy.alarmObjectNamespace) : 'ALL' }); - dispatch(alarmPolicyActions.inputAlarmObjectWorkloadType(alarmpolicy.alarmObjectWorkloadType)); + + dispatch(alarmPolicyActions.inputAlarmPolicyObjects(alarmpolicy.alarmObjetcs)); } } }; }, initAlarmPolicyData: () => { return (dispatch, getState: GetState) => { - let { route, alarmPolicy } = getState(), + const { route, alarmPolicy } = getState(), urlParams = router.resolve(route), mode = urlParams['sub']; dispatch(resourceActions.channel.fetch()); @@ -155,8 +146,8 @@ const editActions = { dispatch(alarmPolicyActions.inputAlarmPolicyType('pod')); /// #endif } else if (mode === 'update' || mode === 'copy') { - let alarmPolicyId = route.queries['alarmPolicyId']; - let finder = alarmPolicy.list.data.records.find(item => item.id === alarmPolicyId); + const alarmPolicyId = route.queries['alarmPolicyId']; + const finder = alarmPolicy.list.data.records.find(item => item.id === alarmPolicyId); dispatch( resourceActions.receiverGroup.fetch({ @@ -165,7 +156,7 @@ const editActions = { ); //初始化workload列表不使用初始值 /// #if tke - if (mode === 'update' && finder.alarmPolicyType === 'pod') { + if (mode === 'update' && ['pod', 'virtualMachine'].includes(finder?.alarmPolicyType)) { dispatch( namespaceActions.applyFilter({ regionId: route.queries['rid'], @@ -190,8 +181,8 @@ const editActions = { dispatch(alarmPolicyActions.initAlarmPolicyEditionForCopy(finder)); } } else if (mode === 'detail') { - let alarmPolicyId = route.queries['alarmPolicyId']; - let finder = alarmPolicy.list.data.records.find(item => item.id === alarmPolicyId); + const alarmPolicyId = route.queries['alarmPolicyId']; + const finder = alarmPolicy.list.data.records.find(item => item.id === alarmPolicyId); dispatch(alarmPolicyActions.fetchAlarmPolicyDetail(finder)); } }; @@ -231,14 +222,14 @@ const editActions = { }); }; }, - //策略类型cluster//nodo//pod + //策略类型cluster//nodo//pod/vm inputAlarmPolicyType: alarmPolicyType => { return (dispatch, getState: GetState) => { dispatch({ type: ActionType.InputAlarmPolicyType, payload: alarmPolicyType }); - let defaultAlarmPolicyObjectsType = alarmPolicyType === 'pod' ? 'part' : 'all'; + const defaultAlarmPolicyObjectsType = 'all'; dispatch({ type: ActionType.InputAlarmPolicyObjectsType, payload: defaultAlarmPolicyObjectsType @@ -268,7 +259,7 @@ const editActions = { //alarm选择告警对象类型 inputAlarmPolicyObjectsType: objectType => { return (dispatch, getState: GetState) => { - let { alarmPolicyEdition, namespaceList } = getState(); + const { alarmPolicyEdition, namespaceList } = getState(); dispatch({ type: ActionType.InputAlarmPolicyObjectsType, payload: objectType @@ -298,9 +289,9 @@ const editActions = { inputAlarmMetrics: (id: string, Obj: Object) => { return (dispatch, getState: GetState) => { - let { alarmPolicyEdition } = getState(), + const { alarmPolicyEdition } = getState(), { alarmMetrics } = alarmPolicyEdition; - let newAlarmMetrics = deepClone(alarmMetrics), + const newAlarmMetrics = deepClone(alarmMetrics), index = newAlarmMetrics.findIndex(e => e.id === id), objKeys = Object.keys(Obj); objKeys.forEach(item => { @@ -316,20 +307,12 @@ const editActions = { //将配置中 initAlarmMetricsForUpdate: (alarmMetrics, alarmPolicyType) => { return (dispatch, getState: GetState) => { - let finalType = alarmPolicyType; - if (alarmPolicyType === 'cluster') { - let { cluster } = getState(), - finder = cluster.list.data.records.find( - record => cluster.selection && record.metadata.name === cluster.selection.metadata.name - ); - // if (finder.clusterType === 'INDEPENDENT_CLUSTER') { - // finalType = 'independentClusetr'; - // } - } - let alarmPolicyMetricsConfig = deepClone(AlarmPolicyMetrics[finalType]); - let initalarmMetrics = alarmMetrics.length + const finalType = alarmPolicyType; + + const alarmPolicyMetricsConfig = deepClone(AlarmPolicyMetrics[finalType]); + const initalarmMetrics = alarmMetrics.length ? alarmMetrics.map(item => { - let index = alarmPolicyMetricsConfig.findIndex(metrics => metrics.metricName === item.metricName); + const index = alarmPolicyMetricsConfig.findIndex(metrics => metrics.metricName === item.metricName); if (index !== -1) { alarmPolicyMetricsConfig.splice(index, 1); } @@ -360,9 +343,9 @@ const editActions = { //告警设置不同类型不同初始值 initAlarmMetrics: (type: string) => { return (dispatch, getState: GetState) => { - let finalType = type; + const finalType = type; if (type === AlarmPolicyType[0].value) { - let { cluster } = getState(), + const { cluster } = getState(), finder = cluster.list.data.records.find( record => cluster.selection && record.metadata.name === cluster.selection.metadata.name ); @@ -371,7 +354,7 @@ const editActions = { // } } - let items = AlarmPolicyMetrics[finalType], + const items = AlarmPolicyMetrics[finalType], alarmMetrics = items ? items.map(item => { return Object.assign({}, item, { @@ -389,7 +372,7 @@ const editActions = { inputAlarmNotifyWays: notifyWays => { return (dispatch, getState: GetState) => { - let newNotifyWays = deepClone(notifyWays); + const newNotifyWays = deepClone(notifyWays); dispatch({ type: ActionType.InputAlarmNotifyWay, @@ -400,9 +383,9 @@ const editActions = { inputAlarmNotifyWay: (id: string, obj: Object) => { return (dispatch, getState: GetState) => { - let { alarmPolicyEdition } = getState(), + const { alarmPolicyEdition } = getState(), { notifyWays } = alarmPolicyEdition; - let newNotifyWays = deepClone(notifyWays), + const newNotifyWays = deepClone(notifyWays), index = newNotifyWays.findIndex(e => e.id === id), objKeys = Object.keys(obj); objKeys.forEach(item => { @@ -417,9 +400,9 @@ const editActions = { deleteAlarmNotifyWay: (id: string) => { return (dispatch, getState: GetState) => { - let { alarmPolicyEdition } = getState(), + const { alarmPolicyEdition } = getState(), { notifyWays } = alarmPolicyEdition; - let newNotifyWays = deepClone(notifyWays), + const newNotifyWays = deepClone(notifyWays), index = newNotifyWays.findIndex(e => e.id === id); newNotifyWays.splice(index, 1); dispatch({ @@ -431,9 +414,9 @@ const editActions = { addAlarmNotifyWay: () => { return (dispatch, getState: GetState) => { - let { alarmPolicyEdition } = getState(), + const { alarmPolicyEdition } = getState(), { notifyWays } = alarmPolicyEdition; - let newNotifyWays = deepClone(notifyWays); + const newNotifyWays = deepClone(notifyWays); newNotifyWays.push({ id: uuid(), channel: undefined, template: undefined }); dispatch({ type: ActionType.InputAlarmNotifyWay, @@ -496,7 +479,7 @@ const editActions = { }, selectsWorkLoadNamespace: namespace => { return (dispatch, getState: GetState) => { - let { regionSelection, cluster, alarmPolicyEdition } = getState(); + const { regionSelection, cluster, alarmPolicyEdition } = getState(); dispatch({ type: ActionType.InputAlarmWorkLoadNameSpace, payload: namespace @@ -505,7 +488,10 @@ const editActions = { type: ActionType.InputAlarmPolicyObjects, payload: [] }); - if (alarmPolicyEdition.alarmPolicyType === 'pod' && alarmPolicyEdition.alarmObjectsType === 'all') { + if ( + (alarmPolicyEdition.alarmPolicyType === 'pod' && alarmPolicyEdition.alarmObjectsType === 'all') || + alarmPolicyEdition.alarmPolicyType === 'virtualMachine' + ) { // } else { dispatch( @@ -521,7 +507,7 @@ const editActions = { }, inputAlarmObjectWorkloadType: (type: string) => { return (dispatch, getState: GetState) => { - let { regionSelection, cluster, alarmPolicyEdition } = getState(); + const { regionSelection, cluster, alarmPolicyEdition } = getState(); dispatch({ type: ActionType.InputAlarmObjectWorkloadType, payload: type diff --git a/web/console/src/modules/alarmPolicy/actions/namespaceActions.ts b/web/console/src/modules/alarmPolicy/actions/namespaceActions.ts index e1d20d34f..beb05d2b8 100644 --- a/web/console/src/modules/alarmPolicy/actions/namespaceActions.ts +++ b/web/console/src/modules/alarmPolicy/actions/namespaceActions.ts @@ -32,16 +32,16 @@ type GetState = () => RootState; const fetchNamespaceActions = generateFetcherActionCreator({ actionType: ActionType.FetchNamespaceList, fetcher: async (getState: GetState, fetchOptions, dispatch: Redux.Dispatch) => { - let { clusterVersion } = getState(); - let namespaceInfo: ResourceInfo = resourceConfig(clusterVersion)['np']; - let response = await WebAPI.fetchNamespaceList(getState().namespaceQuery, namespaceInfo); + const { clusterVersion } = getState(); + const namespaceInfo: ResourceInfo = resourceConfig(clusterVersion)['np']; + const response = await WebAPI.fetchNamespaceList(getState().namespaceQuery, namespaceInfo); return response; }, finish: (dispatch: Redux.Dispatch, getState: GetState) => { - let { namespaceList, route, namespaceQuery } = getState(); + const { namespaceList, route, namespaceQuery } = getState(); if (namespaceQuery.filter.default) { - let defauleNamespace = + const defauleNamespace = (namespaceList.data.recordCount && namespaceList.data.records.find(n => n.name === 'default').name) || 'default'; diff --git a/web/console/src/modules/alarmPolicy/components/AlarmPolicyTablePanel.tsx b/web/console/src/modules/alarmPolicy/components/AlarmPolicyTablePanel.tsx index 417e30380..2af7efe7f 100644 --- a/web/console/src/modules/alarmPolicy/components/AlarmPolicyTablePanel.tsx +++ b/web/console/src/modules/alarmPolicy/components/AlarmPolicyTablePanel.tsx @@ -59,7 +59,16 @@ export class AlarmPolicyTablePanel extends React.Component { key: 'PolicyType', header: t('策略类型'), width: '8%', - render: x => (x.alarmPolicyType === 'cluster' ? t('集群') : x.alarmPolicyType === 'node' ? t('节点') : 'Pod') + render: x => { + const map = { + cluster: t('集群'), + node: t('节点'), + pod: t('Pod'), + virtualMachine: t('虚拟机') + }; + + return map?.[x?.alarmPolicyType] ?? '-'; + } }, { key: 'PolicyRule', diff --git a/web/console/src/modules/alarmPolicy/components/EditAlarmPolicyObject.tsx b/web/console/src/modules/alarmPolicy/components/EditAlarmPolicyObject.tsx index ecbb0335a..7b049e92b 100644 --- a/web/console/src/modules/alarmPolicy/components/EditAlarmPolicyObject.tsx +++ b/web/console/src/modules/alarmPolicy/components/EditAlarmPolicyObject.tsx @@ -27,14 +27,14 @@ import { RootProps } from './AlarmPolicyApp'; export class EditAlarmPolicyObject extends React.Component { renderPodList() { - let Tip = content => { + const Tip = content => { return (
{content}
); }; - let { workloadList, alarmPolicyEdition, actions } = this.props; + const { workloadList, alarmPolicyEdition, actions } = this.props; if (workloadList.fetchState === FetchState.Fetching) { return Tip(t('加载中')); } else if (workloadList.fetchState === FetchState.Failed) { @@ -43,37 +43,31 @@ export class EditAlarmPolicyObject extends React.Component { return Tip(t('该命名空间下无workload')); } else { // 根据 PodList 初始化 checkedList - let checkedList = []; - let checkboxList = workloadList.data.records.map(workload => { - let checkbox = {workload.metadata.name}; - if (alarmPolicyEdition.alarmObjects.find(object => object === workload.metadata.name)) { - checkedList.push(workload.metadata.name); - } + const workloadOptions = workloadList?.data?.records?.map(workload => workload?.metadata?.name) ?? []; + + const checkedList = alarmPolicyEdition?.alarmObjects?.filter(item => workloadOptions.includes(item)); - return checkbox; - }); return ( { - // let checkedArray = items.map(item => item); actions.alarmPolicy.inputAlarmPolicyObjects(items); }} value={checkedList} layout="column" > - {checkboxList} + {workloadOptions.map(name => {name}) ?? null} ); } } renderRadioList(type) { - let { alarmPolicyEdition, actions, namespaceList, addons } = this.props; + const { alarmPolicyEdition, actions, namespaceList, addons } = this.props; if (type === 'cluster' || type === '') { return