Skip to content

Commit

Permalink
[type:feat] Add dynamically scale admin module (#489)
Browse files Browse the repository at this point in the history
  • Loading branch information
VampireAchao authored Oct 26, 2024
1 parent 61183ee commit 5ce9c58
Show file tree
Hide file tree
Showing 10 changed files with 1,335 additions and 0 deletions.
5 changes: 5 additions & 0 deletions src/common/menu.js
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,11 @@ export const menuData = [
path: "alert",
locale: "SHENYU.MENU.SYSTEM.MANAGMENT.ALERT",
},
{
name: getIntlContent("SHENYU.MENU.SYSTEM.MANAGMENT.SCALE"),
path: "scale",
locale: "SHENYU.MENU.SYSTEM.MANAGMENT.SCALE",
},
],
},
{
Expand Down
7 changes: 7 additions & 0 deletions src/common/router.js
Original file line number Diff line number Diff line change
Expand Up @@ -140,6 +140,13 @@ export const getRouterData = (app) => {
() => import("../routes/System/Alert"),
),
},
"/system/scale": {
component: dynamicWrapper(
app,
["scale"],
() => import("../routes/System/Scale"),
),
},
"/config/namespace": {
component: dynamicWrapper(
app,
Expand Down
32 changes: 32 additions & 0 deletions src/locales/en-US.json
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,7 @@
"SHENYU.MENU.SYSTEM.MANAGMENT.USER": "User",
"SHENYU.MENU.SYSTEM.MANAGMENT.RESOURCE": "Resource",
"SHENYU.MENU.SYSTEM.MANAGMENT.ALERT": "Alert",
"SHENYU.MENU.SYSTEM.MANAGMENT.SCALE": "Scale",
"SHENYU.MENU.SYSTEM.MANAGMENT.PLUGIN": "PluginTemplate",
"SHENYU.MENU.SYSTEM.MANAGMENT.PLUGINHANDLE": "PluginHandle",
"SHENYU.MENU.SYSTEM.MANAGMENT.AUTHEN": "Authentication",
Expand Down Expand Up @@ -197,6 +198,37 @@
"SHENYU.SYSTEM.ALERT.LEVELS.SELECT": "Please select the match levels",
"SHENYU.SYSTEM.ALERT.BUTTON.SEND_TEST": "Send alert test",
"SHENYU.SYSTEM.ALERT.SEND_SUCCESS": "Send success",
"SHENYU.SYSTEM.SCALE.TITLE": "Expansion & Contraction",
"SHENYU.SYSTEM.SCALE.POLICY_TYPE": "Type",
"SHENYU.SYSTEM.SCALE.POLICY_NUMBER": "Number",
"SHENYU.SYSTEM.SCALE.BEGIN_TIME": "BeginTime",
"SHENYU.SYSTEM.SCALE.END_TIME": "EndTime",
"SHENYU.SYSTEM.SCALE.CONFIG_NAME": "ConfigName",
"SHENYU.SYSTEM.SCALE.CONFIG_TYPE": "ConfigType",
"SHENYU.SYSTEM.SCALE.SORT": "Sort",
"SHENYU.SYSTEM.SCALE.STATUS": "Status",
"SHENYU.SYSTEM.SCALE.MINIMUM": "Minimum",
"SHENYU.SYSTEM.SCALE.MAXIMUM": "Maximum",
"SHENYU.SYSTEM.SCALE.NONE": "None",
"SHENYU.SYSTEM.SCALE.SEARCH.CONFIG_NAME": "Configuration Name",
"SHENYU.SYSTEM.SCALE.SEARCH.CONFIG_TYPE": "Configuration Type",
"SHENYU.SYSTEM.SCALE.SEARCH.STATUS": "Status",
"SHENYU.SYSTEM.SCALE.CONFIG_TYPE.SHENYU": "ShenYu",
"SHENYU.SYSTEM.SCALE.CONFIG_TYPE.K8S": "k8s",
"SHENYU.SYSTEM.SCALE.CONFIG_TYPE.OTHERS": "Others",
"SHENYU.SYSTEM.SCALE.POLICY_TYPE.MANUAL": "Manual",
"SHENYU.SYSTEM.SCALE.POLICY_TYPE.PERIOD": "Period",
"SHENYU.SYSTEM.SCALE.POLICY_TYPE.DYNAMIC": "Dynamic",
"SHENYU.SYSTEM.SCALE.POLICY": "Scale Policy",
"SHENYU.SYSTEM.SCALE.POLICY_TYPE.INPUT": "Please input the scale policy",
"SHENYU.SYSTEM.SCALE.SORT.INPUT": "Please input the sort",
"SHENYU.SYSTEM.SCALE.POLICY_NUMBER.INPUT": "Please input the number",
"SHENYU.SYSTEM.SCALE.BEGIN_TIME.INPUT": "Please select the begin time",
"SHENYU.SYSTEM.SCALE.END_TIME.INPUT": "Please select the end time",
"SHENYU.SYSTEM.SCALE.CONFIG_NAME.INPUT": "Please input the configuration name",
"SHENYU.SYSTEM.SCALE.CONFIG_TYPE.INPUT": "Please select the configuration Type",
"SHENYU.SYSTEM.SCALE.MINIMUM.INPUT": "Please input the minimum",
"SHENYU.SYSTEM.SCALE.MAXIMUM.INPUT": "Please input the maximum",
"SHENYU.BUTTON.RESOURCE.MENU.ADD": "AddMenu",
"SHENYU.BUTTON.RESOURCE.MENU.DELETE": "DeleteMenu",
"SHENYU.BUTTON.RESOURCE.MENU.EDIT": "EditMenu",
Expand Down
32 changes: 32 additions & 0 deletions src/locales/zh-CN.json
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,7 @@
"SHENYU.MENU.SYSTEM.MANAGMENT.USER": "用户管理",
"SHENYU.MENU.SYSTEM.MANAGMENT.RESOURCE": "资源管理",
"SHENYU.MENU.SYSTEM.MANAGMENT.ALERT": "告警管理",
"SHENYU.MENU.SYSTEM.MANAGMENT.SCALE": "扩缩容管理",
"SHENYU.MENU.SYSTEM.MANAGMENT.PLUGIN": "插件元数据管理",
"SHENYU.MENU.SYSTEM.MANAGMENT.PLUGINHANDLE": "插件处理管理",
"SHENYU.MENU.SYSTEM.MANAGMENT.AUTHEN": "认证管理",
Expand Down Expand Up @@ -198,6 +199,37 @@
"SHENYU.SYSTEM.ALERT.LEVELS.SELECT": "请选择级别匹配",
"SHENYU.SYSTEM.ALERT.BUTTON.SEND_TEST": "发送告警测试",
"SHENYU.SYSTEM.ALERT.SEND_SUCCESS": "发送成功",
"SHENYU.SYSTEM.SCALE.TITLE": "扩缩容",
"SHENYU.SYSTEM.SCALE.POLICY_TYPE": "类型",
"SHENYU.SYSTEM.SCALE.POLICY_NUMBER": "数字",
"SHENYU.SYSTEM.SCALE.BEGIN_TIME": "起始时间",
"SHENYU.SYSTEM.SCALE.END_TIME": "结束时间",
"SHENYU.SYSTEM.SCALE.CONFIG_NAME": "配置名称",
"SHENYU.SYSTEM.SCALE.CONFIG_TYPE": "配置类型",
"SHENYU.SYSTEM.SCALE.SORT": "排序",
"SHENYU.SYSTEM.SCALE.STATUS": "状态",
"SHENYU.SYSTEM.SCALE.MINIMUM": "最小值",
"SHENYU.SYSTEM.SCALE.MAXIMUM": "最大值",
"SHENYU.SYSTEM.SCALE.NONE": "",
"SHENYU.SYSTEM.SCALE.SEARCH.CONFIG_NAME": "配置名称",
"SHENYU.SYSTEM.SCALE.SEARCH.CONFIG_TYPE": "配置类型",
"SHENYU.SYSTEM.SCALE.SEARCH.STATUS": "状态",
"SHENYU.SYSTEM.SCALE.CONFIG_TYPE.SHENYU": "ShenYu",
"SHENYU.SYSTEM.SCALE.CONFIG_TYPE.K8S": "k8s",
"SHENYU.SYSTEM.SCALE.CONFIG_TYPE.OTHERS": "其他",
"SHENYU.SYSTEM.SCALE.POLICY_TYPE.MANUAL": "手动",
"SHENYU.SYSTEM.SCALE.POLICY_TYPE.PERIOD": "时间段",
"SHENYU.SYSTEM.SCALE.POLICY_TYPE.DYNAMIC": "动态",
"SHENYU.SYSTEM.SCALE.POLICY": "扩缩容策略",
"SHENYU.SYSTEM.SCALE.POLICY_TYPE.INPUT": "请输入扩缩容策略",
"SHENYU.SYSTEM.SCALE.SORT.INPUT": "请输入序号",
"SHENYU.SYSTEM.SCALE.POLICY_NUMBER.INPUT": "请输入数字",
"SHENYU.SYSTEM.SCALE.BEGIN_TIME.INPUT": "请选择起始时间",
"SHENYU.SYSTEM.SCALE.END_TIME.INPUT": "请选择结束时间",
"SHENYU.SYSTEM.SCALE.CONFIG_NAME.INPUT": "请输入配置名称",
"SHENYU.SYSTEM.SCALE.CONFIG_TYPE.INPUT": "请选择配置类型",
"SHENYU.SYSTEM.SCALE.MINIMUM.INPUT": "请输入最小值",
"SHENYU.SYSTEM.SCALE.MAXIMUM.INPUT": "请输入最大值",
"SHENYU.BUTTON.RESOURCE.MENU.ADD": "添加菜单",
"SHENYU.BUTTON.RESOURCE.MENU.DELETE": "删除菜单",
"SHENYU.BUTTON.RESOURCE.MENU.EDIT": "编辑菜单",
Expand Down
139 changes: 139 additions & 0 deletions src/models/scale.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,139 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

import { message } from "antd";
import { getIntlContent } from "../utils/IntlUtils";
import {
getAllScalePolicies,
getScaleRules,
getScalePolicy,
updateScalePolicy,
getScaleRule,
addScaleRule,
updateScaleRule,
deleteScaleRules,
} from "../services/api";

export default {
namespace: "scale",

state: {
ruleList: [],
policyList: [],
total: 0,
},

effects: {
*fetchPolicy(_, { call, put }) {
const response = yield call(getAllScalePolicies);
yield put({
type: "savePolicy",
payload: response.data.sort((a, b) => a.sort - b.sort),
});
},
*fetchPolicyItem({ payload, callback }, { call }) {
const json = yield call(getScalePolicy, payload);
if (json.code === 200) {
const scale = json.data;
callback(scale);
}
},
*updatePolicy(params, { call }) {
const { payload, callback } = params;
const json = yield call(updateScalePolicy, payload);
if (json.code === 200) {
message.success(
getIntlContent("SHENYU.COMMON.RESPONSE.UPDATE.SUCCESS"),
);
callback();
} else {
message.warn(json.message);
}
},
*fetchRule({ payload }, { call, put }) {
const response = yield call(getScaleRules, payload);
yield put({
type: "saveRule",
payload: response.data,
});
},
*fetchRuleItem({ payload, callback }, { call }) {
const json = yield call(getScaleRule, payload);
if (json.code === 200) {
const scale = json.data;
callback(scale);
}
},
*addRule(params, { call }) {
const { payload, callback } = params;
const json = yield call(addScaleRule, payload);
if (json.code === 200) {
message.success(getIntlContent("SHENYU.COMMON.RESPONSE.ADD.SUCCESS"));
callback();
} else {
message.warn(json.message);
}
},
*updateRule(params, { call }) {
const { payload, callback } = params;
const json = yield call(updateScaleRule, payload);
if (json.code === 200) {
message.success(
getIntlContent("SHENYU.COMMON.RESPONSE.UPDATE.SUCCESS"),
);
callback();
} else {
message.warn(json.message);
}
},
*deleteRules(params, { call, put }) {
const { payload, fetchValue, callback } = params;
const { list } = payload;
const json = yield call(deleteScaleRules, { list });
if (json.code === 200) {
message.success(
getIntlContent("SHENYU.COMMON.RESPONSE.DELETE.SUCCESS"),
);
callback();
yield put({ type: "reload", fetchValue });
} else {
message.warn(json.message);
}
},
*reload(params, { put }) {
const { fetchValue } = params;
const payload = fetchValue || {};
yield put({ type: "fetchRule", payload });
},
},

reducers: {
saveRule(state, { payload }) {
return {
...state,
ruleList: payload.dataList,
total: payload.page.totalCount,
};
},
savePolicy(state, { payload }) {
return {
...state,
policyList: payload,
};
},
},
};
Loading

0 comments on commit 5ce9c58

Please sign in to comment.