Skip to content

Commit

Permalink
feat: alarmplicy support tapp (tkestack#326)
Browse files Browse the repository at this point in the history
Co-authored-by: kaychen <[email protected]>
  • Loading branch information
KayIter and kaychen committed Apr 30, 2020
1 parent 2312152 commit 30e0683
Show file tree
Hide file tree
Showing 8 changed files with 82 additions and 16 deletions.
10 changes: 5 additions & 5 deletions web/console/src/modules/alarmPolicy/WebAPI.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,7 @@ import { reduceK8sRestfulPath } from '../../../helpers';
import { reduceNetworkRequest } from '../../../helpers/reduceNetwork';
import { RequestParams, ResourceInfo } from '../common/models';
import { AlarmPolicyMetrics } from './constants/Config';
import {
AlarmPolicy, AlarmPolicyFilter, NamespaceFilter, Resource, ResourceFilter
} from './models';
import { AlarmPolicy, AlarmPolicyFilter, NamespaceFilter, Resource, ResourceFilter } from './models';
import { AlarmPolicyEdition, AlarmPolicyOperator, MetricsObject } from './models/AlarmPolicy';
import { Namespace } from './models/Namespace';

Expand Down Expand Up @@ -112,7 +110,8 @@ export async function fetchAlarmPolicy(query: QueryState<AlarmPolicyFilter>) {
let workloadTypeMap = {
Deployment: 'deployment',
StatefulSet: 'statefulset',
DaemonSet: 'daemonset'
DaemonSet: 'daemonset',
Tapp: 'tapp'
};
alarmPolicyList = items.map(item => {
let alarmPolicyMetricsConfig =
Expand Down Expand Up @@ -190,7 +189,8 @@ function getAlarmPolicyParams(alarmPolicyEdition: AlarmPolicyEdition[], opreator
let workloadTypeMap = {
deployment: 'Deployment',
statefulset: 'StatefulSet',
daemonset: 'DaemonSet'
daemonset: 'DaemonSet',
tapp: 'Tapp'
};
let params = {
ClusterInstanceId: opreator.clusterId,
Expand Down
40 changes: 35 additions & 5 deletions web/console/src/modules/alarmPolicy/actions/clusterActions.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
import { resourceConfig } from '@config';
import { ResourceInfo } from '@src/modules/common';
import { createFFListActions, extend } from '@tencent/ff-redux';

import { FFReduxActionName } from '../../cluster/constants/Config';
import * as WebAPI from '../../cluster/WebAPI';
import { Cluster, ClusterFilter } from '../../common/';
import * as ActionType from '../constants/ActionType';
import { RootState } from '../models';
import { RootState, AddonStatus } from '../models';
import { router } from '../router';
import { alarmPolicyActions } from './alarmPolicyActions';

Expand Down Expand Up @@ -50,6 +52,8 @@ const restActions = {

dispatch(clusterActions.initClusterVersion(cluster.status.version));

dispatch(clusterActions.fetchClusterAddon(cluster.metadata.name, 1));

router.navigate(urlParams, Object.assign({}, route.queries, { clusterId: cluster.metadata.name }));
dispatch(
alarmPolicyActions.applyFilter({ regionId: +regionSelection.value, clusterId: cluster.metadata.name })
Expand All @@ -63,15 +67,41 @@ const restActions = {
/** 初始化集群的版本 */
initClusterVersion: (clusterVersion: string) => {
return async (dispatch: Redux.Dispatch, getState: GetState) => {
let k8sVersion = clusterVersion
.split('.')
.slice(0, 2)
.join('.');
let k8sVersion = clusterVersion.split('.').slice(0, 2).join('.');
dispatch({
type: ActionType.InitClusterVersion,
payload: k8sVersion
});
};
},
/** 获取当前集群开启的Addon */
fetchClusterAddon: (clusterId, regionId) => {
return async (dispatch: Redux.Dispatch, getState: GetState) => {
let { clusterVersion } = getState();
let clusterInfo: ResourceInfo = resourceConfig(clusterVersion).cluster;
let response = await WebAPI.fetchExtraResourceList(
{
filter: {
regionId: regionId,
specificName: clusterId
}
},
clusterInfo,
false,
'addons'
);
let addons: AddonStatus = {};
response.records.forEach(item => {
addons[item.spec.type] = {
status: item.status.phase,
name: item.metadata.name
};
});
dispatch({
type: ActionType.FetchClusterAddons,
payload: addons
});
};
}
};

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -55,10 +55,17 @@ export class EditAlarmPolicyObject extends React.Component<RootProps, {}> {
}

renderRadioList(type) {
let { alarmPolicyEdition, actions, namespaceList } = this.props;
let { alarmPolicyEdition, actions, namespaceList, addons } = this.props;
if (type === 'cluster' || type === '') {
return <noscript />;
}
let finalWorkloadTypeList = workloadTypeList.slice();
if (addons['TappController'] && addons['TappController'].status.toLocaleLowerCase() === 'running') {
finalWorkloadTypeList.push({
value: 'tapp',
label: 'Tapp'
});
}
let radioList: JSX.Element[] = [];
AlarmObjectsType[type].forEach((item, index) => {
radioList.push(
Expand Down Expand Up @@ -91,7 +98,7 @@ export class EditAlarmPolicyObject extends React.Component<RootProps, {}> {
<FormItem label="WorkloadType" isNeedFormInput={false}>
<SelectList
value={alarmPolicyEdition.alarmObjectWorkloadType + ''}
recordList={workloadTypeList}
recordList={finalWorkloadTypeList}
valueField="value"
textField="name"
textFields={['label']}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ export const FetchRegion = 'FetchRegion';
export const QueryRegion = 'QueryRegion';
export const SelectRegion = 'SelectRegion';
export const InitClusterVersion = 'InitClusterVersion';
export const FetchClusterAddons = 'FetchClusterAddons';
// export const QueryAlarmPolicy = 'QueryAlarmPolicy';
// export const FetchAlarmPolicyList = 'FetchAlarmPolicyList';
// export const SelectAlarmPolicy = 'SelectAlarmPolicy';
Expand Down
8 changes: 8 additions & 0 deletions web/console/src/modules/alarmPolicy/models/Addon.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
export interface AddonStatus {
[propName: string]: Addon;
}

export interface Addon {
status: string;
name: string;
}
17 changes: 15 additions & 2 deletions web/console/src/modules/alarmPolicy/models/RootState.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,21 @@ import { RouteState } from '../../../../helpers/Router';
import { Cluster } from '../../common';
import { User, UserFilter } from '../../uam/models';
import {
AlarmPolicy, AlarmPolicyEdition, AlarmPolicyFilter, AlarmPolicyOperator, ClusterFilter, Group,
Namespace, NamespaceFilter, Region, RegionFilter, Resource, ResourceFilter
AlarmPolicy,
AlarmPolicyEdition,
AlarmPolicyFilter,
AlarmPolicyOperator,
ClusterFilter,
Group,
Namespace,
NamespaceFilter,
Region,
RegionFilter,
Resource,
ResourceFilter
} from './';
import { GroupFilter } from './Group';
import { AddonStatus } from './Addon';

type AlarmPolicyOpWorkflow = WorkflowState<AlarmPolicy, AlarmPolicyOperator>;
type AlarmPolicyCreateWorkflow = WorkflowState<AlarmPolicyEdition, AlarmPolicyOperator>;
Expand Down Expand Up @@ -36,6 +47,8 @@ export interface RootState {

cluster?: FFListModel<Cluster, ClusterFilter>;

addons?: AddonStatus;

/**当前集群命名空间 */
namespaceList?: FetcherState<RecordSet<Namespace>>;

Expand Down
1 change: 1 addition & 0 deletions web/console/src/modules/alarmPolicy/models/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,3 +6,4 @@ export { ClusterFilter } from './ClusterFilter';
export { AlarmPolicy, AlarmPolicyEdition, AlarmPolicyFilter, AlarmPolicyOperator } from './AlarmPolicy';
export { Group, GroupUser } from './Group';
export { Namespace, NamespaceFilter } from './Namespace';
export { AddonStatus } from './Addon';
10 changes: 8 additions & 2 deletions web/console/src/modules/alarmPolicy/reducers/RootReducer.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,12 @@
import { combineReducers } from 'redux';

import {
createFFListReducer, generateFetcherReducer, generateQueryReducer, generateWorkflowReducer,
RecordSet, reduceToPayload
createFFListReducer,
generateFetcherReducer,
generateQueryReducer,
generateWorkflowReducer,
RecordSet,
reduceToPayload
} from '@tencent/ff-redux';

import { FFReduxActionName } from '../../cluster/constants/Config';
Expand Down Expand Up @@ -32,6 +36,8 @@ export const RootReducer = combineReducers({
cluster: createFFListReducer<Cluster, ClusterFilter>(FFReduxActionName.CLUSTER),
clusterVersion: reduceToPayload(ActionType.InitClusterVersion, '1.16'),

addons: reduceToPayload(ActionType.FetchClusterAddons, {}),

/**当前集群命名空间 */
namespaceList: generateFetcherReducer({
actionType: ActionType.FetchNamespaceList,
Expand Down

0 comments on commit 30e0683

Please sign in to comment.