@alauda-fe/storage 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.
Files changed (44) hide show
  1. package/esm2022/alauda-fe-storage.mjs +5 -0
  2. package/esm2022/index.mjs +23 -0
  3. package/esm2022/lib/components/pvc-delete-dialog/component.mjs +292 -0
  4. package/esm2022/lib/components/pvc-expand-capacity-dialog/component.mjs +193 -0
  5. package/esm2022/lib/components/pvc-form/component.mjs +674 -0
  6. package/esm2022/lib/components/rebuild-volume-dialog/component.mjs +251 -0
  7. package/esm2022/lib/components/source-link/component.mjs +81 -0
  8. package/esm2022/lib/components/spec-form/component.mjs +464 -0
  9. package/esm2022/lib/components/storage-feature-tags/component.mjs +146 -0
  10. package/esm2022/lib/components/storageclass-select/component.mjs +179 -0
  11. package/esm2022/lib/pipes/actual-capacity.pipe.mjs +17 -0
  12. package/esm2022/lib/services/common-util.service.mjs +163 -0
  13. package/esm2022/lib/services/pvc-util.service.mjs +416 -0
  14. package/esm2022/lib/types/commons.mjs +75 -0
  15. package/esm2022/lib/types/internal.mjs +7 -0
  16. package/esm2022/lib/types/k8s.mjs +2 -0
  17. package/esm2022/lib/types/resource-definition.mjs +13 -0
  18. package/esm2022/lib/types/resource-exports.mjs +8 -0
  19. package/esm2022/lib/types/resource-internals.mjs +2 -0
  20. package/esm2022/lib/utils/constants.mjs +202 -0
  21. package/esm2022/lib/utils/resource-exports.mjs +65 -0
  22. package/esm2022/lib/utils/util.mjs +132 -0
  23. package/index.d.ts +17 -0
  24. package/lib/components/pvc-delete-dialog/component.d.ts +33 -0
  25. package/lib/components/pvc-expand-capacity-dialog/component.d.ts +36 -0
  26. package/lib/components/pvc-form/component.d.ts +106 -0
  27. package/lib/components/rebuild-volume-dialog/component.d.ts +28 -0
  28. package/lib/components/source-link/component.d.ts +17 -0
  29. package/lib/components/spec-form/component.d.ts +71 -0
  30. package/lib/components/storage-feature-tags/component.d.ts +25 -0
  31. package/lib/components/storageclass-select/component.d.ts +26 -0
  32. package/lib/pipes/actual-capacity.pipe.d.ts +8 -0
  33. package/lib/services/common-util.service.d.ts +48 -0
  34. package/lib/services/pvc-util.service.d.ts +130 -0
  35. package/lib/types/commons.d.ts +85 -0
  36. package/lib/types/internal.d.ts +4 -0
  37. package/lib/types/k8s.d.ts +105 -0
  38. package/lib/types/resource-definition.d.ts +18 -0
  39. package/lib/types/resource-exports.d.ts +16 -0
  40. package/lib/types/resource-internals.d.ts +20 -0
  41. package/lib/utils/constants.d.ts +37 -0
  42. package/lib/utils/resource-exports.d.ts +12 -0
  43. package/lib/utils/util.d.ts +19 -0
  44. package/package.json +38 -0
