openFuyao is licensed under Mulan PSL v2.
You can use this software according to the terms and conditions of the Mulan PSL v2.
You may obtain a copy of Mulan PSL v2 at:
http://license.coscl.org.cn/MulanPSL2
THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
See the Mulan PSL v2 for more details. */
import { ADDONLIST, clusterStatusChinese, nodeStatusChinese } from '@/common/constants';
* 处理async/await错误捕获
*/
export async function requestResource(fn) {
try {
let response = await fn;
return [null, response];
} catch (err) {
return [err, null];
}
}
export function sorterFirstAlphabet(a = '--', b = '--') {
if (typeof a === 'number' && typeof b === 'number') {
return a - b;
}
return a.toString().localeCompare(b.toString());
}
* 将403整体抽出
*/
export function forbiddenMsg(message, errorMsg, intl) {
if (errorMsg.response.data.message.includes('User')) {
const text = intl
? intl.formatMessage({ id: 'error.forbidden' })
: '操作失败,当前用户没有操作权限,请联系管理员添加权限!';
return message.error(text);
} else {
const text = intl ? intl.formatMessage({ id: 'error.serverRefused' }) : '请求被服务端拒绝,建议修改该请求!';
return message.error(text);
}
}
export function disabledHandle(status) {
let isClick = false;
if (status.includes('ing') || status === 'ScalingWorkerNodesUp' || status === 'ScalingWorkerNodesDown') {
isClick = true;
}
return isClick;
}
export function extractIPv4(text) {
const ipv4Regex =
/\b(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b/g;
return text.match(ipv4Regex) || [];
}
export function compareVersions(a, b) {
if (typeof a !== 'string' || typeof b !== 'string') {
return true;
}
const v1 = a.replace(/^v/, '').split('.');
const v2 = b.replace(/^v/, '').split('.');
const maxLength = Math.max(v1.length, v2.length);
for (let i = 0; i < maxLength; i++) {
const part1 = v1[i] || '0';
const part2 = v2[i] || '0';
const num1 = parseInt(part1, 10);
const num2 = parseInt(part2, 10);
if (num1 > num2) return true;
if (num1 < num2) return false;
}
return false;
}
export function isAdminCluster(cluster) {
return (cluster?.addons || []).some((item) => item === ADDONLIST.CLUSTERAPI);
}
export function clusterStatusValueToText(statusVal, intl) {
if (intl) {
return intl.formatMessage({ id: `status.cluster.${statusVal}` });
}
return clusterStatusChinese[statusVal] || '未知';
}
export function nodeStatusValueToText(statusVal, intl) {
if (intl) {
return intl.formatMessage({ id: `status.node.${statusVal}` });
}
return nodeStatusChinese[statusVal] || '未知';
}