@alauda-fe/workload-util-shared 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/alauda-fe-workload-util-shared.mjs +5 -0
- package/esm2022/index.mjs +6 -0
- package/esm2022/lib/directives/index.mjs +3 -0
- package/esm2022/lib/directives/oam-resource-disabled-container.directive.mjs +53 -0
- package/esm2022/lib/directives/sync-control.directive.mjs +52 -0
- package/esm2022/lib/pipes/index.mjs +4 -0
- package/esm2022/lib/pipes/is-oam-resource.pipe.mjs +17 -0
- package/esm2022/lib/pipes/range.pipe.mjs +17 -0
- package/esm2022/lib/pipes/short-num.pipe.mjs +15 -0
- package/esm2022/lib/services/cluster-api.service.mjs +93 -0
- package/esm2022/lib/services/feature-gate.service.mjs +50 -0
- package/esm2022/lib/services/index.mjs +6 -0
- package/esm2022/lib/services/pod-util.service.mjs +70 -0
- package/esm2022/lib/services/resource-quota.service.mjs +116 -0
- package/esm2022/lib/services/terminal.service.mjs +46 -0
- package/esm2022/lib/typings/account.mjs +2 -0
- package/esm2022/lib/typings/backend-api.mjs +7 -0
- package/esm2022/lib/typings/batch-action.type.mjs +2 -0
- package/esm2022/lib/typings/form.mjs +2 -0
- package/esm2022/lib/typings/helpers.mjs +14 -0
- package/esm2022/lib/typings/index.mjs +10 -0
- package/esm2022/lib/typings/k8s-form-model.mjs +12 -0
- package/esm2022/lib/typings/k8s-resource-definitions/acp-resource-definition.mjs +258 -0
- package/esm2022/lib/typings/k8s-resource-definitions/alu-resource-definition.mjs +281 -0
- package/esm2022/lib/typings/k8s-resource-definitions/index.mjs +142 -0
- package/esm2022/lib/typings/k8s.mjs +143 -0
- package/esm2022/lib/typings/status.mjs +269 -0
- package/esm2022/lib/utils/code-editor-config.mjs +2 -0
- package/esm2022/lib/utils/constants.mjs +61 -0
- package/esm2022/lib/utils/crd.mjs +36 -0
- package/esm2022/lib/utils/format-number.mjs +227 -0
- package/esm2022/lib/utils/helpers.mjs +27 -0
- package/esm2022/lib/utils/index.mjs +14 -0
- package/esm2022/lib/utils/k8s-util.service.mjs +28 -0
- package/esm2022/lib/utils/patterns.mjs +140 -0
- package/esm2022/lib/utils/pod-util.mjs +75 -0
- package/esm2022/lib/utils/resource-status.mjs +86 -0
- package/esm2022/lib/utils/resources-config-util.mjs +28 -0
- package/esm2022/lib/utils/status.mjs +84 -0
- package/esm2022/lib/utils/validator.mjs +11 -0
- package/esm2022/lib/utils/workspace.mjs +25 -0
- package/index.d.ts +5 -0
- package/lib/directives/index.d.ts +2 -0
- package/lib/directives/oam-resource-disabled-container.directive.d.ts +17 -0
- package/lib/directives/sync-control.directive.d.ts +14 -0
- package/lib/pipes/index.d.ts +3 -0
- package/lib/pipes/is-oam-resource.pipe.d.ts +9 -0
- package/lib/pipes/range.pipe.d.ts +7 -0
- package/lib/pipes/short-num.pipe.d.ts +7 -0
- package/lib/services/cluster-api.service.d.ts +38 -0
- package/lib/services/feature-gate.service.d.ts +38 -0
- package/lib/services/index.d.ts +5 -0
- package/lib/services/pod-util.service.d.ts +18 -0
- package/lib/services/resource-quota.service.d.ts +25 -0
- package/lib/services/terminal.service.d.ts +15 -0
- package/lib/typings/account.d.ts +17 -0
- package/lib/typings/backend-api.d.ts +220 -0
- package/lib/typings/batch-action.type.d.ts +35 -0
- package/lib/typings/form.d.ts +10 -0
- package/lib/typings/helpers.d.ts +45 -0
- package/lib/typings/index.d.ts +9 -0
- package/lib/typings/k8s-form-model.d.ts +128 -0
- package/lib/typings/k8s-resource-definitions/acp-resource-definition.d.ts +242 -0
- package/lib/typings/k8s-resource-definitions/alu-resource-definition.d.ts +269 -0
- package/lib/typings/k8s-resource-definitions/index.d.ts +1911 -0
- package/lib/typings/k8s.d.ts +1147 -0
- package/lib/typings/status.d.ts +252 -0
- package/lib/utils/code-editor-config.d.ts +1 -0
- package/lib/utils/constants.d.ts +57 -0
- package/lib/utils/crd.d.ts +21 -0
- package/lib/utils/format-number.d.ts +11 -0
- package/lib/utils/helpers.d.ts +13 -0
- package/lib/utils/index.d.ts +13 -0
- package/lib/utils/k8s-util.service.d.ts +8 -0
- package/lib/utils/patterns.d.ts +132 -0
- package/lib/utils/pod-util.d.ts +19 -0
- package/lib/utils/resource-status.d.ts +8 -0
- package/lib/utils/resources-config-util.d.ts +22 -0
- package/lib/utils/status.d.ts +3 -0
- package/lib/utils/validator.d.ts +4 -0
- package/lib/utils/workspace.d.ts +14 -0
- package/package.json +36 -0
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { formatCPU, formatMemory, } from '@alauda-fe/common';
|
|
2
|
+
const getAppContainerResourceRequirements = (containers, type = 'limits') => {
|
|
3
|
+
return containers.reduce((acc, container) => {
|
|
4
|
+
const resources = getContainerResource(container, type);
|
|
5
|
+
Object.keys(resources).forEach(key => {
|
|
6
|
+
acc[key] =
|
|
7
|
+
(acc[key] || 0) + (isNaN(resources[key]) ? 0 : resources[key]);
|
|
8
|
+
});
|
|
9
|
+
return acc;
|
|
10
|
+
}, {});
|
|
11
|
+
};
|
|
12
|
+
const getInitContainerResourceRequirements = (containers, type = 'limits') => {
|
|
13
|
+
return containers.reduce((acc, container) => {
|
|
14
|
+
const resources = getContainerResource(container, type);
|
|
15
|
+
Object.keys(resources).forEach(key => {
|
|
16
|
+
acc[key] = Math.max(acc[key] || 0, isNaN(resources[key]) ? 0 : resources[key]);
|
|
17
|
+
});
|
|
18
|
+
return acc;
|
|
19
|
+
}, {});
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* @see https://stupefied-goodall-e282f7.netlify.app/contributors/design-proposals/node/container-init/
|
|
23
|
+
* @param pod pod resource
|
|
24
|
+
* @returns {cpu: number | string, memory: number| string} 如果 cpu 或 memory 是 '', 则认为无限制,
|
|
25
|
+
* 如果存在扩展资源配额,比如 {nvidia.com/gpu: string, tencent.com/vcuda-memory: string} 也会进行返回,
|
|
26
|
+
* 扩展资源默认不带单位,因此可以直接进行想加
|
|
27
|
+
*/
|
|
28
|
+
export function getPodResourceRequirements(pod, type = 'limits') {
|
|
29
|
+
const { containers = [], initContainers = [] } = pod.spec;
|
|
30
|
+
const appContainerLimit = getAppContainerResourceRequirements(containers, type);
|
|
31
|
+
const initContainerLimit = getInitContainerResourceRequirements(initContainers, type);
|
|
32
|
+
const result = {};
|
|
33
|
+
// 合并所有的资源类型
|
|
34
|
+
const allResourceTypes = new Set([
|
|
35
|
+
...Object.keys(appContainerLimit),
|
|
36
|
+
...Object.keys(initContainerLimit),
|
|
37
|
+
]);
|
|
38
|
+
allResourceTypes.forEach(resourceType => {
|
|
39
|
+
const appValue = appContainerLimit[resourceType] || 0;
|
|
40
|
+
const initValue = initContainerLimit[resourceType] || 0;
|
|
41
|
+
const maxValue = Math.max(appValue, initValue);
|
|
42
|
+
result[resourceType] = isNaN(maxValue) ? '' : maxValue;
|
|
43
|
+
});
|
|
44
|
+
return result;
|
|
45
|
+
}
|
|
46
|
+
export function getContainerResourceLimit(container) {
|
|
47
|
+
return getContainerResource(container, 'limits');
|
|
48
|
+
}
|
|
49
|
+
export function getContainerResourceRequest(container) {
|
|
50
|
+
return getContainerResource(container, 'requests');
|
|
51
|
+
}
|
|
52
|
+
function getContainerResource(container, type) {
|
|
53
|
+
const result = {};
|
|
54
|
+
const resources = container.resources[type] || {};
|
|
55
|
+
Object.entries(resources).forEach(([key, value]) => {
|
|
56
|
+
if (value === '') {
|
|
57
|
+
result[key] = NaN;
|
|
58
|
+
}
|
|
59
|
+
else if (key === 'cpu') {
|
|
60
|
+
if (!isNaN(+value)) {
|
|
61
|
+
value += 'c';
|
|
62
|
+
}
|
|
63
|
+
result[key] = formatCPU(value);
|
|
64
|
+
}
|
|
65
|
+
else if (key === 'memory') {
|
|
66
|
+
result[key] = formatMemory(value);
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
// 对于其他资源类型(如 GPU 或自定义资源),直接使用数值
|
|
70
|
+
result[key] = parseFloat(value) || NaN;
|
|
71
|
+
}
|
|
72
|
+
});
|
|
73
|
+
return result;
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9kLXV0aWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9tb2R1bGVzL3dvcmtsb2FkL3V0aWwtc2hhcmVkL3NyYy9saWIvdXRpbHMvcG9kLXV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUlMLFNBQVMsRUFDVCxZQUFZLEdBQ2IsTUFBTSxtQkFBbUIsQ0FBQztBQUUzQixNQUFNLG1DQUFtQyxHQUFHLENBQzFDLFVBQXVCLEVBQ3ZCLE9BQW1DLFFBQVEsRUFDM0MsRUFBRTtJQUNGLE9BQU8sVUFBVSxDQUFDLE1BQU0sQ0FDdEIsQ0FBQyxHQUFHLEVBQUUsU0FBUyxFQUFFLEVBQUU7UUFDakIsTUFBTSxTQUFTLEdBQUcsb0JBQW9CLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3hELE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ25DLEdBQUcsQ0FBQyxHQUFHLENBQUM7Z0JBQ04sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDbkUsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUMsRUFDRCxFQUErQixDQUNoQyxDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBRUYsTUFBTSxvQ0FBb0MsR0FBRyxDQUMzQyxVQUF1QixFQUN2QixPQUFtQyxRQUFRLEVBQzNDLEVBQUU7SUFDRixPQUFPLFVBQVUsQ0FBQyxNQUFNLENBQ3RCLENBQUMsR0FBRyxFQUFFLFNBQVMsRUFBRSxFQUFFO1FBQ2pCLE1BQU0sU0FBUyxHQUFHLG9CQUFvQixDQUFDLFNBQVMsRUFBRSxJ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Q0QsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqQyxDQUFDO2FBQU0sSUFBSSxHQUFHLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDNUIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNwQyxDQUFDO2FBQU0sQ0FBQztZQUNOLGdDQUFnQztZQUNoQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsQ0FBQztRQUN6QyxDQUFDO0lBQ0gsQ0FBQyxDQUFDLENBQUM7SUFFSCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29udGFpbmVyLFxuICBQb2QsXG4gIFJlc291cmNlUmVxdWlyZW1lbnRzLFxuICBmb3JtYXRDUFUsXG4gIGZvcm1hdE1lbW9yeSxcbn0gZnJvbSAnQGFsYXVkYS1mZS9jb21tb24nO1xuXG5jb25zdCBnZXRBcHBDb250YWluZXJSZXNvdXJjZVJlcXVpcmVtZW50cyA9IChcbiAgY29udGFpbmVyczogQ29udGFpbmVyW10sXG4gIHR5cGU6IGtleW9mIFJlc291cmNlUmVxdWlyZW1lbnRzID0gJ2xpbWl0cycsXG4pID0+IHtcbiAgcmV0dXJuIGNvbnRhaW5lcnMucmVkdWNlKFxuICAgIChhY2MsIGNvbnRhaW5lcikgPT4ge1xuICAgICAgY29uc3QgcmVzb3VyY2VzID0gZ2V0Q29udGFpbmVyUmVzb3VyY2UoY29udGFpbmVyLCB0eXBlKTtcbiAgICAgIE9iamVjdC5rZXlzKHJlc291cmNlcykuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgICBhY2Nba2V5XSA9XG4gICAgICAgICAgKGFjY1trZXldIHx8IDApICsgKGlzTmFOKHJlc291cmNlc1trZXldKSA/IDAgOiByZXNvdXJjZXNba2V5XSk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBhY2M7XG4gICAgfSxcbiAgICB7fSBhcyB7IFtrZXk6IHN0cmluZ106IG51bWJlciB9LFxuICApO1xufTtcblxuY29uc3QgZ2V0SW5pdENvbnRhaW5lclJlc291cmNlUmVxdWlyZW1lbnRzID0gKFxuICBjb250YWluZXJzOiBDb250YWluZXJbXSxcbiAgdHlwZToga2V5b2YgUmVzb3VyY2VSZXF1aXJlbWVudHMgPSAnbGltaXRzJyxcbikgPT4ge1xuICByZXR1cm4gY29udGFpbmVycy5yZWR1Y2UoXG4gICAgKGFjYywgY29udGFpbmVyKSA9PiB7XG4gICAgICBjb25zdCByZXNvdXJjZXMgPSBnZXRDb250YWluZXJSZXNvdXJjZShjb250YWluZXIsIHR5cGUpO1xuICAgICAgT2JqZWN0LmtleXMocmVzb3VyY2VzKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAgIGFjY1trZXldID0gTWF0aC5tYXgoXG4gICAgICAgICAgYWNjW2tleV0gfHwgMCxcbiAgICAgICAgICBpc05hTihyZXNvdXJjZXNba2V5XSkgPyAwIDogcmVzb3VyY2VzW2tleV0sXG4gICAgICAgICk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBhY2M7XG4gICAgfSxcbiAgICB7fSBhcyB7IFtrZXk6IHN0cmluZ106IG51bWJlciB9LFxuICApO1xufTtcblxuLyoqXG4gKiAgQHNlZSBodHRwczovL3N0dXBlZmllZC1nb29kYWxsLWUyODJmNy5uZXRsaWZ5LmFwcC9jb250cmlidXRvcnMvZGVzaWduLXByb3Bvc2Fscy9ub2RlL2NvbnRhaW5lci1pbml0L1xuICogIEBwYXJhbSBwb2QgcG9kIHJlc291cmNlXG4gKiAgQHJldHVybnMge2NwdTogbnVtYmVyIHwgc3RyaW5nLCBtZW1vcnk6IG51bWJlcnwgc3RyaW5nfSDlpoLmnpwgY3B1IOaIliBtZW1vcnkg5pivICcnLCDliJnorqTkuLrml6DpmZDliLYsXG4gKiAgICAgICAgICAg5aaC5p6c5a2Y5Zyo5omp5bGV6LWE5rqQ6YWN6aKd77yM5q+U5aaCICB7bnZpZGlhLmNvbS9ncHU6IHN0cmluZywgdGVuY2VudC5jb20vdmN1ZGEtbWVtb3J5OiBzdHJpbmd9IOS5n+S8mui/m+ihjOi/lOWbnu+8jFxuICogICAgICAgICAgIOaJqeWxlei1hOa6kOm7mOiupOS4jeW4puWNleS9je+8jOWboOatpOWPr+S7peebtOaOpei/m+ihjOaDs+WKoFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0UG9kUmVzb3VyY2VSZXF1aXJlbWVudHMoXG4gIHBvZDogUG9kLFxuICB0eXBlOiBrZXlvZiBSZXNvdXJjZVJlcXVpcmVtZW50cyA9ICdsaW1pdHMnLFxuKToge1xuICBjcHU6IG51bWJlciB8IHN0cmluZztcbiAgbWVtb3J5OiBudW1iZXIgfCBzdHJpbmc7XG4gIFtrZXk6IHN0cmluZ106IG51bWJlciB8IHN0cmluZztcbn0ge1xuICBjb25zdCB7IGNvbnRhaW5lcnMgPSBbXSwgaW5pdENvbnRhaW5lcnMgPSBbXSB9ID0gcG9kLnNwZWM7XG4gIGNvbnN0IGFwcENvbnRhaW5lckxpbWl0ID0gZ2V0QXBwQ29udGFpbmVyUmVzb3VyY2VSZXF1aXJlbWVudHMoXG4gICAgY29udGFpbmVycyxcbiAgICB0eXBlLFxuICApO1xuICBjb25zdCBpbml0Q29udGFpbmVyTGltaXQgPSBnZXRJbml0Q29udGFpbmVyUmVzb3VyY2VSZXF1aXJlbWVudHMoXG4gICAgaW5pdENvbnRhaW5lcnMsXG4gICAgdHlwZSxcbiAgKTtcblxuICBjb25zdCByZXN1bHQ6IHsgW2tleTogc3RyaW5nXTogbnVtYmVyIHwgc3RyaW5nIH0gPSB7fTtcblxuICAvLyDlkIjlubbmiYDmnInnmoTotYTmupDnsbvlnotcbiAgY29uc3QgYWxsUmVzb3VyY2VUeXBlcyA9IG5ldyBTZXQoW1xuICAgIC4uLk9iamVjdC5rZXlzKGFwcENvbnRhaW5lckxpbWl0KSxcbiAgICAuLi5PYmplY3Qua2V5cyhpbml0Q29udGFpbmVyTGltaXQpLFxuICBdKTtcblxuICBhbGxSZXNvdXJjZVR5cGVzLmZvckVhY2gocmVzb3VyY2VUeXBlID0+IHtcbiAgICBjb25zdCBhcHBWYWx1ZSA9IGFwcENvbnRhaW5lckxpbWl0W3Jlc291cmNlVHlwZV0gfHwgMDtcbiAgICBjb25zdCBpbml0VmFsdWUgPSBpbml0Q29udGFpbmVyTGltaXRbcmVzb3VyY2VUeXBlXSB8fCAwO1xuICAgIGNvbnN0IG1heFZhbHVlID0gTWF0aC5tYXgoYXBwVmFsdWUsIGluaXRWYWx1ZSk7XG4gICAgcmVzdWx0W3Jlc291cmNlVHlwZV0gPSBpc05hTihtYXhWYWx1ZSkgPyAnJyA6IG1heFZhbHVlO1xuICB9KTtcblxuICByZXR1cm4gcmVzdWx0IGFzIHtcbiAgICBjcHU6IG51bWJlciB8IHN0cmluZztcbiAgICBtZW1vcnk6IG51bWJlciB8IHN0cmluZztcbiAgICBba2V5OiBzdHJpbmddOiBudW1iZXIgfCBzdHJpbmc7XG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb250YWluZXJSZXNvdXJjZUxpbWl0KGNvbnRhaW5lcjogQ29udGFpbmVyKToge1xuICBba2V5OiBzdHJpbmddOiBudW1iZXI7XG59IHtcbiAgcmV0dXJuIGdldENvbnRhaW5lclJlc291cmNlKGNvbnRhaW5lciwgJ2xpbWl0cycpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q29udGFpbmVyUmVzb3VyY2VSZXF1ZXN0KGNvbnRhaW5lcjogQ29udGFpbmVyKToge1xuICBba2V5OiBzdHJpbmddOiBudW1iZXI7XG59IHtcbiAgcmV0dXJuIGdldENvbnRhaW5lclJlc291cmNlKGNvbnRhaW5lciwgJ3JlcXVlc3RzJyk7XG59XG5cbmZ1bmN0aW9uIGdldENvbnRhaW5lclJlc291cmNlKFxuICBjb250YWluZXI6IENvbnRhaW5lcixcbiAgdHlwZTogJ3JlcXVlc3RzJyB8ICdsaW1pdHMnLFxuKTogeyBba2V5OiBzdHJpbmddOiBudW1iZXIgfSB7XG4gIGNvbnN0IHJlc3VsdDogeyBba2V5OiBzdHJpbmddOiBudW1iZXIgfSA9IHt9O1xuICBjb25zdCByZXNvdXJjZXMgPSBjb250YWluZXIucmVzb3VyY2VzW3R5cGVdIHx8IHt9O1xuXG4gIE9iamVjdC5lbnRyaWVzKHJlc291cmNlcykuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgaWYgKHZhbHVlID09PSAnJykge1xuICAgICAgcmVzdWx0W2tleV0gPSBOYU47XG4gICAgfSBlbHNlIGlmIChrZXkgPT09ICdjcHUnKSB7XG4gICAgICBpZiAoIWlzTmFOKCt2YWx1ZSkpIHtcbiAgICAgICAgdmFsdWUgKz0gJ2MnO1xuICAgICAgfVxuICAgICAgcmVzdWx0W2tleV0gPSBmb3JtYXRDUFUodmFsdWUpO1xuICAgIH0gZWxzZSBpZiAoa2V5ID09PSAnbWVtb3J5Jykge1xuICAgICAgcmVzdWx0W2tleV0gPSBmb3JtYXRNZW1vcnkodmFsdWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyDlr7nkuo7lhbbku5botYTmupDnsbvlnovvvIjlpoIgR1BVIOaIluiHquWumuS5iei1hOa6kO+8ie+8jOebtOaOpeS9v+eUqOaVsOWAvFxuICAgICAgcmVzdWx0W2tleV0gPSBwYXJzZUZsb2F0KHZhbHVlKSB8fCBOYU47XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gcmVzdWx0O1xufVxuIl19
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { AlarmStatus } from '@alauda-fe/alarm';
|
|
2
|
+
import { HelmRequestPhaseEnum, } from '@alauda-fe/common';
|
|
3
|
+
import { ApplicationPhaseEnum, ApplicationStateEnum, ApplicationStatusEnum, HelmRequestStatusEnum, JobStatusEnum, } from '../typings';
|
|
4
|
+
export function getAlarmStatus(rule) {
|
|
5
|
+
if (rule.labels.alarm_status?.toLowerCase() === 'pending') {
|
|
6
|
+
return AlarmStatus.Pending;
|
|
7
|
+
}
|
|
8
|
+
if (rule.labels.alarm_status?.toLowerCase() === 'firing') {
|
|
9
|
+
return AlarmStatus.Firing;
|
|
10
|
+
}
|
|
11
|
+
return AlarmStatus.Normal;
|
|
12
|
+
}
|
|
13
|
+
export function getJobStatus(data) {
|
|
14
|
+
const status = data.status;
|
|
15
|
+
if (status.conditions?.some(_item => _item.type === 'Failed')) {
|
|
16
|
+
return JobStatusEnum.EXECUTE_FAILED;
|
|
17
|
+
}
|
|
18
|
+
// when Complete and succeeded, judge to execute_succeeded
|
|
19
|
+
if (status.conditions?.some(_item => _item.type === 'Complete')) {
|
|
20
|
+
if (status.succeeded) {
|
|
21
|
+
return JobStatusEnum.EXECUTE_SUCCEEDED;
|
|
22
|
+
}
|
|
23
|
+
if (status.failed) {
|
|
24
|
+
return JobStatusEnum.EXECUTE_FAILED;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
// no condition and no Complete when running
|
|
28
|
+
if (status.active) {
|
|
29
|
+
return JobStatusEnum.EXECUTING;
|
|
30
|
+
}
|
|
31
|
+
return JobStatusEnum.UNKNOWN;
|
|
32
|
+
}
|
|
33
|
+
export function getWorkloadStatus(status) {
|
|
34
|
+
return status.status.toLowerCase();
|
|
35
|
+
}
|
|
36
|
+
export function getApplicationStatus(application) {
|
|
37
|
+
const status = application.status;
|
|
38
|
+
const phase = application.spec.assemblyPhase;
|
|
39
|
+
if (phase === ApplicationPhaseEnum.Succeeded) {
|
|
40
|
+
switch (status.state) {
|
|
41
|
+
case ApplicationStateEnum.Stopped: {
|
|
42
|
+
return ApplicationStatusEnum.STOPPED;
|
|
43
|
+
}
|
|
44
|
+
case ApplicationStateEnum.Pending: {
|
|
45
|
+
return ApplicationStatusEnum.PENDING;
|
|
46
|
+
}
|
|
47
|
+
case ApplicationStateEnum.Running: {
|
|
48
|
+
return ApplicationStatusEnum.RUNNING;
|
|
49
|
+
}
|
|
50
|
+
case ApplicationStateEnum.PartialRunning: {
|
|
51
|
+
return ApplicationStatusEnum.PARTIAL_RUNNING;
|
|
52
|
+
}
|
|
53
|
+
case ApplicationStateEnum.Empty: {
|
|
54
|
+
return ApplicationStatusEnum.NO_WORKLOAD;
|
|
55
|
+
}
|
|
56
|
+
default: {
|
|
57
|
+
return ApplicationStatusEnum.UNKNOWN;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
switch (phase) {
|
|
62
|
+
case ApplicationPhaseEnum.Pending: {
|
|
63
|
+
return ApplicationStatusEnum.PENDING;
|
|
64
|
+
}
|
|
65
|
+
case ApplicationPhaseEnum.Failed: {
|
|
66
|
+
return ApplicationStatusEnum.FAILED;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
export function getHelmRequestStatus(hr) {
|
|
71
|
+
if (hr.status) {
|
|
72
|
+
switch (hr.status.phase) {
|
|
73
|
+
case HelmRequestPhaseEnum.Synced: {
|
|
74
|
+
return HelmRequestStatusEnum.DEPLOY_SUCCEEDED;
|
|
75
|
+
}
|
|
76
|
+
case HelmRequestPhaseEnum.Failed: {
|
|
77
|
+
return HelmRequestStatusEnum.DEPLOY_FAILED;
|
|
78
|
+
}
|
|
79
|
+
case HelmRequestPhaseEnum.Pending: {
|
|
80
|
+
return HelmRequestStatusEnum.DEPLOYING;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
return HelmRequestStatusEnum.DEPLOYING;
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2Utc3RhdHVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy93b3JrbG9hZC91dGlsLXNoYXJlZC9zcmMvbGliL3V0aWxzL3Jlc291cmNlLXN0YXR1cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXNCLFdBQVcsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ25FLE9BQU8sRUFHTCxvQkFBb0IsR0FFckIsTUFBTSxtQkFBbUIsQ0FBQztBQUUzQixPQUFPLEVBRUwsb0JBQW9CLEVBQ3BCLG9CQUFvQixFQUNwQixxQkFBcUIsRUFDckIscUJBQXFCLEVBQ3JCLGFBQWEsR0FFZCxNQUFNLFlBQVksQ0FBQztBQUVwQixNQUFNLFVBQVUsY0FBYyxDQUFDLElBQXdCO0lBQ3JELElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsV0FBVyxFQUFFLEtBQUssU0FBUyxFQUFFLENBQUM7UUFDMUQsT0FBTyxXQUFXLENBQUMsT0FBTyxDQUFDO0lBQzdCLENBQUM7SUFDRCxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLFdBQVcsRUFBRSxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQ3pELE9BQU8sV0FBVyxDQUFDLE1BQU0sQ0FBQztJQUM1QixDQUFDO0lBQ0QsT0FBTyxXQUFXLENBQUMsTUFBTSxDQUFDO0FBQzVCLENBQUM7QUFFRCxNQUFNLFVBQVUsWUFBWSxDQUFDLElBQVM7SUFDcEMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUMzQixJQUFJLE1BQU0sQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxRQUFRLENBQUMsRUFBRSxDQUFDO1FBQzlELE9BQU8sYUFBYSxDQUFDLGNBQWMsQ0FBQztJQUN0QyxDQUFDO0lBQ0QsMERBQTBEO0lBQzFELElBQUksTUFBTSxD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O1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPLHFCQUFxQixDQUFDLFNBQVMsQ0FBQztBQUN6QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUHJvbWV0aGV1c1J1bGVJdGVtLCBBbGFybVN0YXR1cyB9IGZyb20gJ0BhbGF1ZGEtZmUvYWxhcm0nO1xuaW1wb3J0IHtcbiAgSm9iLFxuICBIZWxtUmVxdWVzdCxcbiAgSGVsbVJlcXVlc3RQaGFzZUVudW0sXG4gIEdlbmVyaWNXb3JrbG9hZFN0YXR1cyxcbn0gZnJvbSAnQGFsYXVkYS1mZS9jb21tb24nO1xuXG5pbXBvcnQge1xuICBBcHBsaWNhdGlvbixcbiAgQXBwbGljYXRpb25QaGFzZUVudW0sXG4gIEFwcGxpY2F0aW9uU3RhdGVFbnVtLFxuICBBcHBsaWNhdGlvblN0YXR1c0VudW0sXG4gIEhlbG1SZXF1ZXN0U3RhdHVzRW51bSxcbiAgSm9iU3RhdHVzRW51bSxcbiAgV29ya2xvYWRTdGF0dXNFbnVtLFxufSBmcm9tICcuLi90eXBpbmdzJztcblxuZXhwb3J0IGZ1bmN0aW9uIGdldEFsYXJtU3RhdHVzKHJ1bGU6IFByb21ldGhldXNSdWxlSXRlbSk6IEFsYXJtU3RhdHVzIHtcbiAgaWYgKHJ1bGUubGFiZWxzLmFsYXJtX3N0YXR1cz8udG9Mb3dlckNhc2UoKSA9PT0gJ3BlbmRpbmcnKSB7XG4gICAgcmV0dXJuIEFsYXJtU3RhdHVzLlBlbmRpbmc7XG4gIH1cbiAgaWYgKHJ1bGUubGFiZWxzLmFsYXJtX3N0YXR1cz8udG9Mb3dlckNhc2UoKSA9PT0gJ2ZpcmluZycpIHtcbiAgICByZXR1cm4gQWxhcm1TdGF0dXMuRmlyaW5nO1xuICB9XG4gIHJldHVybiBBbGFybVN0YXR1cy5Ob3JtYWw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRKb2JTdGF0dXMoZGF0YTogSm9iKTogSm9iU3RhdHVzRW51bSB7XG4gIGNvbnN0IHN0YXR1cyA9IGRhdGEuc3RhdHVzO1xuICBpZiAoc3RhdHVzLmNvbmRpdGlvbnM/LnNvbWUoX2l0ZW0gPT4gX2l0ZW0udHlwZSA9PT0gJ0ZhaWxlZCcpKSB7XG4gICAgcmV0dXJuIEpvYlN0YXR1c0VudW0uRVhFQ1VURV9GQUlMRUQ7XG4gIH1cbiAgLy8gd2hlbiBDb21wbGV0ZSBhbmQgc3VjY2VlZGVkLCBqdWRnZSB0byBleGVjdXRlX3N1Y2NlZWRlZFxuICBpZiAoc3RhdHVzLmNvbmRpdGlvbnM/LnNvbWUoX2l0ZW0gPT4gX2l0ZW0udHlwZSA9PT0gJ0NvbXBsZXRlJykpIHtcbiAgICBpZiAoc3RhdHVzLnN1Y2NlZWRlZCkge1xuICAgICAgcmV0dXJuIEpvYlN0YXR1c0VudW0uRVhFQ1VURV9TVUNDRUVERUQ7XG4gICAgfVxuICAgIGlmIChzdGF0dXMuZmFpbGVkKSB7XG4gICAgICByZXR1cm4gSm9iU3RhdHVzRW51bS5FWEVDVVRFX0ZBSUxFRDtcbiAgICB9XG4gIH1cbiAgLy8gbm8gY29uZGl0aW9uIGFuZCBubyBDb21wbGV0ZSB3aGVuIHJ1bm5pbmdcbiAgaWYgKHN0YXR1cy5hY3RpdmUpIHtcbiAgICByZXR1cm4gSm9iU3RhdHVzRW51bS5FWEVDVVRJTkc7XG4gIH1cbiAgcmV0dXJuIEpvYlN0YXR1c0VudW0uVU5LTk9XTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFdvcmtsb2FkU3RhdHVzKHN0YXR1czogR2VuZXJpY1dvcmtsb2FkU3RhdHVzKSB7XG4gIHJldHVybiBzdGF0dXMuc3RhdHVzLnRvTG93ZXJDYXNlKCkgYXMgV29ya2xvYWRTdGF0dXNFbnVtO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0QXBwbGljYXRpb25TdGF0dXMoYXBwbGljYXRpb246IEFwcGxpY2F0aW9uKSB7XG4gIGNvbnN0IHN0YXR1cyA9IGFwcGxpY2F0aW9uLnN0YXR1cztcbiAgY29uc3QgcGhhc2UgPSBhcHBsaWNhdGlvbi5zcGVjLmFzc2VtYmx5UGhhc2U7XG5cbiAgaWYgKHBoYXNlID09PSBBcHBsaWNhdGlvblBoYXNlRW51bS5TdWNjZWVkZWQpIHtcbiAgICBzd2l0Y2ggKHN0YXR1cy5zdGF0ZSkge1xuICAgICAgY2FzZSBBcHBsaWNhdGlvblN0YXRlRW51bS5TdG9wcGVkOiB7XG4gICAgICAgIHJldHVybiBBcHBsaWNhdGlvblN0YXR1c0VudW0uU1RPUFBFRDtcbiAgICAgIH1cbiAgICAgIGNhc2UgQXBwbGljYXRpb25TdGF0ZUVudW0uUGVuZGluZzoge1xuICAgICAgICByZXR1cm4gQXBwbGljYXRpb25TdGF0dXNFbnVtLlBFTkRJTkc7XG4gICAgICB9XG4gICAgICBjYXNlIEFwcGxpY2F0aW9uU3RhdGVFbnVtLlJ1bm5pbmc6IHtcbiAgICAgICAgcmV0dXJuIEFwcGxpY2F0aW9uU3RhdHVzRW51bS5SVU5OSU5HO1xuICAgICAgfVxuICAgICAgY2FzZSBBcHBsaWNhdGlvblN0YXRlRW51bS5QYXJ0aWFsUnVubmluZzoge1xuICAgICAgICByZXR1cm4gQXBwbGljYXRpb25TdGF0dXNFbnVtLlBBUlRJQUxfUlVOTklORztcbiAgICAgIH1cbiAgICAgIGNhc2UgQXBwbGljYXRpb25TdGF0ZUVudW0uRW1wdHk6IHtcbiAgICAgICAgcmV0dXJuIEFwcGxpY2F0aW9uU3RhdHVzRW51bS5OT19XT1JLTE9BRDtcbiAgICAgIH1cbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgcmV0dXJuIEFwcGxpY2F0aW9uU3RhdHVzRW51bS5VTktOT1dOO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHN3aXRjaCAocGhhc2UpIHtcbiAgICBjYXNlIEFwcGxpY2F0aW9uUGhhc2VFbnVtLlBlbmRpbmc6IHtcbiAgICAgIHJldHVybiBBcHBsaWNhdGlvblN0YXR1c0VudW0uUEVORElORztcbiAgICB9XG4gICAgY2FzZSBBcHBsaWNhdGlvblBoYXNlRW51bS5GYWlsZWQ6IHtcbiAgICAgIHJldHVybiBBcHBsaWNhdGlvblN0YXR1c0VudW0uRkFJTEVEO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0SGVsbVJlcXVlc3RTdGF0dXMoaHI6IEhlbG1SZXF1ZXN0KTogSGVsbVJlcXVlc3RTdGF0dXNFbnVtIHtcbiAgaWYgKGhyLnN0YXR1cykge1xuICAgIHN3aXRjaCAoaHIuc3RhdHVzLnBoYXNlKSB7XG4gICAgICBjYXNlIEhlbG1SZXF1ZXN0UGhhc2VFbnVtLlN5bmNlZDoge1xuICAgICAgICByZXR1cm4gSGVsbVJlcXVlc3RTdGF0dXNFbnVtLkRFUExPWV9TVUNDRUVERUQ7XG4gICAgICB9XG4gICAgICBjYXNlIEhlbG1SZXF1ZXN0UGhhc2VFbnVtLkZhaWxlZDoge1xuICAgICAgICByZXR1cm4gSGVsbVJlcXVlc3RTdGF0dXNFbnVtLkRFUExPWV9GQUlMRUQ7XG4gICAgICB9XG4gICAgICBjYXNlIEhlbG1SZXF1ZXN0UGhhc2VFbnVtLlBlbmRpbmc6IHtcbiAgICAgICAgcmV0dXJuIEhlbG1SZXF1ZXN0U3RhdHVzRW51bS5ERVBMT1lJTkc7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIEhlbG1SZXF1ZXN0U3RhdHVzRW51bS5ERVBMT1lJTkc7XG59XG4iXX0=
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export function getCustomResourceLimitsDisplay(configs, resources) {
|
|
2
|
+
return getCustomResourceDisplay(configs, resources, 'limits');
|
|
3
|
+
}
|
|
4
|
+
export function getCustomResourceRequestsDisplay(configs, resources) {
|
|
5
|
+
return getCustomResourceDisplay(configs, resources, 'requests');
|
|
6
|
+
}
|
|
7
|
+
export function getCustomResourceDisplay(configs, resources, type) {
|
|
8
|
+
if (!configs?.length) {
|
|
9
|
+
return [];
|
|
10
|
+
}
|
|
11
|
+
const res = resources[type] || {};
|
|
12
|
+
return Object.keys(res)
|
|
13
|
+
.filter(key => !['memory', 'cpu'].includes(key) &&
|
|
14
|
+
configs?.some(config => config.key === key))
|
|
15
|
+
.map(key => {
|
|
16
|
+
const config = configs.find(config => config.key === key);
|
|
17
|
+
return {
|
|
18
|
+
label: config.labelZh
|
|
19
|
+
? {
|
|
20
|
+
en: config.labelEn,
|
|
21
|
+
zh: config.labelZh,
|
|
22
|
+
}
|
|
23
|
+
: config.key,
|
|
24
|
+
value: res[key],
|
|
25
|
+
};
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2VzLWNvbmZpZy11dGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy93b3JrbG9hZC91dGlsLXNoYXJlZC9zcmMvbGliL3V0aWxzL3Jlc291cmNlcy1jb25maWctdXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLFVBQVUsOEJBQThCLENBQzVDLE9BQW9CLEVBQ3BCLFNBQStCO0lBRS9CLE9BQU8sd0JBQXdCLENBQUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQztBQUNoRSxDQUFDO0FBRUQsTUFBTSxVQUFVLGdDQUFnQyxDQUM5QyxPQUFvQixFQUNwQixTQUErQjtJQUUvQixPQUFPLHdCQUF3QixDQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxDQUFDLENBQUM7QUFDbEUsQ0FBQztBQUVELE1BQU0sVUFBVSx3QkFBd0IsQ0FDdEMsT0FBb0IsRUFDcEIsU0FBK0IsRUFDL0IsSUFBZ0M7SUFFaEMsSUFBSSxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsQ0FBQztRQUNyQixPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFDRCxNQUFNLEdBQUcsR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2xDLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7U0FDcEIsTUFBTSxDQUNMLEdBQUcsQ0FBQyxFQUFFLENBQ0osQ0FBQyxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDO1FBQ2hDLE9BQU8sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsR0FBRyxLQUFLLEdBQUcsQ0FBQyxDQUM5QztTQUNBLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRTtRQUNULE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsR0FBRyxLQUFLLEdBQUcsQ0FBQyxDQUFDO1FBQzFELE9BQU87WUFDTCxLQUFLLEVBQUUsTUFBTSxDQUFDLE9BQU87Z0JBQ25CLENBQUMsQ0FBQztvQkFDRSxFQUFFLEVBQUUsTUFBTSxDQUFDLE9BQU87b0JBQ2xCLEVBQUUsRUFBRSxNQUFNLENBQUMsT0FBTztpQkFDbkI7Z0JBQ0gsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHO1lBQ2QsS0FBSyxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUM7U0FDaEIsQ0FBQztJQUNKLENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlc291cmNlUmVxdWlyZW1lbnRzLCBTdHJpbmdNYXAgfSBmcm9tICdAYWxhdWRhLWZlL2NvbW1vbic7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDdXN0b21SZXNvdXJjZUxpbWl0c0Rpc3BsYXkoXG4gIGNvbmZpZ3M6IFN0cmluZ01hcFtdLFxuICByZXNvdXJjZXM6IFJlc291cmNlUmVxdWlyZW1lbnRzLFxuKSB7XG4gIHJldHVybiBnZXRDdXN0b21SZXNvdXJjZURpc3BsYXkoY29uZmlncywgcmVzb3VyY2VzLCAnbGltaXRzJyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDdXN0b21SZXNvdXJjZVJlcXVlc3RzRGlzcGxheShcbiAgY29uZmlnczogU3RyaW5nTWFwW10sXG4gIHJlc291cmNlczogUmVzb3VyY2VSZXF1aXJlbWVudHMsXG4pIHtcbiAgcmV0dXJuIGdldEN1c3RvbVJlc291cmNlRGlzcGxheShjb25maWdzLCByZXNvdXJjZXMsICdyZXF1ZXN0cycpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q3VzdG9tUmVzb3VyY2VEaXNwbGF5KFxuICBjb25maWdzOiBTdHJpbmdNYXBbXSxcbiAgcmVzb3VyY2VzOiBSZXNvdXJjZVJlcXVpcmVtZW50cyxcbiAgdHlwZToga2V5b2YgUmVzb3VyY2VSZXF1aXJlbWVudHMsXG4pIHtcbiAgaWYgKCFjb25maWdzPy5sZW5ndGgpIHtcbiAgICByZXR1cm4gW107XG4gIH1cbiAgY29uc3QgcmVzID0gcmVzb3VyY2VzW3R5cGVdIHx8IHt9O1xuICByZXR1cm4gT2JqZWN0LmtleXMocmVzKVxuICAgIC5maWx0ZXIoXG4gICAgICBrZXkgPT5cbiAgICAgICAgIVsnbWVtb3J5JywgJ2NwdSddLmluY2x1ZGVzKGtleSkgJiZcbiAgICAgICAgY29uZmlncz8uc29tZShjb25maWcgPT4gY29uZmlnLmtleSA9PT0ga2V5KSxcbiAgICApXG4gICAgLm1hcChrZXkgPT4ge1xuICAgICAgY29uc3QgY29uZmlnID0gY29uZmlncy5maW5kKGNvbmZpZyA9PiBjb25maWcua2V5ID09PSBrZXkpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbGFiZWw6IGNvbmZpZy5sYWJlbFpoXG4gICAgICAgICAgPyB7XG4gICAgICAgICAgICAgIGVuOiBjb25maWcubGFiZWxFbixcbiAgICAgICAgICAgICAgemg6IGNvbmZpZy5sYWJlbFpoLFxuICAgICAgICAgICAgfVxuICAgICAgICAgIDogY29uZmlnLmtleSxcbiAgICAgICAgdmFsdWU6IHJlc1trZXldLFxuICAgICAgfTtcbiAgICB9KTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { PodStatusEnum } from '@alauda-fe/common';
|
|
2
|
+
import { get } from 'lodash-es';
|
|
3
|
+
// reference: https://bitbucket.org/mathildetech/link/src/c81161f02f981904b716462a305e09414e5617d3/src/backend/resource/common/pod.go#lines-179
|
|
4
|
+
export function getPodStatus(pod) {
|
|
5
|
+
let reason = pod.status.phase || pod.status.reason;
|
|
6
|
+
const { initializing, reason: initReason } = getPodInitStatus(pod, reason);
|
|
7
|
+
reason = initializing ? initReason : getPodContainerStatus(pod, reason);
|
|
8
|
+
if (pod.metadata.deletionTimestamp && pod.status.reason === 'NodeLost') {
|
|
9
|
+
reason = 'Unknown';
|
|
10
|
+
}
|
|
11
|
+
else if (pod.metadata.deletionTimestamp) {
|
|
12
|
+
reason = 'Terminating';
|
|
13
|
+
}
|
|
14
|
+
return reason;
|
|
15
|
+
}
|
|
16
|
+
function getPodContainerStatus(pod, reason) {
|
|
17
|
+
const containerStatuses = get(pod, ['status', 'containerStatuses'], []);
|
|
18
|
+
for (let i = 0, len = containerStatuses.length; i < len; i++) {
|
|
19
|
+
const container = containerStatuses[i];
|
|
20
|
+
let waitingReason, terminatedReason;
|
|
21
|
+
if ((waitingReason = get(container, ['state', 'waiting', 'reason']))) {
|
|
22
|
+
return waitingReason;
|
|
23
|
+
}
|
|
24
|
+
if ((terminatedReason = get(container, ['state', 'terminated', 'reason']))) {
|
|
25
|
+
return terminatedReason;
|
|
26
|
+
}
|
|
27
|
+
if (get(container, ['state', 'terminated'])) {
|
|
28
|
+
const { signal, exitCode } = container.state.terminated;
|
|
29
|
+
return signal === 0 ? `ExitCode:${exitCode}` : `Signal:${signal}`;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
return reason;
|
|
33
|
+
}
|
|
34
|
+
function getPodInitStatus(pod, reason) {
|
|
35
|
+
let initializing = false;
|
|
36
|
+
const initContainerStatuses = get(pod, ['status', 'initContainerStatuses'], []);
|
|
37
|
+
for (let i = initContainerStatuses.length - 1; i >= 0; i--) {
|
|
38
|
+
const status = initContainerStatuses[i];
|
|
39
|
+
if (get(status, ['state', 'terminated', 'exitCode']) === 0) {
|
|
40
|
+
continue;
|
|
41
|
+
}
|
|
42
|
+
let waitingReason;
|
|
43
|
+
const terminated = get(status, ['state', 'terminated']);
|
|
44
|
+
if (terminated) {
|
|
45
|
+
reason = terminated.reason
|
|
46
|
+
? `Init:${terminated.reason}`
|
|
47
|
+
: terminated.signal === 0
|
|
48
|
+
? `Init:ExitCode:${terminated.exitCode}`
|
|
49
|
+
: `Init:Signal:${terminated.signal}`;
|
|
50
|
+
}
|
|
51
|
+
else if ((waitingReason = get(status, ['state', 'waiting', reason])) &&
|
|
52
|
+
waitingReason !== 'PodInitializing') {
|
|
53
|
+
reason = `Initing:${waitingReason}`;
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
reason = `Initing:${i}/${pod.spec.initContainers.length}`;
|
|
57
|
+
}
|
|
58
|
+
initializing = true;
|
|
59
|
+
break;
|
|
60
|
+
}
|
|
61
|
+
return { initializing, reason };
|
|
62
|
+
}
|
|
63
|
+
// 将 getPodStatus 得到的多种状态映射到标签类型
|
|
64
|
+
// reference: https://bitbucket.org/mathildetech/link/src/c81161f02f981904b716462a305e09414e5617d3/src/backend/resource/common/podinfo.go#lines-68
|
|
65
|
+
export function getPodAggregatedStatus(status) {
|
|
66
|
+
if (status.split(':')[0] === 'Initing' ||
|
|
67
|
+
[
|
|
68
|
+
'Initing',
|
|
69
|
+
'Pending',
|
|
70
|
+
'PodInitializing',
|
|
71
|
+
'ContainerCreating',
|
|
72
|
+
'Terminating',
|
|
73
|
+
].includes(status)) {
|
|
74
|
+
return PodStatusEnum.pending;
|
|
75
|
+
}
|
|
76
|
+
if (status === 'Completed') {
|
|
77
|
+
return PodStatusEnum.completed;
|
|
78
|
+
}
|
|
79
|
+
if (status === 'Running') {
|
|
80
|
+
return PodStatusEnum.running;
|
|
81
|
+
}
|
|
82
|
+
return PodStatusEnum.error;
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdHVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy93b3JrbG9hZC91dGlsLXNoYXJlZC9zcmMvbGliL3V0aWxzL3N0YXR1cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXdCLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFaEMsK0lBQStJO0FBQy9JLE1BQU0sVUFBVSxZQUFZLENBQUMsR0FBUTtJQUNuQyxJQUFJLE1BQU0sR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLEtBQUssSUFBSSxHQUFHLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztJQUNuRCxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsR0FBRyxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDM0UsTUFBTSxHQUFHLFlBQVksQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFFeEUsSUFBSSxHQUFHLENBQUMsUUFBUSxDQUFDLGlCQUFpQixJQUFJLEdBQUcsQ0FBQyxNQUFNLENBQUMsTUFBTSxLQUFLLFVBQVUsRUFBRSxDQUFDO1FBQ3ZFLE1BQU0sR0FBRyxTQUFTLENBQUM7SUFDckIsQ0FBQztTQUFNLElBQUksR0FBRyxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQzFDLE1BQU0sR0FBRyxhQUFhLENBQUM7SUFDekIsQ0FBQztJQUNELE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUM7QUFFRCxTQUFTLHFCQUFxQixDQUFDLEdBQVEsRUFBRSxNQUFjO0lBQ3JELE1BQU0saUJBQWlCLEdBQXNCLEdBQUcsQ0FDOUMsR0FBRyxFQUNILENBQUMsUUFBUSxFQUFFLG1CQUFtQixDQUFDLEVB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QUFJLENBQUM7UUFDcEIsTUFBTTtJQUNSLENBQUM7SUFDRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxDQUFDO0FBQ2xDLENBQUM7QUFFRCxnQ0FBZ0M7QUFDaEMsa0pBQWtKO0FBQ2xKLE1BQU0sVUFBVSxzQkFBc0IsQ0FBQyxNQUFjO0lBQ25ELElBQ0UsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxTQUFTO1FBQ2xDO1lBQ0UsU0FBUztZQUNULFNBQVM7WUFDVCxpQkFBaUI7WUFDakIsbUJBQW1CO1lBQ25CLGFBQWE7U0FDZCxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFDbEIsQ0FBQztRQUNELE9BQU8sYUFBYSxDQUFDLE9BQU8sQ0FBQztJQUMvQixDQUFDO0lBRUQsSUFBSSxNQUFNLEtBQUssV0FBVyxFQUFFLENBQUM7UUFDM0IsT0FBTyxhQUFhLENBQUMsU0FBUyxDQUFDO0lBQ2pDLENBQUM7SUFDRCxJQUFJLE1BQU0sS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUN6QixPQUFPLGFBQWEsQ0FBQyxPQUFPLENBQUM7SUFDL0IsQ0FBQztJQUVELE9BQU8sYUFBYSxDQUFDLEtBQUssQ0FBQztBQUM3QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29udGFpbmVyU3RhdHVzLCBQb2QsIFBvZFN0YXR1c0VudW0gfSBmcm9tICdAYWxhdWRhLWZlL2NvbW1vbic7XG5pbXBvcnQgeyBnZXQgfSBmcm9tICdsb2Rhc2gtZXMnO1xuXG4vLyByZWZlcmVuY2U6IGh0dHBzOi8vYml0YnVja2V0Lm9yZy9tYXRoaWxkZXRlY2gvbGluay9zcmMvYzgxMTYxZjAyZjk4MTkwNGI3MTY0NjJhMzA1ZTA5NDE0ZTU2MTdkMy9zcmMvYmFja2VuZC9yZXNvdXJjZS9jb21tb24vcG9kLmdvI2xpbmVzLTE3OVxuZXhwb3J0IGZ1bmN0aW9uIGdldFBvZFN0YXR1cyhwb2Q6IFBvZCk6IHN0cmluZyB7XG4gIGxldCByZWFzb24gPSBwb2Quc3RhdHVzLnBoYXNlIHx8IHBvZC5zdGF0dXMucmVhc29uO1xuICBjb25zdCB7IGluaXRpYWxpemluZywgcmVhc29uOiBpbml0UmVhc29uIH0gPSBnZXRQb2RJbml0U3RhdHVzKHBvZCwgcmVhc29uKTtcbiAgcmVhc29uID0gaW5pdGlhbGl6aW5nID8gaW5pdFJlYXNvbiA6IGdldFBvZENvbnRhaW5lclN0YXR1cyhwb2QsIHJlYXNvbik7XG5cbiAgaWYgKHBvZC5tZXRhZGF0YS5kZWxldGlvblRpbWVzdGFtcCAmJiBwb2Quc3RhdHVzLnJlYXNvbiA9PT0gJ05vZGVMb3N0Jykge1xuICAgIHJlYXNvbiA9ICdVbmtub3duJztcbiAgfSBlbHNlIGlmIChwb2QubWV0YWRhdGEuZGVsZXRpb25UaW1lc3RhbXApIHtcbiAgICByZWFzb24gPSAnVGVybWluYXRpbmcnO1xuICB9XG4gIHJldHVybiByZWFzb247XG59XG5cbmZ1bmN0aW9uIGdldFBvZENvbnRhaW5lclN0YXR1cyhwb2Q6IFBvZCwgcmVhc29uOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBjb250YWluZXJTdGF0dXNlczogQ29udGFpbmVyU3RhdHVzW10gPSBnZXQoXG4gICAgcG9kLFxuICAgIFsnc3RhdHVzJywgJ2NvbnRhaW5lclN0YXR1c2VzJ10sXG4gICAgW10sXG4gICk7XG4gIGZvciAobGV0IGkgPSAwLCBsZW4gPSBjb250YWluZXJTdGF0dXNlcy5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgIGNvbnN0IGNvbnRhaW5lciA9IGNvbnRhaW5lclN0YXR1c2VzW2ldO1xuICAgIGxldCB3YWl0aW5nUmVhc29uLCB0ZXJtaW5hdGVkUmVhc29uO1xuICAgIGlmICgod2FpdGluZ1JlYXNvbiA9IGdldChjb250YWluZXIsIFsnc3RhdGUnLCAnd2FpdGluZycsICdyZWFzb24nXSkpKSB7XG4gICAgICByZXR1cm4gd2FpdGluZ1JlYXNvbjtcbiAgICB9XG4gICAgaWYgKFxuICAgICAgKHRlcm1pbmF0ZWRSZWFzb24gPSBnZXQoY29udGFpbmVyLCBbJ3N0YXRlJywgJ3Rlcm1pbmF0ZWQnLCAncmVhc29uJ10pKVxuICAgICkge1xuICAgICAgcmV0dXJuIHRlcm1pbmF0ZWRSZWFzb247XG4gICAgfVxuICAgIGlmIChnZXQoY29udGFpbmVyLCBbJ3N0YXRlJywgJ3Rlcm1pbmF0ZWQnXSkpIHtcbiAgICAgIGNvbnN0IHsgc2lnbmFsLCBleGl0Q29kZSB9ID0gY29udGFpbmVyLnN0YXRlLnRlcm1pbmF0ZWQ7XG4gICAgICByZXR1cm4gc2lnbmFsID09PSAwID8gYEV4aXRDb2RlOiR7ZXhpdENvZGV9YCA6IGBTaWduYWw6JHtzaWduYWx9YDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlYXNvbjtcbn1cblxuZnVuY3Rpb24gZ2V0UG9kSW5pdFN0YXR1cyhwb2Q6IFBvZCwgcmVhc29uOiBzdHJpbmcpIHtcbiAgbGV0IGluaXRpYWxpemluZyA9IGZhbHNlO1xuICBjb25zdCBpbml0Q29udGFpbmVyU3RhdHVzZXMgPSBnZXQoXG4gICAgcG9kLFxuICAgIFsnc3RhdHVzJywgJ2luaXRDb250YWluZXJTdGF0dXNlcyddLFxuICAgIFtdIGFzIENvbnRhaW5lclN0YXR1c1tdLFxuICApO1xuICBmb3IgKGxldCBpID0gaW5pdENvbnRhaW5lclN0YXR1c2VzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgY29uc3Qgc3RhdHVzID0gaW5pdENvbnRhaW5lclN0YXR1c2VzW2ldO1xuICAgIGlmIChnZXQoc3RhdHVzLCBbJ3N0YXRlJywgJ3Rlcm1pbmF0ZWQnLCAnZXhpdENvZGUnXSkgPT09IDApIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBsZXQgd2FpdGluZ1JlYXNvbjogc3RyaW5nO1xuICAgIGNvbnN0IHRlcm1pbmF0ZWQgPSBnZXQoc3RhdHVzLCBbJ3N0YXRlJywgJ3Rlcm1pbmF0ZWQnXSk7XG4gICAgaWYgKHRlcm1pbmF0ZWQpIHtcbiAgICAgIHJlYXNvbiA9IHRlcm1pbmF0ZWQucmVhc29uXG4gICAgICAgID8gYEluaXQ6JHt0ZXJtaW5hdGVkLnJlYXNvbn1gXG4gICAgICAgIDogdGVybWluYXRlZC5zaWduYWwgPT09IDBcbiAgICAgICAgICA/IGBJbml0OkV4aXRDb2RlOiR7dGVybWluYXRlZC5leGl0Q29kZX1gXG4gICAgICAgICAgOiBgSW5pdDpTaWduYWw6JHt0ZXJtaW5hdGVkLnNpZ25hbH1gO1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICAod2FpdGluZ1JlYXNvbiA9IGdldChzdGF0dXMsIFsnc3RhdGUnLCAnd2FpdGluZycsIHJlYXNvbl0pKSAmJlxuICAgICAgd2FpdGluZ1JlYXNvbiAhPT0gJ1BvZEluaXRpYWxpemluZydcbiAgICApIHtcbiAgICAgIHJlYXNvbiA9IGBJbml0aW5nOiR7d2FpdGluZ1JlYXNvbn1gO1xuICAgIH0gZWxzZSB7XG4gICAgICByZWFzb24gPSBgSW5pdGluZzoke2l9LyR7cG9kLnNwZWMuaW5pdENvbnRhaW5lcnMubGVuZ3RofWA7XG4gICAgfVxuICAgIGluaXRpYWxpemluZyA9IHRydWU7XG4gICAgYnJlYWs7XG4gIH1cbiAgcmV0dXJuIHsgaW5pdGlhbGl6aW5nLCByZWFzb24gfTtcbn1cblxuLy8g5bCGIGdldFBvZFN0YXR1cyDlvpfliLDnmoTlpJrnp43nirbmgIHmmKDlsITliLDmoIfnrb7nsbvlnotcbi8vIHJlZmVyZW5jZTogaHR0cHM6Ly9iaXRidWNrZXQub3JnL21hdGhpbGRldGVjaC9saW5rL3NyYy9jODExNjFmMDJmOTgxOTA0YjcxNjQ2MmEzMDVlMDk0MTRlNTYxN2QzL3NyYy9iYWNrZW5kL3Jlc291cmNlL2NvbW1vbi9wb2RpbmZvLmdvI2xpbmVzLTY4XG5leHBvcnQgZnVuY3Rpb24gZ2V0UG9kQWdncmVnYXRlZFN0YXR1cyhzdGF0dXM6IHN0cmluZyk6IFBvZFN0YXR1c0VudW0ge1xuICBpZiAoXG4gICAgc3RhdHVzLnNwbGl0KCc6JylbMF0gPT09ICdJbml0aW5nJyB8fFxuICAgIFtcbiAgICAgICdJbml0aW5nJyxcbiAgICAgICdQZW5kaW5nJyxcbiAgICAgICdQb2RJbml0aWFsaXppbmcnLFxuICAgICAgJ0NvbnRhaW5lckNyZWF0aW5nJyxcbiAgICAgICdUZXJtaW5hdGluZycsXG4gICAgXS5pbmNsdWRlcyhzdGF0dXMpXG4gICkge1xuICAgIHJldHVybiBQb2RTdGF0dXNFbnVtLnBlbmRpbmc7XG4gIH1cblxuICBpZiAoc3RhdHVzID09PSAnQ29tcGxldGVkJykge1xuICAgIHJldHVybiBQb2RTdGF0dXNFbnVtLmNvbXBsZXRlZDtcbiAgfVxuICBpZiAoc3RhdHVzID09PSAnUnVubmluZycpIHtcbiAgICByZXR1cm4gUG9kU3RhdHVzRW51bS5ydW5uaW5nO1xuICB9XG5cbiAgcmV0dXJuIFBvZFN0YXR1c0VudW0uZXJyb3I7XG59XG4iXX0=
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { K8S_ENV_VARIABLE_NAME } from './patterns';
|
|
2
|
+
export function envVarNameValidator(control) {
|
|
3
|
+
return !control.value ||
|
|
4
|
+
(K8S_ENV_VARIABLE_NAME.pattern.test(control.value) &&
|
|
5
|
+
!/^\.+$/.test(control.value))
|
|
6
|
+
? null
|
|
7
|
+
: {
|
|
8
|
+
envVarNamePattern: true,
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy93b3JrbG9hZC91dGlsLXNoYXJlZC9zcmMvbGliL3V0aWxzL3ZhbGlkYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFbkQsTUFBTSxVQUFVLG1CQUFtQixDQUFDLE9BQWdDO0lBQ2xFLE9BQU8sQ0FBQyxPQUFPLENBQUMsS0FBSztRQUNuQixDQUFDLHFCQUFxQixDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztZQUNoRCxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQy9CLENBQUMsQ0FBQyxJQUFJO1FBQ04sQ0FBQyxDQUFDO1lBQ0UsaUJBQWlCLEVBQUUsSUFBSTtTQUN4QixDQUFDO0FBQ1IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFic3RyYWN0Q29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgSzhTX0VOVl9WQVJJQUJMRV9OQU1FIH0gZnJvbSAnLi9wYXR0ZXJucyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBlbnZWYXJOYW1lVmFsaWRhdG9yKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbDxzdHJpbmc+KSB7XG4gIHJldHVybiAhY29udHJvbC52YWx1ZSB8fFxuICAgIChLOFNfRU5WX1ZBUklBQkxFX05BTUUucGF0dGVybi50ZXN0KGNvbnRyb2wudmFsdWUpICYmXG4gICAgICAhL15cXC4rJC8udGVzdChjb250cm9sLnZhbHVlKSlcbiAgICA/IG51bGxcbiAgICA6IHtcbiAgICAgICAgZW52VmFyTmFtZVBhdHRlcm46IHRydWUsXG4gICAgICB9O1xufVxuIl19
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { ActivatedRoute, } from '@angular/router';
|
|
2
|
+
export function parseWorkspace(workspace) {
|
|
3
|
+
const [project, cluster, namespace] = workspace.split('~');
|
|
4
|
+
return {
|
|
5
|
+
project,
|
|
6
|
+
cluster,
|
|
7
|
+
namespace,
|
|
8
|
+
};
|
|
9
|
+
}
|
|
10
|
+
export function stringifyWorkspace({ project, cluster, namespace, }) {
|
|
11
|
+
return `${project}~${cluster}~${namespace}`;
|
|
12
|
+
}
|
|
13
|
+
export function extractWorkspace(params) {
|
|
14
|
+
return params.get && params.get instanceof Function
|
|
15
|
+
? parseWorkspace(params.get('workspace'))
|
|
16
|
+
: parseWorkspace(params.workspace);
|
|
17
|
+
}
|
|
18
|
+
export function extractWorkspaceFromRoute(route) {
|
|
19
|
+
const snapshot = route instanceof ActivatedRoute ? route.snapshot : route;
|
|
20
|
+
return parseWorkspace(snapshot.paramMap.get('workspace'));
|
|
21
|
+
}
|
|
22
|
+
export function getHomeRedirectRoutePrefix(snapshot) {
|
|
23
|
+
return snapshot.queryParamMap.get('redirectTo') || 'workspace';
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya3NwYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy93b3JrbG9hZC91dGlsLXNoYXJlZC9zcmMvbGliL3V0aWxzL3dvcmtzcGFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsY0FBYyxHQUlmLE1BQU0saUJBQWlCLENBQUM7QUFZekIsTUFBTSxVQUFVLGNBQWMsQ0FBQyxTQUFpQjtJQUM5QyxNQUFNLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLENBQUMsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzNELE9BQU87UUFDTCxPQUFPO1FBQ1AsT0FBTztRQUNQLFNBQVM7S0FDVixDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxFQUNqQyxPQUFPLEVBQ1AsT0FBTyxFQUNQLFNBQVMsR0FDQztJQUNWLE9BQU8sR0FBRyxPQUFPLElBQUksT0FBTyxJQUFJLFNBQVMsRUFBRSxDQUFDO0FBQzlDLENBQUM7QUFFRCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsTUFBeUI7SUFDeEQsT0FBTyxNQUFNLENBQUMsR0FBRyxJQUFJLE1BQU0sQ0FBQyxHQUFHLFlBQVksUUFBUTtRQUNqRCxDQUFDLENBQUMsY0FBYyxDQUFFLE1BQW1CLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3ZELENBQUMsQ0FBQyxjQUFjLENBQUUsTUFBaUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUNuRCxDQUFDO0FBRUQsTUFBTSxVQUFVLHlCQUF5QixDQUN2QyxLQUE4QztJQUU5QyxNQUFNLFFBQVEsR0FBRyxLQUFLLFlBQVksY0FBYyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDMUUsT0FBTyxjQUFjLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztBQUM1RCxDQUFDO0FBRUQsTUFBTSxVQUFVLDBCQUEwQixDQUFDLFFBQWdDO0lBQ3pFLE9BQU8sUUFBUSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLElBQUksV0FBVyxDQUFDO0FBQ2pFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBY3RpdmF0ZWRSb3V0ZSxcbiAgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcbiAgUGFyYW1NYXAsXG4gIFBhcmFtcyxcbn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuZXhwb3J0IGludGVyZmFjZSBXb3Jrc3BhY2Uge1xuICBwcm9qZWN0OiBzdHJpbmc7XG4gIGNsdXN0ZXI6IHN0cmluZztcbiAgbmFtZXNwYWNlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVzb3VyY2VJZGVudGlmaWVyIGV4dGVuZHMgV29ya3NwYWNlIHtcbiAgbmFtZTogc3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VXb3Jrc3BhY2Uod29ya3NwYWNlOiBzdHJpbmcpOiBXb3Jrc3BhY2Uge1xuICBjb25zdCBbcHJvamVjdCwgY2x1c3RlciwgbmFtZXNwYWNlXSA9IHdvcmtzcGFjZS5zcGxpdCgnficpO1xuICByZXR1cm4ge1xuICAgIHByb2plY3QsXG4gICAgY2x1c3RlcixcbiAgICBuYW1lc3BhY2UsXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdHJpbmdpZnlXb3Jrc3BhY2Uoe1xuICBwcm9qZWN0LFxuICBjbHVzdGVyLFxuICBuYW1lc3BhY2UsXG59OiBXb3Jrc3BhY2UpOiBzdHJpbmcge1xuICByZXR1cm4gYCR7cHJvamVjdH1+JHtjbHVzdGVyfX4ke25hbWVzcGFjZX1gO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXh0cmFjdFdvcmtzcGFjZShwYXJhbXM6IFBhcmFtcyB8IFBhcmFtTWFwKSB7XG4gIHJldHVybiBwYXJhbXMuZ2V0ICYmIHBhcmFtcy5nZXQgaW5zdGFuY2VvZiBGdW5jdGlvblxuICAgID8gcGFyc2VXb3Jrc3BhY2UoKHBhcmFtcyBhcyBQYXJhbU1hcCkuZ2V0KCd3b3Jrc3BhY2UnKSlcbiAgICA6IHBhcnNlV29ya3NwYWNlKChwYXJhbXMgYXMgUGFyYW1zKS53b3Jrc3BhY2UpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXh0cmFjdFdvcmtzcGFjZUZyb21Sb3V0ZShcbiAgcm91dGU6IEFjdGl2YXRlZFJvdXRlIHwgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcbikge1xuICBjb25zdCBzbmFwc2hvdCA9IHJvdXRlIGluc3RhbmNlb2YgQWN0aXZhdGVkUm91dGUgPyByb3V0ZS5zbmFwc2hvdCA6IHJvdXRlO1xuICByZXR1cm4gcGFyc2VXb3Jrc3BhY2Uoc25hcHNob3QucGFyYW1NYXAuZ2V0KCd3b3Jrc3BhY2UnKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRIb21lUmVkaXJlY3RSb3V0ZVByZWZpeChzbmFwc2hvdDogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCkge1xuICByZXR1cm4gc25hcHNob3QucXVlcnlQYXJhbU1hcC5nZXQoJ3JlZGlyZWN0VG8nKSB8fCAnd29ya3NwYWNlJztcbn1cbiJdfQ==
|
package/index.d.ts
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { DisabledContainerComponent, KubernetesResource, TranslateService } from '@alauda-fe/common';
|
|
2
|
+
import { ChangeDetectorRef } from '@angular/core';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
/**
|
|
5
|
+
* @description acl-disabled-container 增强指令。
|
|
6
|
+
*
|
|
7
|
+
* 需要注意对 acl-disabled-container的副作用,一旦满足 isOam 的条件,禁用的 tip 会一直保留,并且优先级最高,除非数据源本身发生变化。
|
|
8
|
+
*/
|
|
9
|
+
export declare class OamResourceDisabledContainerDirective {
|
|
10
|
+
private readonly disabledContainer;
|
|
11
|
+
private readonly translate;
|
|
12
|
+
private readonly cdr;
|
|
13
|
+
rcIsOamDisabled: KubernetesResource;
|
|
14
|
+
constructor(disabledContainer: DisabledContainerComponent, translate: TranslateService, cdr: ChangeDetectorRef);
|
|
15
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<OamResourceDisabledContainerDirective, never>;
|
|
16
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<OamResourceDisabledContainerDirective, "acl-disabled-container[rcIsOamDisabled]", never, { "rcIsOamDisabled": { "alias": "rcIsOamDisabled"; "required": false; }; }, {}, never, never, true, never>;
|
|
17
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { AfterViewInit, Injector, OnDestroy } from '@angular/core';
|
|
2
|
+
import { AbstractControl } from '@angular/forms';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export declare class SyncControlDirective implements AfterViewInit, OnDestroy {
|
|
5
|
+
private readonly injector;
|
|
6
|
+
private readonly destroy$$;
|
|
7
|
+
constructor(injector: Injector);
|
|
8
|
+
ngOnDestroy(): void;
|
|
9
|
+
ngAfterViewInit(): void;
|
|
10
|
+
getControl(): AbstractControl;
|
|
11
|
+
private getDirective;
|
|
12
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<SyncControlDirective, never>;
|
|
13
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<SyncControlDirective, "[syncControl]", never, {}, {}, never, never, true, never>;
|
|
14
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { KubernetesResource } from '@alauda-fe/common';
|
|
2
|
+
import { PipeTransform } from '@angular/core';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export declare const isOamResource: <T extends KubernetesResource>(resource: T) => boolean;
|
|
5
|
+
export declare class isOamResourcePipe implements PipeTransform {
|
|
6
|
+
transform: <T extends KubernetesResource>(resource: T) => boolean;
|
|
7
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<isOamResourcePipe, never>;
|
|
8
|
+
static ɵpipe: i0.ɵɵPipeDeclaration<isOamResourcePipe, "rcIsOamResource", true>;
|
|
9
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { PipeTransform } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export declare class RangePipe implements PipeTransform {
|
|
4
|
+
transform(value: number): number[];
|
|
5
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<RangePipe, never>;
|
|
6
|
+
static ɵpipe: i0.ɵɵPipeDeclaration<RangePipe, "range", true>;
|
|
7
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { PipeTransform } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export declare class ShortNumPipe implements PipeTransform {
|
|
4
|
+
transform(value: string | number, digits?: number): string;
|
|
5
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ShortNumPipe, never>;
|
|
6
|
+
static ɵpipe: i0.ɵɵPipeDeclaration<ShortNumPipe, "shortNum", true>;
|
|
7
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { K8sApiService, K8sUtilService, ProductBase } from '@alauda-fe/common';
|
|
2
|
+
import { ClusterType } from '@alauda-fe/network';
|
|
3
|
+
import { ClusterModule, ResourceType } from '../typings';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export interface ClusterGlobalInfo {
|
|
6
|
+
chartMuseumURL: string;
|
|
7
|
+
clusterName: string;
|
|
8
|
+
clusterType: ClusterType;
|
|
9
|
+
globalClusterName: string;
|
|
10
|
+
labelBaseDomain: string;
|
|
11
|
+
oidcClientID: string;
|
|
12
|
+
oidcClientSecret: string;
|
|
13
|
+
oidcIssuer: string;
|
|
14
|
+
oidcResponseType: 'code';
|
|
15
|
+
oidcScopes: string;
|
|
16
|
+
platformHttpPort: string;
|
|
17
|
+
platformHttpsPort: string;
|
|
18
|
+
platformNodeSelector: string;
|
|
19
|
+
platformURL: string;
|
|
20
|
+
registryAddress: string;
|
|
21
|
+
systemAlbIngressClassName: string;
|
|
22
|
+
systemNamespace: string;
|
|
23
|
+
}
|
|
24
|
+
export declare class ClusterApiService {
|
|
25
|
+
private readonly k8sApi;
|
|
26
|
+
private readonly k8sUtil;
|
|
27
|
+
globalClusterVersion$: import("rxjs").Observable<ProductBase>;
|
|
28
|
+
private readonly globalInfoCache;
|
|
29
|
+
constructor(k8sApi: K8sApiService<ResourceType>, k8sUtil: K8sUtilService);
|
|
30
|
+
isClusterNonUpgraded(cluster: string | ClusterModule): import("rxjs").Observable<boolean>;
|
|
31
|
+
gteVersion(cluster: string | ClusterModule, version: string): import("rxjs").Observable<boolean>;
|
|
32
|
+
getGlobalInfo(cluster?: string): import("rxjs").Observable<ClusterGlobalInfo>;
|
|
33
|
+
getClusterType(cluster?: string): import("rxjs").Observable<ClusterType>;
|
|
34
|
+
isPublicCloud(cluster?: string): import("rxjs").Observable<boolean>;
|
|
35
|
+
getClusterArches(cluster?: string): import("rxjs").Observable<string[]>;
|
|
36
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ClusterApiService, never>;
|
|
37
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<ClusterApiService>;
|
|
38
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { KubernetesResource, KubernetesResourceList } from '@alauda-fe/common';
|
|
2
|
+
import { HttpClient } from '@angular/common/http';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export declare class FeatureGateApiService {
|
|
5
|
+
private readonly http;
|
|
6
|
+
constructor(http: HttpClient);
|
|
7
|
+
getGlobalGateList(): import("rxjs").Observable<KubernetesResourceList<FeatureGate>>;
|
|
8
|
+
getGlobalGate(name: string): import("rxjs").Observable<FeatureGate>;
|
|
9
|
+
getClusterGateList(cluster: string): import("rxjs").Observable<KubernetesResourceList<FeatureGate>>;
|
|
10
|
+
getClusterGate(cluster: string, name: string): import("rxjs").Observable<FeatureGate>;
|
|
11
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<FeatureGateApiService, never>;
|
|
12
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<FeatureGateApiService>;
|
|
13
|
+
}
|
|
14
|
+
export declare function toMap(items: FeatureGate[]): Record<string, boolean>;
|
|
15
|
+
export interface FeatureGate extends KubernetesResource {
|
|
16
|
+
spec: {
|
|
17
|
+
dependency: {
|
|
18
|
+
type: DependencyType;
|
|
19
|
+
featureGates: string[];
|
|
20
|
+
};
|
|
21
|
+
description: string;
|
|
22
|
+
enabled: boolean;
|
|
23
|
+
stage: FeatureStage;
|
|
24
|
+
};
|
|
25
|
+
status: {
|
|
26
|
+
enabled: boolean;
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
export declare enum DependencyType {
|
|
30
|
+
Any = "any",
|
|
31
|
+
All = "all"
|
|
32
|
+
}
|
|
33
|
+
export declare enum FeatureStage {
|
|
34
|
+
Alpha = "Alpha",
|
|
35
|
+
Beta = "Beta",
|
|
36
|
+
GA = "GA",
|
|
37
|
+
EOF = "EOF"
|
|
38
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { DialogService } from '@alauda/ui';
|
|
2
|
+
import { K8sApiService, TranslateService, Container, Pod, Workspace } from '@alauda-fe/common';
|
|
3
|
+
import { ExecInfo } from '../typings';
|
|
4
|
+
import { TerminalService } from './terminal.service';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export declare const DEBUG_CONTAINER_SUFFIX = "-debug";
|
|
7
|
+
export declare class PodUtilService {
|
|
8
|
+
private readonly dialog;
|
|
9
|
+
private readonly translate;
|
|
10
|
+
private readonly k8sApi;
|
|
11
|
+
private readonly terminal;
|
|
12
|
+
constructor(dialog: DialogService, translate: TranslateService, k8sApi: K8sApiService, terminal: TerminalService);
|
|
13
|
+
deletePod(pod: Pod, cluster: string): import("rxjs").Observable<Pod>;
|
|
14
|
+
handleExecInfo(pod: Pod, container: Container, baseParams: Workspace, data: ExecInfo): void;
|
|
15
|
+
handleDebugInfo(pod: Pod, container: Container, baseParams: Workspace): void;
|
|
16
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<PodUtilService, never>;
|
|
17
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<PodUtilService>;
|
|
18
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { K8sApiService, K8sUtilService, StringMap, LimitRange, Workspace, ResourceType, ResourceRequirements } from '@alauda-fe/common';
|
|
2
|
+
import { Observable } from 'rxjs';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export declare class ResourceQuotaUtilService {
|
|
5
|
+
private readonly k8sUtil;
|
|
6
|
+
private readonly k8sApi;
|
|
7
|
+
private readonly limitRange$Cache;
|
|
8
|
+
private readonly resourceQuota$Cache;
|
|
9
|
+
constructor(k8sUtil: K8sUtilService, k8sApi: K8sApiService<ResourceType>);
|
|
10
|
+
getLimitRange$({ cluster, namespace, }: {
|
|
11
|
+
cluster: string;
|
|
12
|
+
namespace: string;
|
|
13
|
+
}): Observable<LimitRange>;
|
|
14
|
+
getAvailableCustomResourceKeysInNodes(workspace: Workspace): Observable<string[]>;
|
|
15
|
+
getResourceQuota$({ cluster, namespace }: Workspace): Observable<{
|
|
16
|
+
resourceQuota: ResourceRequirements;
|
|
17
|
+
customResourceConfigs: StringMap[];
|
|
18
|
+
}>;
|
|
19
|
+
deleteCache({ cluster, namespace }: {
|
|
20
|
+
cluster: string;
|
|
21
|
+
namespace: string;
|
|
22
|
+
}): void;
|
|
23
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ResourceQuotaUtilService, never>;
|
|
24
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<ResourceQuotaUtilService>;
|
|
25
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { K8sPermissionService, K8sResourceAction } from '@alauda-fe/common';
|
|
2
|
+
import { HttpParamsOptions } from '@angular/common/http';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export declare class TerminalService {
|
|
5
|
+
private readonly k8sPermission;
|
|
6
|
+
private readonly appBaseHref;
|
|
7
|
+
constructor(k8sPermission: K8sPermissionService, appBaseHref: string);
|
|
8
|
+
getPermissions({ cluster, namespace, }: {
|
|
9
|
+
cluster: string;
|
|
10
|
+
namespace: string;
|
|
11
|
+
}): import("rxjs").Observable<Record<K8sResourceAction.CREATE, boolean>>;
|
|
12
|
+
openTerminal(queryParams: HttpParamsOptions['fromObject'], module?: 'terminal' | 'vnc'): void;
|
|
13
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<TerminalService, never>;
|
|
14
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<TerminalService>;
|
|
15
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export interface AccountInfo {
|
|
2
|
+
iss?: string;
|
|
3
|
+
sub?: string;
|
|
4
|
+
aud?: string;
|
|
5
|
+
exp?: number;
|
|
6
|
+
iat?: number;
|
|
7
|
+
azp?: string;
|
|
8
|
+
at_hash?: string;
|
|
9
|
+
email?: string;
|
|
10
|
+
email_verified?: true;
|
|
11
|
+
name?: string;
|
|
12
|
+
token?: string;
|
|
13
|
+
ext?: {
|
|
14
|
+
is_admin?: boolean;
|
|
15
|
+
conn_id?: boolean;
|
|
16
|
+
};
|
|
17
|
+
}
|