@@ -0,0 +1,202 @@
1
+ import { AccessMode, GenericStatusColor, GenericStatusIcon, VolumeMode, } from '@alauda-fe/common';
2
+ import { StorageProvisioner, StorageType, StorageclassFeature, } from '../types/commons';
3
+ import { StorageProvider } from '../types/internal';
4
+ export const AccessModeTranslateKey = {
5
+ [AccessMode.RWO]: 'single_node_read_write',
6
+ [AccessMode.ROX]: 'multi_nodes_read_only',
7
+ [AccessMode.RWX]: 'multi_nodes_read_write',
8
+ };
9
+ export const VolumeModeTranslateKey = {
10
+ [VolumeMode.FILE_SYSTEM]: 'file_system',
11
+ [VolumeMode.BLOCK_DEVICE]: 'block_device',
12
+ };
13
+ export const IS_DEFAULT_STORAGECLASS_ANNOTATION = 'storageclass.kubernetes.io/is-default-class';
14
+ export const RESERVED_STORAGECLASS_NAMES = [
15
+ 'alauda-system-gfs',
16
+ 'alauda-system-ebs',
17
+ ];
18
+ export const CSI_TOP_SNAPSHOTCLASS_NAME = 'csi-topolvm-snapshotclass';
19
+ export const CSI_CEPHFS_SNAPSHOTCLASS_NAME = 'csi-cephfs-snapshotclass';
20
+ export const CSI_RBD_SNAPSHOTCLASS_NAME = 'csi-rbd-snapshotclass';
21
+ export const OBJECT_STORAGE_FEATURE_GATE = 'object-storage';
22
+ const TOPOLVM_CLUSTER_FEATURE_GATE = 'acp-topolvm';
23
+ const HUAWEI_CSI_FEATURE_GATE = 'huawei-csi';
24
+ const NFS_CSI_FEATURE_GATE = 'nfs-csi';
25
+ const STORAGE_CEPH_FEATURE_GATE = 'storage-ceph';
26
+ export const STORAGE_OPTION_MAP = {
27
+ [StorageProvisioner.CEPH_FS_INTERNAL]: {
28
+ provisioner: StorageProvisioner.CEPH_FS_INTERNAL,
29
+ clusterGate: STORAGE_CEPH_FEATURE_GATE,
30
+ provider: StorageProvider.PLATFORM,
31
+ type: StorageType.FILE_STORAGE,
32
+ display: {
33
+ en: 'CephFS File Storage',
34
+ zh: 'CephFS 文件存储',
35
+ },
36
+ accessModes: [AccessMode.RWO, AccessMode.RWX],
37
+ snapshotAccessModes: [AccessMode.ROX, AccessMode.RWO, AccessMode.RWX],
38
+ features: [StorageclassFeature.SNAPSHOT, StorageclassFeature.EXPANSION],
39
+ volumeModes: [VolumeMode.FILE_SYSTEM],
40
+ },
41
+ [StorageProvisioner.CEPH_FS_RBD]: {
42
+ provisioner: StorageProvisioner.CEPH_FS_RBD,
43
+ clusterGate: STORAGE_CEPH_FEATURE_GATE,
44
+ provider: StorageProvider.PLATFORM,
45
+ type: StorageType.BLOCK_STORAGE,
46
+ display: {
47
+ en: 'CephRBD Block Storage',
48
+ zh: 'CephRBD 块存储',
49
+ },
50
+ accessModes: [AccessMode.RWO],
51
+ snapshotAccessModes: [AccessMode.RWO],
52
+ features: [StorageclassFeature.SNAPSHOT, StorageclassFeature.EXPANSION],
53
+ volumeModes: [VolumeMode.FILE_SYSTEM, VolumeMode.BLOCK_DEVICE],
54
+ },
55
+ [StorageProvisioner.CEPH_OBJECT]: {
56
+ provisioner: StorageProvisioner.CEPH_OBJECT,
57
+ clusterGate: OBJECT_STORAGE_FEATURE_GATE,
58
+ provider: StorageProvider.PLATFORM,
59
+ type: StorageType.OBJECT_STORAGE,
60
+ display: {
61
+ en: 'CephObject Distributed Storage',
62
+ zh: 'CephObject 分布式存储',
63
+ },
64
+ accessModes: [],
65
+ features: [StorageclassFeature.EXPANSION],
66
+ volumeModes: [],
67
+ disabled: true, // TODO: 存储桶需求不允许创建,后续下线该存储类
68
+ },
69
+ [StorageProvisioner.CEPH_COSI]: {
70
+ provisioner: StorageProvisioner.CEPH_COSI,
71
+ clusterGate: 'cosi',
72
+ module: 'cosi',
73
+ provider: StorageProvider.PLATFORM,
74
+ type: StorageType.OBJECT_STORAGE,
75
+ display: {
76
+ en: 'Ceph Object Storage',
77
+ zh: 'Ceph 对象存储',
78
+ },
79
+ accessModes: [],
80
+ features: [],
81
+ volumeModes: [],
82
+ },
83
+ [StorageProvisioner.MINIO]: {
84
+ provisioner: StorageProvisioner.MINIO,
85
+ clusterGate: 'cosi',
86
+ module: 'cosi',
87
+ provider: StorageProvider.PLATFORM,
88
+ type: StorageType.OBJECT_STORAGE,
89
+ display: {
90
+ en: 'MinIO Object Storage',
91
+ zh: 'MinIO 对象存储',
92
+ },
93
+ accessModes: [],
94
+ features: [],
95
+ volumeModes: [],
96
+ },
97
+ [StorageProvisioner.CEPH_FS]: {
98
+ provisioner: StorageProvisioner.CEPH_FS,
99
+ provider: StorageProvider.THIRD_PARTY,
100
+ type: StorageType.FILE_STORAGE,
101
+ display: {
102
+ en: 'CephFS',
103
+ zh: 'CephFS',
104
+ },
105
+ accessModes: [AccessMode.RWO, AccessMode.RWX, AccessMode.ROX],
106
+ features: [],
107
+ volumeModes: [VolumeMode.FILE_SYSTEM],
108
+ disabled: true,
109
+ },
110
+ [StorageProvisioner.TOPOLVM]: {
111
+ provisioner: StorageProvisioner.TOPOLVM,
112
+ clusterGate: TOPOLVM_CLUSTER_FEATURE_GATE,
113
+ provider: StorageProvider.PLATFORM,
114
+ type: StorageType.BLOCK_STORAGE,
115
+ display: {
116
+ en: 'TopoLVM',
117
+ zh: 'TopoLVM',
118
+ },
119
+ accessModes: [AccessMode.RWO],
120
+ snapshotAccessModes: [AccessMode.RWO],
121
+ features: [StorageclassFeature.SNAPSHOT, StorageclassFeature.EXPANSION],
122
+ volumeModes: [VolumeMode.FILE_SYSTEM, VolumeMode.BLOCK_DEVICE],
123
+ },
124
+ [StorageProvisioner.NFS]: {
125
+ provisioner: StorageProvisioner.NFS,
126
+ provider: StorageProvider.THIRD_PARTY,
127
+ type: StorageType.FILE_STORAGE,
128
+ display: {
129
+ en: 'NFS',
130
+ zh: 'NFS',
131
+ },
132
+ accessModes: [AccessMode.RWO, AccessMode.RWX, AccessMode.ROX],
133
+ features: [],
134
+ volumeModes: [VolumeMode.FILE_SYSTEM],
135
+ disabled: true,
136
+ },
137
+ [StorageProvisioner.HUAWEI_CSI]: {
138
+ provisioner: StorageProvisioner.HUAWEI_CSI,
139
+ provider: StorageProvider.THIRD_PARTY,
140
+ clusterGate: HUAWEI_CSI_FEATURE_GATE,
141
+ display: {
142
+ en: 'OceanStor Pacific',
143
+ zh: 'OceanStor Pacific',
144
+ },
145
+ accessModes: [AccessMode.RWO, AccessMode.RWX, AccessMode.ROX],
146
+ snapshotAccessModes: [AccessMode.RWO, AccessMode.RWX, AccessMode.ROX],
147
+ features: [StorageclassFeature.SNAPSHOT, StorageclassFeature.EXPANSION],
148
+ volumeModes: [VolumeMode.FILE_SYSTEM, VolumeMode.BLOCK_DEVICE],
149
+ supportTypes: [StorageType.FILE_STORAGE, StorageType.BLOCK_STORAGE],
150
+ },
151
+ [StorageProvisioner.NFS_CSI]: {
152
+ provisioner: StorageProvisioner.NFS_CSI,
153
+ provider: StorageProvider.THIRD_PARTY,
154
+ type: StorageType.FILE_STORAGE,
155
+ clusterGate: NFS_CSI_FEATURE_GATE,
156
+ display: {
157
+ en: 'NFS CSI',
158
+ zh: 'NFS 共享存储',
159
+ },
160
+ accessModes: [AccessMode.RWO, AccessMode.RWX],
161
+ features: [],
162
+ volumeModes: [VolumeMode.FILE_SYSTEM],
163
+ },
164
+ [StorageProvisioner.CSTOR_CSI]: {
165
+ provisioner: StorageProvisioner.CSTOR_CSI,
166
+ provider: StorageProvider.THIRD_PARTY,
167
+ type: StorageType.BLOCK_STORAGE,
168
+ accessModes: [AccessMode.RWO],
169
+ features: [StorageclassFeature.SNAPSHOT, StorageclassFeature.EXPANSION],
170
+ volumeModes: [VolumeMode.FILE_SYSTEM, VolumeMode.BLOCK_DEVICE],
171
+ disabled: true,
172
+ },
173
+ };
174
+ // 对于第三方 provider 的支持的 accessModes 和 volumeModes 不再做限制
175
+ export const STORAGECLASS_UNKNOWN = {
176
+ provisioner: null,
177
+ provider: StorageProvider.THIRD_PARTY,
178
+ type: null,
179
+ accessModes: [AccessMode.RWO, AccessMode.RWX, AccessMode.ROX],
180
+ features: [],
181
+ volumeModes: [VolumeMode.FILE_SYSTEM, VolumeMode.BLOCK_DEVICE],
182
+ };
183
+ export var VolumeSnapshotStatus;
184
+ (function (VolumeSnapshotStatus) {
185
+ VolumeSnapshotStatus["CREATING"] = "creating";
186
+ VolumeSnapshotStatus["AVAILABLE"] = "available";
187
+ VolumeSnapshotStatus["MALFUNCTION"] = "malfunction";
188
+ VolumeSnapshotStatus["DELETING"] = "deleting";
189
+ })(VolumeSnapshotStatus || (VolumeSnapshotStatus = {}));
190
+ export const VolumeSnapshotStatusColorMapper = {
191
+ [VolumeSnapshotStatus.CREATING]: GenericStatusColor.Pending,
192
+ [VolumeSnapshotStatus.AVAILABLE]: GenericStatusColor.Succeeded,
193
+ [VolumeSnapshotStatus.MALFUNCTION]: GenericStatusColor.Failed,
194
+ [VolumeSnapshotStatus.DELETING]: GenericStatusColor.Warning,
195
+ };
196
+ export const VolumeSnapshotStatusIconMapper = {
197
+ [VolumeSnapshotStatus.CREATING]: GenericStatusIcon.Pending,
198
+ [VolumeSnapshotStatus.AVAILABLE]: GenericStatusIcon.Check,
199
+ [VolumeSnapshotStatus.MALFUNCTION]: GenericStatusIcon.Warning,
200
+ [VolumeSnapshotStatus.DELETING]: GenericStatusIcon.Deleting,
201
+ };
202
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy9zdG9yYWdlL3NyYy9saWIvdXRpbHMvY29uc3RhbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxVQUFVLEVBQ1Ysa0JBQWtCLEVBQ2xCLGlCQUFpQixFQUNqQixVQUFVLEdBQ1gsTUFBTSxtQkFBbUIsQ0FBQztBQUUzQixPQUFPLEVBRUwsa0JBQWtCLEVBQ2xCLFdBQVcsRUFDWCxtQkFBbUIsR0FDcEIsTUFBTSxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFcEQsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUc7SUFDcEMsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsd0JBQXdCO0lBQzFDLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFLHVCQUF1QjtJQUN6QyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSx3QkFBd0I7Q0FDM0MsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHO0lBQ3BDLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxFQUFFLGFBQWE7SUFDdkMsQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLEVBQUUsY0FBYztDQUMxQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sa0NBQWtDLEdBQzdDLDZDQUE2QyxDQUFDO0FBRWhELE1BQU0sQ0FBQyxNQUFNLDJCQUEyQixHQUFHO0lBQ3pDLG1CQUFtQjtJQUNuQixtQkFBbUI7Q0FDcEIsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLDBCQUEwQixHQUFHLDJCQUEyQixDQUFDO0FBQ3RFLE1BQU0sQ0FBQyxNQUFNLDZCQUE2QixHQUFHLDBCQUEwQixDQUFDO0FBQ3hFLE1BQU0sQ0FBQyxNQUFNLDBCQUEwQixHQUFHLHVCQUF1QixDQUFDO0FBQ2xFLE1BQU0sQ0FB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UTtDQUM1RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWNjZXNzTW9kZSxcbiAgR2VuZXJpY1N0YXR1c0NvbG9yLFxuICBHZW5lcmljU3RhdHVzSWNvbixcbiAgVm9sdW1lTW9kZSxcbn0gZnJvbSAnQGFsYXVkYS1mZS9jb21tb24nO1xuXG5pbXBvcnQge1xuICBTdG9yYWdlT3B0aW9uLFxuICBTdG9yYWdlUHJvdmlzaW9uZXIsXG4gIFN0b3JhZ2VUeXBlLFxuICBTdG9yYWdlY2xhc3NGZWF0dXJlLFxufSBmcm9tICcuLi90eXBlcy9jb21tb25zJztcbmltcG9ydCB7IFN0b3JhZ2VQcm92aWRlciB9IGZyb20gJy4uL3R5cGVzL2ludGVybmFsJztcblxuZXhwb3J0IGNvbnN0IEFjY2Vzc01vZGVUcmFuc2xhdGVLZXkgPSB7XG4gIFtBY2Nlc3NNb2RlLlJXT106ICdzaW5nbGVfbm9kZV9yZWFkX3dyaXRlJyxcbiAgW0FjY2Vzc01vZGUuUk9YXTogJ211bHRpX25vZGVzX3JlYWRfb25seScsXG4gIFtBY2Nlc3NNb2RlLlJXWF06ICdtdWx0aV9ub2Rlc19yZWFkX3dyaXRlJyxcbn07XG5cbmV4cG9ydCBjb25zdCBWb2x1bWVNb2RlVHJhbnNsYXRlS2V5ID0ge1xuICBbVm9sdW1lTW9kZS5GSUxFX1NZU1RFTV06ICdmaWxlX3N5c3RlbScsXG4gIFtWb2x1bWVNb2RlLkJMT0NLX0RFVklDRV06ICdibG9ja19kZXZpY2UnLFxufTtcblxuZXhwb3J0IGNvbnN0IElTX0RFRkFVTFRfU1RPUkFHRUNMQVNTX0FOTk9UQVRJT04gPVxuICAnc3RvcmFnZWNsYXNzLmt1YmVybmV0ZXMuaW8vaXMtZGVmYXVsdC1jbGFzcyc7XG5cbmV4cG9ydCBjb25zdCBSRVNFUlZFRF9TVE9SQUdFQ0xBU1NfTkFNRVMgPSBbXG4gICdhbGF1ZGEtc3lzdGVtLWdmcycsXG4gICdhbGF1ZGEtc3lzdGVtLWVicycsXG5dO1xuXG5leHBvcnQgY29uc3QgQ1NJX1RPUF9TTkFQU0hPVENMQVNTX05BTUUgPSAnY3NpLXRvcG9sdm0tc25hcHNob3RjbGFzcyc7XG5leHBvcnQgY29uc3QgQ1NJX0NFUEhGU19TTkFQU0hPVENMQVNTX05BTUUgPSAnY3NpLWNlcGhmcy1zbmFwc2hvdGNsYXNzJztcbmV4cG9ydCBjb25zdCBDU0lfUkJEX1NOQVBTSE9UQ0xBU1NfTkFNRSA9ICdjc2ktcmJkLXNuYXBzaG90Y2xhc3MnO1xuZXhwb3J0IGNvbnN0IE9CSkVDVF9TVE9SQUdFX0ZFQVRVUkVfR0FURSA9ICdvYmplY3Qtc3RvcmFnZSc7XG5cbmNvbnN0IFRPUE9MVk1fQ0xVU1RFUl9GRUFUVVJFX0dBVEUgPSAnYWNwLXRvcG9sdm0nO1xuY29uc3QgSFVBV0VJX0NTSV9GRUFUVVJFX0dBVEUgPSAnaHVhd2VpLWNzaSc7XG5jb25zdCBORlNfQ1NJX0ZFQVRVUkVfR0FURSA9ICduZnMtY3NpJztcbmNvbnN0IFNUT1JBR0VfQ0VQSF9GRUFUVVJFX0dBVEUgPSAnc3RvcmFnZS1jZXBoJztcblxuZXhwb3J0IGNvbnN0IFNUT1JBR0VfT1BUSU9OX01BUDogUmVjb3JkPFN0b3JhZ2VQcm92aXNpb25lciwgU3RvcmFnZU9wdGlvbj4gPSB7XG4gIFtTdG9yYWdlUHJvdmlzaW9uZXIuQ0VQSF9GU19JTlRFUk5BTF06IHtcbiAgICBwcm92aXNpb25lcjogU3RvcmFnZVByb3Zpc2lvbmVyLkNFUEhfRlNfSU5URVJOQUwsXG4gICAgY2x1c3RlckdhdGU6IFNUT1JBR0VfQ0VQSF9GRUFUVVJFX0dBVEUsXG4gICAgcHJvdmlkZXI6IFN0b3JhZ2VQcm92aWRlci5QTEFURk9STSxcbiAgICB0eXBlOiBTdG9yYWdlVHlwZS5GSUxFX1NUT1JBR0UsXG4gICAgZGlzcGxheToge1xuICAgICAgZW46ICdDZXBoRlMgRmlsZSBTdG9yYWdlJyxcbiAgICAgIHpoOiAnQ2VwaEZTIOaWh+S7tuWtmOWCqCcsXG4gICAgfSxcbiAgICBhY2Nlc3NNb2RlczogW0FjY2Vzc01vZGUuUldPLCBBY2Nlc3NNb2RlLlJXWF0sXG4gICAgc25hcHNob3RBY2Nlc3NNb2RlczogW0FjY2Vzc01vZGUuUk9YLCBBY2Nlc3NNb2RlLlJXTywgQWNjZXNzTW9kZS5SV1hdLFxuICAgIGZlYXR1cmVzOiBbU3RvcmFnZWNsYXNzRmVhdHVyZS5TTkFQU0hPVCwgU3RvcmFnZWNsYXNzRmVhdHVyZS5FWFBBTlNJT05dLFxuICAgIHZvbHVtZU1vZGVzOiBbVm9sdW1lTW9kZS5GSUxFX1NZU1RFTV0sXG4gIH0sXG4gIFtTdG9yYWdlUHJvdmlzaW9uZXIuQ0VQSF9GU19SQkRdOiB7XG4gICAgcHJvdmlzaW9uZXI6IFN0b3JhZ2VQcm92aXNpb25lci5DRVBIX0ZTX1JCRCxcbiAgICBjbHVzdGVyR2F0ZTogU1RPUkFHRV9DRVBIX0ZFQVRVUkVfR0FURSxcbiAgICBwcm92aWRlcjogU3RvcmFnZVByb3ZpZGVyLlBMQVRGT1JNLFxuICAgIHR5cGU6IFN0b3JhZ2VUeXBlLkJMT0NLX1NUT1JBR0UsXG4gICAgZGlzcGxheToge1xuICAgICAgZW46ICdDZXBoUkJEIEJsb2NrIFN0b3JhZ2UnLFxuICAgICAgemg6ICdDZXBoUkJEIOWdl+WtmOWCqCcsXG4gICAgfSxcbiAgICBhY2Nlc3NNb2RlczogW0FjY2Vzc01vZGUuUldPXSxcbiAgICBzbmFwc2hvdEFjY2Vzc01vZGVzOiBbQWNjZXNzTW9kZS5SV09dLFxuICAgIGZlYXR1cmVzOiBbU3RvcmFnZWNsYXNzRmVhdHVyZS5TTkFQU0hPVCwgU3RvcmFnZWNsYXNzRmVhdHVyZS5FWFBBTlNJT05dLFxuICAgIHZvbHVtZU1vZGVzOiBbVm9sdW1lTW9kZS5GSUxFX1NZU1RFTSwgVm9sdW1lTW9kZS5CTE9DS19ERVZJQ0VdLFxuICB9LFxuICBbU3RvcmFnZVByb3Zpc2lvbmVyLkNFUEhfT0JKRUNUXToge1xuICAgIHByb3Zpc2lvbmVyOiBTdG9yYWdlUHJvdmlzaW9uZXIuQ0VQSF9PQkpFQ1QsXG4gICAgY2x1c3RlckdhdGU6IE9CSkVDVF9TVE9SQUdFX0ZFQVRVUkVfR0FURSxcbiAgICBwcm92aWRlcjogU3RvcmFnZVByb3ZpZGVyLlBMQVRGT1JNLFxuICAgIHR5cGU6IFN0b3JhZ2VUeXBlLk9CSkVDVF9TVE9SQUdFLFxuICAgIGRpc3BsYXk6IHtcbiAgICAgIGVuOiAnQ2VwaE9iamVjdCBEaXN0cmlidXRlZCBTdG9yYWdlJyxcbiAgICAgIHpoOiAnQ2VwaE9iamVjdCDliIbluIPlvI/lrZjlgqgnLFxuICAgIH0sXG4gICAgYWNjZXNzTW9kZXM6IFtdLFxuICAgIGZlYXR1cmVzOiBbU3RvcmFnZWNsYXNzRmVhdHVyZS5FWFBBTlNJT05dLFxuICAgIHZvbHVtZU1vZGVzOiBbXSxcbiAgICBkaXNhYmxlZDogdHJ1ZSwgLy8gVE9ETzog5a2Y5YKo5qG26ZyA5rGC5LiN5YWB6K645Yib5bu677yM5ZCO57ut5LiL57q/6K+l5a2Y5YKo57G7XG4gIH0sXG4gIFtTdG9yYWdlUHJvdmlzaW9uZXIuQ0VQSF9DT1NJXToge1xuICAgIHByb3Zpc2lvbmVyOiBTdG9yYWdlUHJvdmlzaW9uZXIuQ0VQSF9DT1NJLFxuICAgIGNsdXN0ZXJHYXRlOiAnY29zaScsXG4gICAgbW9kdWxlOiAnY29zaScsXG4gICAgcHJvdmlkZXI6IFN0b3JhZ2VQcm92aWRlci5QTEFURk9STSxcbiAgICB0eXBlOiBTdG9yYWdlVHlwZS5PQkpFQ1RfU1RPUkFHRSxcbiAgICBkaXNwbGF5OiB7XG4gICAgICBlbjogJ0NlcGggT2JqZWN0IFN0b3JhZ2UnLFxuICAgICAgemg6ICdDZXBoIOWvueixoeWtmOWCqCcsXG4gICAgfSxcbiAgICBhY2Nlc3NNb2RlczogW10sXG4gICAgZmVhdHVyZXM6IFtdLFxuICAgIHZvbHVtZU1vZGVzOiBbXSxcbiAgfSxcbiAgW1N0b3JhZ2VQcm92aXNpb25lci5NSU5JT106IHtcbiAgICBwcm92aXNpb25lcjogU3RvcmFnZVByb3Zpc2lvbmVyLk1JTklPLFxuICAgIGNsdXN0ZXJHYXRlOiAnY29zaScsXG4gICAgbW9kdWxlOiAnY29zaScsXG4gICAgcHJvdmlkZXI6IFN0b3JhZ2VQcm92aWRlci5QTEFURk9STSxcbiAgICB0eXBlOiBTdG9yYWdlVHlwZS5PQkpFQ1RfU1RPUkFHRSxcbiAgICBkaXNwbGF5OiB7XG4gICAgICBlbjogJ01pbklPIE9iamVjdCBTdG9yYWdlJyxcbiAgICAgIHpoOiAnTWluSU8g5a+56LGh5a2Y5YKoJyxcbiAgICB9LFxuICAgIGFjY2Vzc01vZGVzOiBbXSxcbiAgICBmZWF0dXJlczogW10sXG4gICAgdm9sdW1lTW9kZXM6IFtdLFxuICB9LFxuICBbU3RvcmFnZVByb3Zpc2lvbmVyLkNFUEhfRlNdOiB7XG4gICAgcHJvdmlzaW9uZXI6IFN0b3JhZ2VQcm92aXNpb25lci5DRVBIX0ZTLFxuICAgIHByb3ZpZGVyOiBTdG9yYWdlUHJvdmlkZXIuVEhJUkRfUEFSVFksXG4gICAgdHlwZTogU3RvcmFnZVR5cGUuRklMRV9TVE9SQUdFLFxuICAgIGRpc3BsYXk6IHtcbiAgICAgIGVuOiAnQ2VwaEZTJyxcbiAgICAgIHpoOiAnQ2VwaEZTJyxcbiAgICB9LFxuICAgIGFjY2Vzc01vZGVzOiBbQWNjZXNzTW9kZS5SV08sIEFjY2Vzc01vZGUuUldYLCBBY2Nlc3NNb2RlLlJPWF0sXG4gICAgZmVhdHVyZXM6IFtdLFxuICAgIHZvbHVtZU1vZGVzOiBbVm9sdW1lTW9kZS5GSUxFX1NZU1RFTV0sXG4gICAgZGlzYWJsZWQ6IHRydWUsXG4gIH0sXG4gIFtTdG9yYWdlUHJvdmlzaW9uZXIuVE9QT0xWTV06IHtcbiAgICBwcm92aXNpb25lcjogU3RvcmFnZVByb3Zpc2lvbmVyLlRPUE9MVk0sXG4gICAgY2x1c3RlckdhdGU6IFRPUE9MVk1fQ0xVU1RFUl9GRUFUVVJFX0dBVEUsXG4gICAgcHJvdmlkZXI6IFN0b3JhZ2VQcm92aWRlci5QTEFURk9STSxcbiAgICB0eXBlOiBTdG9yYWdlVHlwZS5CTE9DS19TVE9SQUdFLFxuICAgIGRpc3BsYXk6IHtcbiAgICAgIGVuOiAnVG9wb0xWTScsXG4gICAgICB6aDogJ1RvcG9MVk0nLFxuICAgIH0sXG4gICAgYWNjZXNzTW9kZXM6IFtBY2Nlc3NNb2RlLlJXT10sXG4gICAgc25hcHNob3RBY2Nlc3NNb2RlczogW0FjY2Vzc01vZGUuUldPXSxcbiAgICBmZWF0dXJlczogW1N0b3JhZ2VjbGFzc0ZlYXR1cmUuU05BUFNIT1QsIFN0b3JhZ2VjbGFzc0ZlYXR1cmUuRVhQQU5TSU9OXSxcbiAgICB2b2x1bWVNb2RlczogW1ZvbHVtZU1vZGUuRklMRV9TWVNURU0sIFZvbHVtZU1vZGUuQkxPQ0tfREVWSUNFXSxcbiAgfSxcbiAgW1N0b3JhZ2VQcm92aXNpb25lci5ORlNdOiB7XG4gICAgcHJvdmlzaW9uZXI6IFN0b3JhZ2VQcm92aXNpb25lci5ORlMsXG4gICAgcHJvdmlkZXI6IFN0b3JhZ2VQcm92aWRlci5USElSRF9QQVJUWSxcbiAgICB0eXBlOiBTdG9yYWdlVHlwZS5GSUxFX1NUT1JBR0UsXG4gICAgZGlzcGxheToge1xuICAgICAgZW46ICdORlMnLFxuICAgICAgemg6ICdORlMnLFxuICAgIH0sXG4gICAgYWNjZXNzTW9kZXM6IFtBY2Nlc3NNb2RlLlJXTywgQWNjZXNzTW9kZS5SV1gsIEFjY2Vzc01vZGUuUk9YXSxcbiAgICBmZWF0dXJlczogW10sXG4gICAgdm9sdW1lTW9kZXM6IFtWb2x1bWVNb2RlLkZJTEVfU1lTVEVNXSxcbiAgICBkaXNhYmxlZDogdHJ1ZSxcbiAgfSxcbiAgW1N0b3JhZ2VQcm92aXNpb25lci5IVUFXRUlfQ1NJXToge1xuICAgIHByb3Zpc2lvbmVyOiBTdG9yYWdlUHJvdmlzaW9uZXIuSFVBV0VJX0NTSSxcbiAgICBwcm92aWRlcjogU3RvcmFnZVByb3ZpZGVyLlRISVJEX1BBUlRZLFxuICAgIGNsdXN0ZXJHYXRlOiBIVUFXRUlfQ1NJX0ZFQVRVUkVfR0FURSxcbiAgICBkaXNwbGF5OiB7XG4gICAgICBlbjogJ09jZWFuU3RvciBQYWNpZmljJyxcbiAgICAgIHpoOiAnT2NlYW5TdG9yIFBhY2lmaWMnLFxuICAgIH0sXG4gICAgYWNjZXNzTW9kZXM6IFtBY2Nlc3NNb2RlLlJXTywgQWNjZXNzTW9kZS5SV1gsIEFjY2Vzc01vZGUuUk9YXSxcbiAgICBzbmFwc2hvdEFjY2Vzc01vZGVzOiBbQWNjZXNzTW9kZS5SV08sIEFjY2Vzc01vZGUuUldYLCBBY2Nlc3NNb2RlLlJPWF0sXG4gICAgZmVhdHVyZXM6IFtTdG9yYWdlY2xhc3NGZWF0dXJlLlNOQVBTSE9ULCBTdG9yYWdlY2xhc3NGZWF0dXJlLkVYUEFOU0lPTl0sXG4gICAgdm9sdW1lTW9kZXM6IFtWb2x1bWVNb2RlLkZJTEVfU1lTVEVNLCBWb2x1bWVNb2RlLkJMT0NLX0RFVklDRV0sXG4gICAgc3VwcG9ydFR5cGVzOiBbU3RvcmFnZVR5cGUuRklMRV9TVE9SQUdFLCBTdG9yYWdlVHlwZS5CTE9DS19TVE9SQUdFXSxcbiAgfSxcbiAgW1N0b3JhZ2VQcm92aXNpb25lci5ORlNfQ1NJXToge1xuICAgIHByb3Zpc2lvbmVyOiBTdG9yYWdlUHJvdmlzaW9uZXIuTkZTX0NTSSxcbiAgICBwcm92aWRlcjogU3RvcmFnZVByb3ZpZGVyLlRISVJEX1BBUlRZLFxuICAgIHR5cGU6IFN0b3JhZ2VUeXBlLkZJTEVfU1RPUkFHRSxcbiAgICBjbHVzdGVyR2F0ZTogTkZTX0NTSV9GRUFUVVJFX0dBVEUsXG4gICAgZGlzcGxheToge1xuICAgICAgZW46ICdORlMgQ1NJJyxcbiAgICAgIHpoOiAnTkZTIOWFseS6q+WtmOWCqCcsXG4gICAgfSxcbiAgICBhY2Nlc3NNb2RlczogW0FjY2Vzc01vZGUuUldPLCBBY2Nlc3NNb2RlLlJXWF0sXG4gICAgZmVhdHVyZXM6IFtdLFxuICAgIHZvbHVtZU1vZGVzOiBbVm9sdW1lTW9kZS5GSUxFX1NZU1RFTV0sXG4gIH0sXG4gIFtTdG9yYWdlUHJvdmlzaW9uZXIuQ1NUT1JfQ1NJXToge1xuICAgIHByb3Zpc2lvbmVyOiBTdG9yYWdlUHJvdmlzaW9uZXIuQ1NUT1JfQ1NJLFxuICAgIHByb3ZpZGVyOiBTdG9yYWdlUHJvdmlkZXIuVEhJUkRfUEFSVFksXG4gICAgdHlwZTogU3RvcmFnZVR5cGUuQkxPQ0tfU1RPUkFHRSxcbiAgICBhY2Nlc3NNb2RlczogW0FjY2Vzc01vZGUuUldPXSxcbiAgICBmZWF0dXJlczogW1N0b3JhZ2VjbGFzc0ZlYXR1cmUuU05BUFNIT1QsIFN0b3JhZ2VjbGFzc0ZlYXR1cmUuRVhQQU5TSU9OXSxcbiAgICB2b2x1bWVNb2RlczogW1ZvbHVtZU1vZGUuRklMRV9TWVNURU0sIFZvbHVtZU1vZGUuQkxPQ0tfREVWSUNFXSxcbiAgICBkaXNhYmxlZDogdHJ1ZSxcbiAgfSxcbn07XG5cbi8vIOWvueS6juesrOS4ieaWuSBwcm92aWRlciDnmoTmlK/mjIHnmoQgYWNjZXNzTW9kZXMg5ZKMIHZvbHVtZU1vZGVzIOS4jeWGjeWBmumZkOWItlxuZXhwb3J0IGNvbnN0IFNUT1JBR0VDTEFTU19VTktOT1dOOiBTdG9yYWdlT3B0aW9uID0ge1xuICBwcm92aXNpb25lcjogbnVsbCxcbiAgcHJvdmlkZXI6IFN0b3JhZ2VQcm92aWRlci5USElSRF9QQVJUWSxcbiAgdHlwZTogbnVsbCxcbiAgYWNjZXNzTW9kZXM6IFtBY2Nlc3NNb2RlLlJXTywgQWNjZXNzTW9kZS5SV1gsIEFjY2Vzc01vZGUuUk9YXSxcbiAgZmVhdHVyZXM6IFtdLFxuICB2b2x1bWVNb2RlczogW1ZvbHVtZU1vZGUuRklMRV9TWVNURU0sIFZvbHVtZU1vZGUuQkxPQ0tfREVWSUNFXSxcbn07XG5cbmV4cG9ydCBlbnVtIFZvbHVtZVNuYXBzaG90U3RhdHVzIHtcbiAgQ1JFQVRJTkcgPSAnY3JlYXRpbmcnLFxuICBBVkFJTEFCTEUgPSAnYXZhaWxhYmxlJyxcbiAgTUFMRlVOQ1RJT04gPSAnbWFsZnVuY3Rpb24nLFxuICBERUxFVElORyA9ICdkZWxldGluZycsXG59XG5cbmV4cG9ydCBjb25zdCBWb2x1bWVTbmFwc2hvdFN0YXR1c0NvbG9yTWFwcGVyID0ge1xuICBbVm9sdW1lU25hcHNob3RTdGF0dXMuQ1JFQVRJTkddOiBHZW5lcmljU3RhdHVzQ29sb3IuUGVuZGluZyxcbiAgW1ZvbHVtZVNuYXBzaG90U3RhdHVzLkFWQUlMQUJMRV06IEdlbmVyaWNTdGF0dXNDb2xvci5TdWNjZWVkZWQsXG4gIFtWb2x1bWVTbmFwc2hvdFN0YXR1cy5NQUxGVU5DVElPTl06IEdlbmVyaWNTdGF0dXNDb2xvci5GYWlsZWQsXG4gIFtWb2x1bWVTbmFwc2hvdFN0YXR1cy5ERUxFVElOR106IEdlbmVyaWNTdGF0dXNDb2xvci5XYXJuaW5nLFxufTtcblxuZXhwb3J0IGNvbnN0IFZvbHVtZVNuYXBzaG90U3RhdHVzSWNvbk1hcHBlciA9IHtcbiAgW1ZvbHVtZVNuYXBzaG90U3RhdHVzLkNSRUFUSU5HXTogR2VuZXJpY1N0YXR1c0ljb24uUGVuZGluZyxcbiAgW1ZvbHVtZVNuYXBzaG90U3RhdHVzLkFWQUlMQUJMRV06IEdlbmVyaWNTdGF0dXNJY29uLkNoZWNrLFxuICBbVm9sdW1lU25hcHNob3RTdGF0dXMuTUFMRlVOQ1RJT05dOiBHZW5lcmljU3RhdHVzSWNvbi5XYXJuaW5nLFxuICBbVm9sdW1lU25hcHNob3RTdGF0dXMuREVMRVRJTkddOiBHZW5lcmljU3RhdHVzSWNvbi5EZWxldGluZyxcbn07XG4iXX0=
@@ -0,0 +1,65 @@
1
+ import { toUnitMi, toUnitNumM } from '@alauda-fe/common';
2
+ import { ResourceSize } from '../types/resource-exports';
3
+ export const getResourceSpecificationMapper = (specFromModels) => specFromModels.reduce((acc, curr) => {
4
+ acc[curr.size] = curr;
5
+ return acc;
6
+ }, {});
7
+ export const formatResource = ({ value, unit } = {}) => (value || value === 0 ? value + (unit === 'core' ? '' : unit) : undefined);
8
+ export function getResourceSize(resources, resourceDefinitions) {
9
+ const { limits, requests } = resources || {};
10
+ const resourceLimitModel = resourceDefinitions.find(({ limits: resourceLimits, requests: resourceRequests }) => {
11
+ const limitsMatched = limits?.cpu === formatResource(resourceLimits?.cpu) &&
12
+ limits?.memory === formatResource(resourceLimits?.memory);
13
+ const requestsMatched = requests?.cpu === formatResource(resourceRequests?.cpu) &&
14
+ requests?.memory === formatResource(resourceRequests?.memory);
15
+ return limits && requests
16
+ ? limitsMatched && requestsMatched
17
+ : limitsMatched || requestsMatched;
18
+ });
19
+ return resourceLimitModel?.size || ResourceSize.CUSTOMIZE;
20
+ }
21
+ export function getResourceSizeTranslateKey(resources, resourceDefinitions) {
22
+ const size = getResourceSize(resources, resourceDefinitions);
23
+ return {
24
+ [size]: `storage.${size}_scale`,
25
+ }[size];
26
+ }
27
+ export function getResourceRequirements(resource) {
28
+ const cpuMValue = parseInt(toUnitNumM(resource?.cpu));
29
+ const memoryMiValue = parseInt(toUnitMi(resource?.memory));
30
+ const cpuCoreValue = cpuMValue / 1000;
31
+ const isCore = Number.isNaN(cpuCoreValue) || cpuCoreValue === Math.floor(cpuCoreValue);
32
+ const memoryGiValue = memoryMiValue / 1024;
33
+ const isGi = Number.isNaN(memoryGiValue) || memoryGiValue === Math.floor(memoryGiValue);
34
+ return {
35
+ cpu: {
36
+ value: cpuMValue === 0 ? 0 : (isCore ? cpuCoreValue : cpuMValue) || null,
37
+ unit: isCore ? 'core' : 'm',
38
+ },
39
+ memory: {
40
+ value: memoryMiValue === 0
41
+ ? 0
42
+ : (isGi ? memoryGiValue : memoryMiValue) || null,
43
+ unit: isGi ? 'Gi' : 'Mi',
44
+ },
45
+ };
46
+ }
47
+ export function getResourceSpecification(resources, resourceDefinitions) {
48
+ const size = getResourceSize(resources, resourceDefinitions);
49
+ if (size !== ResourceSize.CUSTOMIZE) {
50
+ return {
51
+ size,
52
+ ...getResourceSpecificationMapper(resourceDefinitions)[size],
53
+ };
54
+ }
55
+ return {
56
+ size,
57
+ ...(resources?.limits && {
58
+ limits: getResourceRequirements(resources?.limits),
59
+ }),
60
+ ...(resources?.requests && {
61
+ requests: getResourceRequirements(resources?.requests),
62
+ }),
63
+ };
64
+ }
65
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2UtZXhwb3J0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL21vZHVsZXMvc3RvcmFnZS9zcmMvbGliL3V0aWxzL3Jlc291cmNlLWV4cG9ydHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFnQixRQUFRLEVBQUUsVUFBVSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFdkUsT0FBTyxFQUF5QixZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQU1oRixNQUFNLENBQUMsTUFBTSw4QkFBOEIsR0FBRyxDQUM1QyxjQUF1QyxFQUN2QyxFQUFFLENBQ0YsY0FBYyxDQUFDLE1BQU0sQ0FDbkIsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUU7SUFDWixHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQztJQUN0QixPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUMsRUFDRCxFQUFFLENBQ0gsQ0FBQztBQUVKLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxDQUM1QixFQUFFLEtBQUssRUFBRSxJQUFJLEtBQUssRUFBaUMsRUFDbkQsRUFBRSxDQUFDLENBQUMsS0FBSyxJQUFJLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLElBQUksS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBRWhGLE1BQU0sVUFBVSxlQUFlLENBQzdCLFNBQStCLEVBQy9CLG1CQUE0QztJQUU1QyxNQUFNLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxHQUFHLFNBQVMsSUFBSSxFQUFFLENBQUM7SUFFN0MsTUFBTSxrQkFBa0IsR0FBRyxtQkFBbUIsQ0FBQyxJQUFJLENBQ2pELENBQUMsRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxn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N0QsQ0FBQztJQUNKLENBQUM7SUFFRCxPQUFPO1FBQ0wsSUFBSTtRQUNKLEdBQUcsQ0FBQyxTQUFTLEVBQUUsTUFBTSxJQUFJO1lBQ3ZCLE1BQU0sRUFBRSx1QkFBdUIsQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDO1NBQ25ELENBQUM7UUFDRixHQUFHLENBQUMsU0FBUyxFQUFFLFFBQVEsSUFBSTtZQUN6QixRQUFRLEVBQUUsdUJBQXVCLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQztTQUN2RCxDQUFDO0tBQ0gsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMb29zZVZhbHVlT2YsIHRvVW5pdE1pLCB0b1VuaXROdW1NIH0gZnJvbSAnQGFsYXVkYS1mZS9jb21tb24nO1xuXG5pbXBvcnQgeyBSZXNvdXJjZVNwZWNpZmljYXRpb24sIFJlc291cmNlU2l6ZSB9IGZyb20gJy4uL3R5cGVzL3Jlc291cmNlLWV4cG9ydHMnO1xuaW1wb3J0IHtcbiAgUmVzb3VyY2VNb2RlbCxcbiAgUmVzb3VyY2VSZXF1aXJlbWVudHMsXG59IGZyb20gJy4uL3R5cGVzL3Jlc291cmNlLWludGVybmFscyc7XG5cbmV4cG9ydCBjb25zdCBnZXRSZXNvdXJjZVNwZWNpZmljYXRpb25NYXBwZXIgPSAoXG4gIHNwZWNGcm9tTW9kZWxzOiBSZXNvdXJjZVNwZWNpZmljYXRpb25bXSxcbikgPT5cbiAgc3BlY0Zyb21Nb2RlbHMucmVkdWNlPFBhcnRpYWw8UmVjb3JkPFJlc291cmNlU2l6ZSwgUmVzb3VyY2VTcGVjaWZpY2F0aW9uPj4+KFxuICAgIChhY2MsIGN1cnIpID0+IHtcbiAgICAgIGFjY1tjdXJyLnNpemVdID0gY3VycjtcbiAgICAgIHJldHVybiBhY2M7XG4gICAgfSxcbiAgICB7fSxcbiAgKTtcblxuZXhwb3J0IGNvbnN0IGZvcm1hdFJlc291cmNlID0gKFxuICB7IHZhbHVlLCB1bml0IH0gPSB7fSBhcyBMb29zZVZhbHVlT2Y8UmVzb3VyY2VNb2RlbD4sXG4pID0+ICh2YWx1ZSB8fCB2YWx1ZSA9PT0gMCA/IHZhbHVlICsgKHVuaXQgPT09ICdjb3JlJyA/ICcnIDogdW5pdCkgOiB1bmRlZmluZWQpO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UmVzb3VyY2VTaXplKFxuICByZXNvdXJjZXM6IFJlc291cmNlUmVxdWlyZW1lbnRzLFxuICByZXNvdXJjZURlZmluaXRpb25zOiBSZXNvdXJjZVNwZWNpZmljYXRpb25bXSxcbikge1xuICBjb25zdCB7IGxpbWl0cywgcmVxdWVzdHMgfSA9IHJlc291cmNlcyB8fCB7fTtcblxuICBjb25zdCByZXNvdXJjZUxpbWl0TW9kZWwgPSByZXNvdXJjZURlZmluaXRpb25zLmZpbmQoXG4gICAgKHsgbGltaXRzOiByZXNvdXJjZUxpbWl0cywgcmVxdWVzdHM6IHJlc291cmNlUmVxdWVzdHMgfSkgPT4ge1xuICAgICAgY29uc3QgbGltaXRzTWF0Y2hlZCA9XG4gICAgICAgIGxpbWl0cz8uY3B1ID09PSBmb3JtYXRSZXNvdXJjZShyZXNvdXJjZUxpbWl0cz8uY3B1KSAmJlxuICAgICAgICBsaW1pdHM/Lm1lbW9yeSA9PT0gZm9ybWF0UmVzb3VyY2UocmVzb3VyY2VMaW1pdHM/Lm1lbW9yeSk7XG5cbiAgICAgIGNvbnN0IHJlcXVlc3RzTWF0Y2hlZCA9XG4gICAgICAgIHJlcXVlc3RzPy5jcHUgPT09IGZvcm1hdFJlc291cmNlKHJlc291cmNlUmVxdWVzdHM/LmNwdSkgJiZcbiAgICAgICAgcmVxdWVzdHM/Lm1lbW9yeSA9PT0gZm9ybWF0UmVzb3VyY2UocmVzb3VyY2VSZXF1ZXN0cz8ubWVtb3J5KTtcblxuICAgICAgcmV0dXJuIGxpbWl0cyAmJiByZXF1ZXN0c1xuICAgICAgICA/IGxpbWl0c01hdGNoZWQgJiYgcmVxdWVzdHNNYXRjaGVkXG4gICAgICAgIDogbGltaXRzTWF0Y2hlZCB8fCByZXF1ZXN0c01hdGNoZWQ7XG4gICAgfSxcbiAgKTtcblxuICByZXR1cm4gcmVzb3VyY2VMaW1pdE1vZGVsPy5zaXplIHx8IFJlc291cmNlU2l6ZS5DVVNUT01JWkU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRSZXNvdXJjZVNpemVUcmFuc2xhdGVLZXkoXG4gIHJlc291cmNlczogUmVzb3VyY2VSZXF1aXJlbWVudHMsXG4gIHJlc291cmNlRGVmaW5pdGlvbnM6IFJlc291cmNlU3BlY2lmaWNhdGlvbltdLFxuKSB7XG4gIGNvbnN0IHNpemUgPSBnZXRSZXNvdXJjZVNpemUocmVzb3VyY2VzLCByZXNvdXJjZURlZmluaXRpb25zKTtcblxuICByZXR1cm4gKFxuICAgIHtcbiAgICAgIFtzaXplXTogYHN0b3JhZ2UuJHtzaXplfV9zY2FsZWAsXG4gICAgfSBhcyBSZWNvcmQ8UmVzb3VyY2VTaXplLCBzdHJpbmc+XG4gIClbc2l6ZV07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRSZXNvdXJjZVJlcXVpcmVtZW50cyhyZXNvdXJjZToge1xuICBjcHU6IHN0cmluZztcbiAgbWVtb3J5OiBzdHJpbmc7XG59KTogUmVzb3VyY2VNb2RlbCB7XG4gIGNvbnN0IGNwdU1WYWx1ZSA9IHBhcnNlSW50KHRvVW5pdE51bU0ocmVzb3VyY2U/LmNwdSkpO1xuICBjb25zdCBtZW1vcnlNaVZhbHVlID0gcGFyc2VJbnQodG9Vbml0TWkocmVzb3VyY2U/Lm1lbW9yeSkpO1xuXG4gIGNvbnN0IGNwdUNvcmVWYWx1ZSA9IGNwdU1WYWx1ZSAvIDEwMDA7XG4gIGNvbnN0IGlzQ29yZSA9XG4gICAgTnVtYmVyLmlzTmFOKGNwdUNvcmVWYWx1ZSkgfHwgY3B1Q29yZVZhbHVlID09PSBNYXRoLmZsb29yKGNwdUNvcmVWYWx1ZSk7XG5cbiAgY29uc3QgbWVtb3J5R2lWYWx1ZSA9IG1lbW9yeU1pVmFsdWUgLyAxMDI0O1xuICBjb25zdCBpc0dpID1cbiAgICBOdW1iZXIuaXNOYU4obWVtb3J5R2lWYWx1ZSkgfHwgbWVtb3J5R2lWYWx1ZSA9PT0gTWF0aC5mbG9vcihtZW1vcnlHaVZhbHVlKTtcblxuICByZXR1cm4ge1xuICAgIGNwdToge1xuICAgICAgdmFsdWU6IGNwdU1WYWx1ZSA9PT0gMCA/IDAgOiAoaXNDb3JlID8gY3B1Q29yZVZhbHVlIDogY3B1TVZhbHVlKSB8fCBudWxsLFxuICAgICAgdW5pdDogaXNDb3JlID8gJ2NvcmUnIDogJ20nLFxuICAgIH0sXG4gICAgbWVtb3J5OiB7XG4gICAgICB2YWx1ZTpcbiAgICAgICAgbWVtb3J5TWlWYWx1ZSA9PT0gMFxuICAgICAgICAgID8gMFxuICAgICAgICAgIDogKGlzR2kgPyBtZW1vcnlHaVZhbHVlIDogbWVtb3J5TWlWYWx1ZSkgfHwgbnVsbCxcbiAgICAgIHVuaXQ6IGlzR2kgPyAnR2knIDogJ01pJyxcbiAgICB9LFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UmVzb3VyY2VTcGVjaWZpY2F0aW9uKFxuICByZXNvdXJjZXM6IFJlc291cmNlUmVxdWlyZW1lbnRzLFxuICByZXNvdXJjZURlZmluaXRpb25zOiBSZXNvdXJjZVNwZWNpZmljYXRpb25bXSxcbik6IFJlc291cmNlU3BlY2lmaWNhdGlvbiB7XG4gIGNvbnN0IHNpemUgPSBnZXRSZXNvdXJjZVNpemUocmVzb3VyY2VzLCByZXNvdXJjZURlZmluaXRpb25zKTtcblxuICBpZiAoc2l6ZSAhPT0gUmVzb3VyY2VTaXplLkNVU1RPTUlaRSkge1xuICAgIHJldHVybiB7XG4gICAgICBzaXplLFxuICAgICAgLi4uZ2V0UmVzb3VyY2VTcGVjaWZpY2F0aW9uTWFwcGVyKHJlc291cmNlRGVmaW5pdGlvbnMpW3NpemVdLFxuICAgIH07XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHNpemUsXG4gICAgLi4uKHJlc291cmNlcz8ubGltaXRzICYmIHtcbiAgICAgIGxpbWl0czogZ2V0UmVzb3VyY2VSZXF1aXJlbWVudHMocmVzb3VyY2VzPy5saW1pdHMpLFxuICAgIH0pLFxuICAgIC4uLihyZXNvdXJjZXM/LnJlcXVlc3RzICYmIHtcbiAgICAgIHJlcXVlc3RzOiBnZXRSZXNvdXJjZVJlcXVpcmVtZW50cyhyZXNvdXJjZXM/LnJlcXVlc3RzKSxcbiAgICB9KSxcbiAgfTtcbn1cbiJdfQ==
@@ -0,0 +1,132 @@
1
+ import { TRUE, VOLUME_SNAPSHOT_GROUP, } from '@alauda-fe/common';
2
+ import { PvcStatusEnum, PvStatusEnum, StorageProvisioner, VolumeBindingMode, } from '../types/commons';
3
+ import { IS_DEFAULT_STORAGECLASS_ANNOTATION, STORAGECLASS_UNKNOWN, STORAGE_OPTION_MAP, VolumeSnapshotStatus, } from './constants';
4
+ export function getProvisioner(sc) {
5
+ const provisioner = sc &&
6
+ ('provisioner' in sc
7
+ ? sc.provisioner
8
+ : 'driverName' in sc
9
+ ? sc.driverName
10
+ : null);
11
+ // CCE 集群上,不同存储使用相同的 provisioner(everest-csi-provisioner) 时需要进行额外处理
12
+ if (provisioner === 'everest-csi-provisioner') {
13
+ return sc?.parameters['csi.storage.k8s.io/csi-driver-name'];
14
+ }
15
+ return provisioner;
16
+ }
17
+ export function getProvisionerDisplay(sc) {
18
+ const provisioner = getProvisioner(sc);
19
+ return (STORAGE_OPTION_MAP[provisioner]?.display || {
20
+ en: provisioner,
21
+ zh: provisioner,
22
+ });
23
+ }
24
+ export function getProvisionerType(provisioner) {
25
+ return STORAGE_OPTION_MAP[provisioner]?.type || 'unknown';
26
+ }
27
+ export function getStorageclassVolumeModes(provisioner) {
28
+ return provisioner
29
+ ? (STORAGE_OPTION_MAP[provisioner] || STORAGECLASS_UNKNOWN).volumeModes
30
+ : ['Filesystem', 'Block']; // 针对未识别的 sc 全部卷模式可用
31
+ }
32
+ export function getStorageclassAccessModes(provisioner, isFromSnapshot = false) {
33
+ return provisioner
34
+ ? (STORAGE_OPTION_MAP[provisioner] || STORAGECLASS_UNKNOWN)[isFromSnapshot ? 'snapshotAccessModes' : 'accessModes']
35
+ : ['ReadOnlyMany', 'ReadWriteMany', 'ReadWriteOnce']; // 针对未识别的 sc 全部访问方式可用
36
+ }
37
+ export function isDefaultStorageclass(data) {
38
+ return (data.metadata.annotations?.[IS_DEFAULT_STORAGECLASS_ANNOTATION] === TRUE);
39
+ }
40
+ export function isStorageClassSupportSnapshot(sc, vscList) {
41
+ const list = vscList.filter(item => item.parameters?.clusterID === sc.parameters?.clusterID);
42
+ switch (sc.provisioner) {
43
+ case StorageProvisioner.CEPH_FS_INTERNAL: {
44
+ return list.some(item => item.driver === StorageProvisioner.CEPH_FS_INTERNAL);
45
+ }
46
+ case StorageProvisioner.CEPH_FS_RBD: {
47
+ return list.some(item => item.driver === StorageProvisioner.CEPH_FS_RBD);
48
+ }
49
+ case StorageProvisioner.TOPOLVM: {
50
+ return list.some(item => item.driver === StorageProvisioner.TOPOLVM);
51
+ }
52
+ default: {
53
+ return false;
54
+ }
55
+ }
56
+ }
57
+ export function buildPvcResource({ namespace, snapshot, volumeMode, }, pvc) {
58
+ return {
59
+ apiVersion: 'v1',
60
+ kind: 'PersistentVolumeClaim',
61
+ metadata: {
62
+ name: '',
63
+ namespace,
64
+ annotations: {},
65
+ labels: {},
66
+ },
67
+ spec: {
68
+ storageClassName: pvc?.spec?.storageClassName ?? null,
69
+ accessModes: pvc?.spec?.accessModes ?? ['ReadWriteOnce'],
70
+ volumeMode: volumeMode ?? 'Filesystem',
71
+ resources: {
72
+ requests: {
73
+ storage: pvc?.spec?.resources.requests?.storage ?? null,
74
+ },
75
+ },
76
+ ...(pvc
77
+ ? {
78
+ dataSource: {
79
+ name: snapshot,
80
+ kind: 'VolumeSnapshot',
81
+ apiGroup: VOLUME_SNAPSHOT_GROUP,
82
+ },
83
+ }
84
+ : {}),
85
+ selector: {
86
+ matchLabels: {},
87
+ },
88
+ },
89
+ };
90
+ }
91
+ export function getVolumeSnapshotStatus(resource) {
92
+ return resource.metadata?.deletionTimestamp
93
+ ? VolumeSnapshotStatus.DELETING
94
+ : resource.status?.error
95
+ ? VolumeSnapshotStatus.MALFUNCTION
96
+ : resource.status?.readyToUse
97
+ ? VolumeSnapshotStatus.AVAILABLE
98
+ : VolumeSnapshotStatus.CREATING;
99
+ }
100
+ export function getPvcStatus(status, refStorageclass) {
101
+ switch (status.phase.toLowerCase()) {
102
+ case 'pending': {
103
+ return refStorageclass?.volumeBindingMode ===
104
+ VolumeBindingMode.WaitForFirstConsumer
105
+ ? PvcStatusEnum.waiting
106
+ : PvcStatusEnum.processing;
107
+ }
108
+ case 'bound': {
109
+ return PvcStatusEnum.bound;
110
+ }
111
+ case 'lost': {
112
+ return PvcStatusEnum.invalid;
113
+ }
114
+ }
115
+ }
116
+ export function getPvStatus(pv) {
117
+ switch (pv.status.phase.toLowerCase()) {
118
+ case 'available': {
119
+ return PvStatusEnum.AVAILABLE;
120
+ }
121
+ case 'bound': {
122
+ return PvStatusEnum.BOUND;
123
+ }
124
+ case 'released': {
125
+ return PvStatusEnum.WAITING_RECYCLE;
126
+ }
127
+ case 'failed': {
128
+ return PvStatusEnum.RECYCLE_FAILED;
129
+ }
130
+ }
131
+ }
132
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL21vZHVsZXMvc3RvcmFnZS9zcmMvbGliL3V0aWxzL3V0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUtMLElBQUksRUFDSixxQkFBcUIsR0FFdEIsTUFBTSxtQkFBbUIsQ0FBQztBQUUzQixPQUFPLEVBQ0wsYUFBYSxFQUNiLFlBQVksRUFFWixrQkFBa0IsRUFDbEIsaUJBQWlCLEdBQ2xCLE1BQU0sa0JBQWtCLENBQUM7QUFTMUIsT0FBTyxFQUNMLGtDQUFrQyxFQUNsQyxvQkFBb0IsRUFDcEIsa0JBQWtCLEVBQ2xCLG9CQUFvQixHQUNyQixNQUFNLGFBQWEsQ0FBQztBQUVyQixNQUFNLFVBQVUsY0FBYyxDQUFDLEVBQXNDO0lBQ25FLE1BQU0sV0FBVyxHQUNmLEVBQUU7UUFDRixDQUFDLGFBQWEsSUFBSSxFQUFFO1lBQ2xCLENBQUMsQ0FBQyxFQUFFLENBQUMsV0FBVztZQUNoQixDQUFDLENBQUMsWUFBWSxJQUFJLEVBQUU7Z0JBQ2xCLENBQUMsQ0FBQyxFQUFFLENBQUMsVUFBVTtnQkFDZixDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFZCxtRUFBbUU7SUFDbkUsSUFBSSxXQUFXLEtBQU0seUJBQWdELEVBQUUsQ0FBQztRQUN0RSxPQUFRLEVBQW1CLEVBQUUsVUFBVSxDQUNyQyxvQ0FBb0MsQ0FDZixDQUFDO0lBQzFCLENBQUM7SUFDRCxPQUFPLFdBQVcsQ0FBQztBQUNyQixDQUFDO0FBRUQsTUFBTSxVQUFVLHFCQUFxQixDQUNuQyxFQUFzQztJQUV0QyxNQUFNLFdBQVcsR0FBRyxjQUFjLENBQUMsRUFBRSxDQUFDLENBQUM7SUFFdkMsT0FBTyxDQUNMLGtCQUFrQixDQUFDLFdBQVcsQ0FBQyxFQUFFLE9BQU8sSUFBSTtRQUMxQyxFQUFFLEVBQUUsV0FBVztRQUNmLEVBQUUsRUFBRSxXQUFXO0tBQ2hCLENBQ0YsQ0FBQztBQUNK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QUFVLENBQUM7UUFDL0IsQ0FBQztRQUNELEtBQUssT0FBTyxDQUFDLENBQUMsQ0FBQztZQUNiLE9BQU8sYUFBYSxDQUFDLEtBQUssQ0FBQztRQUM3QixDQUFDO1FBQ0QsS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDO1lBQ1osT0FBTyxhQUFhLENBQUMsT0FBTyxDQUFDO1FBQy9CLENBQUM7SUFDSCxDQUFDO0FBQ0gsQ0FBQztBQUVELE1BQU0sVUFBVSxXQUFXLENBQUMsRUFBb0I7SUFDOUMsUUFBUSxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDO1FBQ3RDLEtBQUssV0FBVyxDQUFDLENBQUMsQ0FBQztZQUNqQixPQUFPLFlBQVksQ0FBQyxTQUFTLENBQUM7UUFDaEMsQ0FBQztRQUNELEtBQUssT0FBTyxDQUFDLENBQUMsQ0FBQztZQUNiLE9BQU8sWUFBWSxDQUFDLEtBQUssQ0FBQztRQUM1QixDQUFDO1FBQ0QsS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFDO1lBQ2hCLE9BQU8sWUFBWSxDQUFDLGVBQWUsQ0FBQztRQUN0QyxDQUFDO1FBQ0QsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDO1lBQ2QsT0FBTyxZQUFZLENBQUMsY0FBYyxDQUFDO1FBQ3JDLENBQUM7SUFDSCxDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFjY2Vzc01vZGUsXG4gIFBlcnNpc3RlbnRWb2x1bWVDbGFpbSxcbiAgUGVyc2lzdGVudFZvbHVtZUNsYWltU3RhdHVzLFxuICBUcmFuc2xhdGlvbixcbiAgVFJVRSxcbiAgVk9MVU1FX1NOQVBTSE9UX0dST1VQLFxuICBWb2x1bWVNb2RlLFxufSBmcm9tICdAYWxhdWRhLWZlL2NvbW1vbic7XG5cbmltcG9ydCB7XG4gIFB2Y1N0YXR1c0VudW0sXG4gIFB2U3RhdHVzRW51bSxcbiAgU3RvcmFnZU9wdGlvbixcbiAgU3RvcmFnZVByb3Zpc2lvbmVyLFxuICBWb2x1bWVCaW5kaW5nTW9kZSxcbn0gZnJvbSAnLi4vdHlwZXMvY29tbW9ucyc7XG5pbXBvcnQge1xuICBDb21tb25TdG9yYWdlQ2xhc3MsXG4gIFBlcnNpc3RlbnRWb2x1bWUsXG4gIFN0b3JhZ2VDbGFzcyxcbiAgVm9sdW1lU25hcHNob3QsXG4gIFZvbHVtZVNuYXBzaG90Q2xhc3MsXG59IGZyb20gJy4uL3R5cGVzL2s4cyc7XG5cbmltcG9ydCB7XG4gIElTX0RFRkFVTFRfU1RPUkFHRUNMQVNTX0FOTk9UQVRJT04sXG4gIFNUT1JBR0VDTEFTU19VTktOT1dOLFxuICBTVE9SQUdFX09QVElPTl9NQVAsXG4gIFZvbHVtZVNuYXBzaG90U3RhdHVzLFxufSBmcm9tICcuL2NvbnN0YW50cyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRQcm92aXNpb25lcihzYzogQ29tbW9uU3RvcmFnZUNsYXNzIHwgU3RvcmFnZU9wdGlvbikge1xuICBjb25zdCBwcm92aXNpb25lciA9XG4gICAgc2MgJiZcbiAgICAoJ3Byb3Zpc2lvbmVyJyBpbiBzY1xuICAgICAgPyBzYy5wcm92aXNpb25lclxuICAgICAgOiAnZHJpdmVyTmFtZScgaW4gc2NcbiAgICAgICAgPyBzYy5kcml2ZXJOYW1lXG4gICAgICAgIDogbnVsbCk7XG5cbiAgLy8gQ0NFIOmbhue+pOS4iu+8jOS4jeWQjOWtmOWCqOS9v+eUqOebuOWQjOeahCBwcm92aXNpb25lcihldmVyZXN0LWNzaS1wcm92aXNpb25lcikg5pe26ZyA6KaB6L+b6KGM6aKd5aSW5aSE55CGXG4gIGlmIChwcm92aXNpb25lciA9PT0gKCdldmVyZXN0LWNzaS1wcm92aXNpb25lcicgYXMgU3RvcmFnZVByb3Zpc2lvbmVyKSkge1xuICAgIHJldHVybiAoc2MgYXMgU3RvcmFnZUNsYXNzKT8ucGFyYW1ldGVyc1tcbiAgICAgICdjc2kuc3RvcmFnZS5rOHMuaW8vY3NpLWRyaXZlci1uYW1lJ1xuICAgIF0gYXMgU3RvcmFnZVByb3Zpc2lvbmVyO1xuICB9XG4gIHJldHVybiBwcm92aXNpb25lcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFByb3Zpc2lvbmVyRGlzcGxheShcbiAgc2M6IENvbW1vblN0b3JhZ2VDbGFzcyB8IFN0b3JhZ2VPcHRpb24sXG4pOiBUcmFuc2xhdGlvbiB7XG4gIGNvbnN0IHByb3Zpc2lvbmVyID0gZ2V0UHJvdmlzaW9uZXIoc2MpO1xuXG4gIHJldHVybiAoXG4gICAgU1RPUkFHRV9PUFRJT05fTUFQW3Byb3Zpc2lvbmVyXT8uZGlzcGxheSB8fCB7XG4gICAgICBlbjogcHJvdmlzaW9uZXIsXG4gICAgICB6aDogcHJvdmlzaW9uZXIsXG4gICAgfVxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UHJvdmlzaW9uZXJUeXBlKHByb3Zpc2lvbmVyOiBTdG9yYWdlUHJvdmlzaW9uZXIpIHtcbiAgcmV0dXJuIFNUT1JBR0VfT1BUSU9OX01BUFtwcm92aXNpb25lcl0/LnR5cGUgfHwgJ3Vua25vd24nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3RvcmFnZWNsYXNzVm9sdW1lTW9kZXMocHJvdmlzaW9uZXI6IFN0b3JhZ2VQcm92aXNpb25lcikge1xuICByZXR1cm4gcHJvdmlzaW9uZXJcbiAgICA/IChTVE9SQUdFX09QVElPTl9NQVBbcHJvdmlzaW9uZXJdIHx8IFNUT1JBR0VDTEFTU19VTktOT1dOKS52b2x1bWVNb2Rlc1xuICAgIDogKFsnRmlsZXN5c3RlbScsICdCbG9jayddIGFzIFZvbHVtZU1vZGVbXSk7IC8vIOmSiOWvueacquivhuWIq+eahCBzYyDlhajpg6jljbfmqKHlvI/lj6/nlKhcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFN0b3JhZ2VjbGFzc0FjY2Vzc01vZGVzKFxuICBwcm92aXNpb25lcjogU3RvcmFnZVByb3Zpc2lvbmVyLFxuICBpc0Zyb21TbmFwc2hvdCA9IGZhbHNlLFxuKSB7XG4gIHJldHVybiBwcm92aXNpb25lclxuICAgID8gKFNUT1JBR0VfT1BUSU9OX01BUFtwcm92aXNpb25lcl0gfHwgU1RPUkFHRUNMQVNTX1VOS05PV04pW1xuICAgICAgICBpc0Zyb21TbmFwc2hvdCA/ICdzbmFwc2hvdEFjY2Vzc01vZGVzJyA6ICdhY2Nlc3NNb2RlcydcbiAgICAgIF1cbiAgICA6IChbJ1JlYWRPbmx5TWFueScsICdSZWFkV3JpdGVNYW55JywgJ1JlYWRXcml0ZU9uY2UnXSBhcyBBY2Nlc3NNb2RlW10pOyAvLyDpkojlr7nmnKror4bliKvnmoQgc2Mg5YWo6YOo6K6/6Zeu5pa55byP5Y+v55SoXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0RlZmF1bHRTdG9yYWdlY2xhc3MoZGF0YTogQ29tbW9uU3RvcmFnZUNsYXNzKSB7XG4gIHJldHVybiAoXG4gICAgZGF0YS5tZXRhZGF0YS5hbm5vdGF0aW9ucz8uW0lTX0RFRkFVTFRfU1RPUkFHRUNMQVNTX0FOTk9UQVRJT05dID09PSBUUlVFXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1N0b3JhZ2VDbGFzc1N1cHBvcnRTbmFwc2hvdChcbiAgc2M6IFN0b3JhZ2VDbGFzcyxcbiAgdnNjTGlzdDogVm9sdW1lU25hcHNob3RDbGFzc1tdLFxuKSB7XG4gIGNvbnN0IGxpc3QgPSB2c2NMaXN0LmZpbHRlcihcbiAgICBpdGVtID0+IGl0ZW0ucGFyYW1ldGVycz8uY2x1c3RlcklEID09PSBzYy5wYXJhbWV0ZXJzPy5jbHVzdGVySUQsXG4gICk7XG4gIHN3aXRjaCAoc2MucHJvdmlzaW9uZXIpIHtcbiAgICBjYXNlIFN0b3JhZ2VQcm92aXNpb25lci5DRVBIX0ZTX0lOVEVSTkFMOiB7XG4gICAgICByZXR1cm4gbGlzdC5zb21lKFxuICAgICAgICBpdGVtID0+IGl0ZW0uZHJpdmVyID09PSBTdG9yYWdlUHJvdmlzaW9uZXIuQ0VQSF9GU19JTlRFUk5BTCxcbiAgICAgICk7XG4gICAgfVxuICAgIGNhc2UgU3RvcmFnZVByb3Zpc2lvbmVyLkNFUEhfRlNfUkJEOiB7XG4gICAgICByZXR1cm4gbGlzdC5zb21lKGl0ZW0gPT4gaXRlbS5kcml2ZXIgPT09IFN0b3JhZ2VQcm92aXNpb25lci5DRVBIX0ZTX1JCRCk7XG4gICAgfVxuICAgIGNhc2UgU3RvcmFnZVByb3Zpc2lvbmVyLlRPUE9MVk06IHtcbiAgICAgIHJldHVybiBsaXN0LnNvbWUoaXRlbSA9PiBpdGVtLmRyaXZlciA9PT0gU3RvcmFnZVByb3Zpc2lvbmVyLlRPUE9MVk0pO1xuICAgIH1cbiAgICBkZWZhdWx0OiB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidWlsZFB2Y1Jlc291cmNlKFxuICB7XG4gICAgbmFtZXNwYWNlLFxuICAgIHNuYXBzaG90LFxuICAgIHZvbHVtZU1vZGUsXG4gIH06IHsgbmFtZXNwYWNlOiBzdHJpbmc7IHNuYXBzaG90Pzogc3RyaW5nOyB2b2x1bWVNb2RlPzogVm9sdW1lTW9kZSB9LFxuICBwdmM/OiBQZXJzaXN0ZW50Vm9sdW1lQ2xhaW0sIC8vIOWIm+W7uuW/q+eFp+exuyBQdmMg5pe25Lyg5YWlXG4pOiBQZXJzaXN0ZW50Vm9sdW1lQ2xhaW0ge1xuICByZXR1cm4ge1xuICAgIGFwaVZlcnNpb246ICd2MScsXG4gICAga2luZDogJ1BlcnNpc3RlbnRWb2x1bWVDbGFpbScsXG4gICAgbWV0YWRhdGE6IHtcbiAgICAgIG5hbWU6ICcnLFxuICAgICAgbmFtZXNwYWNlLFxuICAgICAgYW5ub3RhdGlvbnM6IHt9LFxuICAgICAgbGFiZWxzOiB7fSxcbiAgICB9LFxuICAgIHNwZWM6IHtcbiAgICAgIHN0b3JhZ2VDbGFzc05hbWU6IHB2Yz8uc3BlYz8uc3RvcmFnZUNsYXNzTmFtZSA/PyBudWxsLFxuICAgICAgYWNjZXNzTW9kZXM6IHB2Yz8uc3BlYz8uYWNjZXNzTW9kZXMgPz8gWydSZWFkV3JpdGVPbmNlJ10sXG4gICAgICB2b2x1bWVNb2RlOiB2b2x1bWVNb2RlID8/ICdGaWxlc3lzdGVtJyxcbiAgICAgIHJlc291cmNlczoge1xuICAgICAgICByZXF1ZXN0czoge1xuICAgICAgICAgIHN0b3JhZ2U6IHB2Yz8uc3BlYz8ucmVzb3VyY2VzLnJlcXVlc3RzPy5zdG9yYWdlID8/IG51bGwsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgLi4uKHB2Y1xuICAgICAgICA/IHtcbiAgICAgICAgICAgIGRhdGFTb3VyY2U6IHtcbiAgICAgICAgICAgICAgbmFtZTogc25hcHNob3QsXG4gICAgICAgICAgICAgIGtpbmQ6ICdWb2x1bWVTbmFwc2hvdCcsXG4gICAgICAgICAgICAgIGFwaUdyb3VwOiBWT0xVTUVfU05BUFNIT1RfR1JPVVAsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH1cbiAgICAgICAgOiB7fSksXG4gICAgICBzZWxlY3Rvcjoge1xuICAgICAgICBtYXRjaExhYmVsczoge30sXG4gICAgICB9LFxuICAgIH0sXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRWb2x1bWVTbmFwc2hvdFN0YXR1cyhyZXNvdXJjZTogVm9sdW1lU25hcHNob3QpIHtcbiAgcmV0dXJuIHJlc291cmNlLm1ldGFkYXRhPy5kZWxldGlvblRpbWVzdGFtcFxuICAgID8gVm9sdW1lU25hcHNob3RTdGF0dXMuREVMRVRJTkdcbiAgICA6IHJlc291cmNlLnN0YXR1cz8uZXJyb3JcbiAgICAgID8gVm9sdW1lU25hcHNob3RTdGF0dXMuTUFMRlVOQ1RJT05cbiAgICAgIDogcmVzb3VyY2Uuc3RhdHVzPy5yZWFkeVRvVXNlXG4gICAgICAgID8gVm9sdW1lU25hcHNob3RTdGF0dXMuQVZBSUxBQkxFXG4gICAgICAgIDogVm9sdW1lU25hcHNob3RTdGF0dXMuQ1JFQVRJTkc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRQdmNTdGF0dXMoXG4gIHN0YXR1czogUGVyc2lzdGVudFZvbHVtZUNsYWltU3RhdHVzLFxuICByZWZTdG9yYWdlY2xhc3M/OiBTdG9yYWdlQ2xhc3MsXG4pOiBQdmNTdGF0dXNFbnVtIHtcbiAgc3dpdGNoIChzdGF0dXMucGhhc2UudG9Mb3dlckNhc2UoKSkge1xuICAgIGNhc2UgJ3BlbmRpbmcnOiB7XG4gICAgICByZXR1cm4gcmVmU3RvcmFnZWNsYXNzPy52b2x1bWVCaW5kaW5nTW9kZSA9PT1cbiAgICAgICAgVm9sdW1lQmluZGluZ01vZGUuV2FpdEZvckZpcnN0Q29uc3VtZXJcbiAgICAgICAgPyBQdmNTdGF0dXNFbnVtLndhaXRpbmdcbiAgICAgICAgOiBQdmNTdGF0dXNFbnVtLnByb2Nlc3Npbmc7XG4gICAgfVxuICAgIGNhc2UgJ2JvdW5kJzoge1xuICAgICAgcmV0dXJuIFB2Y1N0YXR1c0VudW0uYm91bmQ7XG4gICAgfVxuICAgIGNhc2UgJ2xvc3QnOiB7XG4gICAgICByZXR1cm4gUHZjU3RhdHVzRW51bS5pbnZhbGlkO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UHZTdGF0dXMocHY6IFBlcnNpc3RlbnRWb2x1bWUpOiBQdlN0YXR1c0VudW0ge1xuICBzd2l0Y2ggKHB2LnN0YXR1cy5waGFzZS50b0xvd2VyQ2FzZSgpKSB7XG4gICAgY2FzZSAnYXZhaWxhYmxlJzoge1xuICAgICAgcmV0dXJuIFB2U3RhdHVzRW51bS5BVkFJTEFCTEU7XG4gICAgfVxuICAgIGNhc2UgJ2JvdW5kJzoge1xuICAgICAgcmV0dXJuIFB2U3RhdHVzRW51bS5CT1VORDtcbiAgICB9XG4gICAgY2FzZSAncmVsZWFzZWQnOiB7XG4gICAgICByZXR1cm4gUHZTdGF0dXNFbnVtLldBSVRJTkdfUkVDWUNMRTtcbiAgICB9XG4gICAgY2FzZSAnZmFpbGVkJzoge1xuICAgICAgcmV0dXJuIFB2U3RhdHVzRW51bS5SRUNZQ0xFX0ZBSUxFRDtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
package/index.d.ts ADDED
@@ -0,0 +1,17 @@
1
+ export { DeletePvcDialogComponent } from './lib/components/pvc-delete-dialog/component';
2
+ export { PvcExpandCapacityDialogComponent } from './lib/components/pvc-expand-capacity-dialog/component';
3
+ export { PersistentVolumeClaimFormComponent } from './lib/components/pvc-form/component';
4
+ export { RebuildVolumeDialogComponent } from './lib/components/rebuild-volume-dialog/component';
5
+ export { ResourceSpecFormComponent } from './lib/components/spec-form/component';
6
+ export { StorageFeatureTagsComponent } from './lib/components/storage-feature-tags/component';
7
+ export { StorageClassSelectComponent } from './lib/components/storageclass-select/component';
8
+ export * from './lib/utils/constants';
9
+ export * from './lib/utils/resource-exports';
10
+ export * from './lib/utils/util';
11
+ export * from './lib/types/commons';
12
+ export * from './lib/types/k8s';
13
+ export * from './lib/types/resource-definition';
14
+ export * from './lib/types/resource-exports';
15
+ export * from './lib/pipes/actual-capacity.pipe';
16
+ export { StorageCommonUtilService, StorageSelectOption, } from './lib/services/common-util.service';
17
+ export * from './lib/services/pvc-util.service';
@@ -0,0 +1,33 @@
1
+ import { DialogRef, MessageService } from '@alauda/ui';
2
+ import { K8sApiService, K8sUtilService, KubernetesResource, PersistentVolumeClaim, TranslateService } from '@alauda-fe/common';
3
+ import { BehaviorSubject } from 'rxjs';
4
+ import { PVCUtilService } from '../../services/pvc-util.service';
5
+ import { VolumeSnapshot } from '../../types/k8s';
6
+ import * as i0 from "@angular/core";
7
+ export declare class DeletePvcDialogComponent {
8
+ readonly modalData: {
9
+ cluster: string;
10
+ namespace: string;
11
+ pvc: PersistentVolumeClaim;
12
+ };
13
+ private readonly k8sApi;
14
+ private readonly k8sUtil;
15
+ protected readonly pvcUtil: PVCUtilService;
16
+ private readonly dialogRef;
17
+ private readonly message;
18
+ private readonly translate;
19
+ COLUMNS: string[];
20
+ inputValue: string;
21
+ submitting$$: BehaviorSubject<boolean>;
22
+ pods$: import("rxjs").Observable<import("@alauda-fe/common").Pod[]>;
23
+ snapshots$: import("rxjs").Observable<VolumeSnapshot[]>;
24
+ list$: import("rxjs").Observable<KubernetesResource[]>;
25
+ constructor(modalData: {
26
+ cluster: string;
27
+ namespace: string;
28
+ pvc: PersistentVolumeClaim;
29
+ }, k8sApi: K8sApiService, k8sUtil: K8sUtilService, pvcUtil: PVCUtilService, dialogRef: DialogRef, message: MessageService, translate: TranslateService);
30
+ confirm(): void;
31
+ static ɵfac: i0.ɵɵFactoryDeclaration<DeletePvcDialogComponent, never>;
32
+ static ɵcmp: i0.ɵɵComponentDeclaration<DeletePvcDialogComponent, "ng-component", never, {}, {}, never, never, true, never>;
33
+ }
@@ -0,0 +1,36 @@
1
+ import { DialogRef, MessageService } from '@alauda/ui';
2
+ import { K8sApiService, PersistentVolumeClaim, TranslateService } from '@alauda-fe/common';
3
+ import { NgForm } from '@angular/forms';
4
+ import { Subject } from 'rxjs';
5
+ import * as i0 from "@angular/core";
6
+ export declare class PvcExpandCapacityDialogComponent {
7
+ dialogData: {
8
+ resource: PersistentVolumeClaim;
9
+ cluster: string;
10
+ namespace: string;
11
+ isVM?: boolean;
12
+ };
13
+ private readonly k8sApi;
14
+ private readonly dialogRef;
15
+ private readonly message;
16
+ private readonly translate;
17
+ newCapacity: string;
18
+ POSITIVE_INT_PATTERN: {
19
+ pattern: RegExp;
20
+ tip: string;
21
+ };
22
+ submitting$$: Subject<boolean>;
23
+ submitting$: import("rxjs").Observable<boolean>;
24
+ toUnitGi: (str?: string | number, negative?: boolean) => string;
25
+ constructor(dialogData: {
26
+ resource: PersistentVolumeClaim;
27
+ cluster: string;
28
+ namespace: string;
29
+ isVM?: boolean;
30
+ }, k8sApi: K8sApiService, dialogRef: DialogRef<PvcExpandCapacityDialogComponent>, message: MessageService, translate: TranslateService);
31
+ submit(ngForm: NgForm): void;
32
+ getNumber(capacity: string): number;
33
+ getVolumeTypeTranslateKey(isVM: boolean): "storage.virtual_disk_name" | "storage.pvc_short";
34
+ static ɵfac: i0.ɵɵFactoryDeclaration<PvcExpandCapacityDialogComponent, never>;
35
+ static ɵcmp: i0.ɵɵComponentDeclaration<PvcExpandCapacityDialogComponent, "ng-component", never, {}, {}, never, never, true, never>;
36
+ }