@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.
- package/esm2022/alauda-fe-storage.mjs +5 -0
- package/esm2022/index.mjs +23 -0
- package/esm2022/lib/components/pvc-delete-dialog/component.mjs +292 -0
- package/esm2022/lib/components/pvc-expand-capacity-dialog/component.mjs +193 -0
- package/esm2022/lib/components/pvc-form/component.mjs +674 -0
- package/esm2022/lib/components/rebuild-volume-dialog/component.mjs +251 -0
- package/esm2022/lib/components/source-link/component.mjs +81 -0
- package/esm2022/lib/components/spec-form/component.mjs +464 -0
- package/esm2022/lib/components/storage-feature-tags/component.mjs +146 -0
- package/esm2022/lib/components/storageclass-select/component.mjs +179 -0
- package/esm2022/lib/pipes/actual-capacity.pipe.mjs +17 -0
- package/esm2022/lib/services/common-util.service.mjs +163 -0
- package/esm2022/lib/services/pvc-util.service.mjs +416 -0
- package/esm2022/lib/types/commons.mjs +75 -0
- package/esm2022/lib/types/internal.mjs +7 -0
- package/esm2022/lib/types/k8s.mjs +2 -0
- package/esm2022/lib/types/resource-definition.mjs +13 -0
- package/esm2022/lib/types/resource-exports.mjs +8 -0
- package/esm2022/lib/types/resource-internals.mjs +2 -0
- package/esm2022/lib/utils/constants.mjs +202 -0
- package/esm2022/lib/utils/resource-exports.mjs +65 -0
- package/esm2022/lib/utils/util.mjs +132 -0
- package/index.d.ts +17 -0
- package/lib/components/pvc-delete-dialog/component.d.ts +33 -0
- package/lib/components/pvc-expand-capacity-dialog/component.d.ts +36 -0
- package/lib/components/pvc-form/component.d.ts +106 -0
- package/lib/components/rebuild-volume-dialog/component.d.ts +28 -0
- package/lib/components/source-link/component.d.ts +17 -0
- package/lib/components/spec-form/component.d.ts +71 -0
- package/lib/components/storage-feature-tags/component.d.ts +25 -0
- package/lib/components/storageclass-select/component.d.ts +26 -0
- package/lib/pipes/actual-capacity.pipe.d.ts +8 -0
- package/lib/services/common-util.service.d.ts +48 -0
- package/lib/services/pvc-util.service.d.ts +130 -0
- package/lib/types/commons.d.ts +85 -0
- package/lib/types/internal.d.ts +4 -0
- package/lib/types/k8s.d.ts +105 -0
- package/lib/types/resource-definition.d.ts +18 -0
- package/lib/types/resource-exports.d.ts +16 -0
- package/lib/types/resource-internals.d.ts +20 -0
- package/lib/utils/constants.d.ts +37 -0
- package/lib/utils/resource-exports.d.ts +12 -0
- package/lib/utils/util.d.ts +19 -0
- package/package.json +38 -0
|
@@ -0,0 +1,416 @@
|
|
|
1
|
+
import { __decorate, __metadata } from "tslib";
|
|
2
|
+
import { DialogService, DialogSize } from '@alauda/ui';
|
|
3
|
+
import { K8sApiService, getDisabledState, skipError, publishRef, CacheStore, AcpCommonApiService, bind, getDomainAnnotation, API_GATEWAY, getSubdomainLabel, toUnitGi, RESOURCE_TYPES, COMMON_RESOURCE_DEFINITIONS, } from '@alauda-fe/common';
|
|
4
|
+
import { HttpClient } from '@angular/common/http';
|
|
5
|
+
import { Injectable } from '@angular/core';
|
|
6
|
+
import { catchError, combineLatest, distinctUntilChanged, filter, map, of, shareReplay, startWith, switchMap, } from 'rxjs';
|
|
7
|
+
import { DeletePvcDialogComponent } from '../components/pvc-delete-dialog/component';
|
|
8
|
+
import { RebuildVolumeDialogComponent } from '../components/rebuild-volume-dialog/component';
|
|
9
|
+
import { StorageCommonUtilService } from '../services/common-util.service';
|
|
10
|
+
import { StorageclassFeature, StorageProvisioner, PvcStatusEnum, } from '../types/commons';
|
|
11
|
+
import { STORAGE_RESOURCE_TYPES } from '../types/resource-definition';
|
|
12
|
+
import { getPvcStatus, isStorageClassSupportSnapshot } from '../utils/util';
|
|
13
|
+
import * as i0 from "@angular/core";
|
|
14
|
+
import * as i1 from "@alauda/ui";
|
|
15
|
+
import * as i2 from "@alauda-fe/common";
|
|
16
|
+
import * as i3 from "../services/common-util.service";
|
|
17
|
+
import * as i4 from "@angular/common/http";
|
|
18
|
+
export const PVC_SNAPSHOT_FEATURE_GATE = 'volume-snapshot';
|
|
19
|
+
export function pvcUpdateEnabled(resource) {
|
|
20
|
+
if (!resource) {
|
|
21
|
+
return false;
|
|
22
|
+
}
|
|
23
|
+
return getPvcStatus(resource.status) === PvcStatusEnum.bound;
|
|
24
|
+
}
|
|
25
|
+
export function getPvcDeletingDisabledState(pvc) {
|
|
26
|
+
return {
|
|
27
|
+
tooltip: 'pvc_deleting_can_not_operate',
|
|
28
|
+
disabled: !!pvc?.metadata?.deletionTimestamp,
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
export function getPvcRebuildingDisabledState(pvc) {
|
|
32
|
+
return {
|
|
33
|
+
tooltip: 'pvc_rebuilding_can_not_operate',
|
|
34
|
+
disabled: !!getDomainAnnotation('rebuild', pvc),
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
export const STORAGECLASS_FEATURE_FEATURE_GATE_MAP = {
|
|
38
|
+
[StorageclassFeature.SNAPSHOT]: {
|
|
39
|
+
[StorageProvisioner.TOPOLVM]: PVC_SNAPSHOT_FEATURE_GATE,
|
|
40
|
+
},
|
|
41
|
+
};
|
|
42
|
+
export var PVCExpandDisabledReason;
|
|
43
|
+
(function (PVCExpandDisabledReason) {
|
|
44
|
+
PVCExpandDisabledReason["PVC_STATUS_FORBID"] = "expand_pvc_status_forbid";
|
|
45
|
+
PVCExpandDisabledReason["WITHOUT_STORAGE_CLASS"] = "expand_without_storage_class";
|
|
46
|
+
PVCExpandDisabledReason["STORAGE_CLASS_FORBID"] = "expand_storage_class_forbid";
|
|
47
|
+
PVCExpandDisabledReason["STORAGE_CLASS_NOTFOUND"] = "pvc_storage_class_not_found";
|
|
48
|
+
PVCExpandDisabledReason["PVC_REBUILDING"] = "pvc_rebuilding";
|
|
49
|
+
PVCExpandDisabledReason["PVC_DELETING"] = "pvc_deleting";
|
|
50
|
+
PVCExpandDisabledReason["TOPOLVM_PVC_EXISTED_SNAPSHOT"] = "pvc_existed_snapshot";
|
|
51
|
+
})(PVCExpandDisabledReason || (PVCExpandDisabledReason = {}));
|
|
52
|
+
export var PVCSnapshotDisabledReason;
|
|
53
|
+
(function (PVCSnapshotDisabledReason) {
|
|
54
|
+
PVCSnapshotDisabledReason["PVC_STATUS_FORBID"] = "snapshot_pvc_status_forbid";
|
|
55
|
+
PVCSnapshotDisabledReason["WITHOUT_STORAGE_CLASS"] = "snapshot_without_storage_class";
|
|
56
|
+
PVCSnapshotDisabledReason["STORAGE_CLASS_FORBID"] = "snapshot_storage_class_forbid";
|
|
57
|
+
PVCSnapshotDisabledReason["SNAPSHOT_PLUGIN_NOT_INSTALLED"] = "snapshot_plugin_not_installed";
|
|
58
|
+
PVCSnapshotDisabledReason["STORAGE_CLASS_NOTFOUND"] = "pvc_storage_class_not_found";
|
|
59
|
+
PVCSnapshotDisabledReason["SNAPSHOT_UNSUPPORTED"] = "snapshot_unsupported";
|
|
60
|
+
PVCSnapshotDisabledReason["PVC_REBUILDING"] = "pvc_rebuilding";
|
|
61
|
+
PVCSnapshotDisabledReason["PVC_DELETING"] = "pvc_deleting";
|
|
62
|
+
PVCSnapshotDisabledReason["PVC_EXPANDING"] = "pvc_expanding";
|
|
63
|
+
})(PVCSnapshotDisabledReason || (PVCSnapshotDisabledReason = {}));
|
|
64
|
+
export function defaultPVCExpandTooltipMapper(reason) {
|
|
65
|
+
switch (reason) {
|
|
66
|
+
case PVCExpandDisabledReason.PVC_STATUS_FORBID: {
|
|
67
|
+
return 'pvc_status_forbid_expansion';
|
|
68
|
+
}
|
|
69
|
+
case PVCExpandDisabledReason.WITHOUT_STORAGE_CLASS: {
|
|
70
|
+
return 'pvc_static_forbid_expansion';
|
|
71
|
+
}
|
|
72
|
+
case PVCExpandDisabledReason.STORAGE_CLASS_FORBID: {
|
|
73
|
+
return 'pvc_storageclass_forbid_expansion';
|
|
74
|
+
}
|
|
75
|
+
case PVCExpandDisabledReason.STORAGE_CLASS_NOTFOUND: {
|
|
76
|
+
return 'pvc_storage_class_not_found';
|
|
77
|
+
}
|
|
78
|
+
case PVCExpandDisabledReason.PVC_REBUILDING: {
|
|
79
|
+
return 'pvc_rebuilding_can_not_operate';
|
|
80
|
+
}
|
|
81
|
+
case PVCExpandDisabledReason.PVC_DELETING: {
|
|
82
|
+
return 'pvc_deleting_can_not_operate';
|
|
83
|
+
}
|
|
84
|
+
case PVCExpandDisabledReason.TOPOLVM_PVC_EXISTED_SNAPSHOT: {
|
|
85
|
+
return 'pvc_existed_snapshot_forbid_expansion';
|
|
86
|
+
}
|
|
87
|
+
default: {
|
|
88
|
+
return '';
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
export function defaultPVCSnapshotTooltipMapper(reason) {
|
|
93
|
+
switch (reason) {
|
|
94
|
+
case PVCSnapshotDisabledReason.PVC_STATUS_FORBID: {
|
|
95
|
+
return 'pvc_status_forbid_snapshot';
|
|
96
|
+
}
|
|
97
|
+
case PVCSnapshotDisabledReason.WITHOUT_STORAGE_CLASS:
|
|
98
|
+
case PVCSnapshotDisabledReason.SNAPSHOT_UNSUPPORTED: {
|
|
99
|
+
return 'unsupported_volume_snapshot';
|
|
100
|
+
}
|
|
101
|
+
case PVCSnapshotDisabledReason.STORAGE_CLASS_NOTFOUND: {
|
|
102
|
+
return 'pvc_storage_class_not_found';
|
|
103
|
+
}
|
|
104
|
+
case PVCSnapshotDisabledReason.STORAGE_CLASS_FORBID: {
|
|
105
|
+
return 'snapshot_disabled_tip';
|
|
106
|
+
}
|
|
107
|
+
case PVCSnapshotDisabledReason.SNAPSHOT_PLUGIN_NOT_INSTALLED: {
|
|
108
|
+
return 'snapshot_plugin_disabled_tip';
|
|
109
|
+
}
|
|
110
|
+
case PVCSnapshotDisabledReason.PVC_DELETING: {
|
|
111
|
+
return 'pvc_deleting_can_not_operate';
|
|
112
|
+
}
|
|
113
|
+
case PVCSnapshotDisabledReason.PVC_EXPANDING: {
|
|
114
|
+
return 'pvc_expansion_forbid_snapshot';
|
|
115
|
+
}
|
|
116
|
+
default: {
|
|
117
|
+
return '';
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
export class PVCUtilService {
|
|
122
|
+
constructor(dialog, k8sApi, acpApi, storageCommonUtil, http) {
|
|
123
|
+
this.dialog = dialog;
|
|
124
|
+
this.k8sApi = k8sApi;
|
|
125
|
+
this.acpApi = acpApi;
|
|
126
|
+
this.storageCommonUtil = storageCommonUtil;
|
|
127
|
+
this.http = http;
|
|
128
|
+
this.storageClassListCache = new CacheStore({
|
|
129
|
+
fetcher: (workspace) => this.getStorageClassList$(workspace),
|
|
130
|
+
share: () => shareReplay(1),
|
|
131
|
+
});
|
|
132
|
+
this.volumeSnapshotListCatch = new CacheStore({
|
|
133
|
+
fetcher: (workspace) => this.getVolumeSnapshotList$(workspace),
|
|
134
|
+
share: () => shareReplay(1),
|
|
135
|
+
});
|
|
136
|
+
this.volumeSnapshotClassListCache = new CacheStore({
|
|
137
|
+
fetcher: (workspace) => this.getVolumeSnapshotClassList$(workspace),
|
|
138
|
+
share: () => shareReplay(1),
|
|
139
|
+
});
|
|
140
|
+
this.snapshotPluginCache = new CacheStore({
|
|
141
|
+
fetcher: (workspace) => this.getVolumeSnapshotEnabled$(workspace),
|
|
142
|
+
share: () => shareReplay(1),
|
|
143
|
+
});
|
|
144
|
+
this.getPvcExpandState = this.getPvcExpandState.bind(this);
|
|
145
|
+
}
|
|
146
|
+
getRelatedPods(cluster, namespace, pvcName) {
|
|
147
|
+
return this.http
|
|
148
|
+
.get(`${API_GATEWAY}/acp/v1/kubernetes/${cluster}/namespaces/${namespace}/persistentvolumeclaims/${pvcName}/relatedpods`)
|
|
149
|
+
.pipe(skipError([]));
|
|
150
|
+
}
|
|
151
|
+
getSource$(pod, cluster, namespace) {
|
|
152
|
+
return of(pod).pipe(distinctUntilChanged(this.sameOwnerReference), filter(i => !!i), switchMap(data => this.getSourceInfo$(data, cluster, namespace)), publishRef());
|
|
153
|
+
}
|
|
154
|
+
getSourceInfo$(resource, cluster, namespace) {
|
|
155
|
+
const ownerRef = resource.metadata.ownerReferences?.[0];
|
|
156
|
+
// 无 ownerRef,不显示
|
|
157
|
+
if (!ownerRef) {
|
|
158
|
+
return of(null);
|
|
159
|
+
}
|
|
160
|
+
if (ownerRef.kind !== 'ReplicaSet') {
|
|
161
|
+
return of({
|
|
162
|
+
name: ownerRef.name,
|
|
163
|
+
kind: ownerRef.kind,
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
return this.k8sApi
|
|
167
|
+
.getResource({
|
|
168
|
+
type: RESOURCE_TYPES.REPLICA_SET,
|
|
169
|
+
name: ownerRef.name,
|
|
170
|
+
namespace,
|
|
171
|
+
cluster,
|
|
172
|
+
})
|
|
173
|
+
.pipe(switchMap(resource => this.getSourceInfo$(resource, cluster, namespace)));
|
|
174
|
+
}
|
|
175
|
+
sameOwnerReference(a, b) {
|
|
176
|
+
const aRef = a.metadata.ownerReferences?.[0];
|
|
177
|
+
const bRef = b.metadata.ownerReferences?.[0];
|
|
178
|
+
return aRef && bRef && aRef.name === bRef.name && aRef.kind === bRef.kind;
|
|
179
|
+
}
|
|
180
|
+
delete(pvc, cluster, namespace) {
|
|
181
|
+
return this.dialog.open(DeletePvcDialogComponent, {
|
|
182
|
+
size: DialogSize.Big,
|
|
183
|
+
data: {
|
|
184
|
+
pvc,
|
|
185
|
+
cluster,
|
|
186
|
+
namespace,
|
|
187
|
+
},
|
|
188
|
+
});
|
|
189
|
+
}
|
|
190
|
+
rebuild(pvc, cluster, namespace) {
|
|
191
|
+
this.dialog.open(RebuildVolumeDialogComponent, {
|
|
192
|
+
size: DialogSize.Big,
|
|
193
|
+
data: {
|
|
194
|
+
pvc,
|
|
195
|
+
cluster,
|
|
196
|
+
namespace,
|
|
197
|
+
},
|
|
198
|
+
});
|
|
199
|
+
}
|
|
200
|
+
getVolumeSnapshotEnabled$({ namespace, cluster }) {
|
|
201
|
+
return this.k8sApi
|
|
202
|
+
.getResourceList({
|
|
203
|
+
type: STORAGE_RESOURCE_TYPES.VOLUME_SNAPSHOT,
|
|
204
|
+
cluster,
|
|
205
|
+
namespace,
|
|
206
|
+
})
|
|
207
|
+
.pipe(catchError(() => of(false)), map(res => !!res), publishRef());
|
|
208
|
+
}
|
|
209
|
+
getStorageClassList$({ project, cluster }) {
|
|
210
|
+
return this.acpApi
|
|
211
|
+
.getResourcesByProject(project, {
|
|
212
|
+
cluster,
|
|
213
|
+
...COMMON_RESOURCE_DEFINITIONS.STORAGE_CLASS,
|
|
214
|
+
})
|
|
215
|
+
.pipe(map(res => res.items), skipError([]), publishRef());
|
|
216
|
+
}
|
|
217
|
+
getVolumeSnapshotList$({ cluster, namespace }) {
|
|
218
|
+
return this.k8sApi
|
|
219
|
+
.getResourceList({
|
|
220
|
+
type: STORAGE_RESOURCE_TYPES.VOLUME_SNAPSHOT,
|
|
221
|
+
cluster,
|
|
222
|
+
namespace,
|
|
223
|
+
})
|
|
224
|
+
.pipe(map(r => r.items), skipError([]));
|
|
225
|
+
}
|
|
226
|
+
getVolumeSnapshotClassList$({ cluster }) {
|
|
227
|
+
return this.k8sApi
|
|
228
|
+
.getResourceList({
|
|
229
|
+
type: RESOURCE_TYPES.VOLUME_SNAPSHOT_CLASS,
|
|
230
|
+
cluster,
|
|
231
|
+
})
|
|
232
|
+
.pipe(map(r => r.items), skipError([]));
|
|
233
|
+
}
|
|
234
|
+
getPvcExpandStateFn$(workspace) {
|
|
235
|
+
return combineLatest([
|
|
236
|
+
this.storageClassListCache.fetch(workspace),
|
|
237
|
+
this.volumeSnapshotListCatch.fetch(workspace),
|
|
238
|
+
]).pipe(map(([scList, vsList]) => (pvc, mapper) => this.getPvcExpandState({
|
|
239
|
+
pvc,
|
|
240
|
+
scList,
|
|
241
|
+
vsList,
|
|
242
|
+
mapper,
|
|
243
|
+
})), startWith(() => null), publishRef());
|
|
244
|
+
}
|
|
245
|
+
getPvcSnapshotStateFn$(workspace) {
|
|
246
|
+
return combineLatest([
|
|
247
|
+
this.snapshotPluginCache.fetch(workspace),
|
|
248
|
+
this.storageClassListCache.fetch(workspace),
|
|
249
|
+
this.volumeSnapshotClassListCache.fetch(workspace),
|
|
250
|
+
this.storageCommonUtil.storageDescriptionMapCache.fetch(null),
|
|
251
|
+
]).pipe(map(([pluginEnabled, scList, vscList, storageDescriptionList]) => (pvc, mapper) => this.getPvcSnapshotState({
|
|
252
|
+
pvc,
|
|
253
|
+
scList,
|
|
254
|
+
vscList,
|
|
255
|
+
pluginEnabled,
|
|
256
|
+
storageDescriptionList,
|
|
257
|
+
mapper,
|
|
258
|
+
})), startWith(() => null), // using async will emit 'null' and result in error in pure pipe
|
|
259
|
+
publishRef());
|
|
260
|
+
}
|
|
261
|
+
getPvcExpandState({ pvc, scList = [], vsList = [], mapper = defaultPVCExpandTooltipMapper, }) {
|
|
262
|
+
const canUpdate = pvcUpdateEnabled(pvc);
|
|
263
|
+
const isStaticPvc = pvc.spec.storageClassName === '';
|
|
264
|
+
const sc = scList.find(item => item.metadata.name === pvc.spec.storageClassName);
|
|
265
|
+
let supportExpansion = false;
|
|
266
|
+
let isTopoLVMPvcWithSnapshot = false;
|
|
267
|
+
if (sc) {
|
|
268
|
+
supportExpansion = this.storageCommonUtil.isStorageClassFeatureSupported(sc, StorageclassFeature.EXPANSION);
|
|
269
|
+
isTopoLVMPvcWithSnapshot =
|
|
270
|
+
sc.provisioner === StorageProvisioner.TOPOLVM &&
|
|
271
|
+
vsList.some(snapshot => getSubdomainLabel('snapshot', 'sourcepvc', snapshot) ===
|
|
272
|
+
pvc.metadata.name);
|
|
273
|
+
}
|
|
274
|
+
const pvcRebuilding = !!getDomainAnnotation('rebuild', pvc);
|
|
275
|
+
const pvcDeleting = !!pvc?.metadata?.deletionTimestamp;
|
|
276
|
+
const reason = this.getPvcExpandDisabledReason(canUpdate, sc, supportExpansion, pvcRebuilding, pvcDeleting, isStaticPvc, isTopoLVMPvcWithSnapshot);
|
|
277
|
+
return {
|
|
278
|
+
disabled: pvcRebuilding ||
|
|
279
|
+
pvcDeleting ||
|
|
280
|
+
!canUpdate ||
|
|
281
|
+
isStaticPvc ||
|
|
282
|
+
isTopoLVMPvcWithSnapshot ||
|
|
283
|
+
!supportExpansion,
|
|
284
|
+
reason,
|
|
285
|
+
tooltip: mapper(reason),
|
|
286
|
+
};
|
|
287
|
+
}
|
|
288
|
+
getPvcExpandDisabledReason(canUpdate, sc, supportExpand, isPvcRebuilding, isPvcDeleting, isStaticPvc, isTopoLVMPvcWithSnapshot) {
|
|
289
|
+
if (isPvcRebuilding) {
|
|
290
|
+
return PVCExpandDisabledReason.PVC_REBUILDING;
|
|
291
|
+
}
|
|
292
|
+
if (isPvcDeleting) {
|
|
293
|
+
return PVCExpandDisabledReason.PVC_DELETING;
|
|
294
|
+
}
|
|
295
|
+
if (!sc) {
|
|
296
|
+
return isStaticPvc
|
|
297
|
+
? PVCExpandDisabledReason.WITHOUT_STORAGE_CLASS
|
|
298
|
+
: PVCExpandDisabledReason.STORAGE_CLASS_NOTFOUND;
|
|
299
|
+
}
|
|
300
|
+
if (isTopoLVMPvcWithSnapshot) {
|
|
301
|
+
return PVCExpandDisabledReason.TOPOLVM_PVC_EXISTED_SNAPSHOT;
|
|
302
|
+
}
|
|
303
|
+
if (!supportExpand) {
|
|
304
|
+
return PVCExpandDisabledReason.STORAGE_CLASS_FORBID;
|
|
305
|
+
}
|
|
306
|
+
if (!canUpdate) {
|
|
307
|
+
return PVCExpandDisabledReason.PVC_STATUS_FORBID;
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
getPvcSnapshotState({ pvc, scList = [], vscList = [], pluginEnabled = false, storageDescriptionList, mapper = defaultPVCSnapshotTooltipMapper, }) {
|
|
311
|
+
const canUpdate = pvcUpdateEnabled(pvc);
|
|
312
|
+
const isStaticPvc = pvc?.spec?.storageClassName === '';
|
|
313
|
+
const sc = scList.find(item => item.metadata.name === pvc?.spec?.storageClassName);
|
|
314
|
+
let supportSnapshot = false;
|
|
315
|
+
if (sc) {
|
|
316
|
+
const thirdPartySnapshot = this.storageCommonUtil.getThirdPartySnapshotSupported(sc, storageDescriptionList);
|
|
317
|
+
// null 表示未匹配到第三方类型存储
|
|
318
|
+
supportSnapshot =
|
|
319
|
+
thirdPartySnapshot === null
|
|
320
|
+
? isStorageClassSupportSnapshot(sc, vscList)
|
|
321
|
+
: thirdPartySnapshot;
|
|
322
|
+
}
|
|
323
|
+
const pvcDeleting = !!pvc?.metadata?.deletionTimestamp;
|
|
324
|
+
const pvcExpanding = toUnitGi(pvc?.spec?.resources?.requests?.storage) >
|
|
325
|
+
toUnitGi(pvc?.status?.capacity?.storage);
|
|
326
|
+
const reason = this.getPvcSnapshotDisabledReason(canUpdate, sc, pluginEnabled, supportSnapshot, isStaticPvc, pvcDeleting, pvcExpanding);
|
|
327
|
+
return {
|
|
328
|
+
disabled: pvcDeleting ||
|
|
329
|
+
!pluginEnabled ||
|
|
330
|
+
!canUpdate ||
|
|
331
|
+
pvcExpanding ||
|
|
332
|
+
isStaticPvc ||
|
|
333
|
+
!supportSnapshot,
|
|
334
|
+
reason,
|
|
335
|
+
tooltip: mapper(reason),
|
|
336
|
+
};
|
|
337
|
+
}
|
|
338
|
+
getPvcUpdateDisabledState(pvc) {
|
|
339
|
+
return getDisabledState(() => getPvcRebuildingDisabledState(pvc), () => getPvcDeletingDisabledState(pvc), () => ({
|
|
340
|
+
tooltip: 'pvc_status_forbid_update',
|
|
341
|
+
disabled: !pvcUpdateEnabled(pvc),
|
|
342
|
+
}));
|
|
343
|
+
}
|
|
344
|
+
getPvcRebuildDisabledState$(pvc, cluster, namespace) {
|
|
345
|
+
const dataSourceName = pvc?.spec?.dataSource?.name;
|
|
346
|
+
const resource$ = dataSourceName
|
|
347
|
+
? this.k8sApi
|
|
348
|
+
.getResource({
|
|
349
|
+
type: STORAGE_RESOURCE_TYPES.VOLUME_SNAPSHOT,
|
|
350
|
+
cluster,
|
|
351
|
+
namespace,
|
|
352
|
+
name: dataSourceName,
|
|
353
|
+
})
|
|
354
|
+
.pipe(skipError(null))
|
|
355
|
+
: of(null);
|
|
356
|
+
return resource$.pipe(map(snapshot => getDisabledState(() => getPvcRebuildingDisabledState(pvc), () => getPvcDeletingDisabledState(pvc), () => ({
|
|
357
|
+
disabled: pvc?.spec?.storageClassName === '',
|
|
358
|
+
tooltip: 'only_supported_rebuild_dynamic_pvc',
|
|
359
|
+
}), () => ({
|
|
360
|
+
disabled: pvc?.spec?.dataSource?.name && !snapshot,
|
|
361
|
+
tooltip: 'pvc_data_source_not_operate',
|
|
362
|
+
}))), publishRef());
|
|
363
|
+
}
|
|
364
|
+
getPvcDeleteDisabledState(pvc) {
|
|
365
|
+
return getDisabledState(() => getPvcRebuildingDisabledState(pvc));
|
|
366
|
+
}
|
|
367
|
+
getPvcSnapshotDisabledReason(canUpdate, sc, pluginEnabled, supportSnapshot, isStaticPvc, isPvcDeleting, isPvcExpanding) {
|
|
368
|
+
if (isPvcDeleting) {
|
|
369
|
+
return PVCSnapshotDisabledReason.PVC_DELETING;
|
|
370
|
+
}
|
|
371
|
+
if (!pluginEnabled) {
|
|
372
|
+
return PVCSnapshotDisabledReason.SNAPSHOT_PLUGIN_NOT_INSTALLED;
|
|
373
|
+
}
|
|
374
|
+
if (!sc) {
|
|
375
|
+
return isStaticPvc
|
|
376
|
+
? PVCSnapshotDisabledReason.WITHOUT_STORAGE_CLASS
|
|
377
|
+
: PVCSnapshotDisabledReason.STORAGE_CLASS_NOTFOUND;
|
|
378
|
+
}
|
|
379
|
+
if (!supportSnapshot) {
|
|
380
|
+
return [
|
|
381
|
+
StorageProvisioner.CEPH_FS_INTERNAL,
|
|
382
|
+
StorageProvisioner.CEPH_FS_RBD,
|
|
383
|
+
StorageProvisioner.TOPOLVM,
|
|
384
|
+
].includes(sc.provisioner)
|
|
385
|
+
? PVCSnapshotDisabledReason.STORAGE_CLASS_FORBID
|
|
386
|
+
: PVCSnapshotDisabledReason.SNAPSHOT_UNSUPPORTED;
|
|
387
|
+
}
|
|
388
|
+
if (!canUpdate) {
|
|
389
|
+
return PVCSnapshotDisabledReason.PVC_STATUS_FORBID;
|
|
390
|
+
}
|
|
391
|
+
if (isPvcExpanding) {
|
|
392
|
+
return PVCSnapshotDisabledReason.PVC_EXPANDING;
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
static { this.ɵfac = function PVCUtilService_Factory(t) { return new (t || PVCUtilService)(i0.ɵɵinject(i1.DialogService), i0.ɵɵinject(i2.K8sApiService), i0.ɵɵinject(i2.AcpCommonApiService), i0.ɵɵinject(i3.StorageCommonUtilService), i0.ɵɵinject(i4.HttpClient)); }; }
|
|
396
|
+
static { this.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: PVCUtilService, factory: PVCUtilService.ɵfac, providedIn: 'root' }); }
|
|
397
|
+
}
|
|
398
|
+
__decorate([
|
|
399
|
+
bind,
|
|
400
|
+
__metadata("design:type", Function),
|
|
401
|
+
__metadata("design:paramtypes", [Object, String, String]),
|
|
402
|
+
__metadata("design:returntype", void 0)
|
|
403
|
+
], PVCUtilService.prototype, "getSource$", null);
|
|
404
|
+
__decorate([
|
|
405
|
+
bind,
|
|
406
|
+
__metadata("design:type", Function),
|
|
407
|
+
__metadata("design:paramtypes", [Object, String, String]),
|
|
408
|
+
__metadata("design:returntype", void 0)
|
|
409
|
+
], PVCUtilService.prototype, "getPvcRebuildDisabledState$", null);
|
|
410
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PVCUtilService, [{
|
|
411
|
+
type: Injectable,
|
|
412
|
+
args: [{
|
|
413
|
+
providedIn: 'root',
|
|
414
|
+
}]
|
|
415
|
+
}], () => [{ type: i1.DialogService }, { type: i2.K8sApiService }, { type: i2.AcpCommonApiService }, { type: i3.StorageCommonUtilService }, { type: i4.HttpClient }], { getSource$: [], getPvcRebuildDisabledState$: [] }); })();
|
|
416
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHZjLXV0aWwuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL21vZHVsZXMvc3RvcmFnZS9zcmMvbGliL3NlcnZpY2VzL3B2Yy11dGlsLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsVUFBVSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3ZELE9BQU8sRUFDTCxhQUFhLEVBQ2IsZ0JBQWdCLEVBR2hCLFNBQVMsRUFFVCxVQUFVLEVBQ1YsVUFBVSxFQUNWLG1CQUFtQixFQUNuQixJQUFJLEVBQ0osbUJBQW1CLEVBR25CLFdBQVcsRUFDWCxpQkFBaUIsRUFDakIsUUFBUSxFQUNSLGNBQWMsRUFDZCwyQkFBMkIsR0FDNUIsTUFBTSxtQkFBbUIsQ0FBQztBQUMzQixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBRUwsVUFBVSxFQUNWLGFBQWEsRUFDYixvQkFBb0IsRUFDcEIsTUFBTSxFQUNOLEdBQUcsRUFDSCxFQUFFLEVBQ0YsV0FBVyxFQUNYLFNBQVMsRUFDVCxTQUFTLEdBQ1YsTUFBTSxNQUFNLENBQUM7QUFFZCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNyRixPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUM3RixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUMzRSxPQUFPLEVBQ0wsbUJBQW1CLEVBQ25CLGtCQUFrQixFQUNsQixhQUFhLEdBQ2QsTUFBTSxrQkFBa0IsQ0FBQztBQU0xQixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsWUFBWSxFQUFFLDZCQUE2QixFQUFFLE1BQU0sZUFBZSxD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QUF5QixDQUFDLHFCQUFxQjtnQkFDakQsQ0FBQyxDQUFDLHlCQUF5QixDQUFDLHNCQUFzQixDQUFDO1FBQ3ZELENBQUM7UUFFRCxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDckIsT0FBTztnQkFDTCxrQkFBa0IsQ0FBQyxnQkFBZ0I7Z0JBQ25DLGtCQUFrQixDQUFDLFdBQVc7Z0JBQzlCLGtCQUFrQixDQUFDLE9BQU87YUFDM0IsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQztnQkFDeEIsQ0FBQyxDQUFDLHlCQUF5QixDQUFDLG9CQUFvQjtnQkFDaEQsQ0FBQyxDQUFDLHlCQUF5QixDQUFDLG9CQUFvQixDQUFDO1FBQ3JELENBQUM7UUFFRCxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDZixPQUFPLHlCQUF5QixDQUFDLGlCQUFpQixDQUFDO1FBQ3JELENBQUM7UUFFRCxJQUFJLGNBQWMsRUFBRSxDQUFDO1lBQ25CLE9BQU8seUJBQXlCLENBQUMsYUFBYSxDQUFDO1FBQ2pELENBQUM7SUFDSCxDQUFDOytFQWxkVSxjQUFjO3VFQUFkLGNBQWMsV0FBZCxjQUFjLG1CQUZiLE1BQU07O0FBNENsQjtJQURDLElBQUk7Ozs7Z0RBUUo7QUFpVkQ7SUFEQyxJQUFJOzs7O2lFQW1DSjtpRkFwYVUsY0FBYztjQUgxQixVQUFVO2VBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkI7NEtBMkNDLFVBQVUsTUF3VlYsMkJBQTJCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlhbG9nU2VydmljZSwgRGlhbG9nU2l6ZSB9IGZyb20gJ0BhbGF1ZGEvdWknO1xuaW1wb3J0IHtcbiAgSzhzQXBpU2VydmljZSxcbiAgZ2V0RGlzYWJsZWRTdGF0ZSxcbiAgUGVyc2lzdGVudFZvbHVtZUNsYWltLFxuICBXb3Jrc3BhY2UsXG4gIHNraXBFcnJvcixcbiAgU3RyaW5nTWFwLFxuICBwdWJsaXNoUmVmLFxuICBDYWNoZVN0b3JlLFxuICBBY3BDb21tb25BcGlTZXJ2aWNlLFxuICBiaW5kLFxuICBnZXREb21haW5Bbm5vdGF0aW9uLFxuICBQb2QsXG4gIEt1YmVybmV0ZXNSZXNvdXJjZSxcbiAgQVBJX0dBVEVXQVksXG4gIGdldFN1YmRvbWFpbkxhYmVsLFxuICB0b1VuaXRHaSxcbiAgUkVTT1VSQ0VfVFlQRVMsXG4gIENPTU1PTl9SRVNPVVJDRV9ERUZJTklUSU9OUyxcbn0gZnJvbSAnQGFsYXVkYS1mZS9jb21tb24nO1xuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIE9ic2VydmFibGUsXG4gIGNhdGNoRXJyb3IsXG4gIGNvbWJpbmVMYXRlc3QsXG4gIGRpc3RpbmN0VW50aWxDaGFuZ2VkLFxuICBmaWx0ZXIsXG4gIG1hcCxcbiAgb2YsXG4gIHNoYXJlUmVwbGF5LFxuICBzdGFydFdpdGgsXG4gIHN3aXRjaE1hcCxcbn0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IERlbGV0ZVB2Y0RpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudHMvcHZjLWRlbGV0ZS1kaWFsb2cvY29tcG9uZW50JztcbmltcG9ydCB7IFJlYnVpbGRWb2x1bWVEaWFsb2dDb21wb25lbnQgfSBmcm9tICcuLi9jb21wb25lbnRzL3JlYnVpbGQtdm9sdW1lLWRpYWxvZy9jb21wb25lbnQnO1xuaW1wb3J0IHsgU3RvcmFnZUNvbW1vblV0aWxTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvY29tbW9uLXV0aWwuc2VydmljZSc7XG5pbXBvcnQge1xuICBTdG9yYWdlY2xhc3NGZWF0dXJlLFxuICBTdG9yYWdlUHJvdmlzaW9uZXIsXG4gIFB2Y1N0YXR1c0VudW0sXG59IGZyb20gJy4uL3R5cGVzL2NvbW1vbnMnO1xuaW1wb3J0IHtcbiAgU3RvcmFnZUNsYXNzLFxuICBWb2x1bWVTbmFwc2hvdENsYXNzLFxuICBWb2x1bWVTbmFwc2hvdCxcbn0gZnJvbSAnLi4vdHlwZXMvazhzJztcbmltcG9ydCB7IFNUT1JBR0VfUkVTT1VSQ0VfVFlQRVMgfSBmcm9tICcuLi90eXBlcy9yZXNvdXJjZS1kZWZpbml0aW9uJztcbmltcG9ydCB7IGdldFB2Y1N0YXR1cywgaXNTdG9yYWdlQ2xhc3NTdXBwb3J0U25hcHNob3QgfSBmcm9tICcuLi91dGlscy91dGlsJztcblxuZXhwb3J0IGNvbnN0IFBWQ19TTkFQU0hPVF9GRUFUVVJFX0dBVEUgPSAndm9sdW1lLXNuYXBzaG90JztcblxuZXhwb3J0IGZ1bmN0aW9uIHB2Y1VwZGF0ZUVuYWJsZWQocmVzb3VyY2U6IFBlcnNpc3RlbnRWb2x1bWVDbGFpbSkge1xuICBpZiAoIXJlc291cmNlKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiBnZXRQdmNTdGF0dXMocmVzb3VyY2Uuc3RhdHVzKSA9PT0gUHZjU3RhdHVzRW51bS5ib3VuZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFB2Y0RlbGV0aW5nRGlzYWJsZWRTdGF0ZShwdmM6IFBlcnNpc3RlbnRWb2x1bWVDbGFpbSkge1xuICByZXR1cm4ge1xuICAgIHRvb2x0aXA6ICdwdmNfZGVsZXRpbmdfY2FuX25vdF9vcGVyYXRlJyxcbiAgICBkaXNhYmxlZDogISFwdmM/Lm1ldGFkYXRhPy5kZWxldGlvblRpbWVzdGFtcCxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFB2Y1JlYnVpbGRpbmdEaXNhYmxlZFN0YXRlKHB2YzogUGVyc2lzdGVudFZvbHVtZUNsYWltKSB7XG4gIHJldHVybiB7XG4gICAgdG9vbHRpcDogJ3B2Y19yZWJ1aWxkaW5nX2Nhbl9ub3Rfb3BlcmF0ZScsXG4gICAgZGlzYWJsZWQ6ICEhZ2V0RG9tYWluQW5ub3RhdGlvbigncmVidWlsZCcsIHB2YyksXG4gIH07XG59XG5cbmV4cG9ydCBjb25zdCBTVE9SQUdFQ0xBU1NfRkVBVFVSRV9GRUFUVVJFX0dBVEVfTUFQOiBQYXJ0aWFsPFxuICBSZWNvcmQ8U3RvcmFnZWNsYXNzRmVhdHVyZSwgUGFydGlhbDxSZWNvcmQ8U3RvcmFnZVByb3Zpc2lvbmVyLCBzdHJpbmc+Pj5cbj4gPSB7XG4gIFtTdG9yYWdlY2xhc3NGZWF0dXJlLlNOQVBTSE9UXToge1xuICAgIFtTdG9yYWdlUHJvdmlzaW9uZXIuVE9QT0xWTV06IFBWQ19TTkFQU0hPVF9GRUFUVVJFX0dBVEUsXG4gIH0sXG59O1xuXG5leHBvcnQgZW51bSBQVkNFeHBhbmREaXNhYmxlZFJlYXNvbiB7XG4gIFBWQ19TVEFUVVNfRk9SQklEID0gJ2V4cGFuZF9wdmNfc3RhdHVzX2ZvcmJpZCcsXG4gIFdJVEhPVVRfU1RPUkFHRV9DTEFTUyA9ICdleHBhbmRfd2l0aG91dF9zdG9yYWdlX2NsYXNzJyxcbiAgU1RPUkFHRV9DTEFTU19GT1JCSUQgPSAnZXhwYW5kX3N0b3JhZ2VfY2xhc3NfZm9yYmlkJyxcbiAgU1RPUkFHRV9DTEFTU19OT1RGT1VORCA9ICdwdmNfc3RvcmFnZV9jbGFzc19ub3RfZm91bmQnLFxuICBQVkNfUkVCVUlMRElORyA9ICdwdmNfcmVidWlsZGluZycsXG4gIFBWQ19ERUxFVElORyA9ICdwdmNfZGVsZXRpbmcnLFxuICBUT1BPTFZNX1BWQ19FWElTVEVEX1NOQVBTSE9UID0gJ3B2Y19leGlzdGVkX3NuYXBzaG90Jyxcbn1cblxuZXhwb3J0IGVudW0gUFZDU25hcHNob3REaXNhYmxlZFJlYXNvbiB7XG4gIFBWQ19TVEFUVVNfRk9SQklEID0gJ3NuYXBzaG90X3B2Y19zdGF0dXNfZm9yYmlkJyxcbiAgV0lUSE9VVF9TVE9SQUdFX0NMQVNTID0gJ3NuYXBzaG90X3dpdGhvdXRfc3RvcmFnZV9jbGFzcycsXG4gIFNUT1JBR0VfQ0xBU1NfRk9SQklEID0gJ3NuYXBzaG90X3N0b3JhZ2VfY2xhc3NfZm9yYmlkJyxcbiAgU05BUFNIT1RfUExVR0lOX05PVF9JTlNUQUxMRUQgPSAnc25hcHNob3RfcGx1Z2luX25vdF9pbnN0YWxsZWQnLFxuICBTVE9SQUdFX0NMQVNTX05PVEZPVU5EID0gJ3B2Y19zdG9yYWdlX2NsYXNzX25vdF9mb3VuZCcsXG4gIFNOQVBTSE9UX1VOU1VQUE9SVEVEID0gJ3NuYXBzaG90X3Vuc3VwcG9ydGVkJyxcbiAgUFZDX1JFQlVJTERJTkcgPSAncHZjX3JlYnVpbGRpbmcnLFxuICBQVkNfREVMRVRJTkcgPSAncHZjX2RlbGV0aW5nJyxcbiAgUFZDX0VYUEFORElORyA9ICdwdmNfZXhwYW5kaW5nJyxcbn1cblxuZXhwb3J0IHR5cGUgUFZDQWN0aW9uU3RhdGVGbiA9IChcbiAgcHZjOiBQZXJzaXN0ZW50Vm9sdW1lQ2xhaW0sXG4gIG1hcHBlcj86IFBWQ0FjdGlvblRvb2x0aXBNYXBwZXIsXG4pID0+IFBWQ0FjdGlvblN0YXRlO1xuXG5leHBvcnQgaW50ZXJmYWNlIFBWQ0FjdGlvblN0YXRlIHtcbiAgZGlzYWJsZWQ6IGJvb2xlYW47XG4gIHJlYXNvbj86IFBWQ0V4cGFuZERpc2FibGVkUmVhc29uIHwgUFZDU25hcHNob3REaXNhYmxlZFJlYXNvbjtcbiAgdG9vbHRpcD86IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgUFZDQWN0aW9uVG9vbHRpcE1hcHBlciA9IChcbiAgcmVhc29uOiBQVkNFeHBhbmREaXNhYmxlZFJlYXNvbiB8IFBWQ1NuYXBzaG90RGlzYWJsZWRSZWFzb24sXG4pID0+IHN0cmluZztcblxuZXhwb3J0IGZ1bmN0aW9uIGRlZmF1bHRQVkNFeHBhbmRUb29sdGlwTWFwcGVyKHJlYXNvbjogUFZDRXhwYW5kRGlzYWJsZWRSZWFzb24pIHtcbiAgc3dpdGNoIChyZWFzb24pIHtcbiAgICBjYXNlIFBWQ0V4cGFuZERpc2FibGVkUmVhc29uLlBWQ19TVEFUVVNfRk9SQklEOiB7XG4gICAgICByZXR1cm4gJ3B2Y19zdGF0dXNfZm9yYmlkX2V4cGFuc2lvbic7XG4gICAgfVxuICAgIGNhc2UgUFZDRXhwYW5kRGlzYWJsZWRSZWFzb24uV0lUSE9VVF9TVE9SQUdFX0NMQVNTOiB7XG4gICAgICByZXR1cm4gJ3B2Y19zdGF0aWNfZm9yYmlkX2V4cGFuc2lvbic7XG4gICAgfVxuICAgIGNhc2UgUFZDRXhwYW5kRGlzYWJsZWRSZWFzb24uU1RPUkFHRV9DTEFTU19GT1JCSUQ6IHtcbiAgICAgIHJldHVybiAncHZjX3N0b3JhZ2VjbGFzc19mb3JiaWRfZXhwYW5zaW9uJztcbiAgICB9XG4gICAgY2FzZSBQVkNFeHBhbmREaXNhYmxlZFJlYXNvbi5TVE9SQUdFX0NMQVNTX05PVEZPVU5EOiB7XG4gICAgICByZXR1cm4gJ3B2Y19zdG9yYWdlX2NsYXNzX25vdF9mb3VuZCc7XG4gICAgfVxuICAgIGNhc2UgUFZDRXhwYW5kRGlzYWJsZWRSZWFzb24uUFZDX1JFQlVJTERJTkc6IHtcbiAgICAgIHJldHVybiAncHZjX3JlYnVpbGRpbmdfY2FuX25vdF9vcGVyYXRlJztcbiAgICB9XG4gICAgY2FzZSBQVkNFeHBhbmREaXNhYmxlZFJlYXNvbi5QVkNfREVMRVRJTkc6IHtcbiAgICAgIHJldHVybiAncHZjX2RlbGV0aW5nX2Nhbl9ub3Rfb3BlcmF0ZSc7XG4gICAgfVxuICAgIGNhc2UgUFZDRXhwYW5kRGlzYWJsZWRSZWFzb24uVE9QT0xWTV9QVkNfRVhJU1RFRF9TTkFQU0hPVDoge1xuICAgICAgcmV0dXJuICdwdmNfZXhpc3RlZF9zbmFwc2hvdF9mb3JiaWRfZXhwYW5zaW9uJztcbiAgICB9XG4gICAgZGVmYXVsdDoge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVmYXVsdFBWQ1NuYXBzaG90VG9vbHRpcE1hcHBlcihcbiAgcmVhc29uOiBQVkNTbmFwc2hvdERpc2FibGVkUmVhc29uLFxuKSB7XG4gIHN3aXRjaCAocmVhc29uKSB7XG4gICAgY2FzZSBQVkNTbmFwc2hvdERpc2FibGVkUmVhc29uLlBWQ19TVEFUVVNfRk9SQklEOiB7XG4gICAgICByZXR1cm4gJ3B2Y19zdGF0dXNfZm9yYmlkX3NuYXBzaG90JztcbiAgICB9XG4gICAgY2FzZSBQVkNTbmFwc2hvdERpc2FibGVkUmVhc29uLldJVEhPVVRfU1RPUkFHRV9DTEFTUzpcbiAgICBjYXNlIFBWQ1NuYXBzaG90RGlzYWJsZWRSZWFzb24uU05BUFNIT1RfVU5TVVBQT1JURUQ6IHtcbiAgICAgIHJldHVybiAndW5zdXBwb3J0ZWRfdm9sdW1lX3NuYXBzaG90JztcbiAgICB9XG4gICAgY2FzZSBQVkNTbmFwc2hvdERpc2FibGVkUmVhc29uLlNUT1JBR0VfQ0xBU1NfTk9URk9VTkQ6IHtcbiAgICAgIHJldHVybiAncHZjX3N0b3JhZ2VfY2xhc3Nfbm90X2ZvdW5kJztcbiAgICB9XG4gICAgY2FzZSBQVkNTbmFwc2hvdERpc2FibGVkUmVhc29uLlNUT1JBR0VfQ0xBU1NfRk9SQklEOiB7XG4gICAgICByZXR1cm4gJ3NuYXBzaG90X2Rpc2FibGVkX3RpcCc7XG4gICAgfVxuICAgIGNhc2UgUFZDU25hcHNob3REaXNhYmxlZFJlYXNvbi5TTkFQU0hPVF9QTFVHSU5fTk9UX0lOU1RBTExFRDoge1xuICAgICAgcmV0dXJuICdzbmFwc2hvdF9wbHVnaW5fZGlzYWJsZWRfdGlwJztcbiAgICB9XG4gICAgY2FzZSBQVkNTbmFwc2hvdERpc2FibGVkUmVhc29uLlBWQ19ERUxFVElORzoge1xuICAgICAgcmV0dXJuICdwdmNfZGVsZXRpbmdfY2FuX25vdF9vcGVyYXRlJztcbiAgICB9XG4gICAgY2FzZSBQVkNTbmFwc2hvdERpc2FibGVkUmVhc29uLlBWQ19FWFBBTkRJTkc6IHtcbiAgICAgIHJldHVybiAncHZjX2V4cGFuc2lvbl9mb3JiaWRfc25hcHNob3QnO1xuICAgIH1cbiAgICBkZWZhdWx0OiB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICB9XG59XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBQVkNVdGlsU2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZGlhbG9nOiBEaWFsb2dTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgazhzQXBpOiBLOHNBcGlTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgYWNwQXBpOiBBY3BDb21tb25BcGlTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgc3RvcmFnZUNvbW1vblV0aWw6IFN0b3JhZ2VDb21tb25VdGlsU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGh0dHA6IEh0dHBDbGllbnQsXG4gICkge1xuICAgIHRoaXMuZ2V0UHZjRXhwYW5kU3RhdGUgPSB0aGlzLmdldFB2Y0V4cGFuZFN0YXRlLmJpbmQodGhpcyk7XG4gIH1cblxuICBnZXRSZWxhdGVkUG9kcyhjbHVzdGVyOiBzdHJpbmcsIG5hbWVzcGFjZTogc3RyaW5nLCBwdmNOYW1lOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAuZ2V0PFxuICAgICAgICBQb2RbXVxuICAgICAgPihgJHtBUElfR0FURVdBWX0vYWNwL3YxL2t1YmVybmV0ZXMvJHtjbHVzdGVyfS9uYW1lc3BhY2VzLyR7bmFtZXNwYWNlfS9wZXJzaXN0ZW50dm9sdW1lY2xhaW1zLyR7cHZjTmFtZX0vcmVsYXRlZHBvZHNgKVxuICAgICAgLnBpcGUoc2tpcEVycm9yKFtdIGFzIFBvZFtdKSk7XG4gIH1cblxuICBzdG9yYWdlQ2xhc3NMaXN0Q2FjaGUgPSBuZXcgQ2FjaGVTdG9yZSh7XG4gICAgZmV0Y2hlcjogKHdvcmtzcGFjZTogV29ya3NwYWNlKSA9PiB0aGlzLmdldFN0b3JhZ2VDbGFzc0xpc3QkKHdvcmtzcGFjZSksXG4gICAgc2hhcmU6ICgpID0+IHNoYXJlUmVwbGF5KDEpLFxuICB9KTtcblxuICB2b2x1bWVTbmFwc2hvdExpc3RDYXRjaCA9IG5ldyBDYWNoZVN0b3JlKHtcbiAgICBmZXRjaGVyOiAod29ya3NwYWNlOiBXb3Jrc3BhY2UpID0+IHRoaXMuZ2V0Vm9sdW1lU25hcHNob3RMaXN0JCh3b3Jrc3BhY2UpLFxuICAgIHNoYXJlOiAoKSA9PiBzaGFyZVJlcGxheSgxKSxcbiAgfSk7XG5cbiAgdm9sdW1lU25hcHNob3RDbGFzc0xpc3RDYWNoZSA9IG5ldyBDYWNoZVN0b3JlKHtcbiAgICBmZXRjaGVyOiAod29ya3NwYWNlOiBXb3Jrc3BhY2UpID0+XG4gICAgICB0aGlzLmdldFZvbHVtZVNuYXBzaG90Q2xhc3NMaXN0JCh3b3Jrc3BhY2UpLFxuICAgIHNoYXJlOiAoKSA9PiBzaGFyZVJlcGxheSgxKSxcbiAgfSk7XG5cbiAgc25hcHNob3RQbHVnaW5DYWNoZSA9IG5ldyBDYWNoZVN0b3JlKHtcbiAgICBmZXRjaGVyOiAod29ya3NwYWNlOiBXb3Jrc3BhY2UpID0+XG4gICAgICB0aGlzLmdldFZvbHVtZVNuYXBzaG90RW5hYmxlZCQod29ya3NwYWNlKSxcbiAgICBzaGFyZTogKCkgPT4gc2hhcmVSZXBsYXkoMSksXG4gIH0pO1xuXG4gIEBiaW5kXG4gIGdldFNvdXJjZSQocG9kOiBQb2QsIGNsdXN0ZXI6IHN0cmluZywgbmFtZXNwYWNlOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gb2YocG9kKS5waXBlKFxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQodGhpcy5zYW1lT3duZXJSZWZlcmVuY2UpLFxuICAgICAgZmlsdGVyKGkgPT4gISFpKSxcbiAgICAgIHN3aXRjaE1hcChkYXRhID0+IHRoaXMuZ2V0U291cmNlSW5mbyQoZGF0YSwgY2x1c3RlciwgbmFtZXNwYWNlKSksXG4gICAgICBwdWJsaXNoUmVmKCksXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0U291cmNlSW5mbyQoXG4gICAgcmVzb3VyY2U6IEt1YmVybmV0ZXNSZXNvdXJjZSxcbiAgICBjbHVzdGVyOiBzdHJpbmcsXG4gICAgbmFtZXNwYWNlOiBzdHJpbmcsXG4gICk6IE9ic2VydmFibGU8e1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBraW5kOiBzdHJpbmc7XG4gIH0+IHtcbiAgICBjb25zdCBvd25lclJlZiA9IHJlc291cmNlLm1ldGFkYXRhLm93bmVyUmVmZXJlbmNlcz8uWzBdO1xuICAgIC8vIOaXoCBvd25lclJlZu+8jOS4jeaYvuekulxuICAgIGlmICghb3duZXJSZWYpIHtcbiAgICAgIHJldHVybiBvZihudWxsKTtcbiAgICB9XG5cbiAgICBpZiAob3duZXJSZWYua2luZCAhPT0gJ1JlcGxpY2FTZXQnKSB7XG4gICAgICByZXR1cm4gb2Yoe1xuICAgICAgICBuYW1lOiBvd25lclJlZi5uYW1lLFxuICAgICAgICBraW5kOiBvd25lclJlZi5raW5kLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuazhzQXBpXG4gICAgICAuZ2V0UmVzb3VyY2U8S3ViZXJuZXRlc1Jlc291cmNlPih7XG4gICAgICAgIHR5cGU6IFJFU09VUkNFX1RZUEVTLlJFUExJQ0FfU0VULFxuICAgICAgICBuYW1lOiBvd25lclJlZi5uYW1lLFxuICAgICAgICBuYW1lc3BhY2UsXG4gICAgICAgIGNsdXN0ZXIsXG4gICAgICB9KVxuICAgICAgLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcChyZXNvdXJjZSA9PlxuICAgICAgICAgIHRoaXMuZ2V0U291cmNlSW5mbyQocmVzb3VyY2UsIGNsdXN0ZXIsIG5hbWVzcGFjZSksXG4gICAgICAgICksXG4gICAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBzYW1lT3duZXJSZWZlcmVuY2UoYTogUG9kLCBiOiBQb2QpIHtcbiAgICBjb25zdCBhUmVmID0gYS5tZXRhZGF0YS5vd25lclJlZmVyZW5jZXM/LlswXTtcbiAgICBjb25zdCBiUmVmID0gYi5tZXRhZGF0YS5vd25lclJlZmVyZW5jZXM/LlswXTtcbiAgICByZXR1cm4gYVJlZiAmJiBiUmVmICYmIGFSZWYubmFtZSA9PT0gYlJlZi5uYW1lICYmIGFSZWYua2luZCA9PT0gYlJlZi5raW5kO1xuICB9XG5cbiAgZGVsZXRlKHB2YzogUGVyc2lzdGVudFZvbHVtZUNsYWltLCBjbHVzdGVyOiBzdHJpbmcsIG5hbWVzcGFjZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuZGlhbG9nLm9wZW4oRGVsZXRlUHZjRGlhbG9nQ29tcG9uZW50LCB7XG4gICAgICBzaXplOiBEaWFsb2dTaXplLkJpZyxcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgcHZjLFxuICAgICAgICBjbHVzdGVyLFxuICAgICAgICBuYW1lc3BhY2UsXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgcmVidWlsZChwdmM6IFBlcnNpc3RlbnRWb2x1bWVDbGFpbSwgY2x1c3Rlcjogc3RyaW5nLCBuYW1lc3BhY2U6IHN0cmluZykge1xuICAgIHRoaXMuZGlhbG9nLm9wZW4oUmVidWlsZFZvbHVtZURpYWxvZ0NvbXBvbmVudCwge1xuICAgICAgc2l6ZTogRGlhbG9nU2l6ZS5CaWcsXG4gICAgICBkYXRhOiB7XG4gICAgICAgIHB2YyxcbiAgICAgICAgY2x1c3RlcixcbiAgICAgICAgbmFtZXNwYWNlLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIGdldFZvbHVtZVNuYXBzaG90RW5hYmxlZCQoeyBuYW1lc3BhY2UsIGNsdXN0ZXIgfTogV29ya3NwYWNlKSB7XG4gICAgcmV0dXJuIHRoaXMuazhzQXBpXG4gICAgICAuZ2V0UmVzb3VyY2VMaXN0KHtcbiAgICAgICAgdHlwZTogU1RPUkFHRV9SRVNPVVJDRV9UWVBFUy5WT0xVTUVfU05BUFNIT1QsXG4gICAgICAgIGNsdXN0ZXIsXG4gICAgICAgIG5hbWVzcGFjZSxcbiAgICAgIH0pXG4gICAgICAucGlwZShcbiAgICAgICAgY2F0Y2hFcnJvcigoKSA9PiBvZihmYWxzZSkpLFxuICAgICAgICBtYXAocmVzID0+ICEhcmVzKSxcbiAgICAgICAgcHVibGlzaFJlZigpLFxuICAgICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0U3RvcmFnZUNsYXNzTGlzdCQoeyBwcm9qZWN0LCBjbHVzdGVyIH06IFdvcmtzcGFjZSkge1xuICAgIHJldHVybiB0aGlzLmFjcEFwaVxuICAgICAgLmdldFJlc291cmNlc0J5UHJvamVjdDxTdG9yYWdlQ2xhc3M+KHByb2plY3QsIHtcbiAgICAgICAgY2x1c3RlcixcbiAgICAgICAgLi4uQ09NTU9OX1JFU09VUkNFX0RFRklOSVRJT05TLlNUT1JBR0VfQ0xBU1MsXG4gICAgICB9KVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcChyZXMgPT4gcmVzLml0ZW1zKSxcbiAgICAgICAgc2tpcEVycm9yKFtdIGFzIFN0b3JhZ2VDbGFzc1tdKSxcbiAgICAgICAgcHVibGlzaFJlZigpLFxuICAgICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Vm9sdW1lU25hcHNob3RMaXN0JCh7IGNsdXN0ZXIsIG5hbWVzcGFjZSB9OiBXb3Jrc3BhY2UpIHtcbiAgICByZXR1cm4gdGhpcy5rOHNBcGlcbiAgICAgIC5nZXRSZXNvdXJjZUxpc3Q8Vm9sdW1lU25hcHNob3Q+KHtcbiAgICAgICAgdHlwZTogU1RPUkFHRV9SRVNPVVJDRV9UWVBFUy5WT0xVTUVfU05BUFNIT1QsXG4gICAgICAgIGNsdXN0ZXIsXG4gICAgICAgIG5hbWVzcGFjZSxcbiAgICAgIH0pXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKHIgPT4gci5pdGVtcyksXG4gICAgICAgIHNraXBFcnJvcihbXSBhcyBWb2x1bWVTbmFwc2hvdFtdKSxcbiAgICAgICk7XG4gIH1cblxuICBwcml2YXRlIGdldFZvbHVtZVNuYXBzaG90Q2xhc3NMaXN0JCh7IGNsdXN0ZXIgfTogV29ya3NwYWNlKSB7XG4gICAgcmV0dXJuIHRoaXMuazhzQXBpXG4gICAgICAuZ2V0UmVzb3VyY2VMaXN0PFZvbHVtZVNuYXBzaG90Q2xhc3M+KHtcbiAgICAgICAgdHlwZTogUkVTT1VSQ0VfVFlQRVMuVk9MVU1FX1NOQVBTSE9UX0NMQVNTLFxuICAgICAgICBjbHVzdGVyLFxuICAgICAgfSlcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAociA9PiByLml0ZW1zKSxcbiAgICAgICAgc2tpcEVycm9yKFtdIGFzIFZvbHVtZVNuYXBzaG90Q2xhc3NbXSksXG4gICAgICApO1xuICB9XG5cbiAgZ2V0UHZjRXhwYW5kU3RhdGVGbiQod29ya3NwYWNlOiBXb3Jrc3BhY2UpOiBPYnNlcnZhYmxlPFBWQ0FjdGlvblN0YXRlRm4+IHtcbiAgICByZXR1cm4gY29tYmluZUxhdGVzdChbXG4gICAgICB0aGlzLnN0b3JhZ2VDbGFzc0xpc3RDYWNoZS5mZXRjaCh3b3Jrc3BhY2UpLFxuICAgICAgdGhpcy52b2x1bWVTbmFwc2hvdExpc3RDYXRjaC5mZXRjaCh3b3Jrc3BhY2UpLFxuICAgIF0pLnBpcGUoXG4gICAgICBtYXAoXG4gICAgICAgIChbc2NMaXN0LCB2c0xpc3RdKSA9PlxuICAgICAgICAgIChwdmM6IFBlcnNpc3RlbnRWb2x1bWVDbGFpbSwgbWFwcGVyPzogUFZDQWN0aW9uVG9vbHRpcE1hcHBlcikgPT5cbiAgICAgICAgICAgIHRoaXMuZ2V0UHZjRXhwYW5kU3RhdGUoe1xuICAgICAgICAgICAgICBwdmMsXG4gICAgICAgICAgICAgIHNjTGlzdCxcbiAgICAgICAgICAgICAgdnNMaXN0LFxuICAgICAgICAgICAgICBtYXBwZXIsXG4gICAgICAgICAgICB9KSxcbiAgICAgICksXG4gICAgICBzdGFydFdpdGgoKCkgPT4gbnVsbCksXG4gICAgICBwdWJsaXNoUmVmKCksXG4gICAgKTtcbiAgfVxuXG4gIGdldFB2Y1NuYXBzaG90U3RhdGVGbiQod29ya3NwYWNlOiBXb3Jrc3BhY2UpOiBPYnNlcnZhYmxlPFBWQ0FjdGlvblN0YXRlRm4+IHtcbiAgICByZXR1cm4gY29tYmluZUxhdGVzdChbXG4gICAgICB0aGlzLnNuYXBzaG90UGx1Z2luQ2FjaGUuZmV0Y2god29ya3NwYWNlKSxcbiAgICAgIHRoaXMuc3RvcmFnZUNsYXNzTGlzdENhY2hlLmZldGNoKHdvcmtzcGFjZSksXG4gICAgICB0aGlzLnZvbHVtZVNuYXBzaG90Q2xhc3NMaXN0Q2FjaGUuZmV0Y2god29ya3NwYWNlKSxcbiAgICAgIHRoaXMuc3RvcmFnZUNvbW1vblV0aWwuc3RvcmFnZURlc2NyaXB0aW9uTWFwQ2FjaGUuZmV0Y2gobnVsbCksXG4gICAgXSkucGlwZShcbiAgICAgIG1hcChcbiAgICAgICAgKFtwbHVnaW5FbmFibGVkLCBzY0xpc3QsIHZzY0xpc3QsIHN0b3JhZ2VEZXNjcmlwdGlvbkxpc3RdKSA9PlxuICAgICAgICAgIChwdmM6IFBlcnNpc3RlbnRWb2x1bWVDbGFpbSwgbWFwcGVyPzogUFZDQWN0aW9uVG9vbHRpcE1hcHBlcikgPT5cbiAgICAgICAgICAgIHRoaXMuZ2V0UHZjU25hcHNob3RTdGF0ZSh7XG4gICAgICAgICAgICAgIHB2YyxcbiAgICAgICAgICAgICAgc2NMaXN0LFxuICAgICAgICAgICAgICB2c2NMaXN0LFxuICAgICAgICAgICAgICBwbHVnaW5FbmFibGVkLFxuICAgICAgICAgICAgICBzdG9yYWdlRGVzY3JpcHRpb25MaXN0LFxuICAgICAgICAgICAgICBtYXBwZXIsXG4gICAgICAgICAgICB9KSxcbiAgICAgICksXG4gICAgICBzdGFydFdpdGgoKCkgPT4gbnVsbCksIC8vIHVzaW5nIGFzeW5jIHdpbGwgZW1pdCAnbnVsbCcgYW5kIHJlc3VsdCBpbiBlcnJvciBpbiBwdXJlIHBpcGVcbiAgICAgIHB1Ymxpc2hSZWYoKSxcbiAgICApO1xuICB9XG5cbiAgZ2V0UHZjRXhwYW5kU3RhdGUoe1xuICAgIHB2YyxcbiAgICBzY0xpc3QgPSBbXSxcbiAgICB2c0xpc3QgPSBbXSxcbiAgICBtYXBwZXIgPSBkZWZhdWx0UFZDRXhwYW5kVG9vbHRpcE1hcHBlcixcbiAgfToge1xuICAgIHB2YzogUGVyc2lzdGVudFZvbHVtZUNsYWltO1xuICAgIHNjTGlzdDogU3RvcmFnZUNsYXNzW107XG4gICAgdnNMaXN0OiBWb2x1bWVTbmFwc2hvdFtdO1xuICAgIG1hcHBlcj86IFBWQ0FjdGlvblRvb2x0aXBNYXBwZXI7XG4gIH0pIHtcbiAgICBjb25zdCBjYW5VcGRhdGUgPSBwdmNVcGRhdGVFbmFibGVkKHB2Yyk7XG5cbiAgICBjb25zdCBpc1N0YXRpY1B2YyA9IHB2Yy5zcGVjLnN0b3JhZ2VDbGFzc05hbWUgPT09ICcnO1xuXG4gICAgY29uc3Qgc2MgPSBzY0xpc3QuZmluZChcbiAgICAgIGl0ZW0gPT4gaXRlbS5tZXRhZGF0YS5uYW1lID09PSBwdmMuc3BlYy5zdG9yYWdlQ2xhc3NOYW1lLFxuICAgICk7XG5cbiAgICBsZXQgc3VwcG9ydEV4cGFuc2lvbiA9IGZhbHNlO1xuICAgIGxldCBpc1RvcG9MVk1QdmNXaXRoU25hcHNob3QgPSBmYWxzZTtcbiAgICBpZiAoc2MpIHtcbiAgICAgIHN1cHBvcnRFeHBhbnNpb24gPSB0aGlzLnN0b3JhZ2VDb21tb25VdGlsLmlzU3RvcmFnZUNsYXNzRmVhdHVyZVN1cHBvcnRlZChcbiAgICAgICAgc2MsXG4gICAgICAgIFN0b3JhZ2VjbGFzc0ZlYXR1cmUuRVhQQU5TSU9OLFxuICAgICAgKTtcbiAgICAgIGlzVG9wb0xWTVB2Y1dpdGhTbmFwc2hvdCA9XG4gICAgICAgIHNjLnByb3Zpc2lvbmVyID09PSBTdG9yYWdlUHJvdmlzaW9uZXIuVE9QT0xWTSAmJlxuICAgICAgICB2c0xpc3Quc29tZShcbiAgICAgICAgICBzbmFwc2hvdCA9PlxuICAgICAgICAgICAgZ2V0U3ViZG9tYWluTGFiZWwoJ3NuYXBzaG90JywgJ3NvdXJjZXB2YycsIHNuYXBzaG90KSA9PT1cbiAgICAgICAgICAgIHB2Yy5tZXRhZGF0YS5uYW1lLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IHB2Y1JlYnVpbGRpbmcgPSAhIWdldERvbWFpbkFubm90YXRpb24oJ3JlYnVpbGQnLCBwdmMpO1xuXG4gICAgY29uc3QgcHZjRGVsZXRpbmcgPSAhIXB2Yz8ubWV0YWRhdGE/LmRlbGV0aW9uVGltZXN0YW1wO1xuXG4gICAgY29uc3QgcmVhc29uID0gdGhpcy5nZXRQdmNFeHBhbmREaXNhYmxlZFJlYXNvbihcbiAgICAgIGNhblVwZGF0ZSxcbiAgICAgIHNjLFxuICAgICAgc3VwcG9ydEV4cGFuc2lvbixcbiAgICAgIHB2Y1JlYnVpbGRpbmcsXG4gICAgICBwdmNEZWxldGluZyxcbiAgICAgIGlzU3RhdGljUHZjLFxuICAgICAgaXNUb3BvTFZNUHZjV2l0aFNuYXBzaG90LFxuICAgICk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgZGlzYWJsZWQ6XG4gICAgICAgIHB2Y1JlYnVpbGRpbmcgfHxcbiAgICAgICAgcHZjRGVsZXRpbmcgfHxcbiAgICAgICAgIWNhblVwZGF0ZSB8fFxuICAgICAgICBpc1N0YXRpY1B2YyB8fFxuICAgICAgICBpc1RvcG9MVk1QdmNXaXRoU25hcHNob3QgfHxcbiAgICAgICAgIXN1cHBvcnRFeHBhbnNpb24sXG4gICAgICByZWFzb24sXG4gICAgICB0b29sdGlwOiBtYXBwZXIocmVhc29uKSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRQdmNFeHBhbmREaXNhYmxlZFJlYXNvbihcbiAgICBjYW5VcGRhdGU6IGJvb2xlYW4sXG4gICAgc2M6IFN0b3JhZ2VDbGFzcyxcbiAgICBzdXBwb3J0RXhwYW5kOiBib29sZWFuLFxuICAgIGlzUHZjUmVidWlsZGluZzogYm9vbGVhbixcbiAgICBpc1B2Y0RlbGV0aW5nOiBib29sZWFuLFxuICAgIGlzU3RhdGljUHZjOiBib29sZWFuLFxuICAgIGlzVG9wb0xWTVB2Y1dpdGhTbmFwc2hvdDogYm9vbGVhbixcbiAgKSB7XG4gICAgaWYgKGlzUHZjUmVidWlsZGluZykge1xuICAgICAgcmV0dXJuIFBWQ0V4cGFuZERpc2FibGVkUmVhc29uLlBWQ19SRUJVSUxESU5HO1xuICAgIH1cblxuICAgIGlmIChpc1B2Y0RlbGV0aW5nKSB7XG4gICAgICByZXR1cm4gUFZDRXhwYW5kRGlzYWJsZWRSZWFzb24uUFZDX0RFTEVUSU5HO1xuICAgIH1cblxuICAgIGlmICghc2MpIHtcbiAgICAgIHJldHVybiBpc1N0YXRpY1B2Y1xuICAgICAgICA/IFBWQ0V4cGFuZERpc2FibGVkUmVhc29uLldJVEhPVVRfU1RPUkFHRV9DTEFTU1xuICAgICAgICA6IFBWQ0V4cGFuZERpc2FibGVkUmVhc29uLlNUT1JBR0VfQ0xBU1NfTk9URk9VTkQ7XG4gICAgfVxuXG4gICAgaWYgKGlzVG9wb0xWTVB2Y1dpdGhTbmFwc2hvdCkge1xuICAgICAgcmV0dXJuIFBWQ0V4cGFuZERpc2FibGVkUmVhc29uLlRPUE9MVk1fUFZDX0VYSVNURURfU05BUFNIT1Q7XG4gICAgfVxuXG4gICAgaWYgKCFzdXBwb3J0RXhwYW5kKSB7XG4gICAgICByZXR1cm4gUFZDRXhwYW5kRGlzYWJsZWRSZWFzb24uU1RPUkFHRV9DTEFTU19GT1JCSUQ7XG4gICAgfVxuXG4gICAgaWYgKCFjYW5VcGRhdGUpIHtcbiAgICAgIHJldHVybiBQVkNFeHBhbmREaXNhYmxlZFJlYXNvbi5QVkNfU1RBVFVTX0ZPUkJJRDtcbiAgICB9XG4gIH1cblxuICBnZXRQdmNTbmFwc2hvdFN0YXRlKHtcbiAgICBwdmMsXG4gICAgc2NMaXN0ID0gW10sXG4gICAgdnNjTGlzdCA9IFtdLFxuICAgIHBsdWdpbkVuYWJsZWQgPSBmYWxzZSxcbiAgICBzdG9yYWdlRGVzY3JpcHRpb25MaXN0LFxuICAgIG1hcHBlciA9IGRlZmF1bHRQVkNTbmFwc2hvdFRvb2x0aXBNYXBwZXIsXG4gIH06IHtcbiAgICBwdmM6IFBlcnNpc3RlbnRWb2x1bWVDbGFpbTtcbiAgICBzY0xpc3Q6IFN0b3JhZ2VDbGFzc1tdO1xuICAgIHZzY0xpc3Q6IFZvbHVtZVNuYXBzaG90Q2xhc3NbXTtcbiAgICBwbHVnaW5FbmFibGVkOiBib29sZWFuO1xuICAgIHN0b3JhZ2VEZXNjcmlwdGlvbkxpc3Q6IFN0cmluZ01hcFtdO1xuICAgIG1hcHBlcj86IFBWQ0FjdGlvblRvb2x0aXBNYXBwZXI7XG4gIH0pIHtcbiAgICBjb25zdCBjYW5VcGRhdGUgPSBwdmNVcGRhdGVFbmFibGVkKHB2Yyk7XG5cbiAgICBjb25zdCBpc1N0YXRpY1B2YyA9IHB2Yz8uc3BlYz8uc3RvcmFnZUNsYXNzTmFtZSA9PT0gJyc7XG5cbiAgICBjb25zdCBzYyA9IHNjTGlzdC5maW5kKFxuICAgICAgaXRlbSA9PiBpdGVtLm1ldGFkYXRhLm5hbWUgPT09IHB2Yz8uc3BlYz8uc3RvcmFnZUNsYXNzTmFtZSxcbiAgICApO1xuXG4gICAgbGV0IHN1cHBvcnRTbmFwc2hvdCA9IGZhbHNlO1xuXG4gICAgaWYgKHNjKSB7XG4gICAgICBjb25zdCB0aGlyZFBhcnR5U25hcHNob3QgPVxuICAgICAgICB0aGlzLnN0b3JhZ2VDb21tb25VdGlsLmdldFRoaXJkUGFydHlTbmFwc2hvdFN1cHBvcnRlZChcbiAgICAgICAgICBzYyxcbiAgICAgICAgICBzdG9yYWdlRGVzY3JpcHRpb25MaXN0LFxuICAgICAgICApO1xuICAgICAgLy8gbnVsbCDooajnpLrmnKrljLnphY3liLDnrKzkuInmlrnnsbvlnovlrZjlgqhcbiAgICAgIHN1cHBvcnRTbmFwc2hvdCA9XG4gICAgICAgIHRoaXJkUGFydHlTbmFwc2hvdCA9PT0gbnVsbFxuICAgICAgICAgID8gaXNTdG9yYWdlQ2xhc3NTdXBwb3J0U25hcHNob3Qoc2MsIHZzY0xpc3QpXG4gICAgICAgICAgOiB0aGlyZFBhcnR5U25hcHNob3Q7XG4gICAgfVxuXG4gICAgY29uc3QgcHZjRGVsZXRpbmcgPSAhIXB2Yz8ubWV0YWRhdGE/LmRlbGV0aW9uVGltZXN0YW1wO1xuICAgIGNvbnN0IHB2Y0V4cGFuZGluZyA9XG4gICAgICB0b1VuaXRHaShwdmM/LnNwZWM/LnJlc291cmNlcz8ucmVxdWVzdHM/LnN0b3JhZ2UpID5cbiAgICAgIHRvVW5pdEdpKHB2Yz8uc3RhdHVzPy5jYXBhY2l0eT8uc3RvcmFnZSk7XG5cbiAgICBjb25zdCByZWFzb24gPSB0aGlzLmdldFB2Y1NuYXBzaG90RGlzYWJsZWRSZWFzb24oXG4gICAgICBjYW5VcGRhdGUsXG4gICAgICBzYyxcbiAgICAgIHBsdWdpbkVuYWJsZWQsXG4gICAgICBzdXBwb3J0U25hcHNob3QsXG4gICAgICBpc1N0YXRpY1B2YyxcbiAgICAgIHB2Y0RlbGV0aW5nLFxuICAgICAgcHZjRXhwYW5kaW5nLFxuICAgICk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgZGlzYWJsZWQ6XG4gICAgICAgIHB2Y0RlbGV0aW5nIHx8XG4gICAgICAgICFwbHVnaW5FbmFibGVkIHx8XG4gICAgICAgICFjYW5VcGRhdGUgfHxcbiAgICAgICAgcHZjRXhwYW5kaW5nIHx8XG4gICAgICAgIGlzU3RhdGljUHZjIHx8XG4gICAgICAgICFzdXBwb3J0U25hcHNob3QsXG4gICAgICByZWFzb24sXG4gICAgICB0b29sdGlwOiBtYXBwZXIocmVhc29uKSxcbiAgICB9O1xuICB9XG5cbiAgZ2V0UHZjVXBkYXRlRGlzYWJsZWRTdGF0ZShwdmM6IFBlcnNpc3RlbnRWb2x1bWVDbGFpbSkge1xuICAgIHJldHVybiBnZXREaXNhYmxlZFN0YXRlKFxuICAgICAgKCkgPT4gZ2V0UHZjUmVidWlsZGluZ0Rpc2FibGVkU3RhdGUocHZjKSxcbiAgICAgICgpID0+IGdldFB2Y0RlbGV0aW5nRGlzYWJsZWRTdGF0ZShwdmMpLFxuICAgICAgKCkgPT4gKHtcbiAgICAgICAgdG9vbHRpcDogJ3B2Y19zdGF0dXNfZm9yYmlkX3VwZGF0ZScsXG4gICAgICAgIGRpc2FibGVkOiAhcHZjVXBkYXRlRW5hYmxlZChwdmMpLFxuICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIEBiaW5kXG4gIGdldFB2Y1JlYnVpbGREaXNhYmxlZFN0YXRlJChcbiAgICBwdmM6IFBlcnNpc3RlbnRWb2x1bWVDbGFpbSxcbiAgICBjbHVzdGVyOiBzdHJpbmcsXG4gICAgbmFtZXNwYWNlOiBzdHJpbmcsXG4gICkge1xuICAgIGNvbnN0IGRhdGFTb3VyY2VOYW1lID0gcHZjPy5zcGVjPy5kYXRhU291cmNlPy5uYW1lO1xuICAgIGNvbnN0IHJlc291cmNlJCA9IGRhdGFTb3VyY2VOYW1lXG4gICAgICA/IHRoaXMuazhzQXBpXG4gICAgICAgICAgLmdldFJlc291cmNlKHtcbiAgICAgICAgICAgIHR5cGU6IFNUT1JBR0VfUkVTT1VSQ0VfVFlQRVMuVk9MVU1FX1NOQVBTSE9ULFxuICAgICAgICAgICAgY2x1c3RlcixcbiAgICAgICAgICAgIG5hbWVzcGFjZSxcbiAgICAgICAgICAgIG5hbWU6IGRhdGFTb3VyY2VOYW1lLFxuICAgICAgICAgIH0pXG4gICAgICAgICAgLnBpcGUoc2tpcEVycm9yKG51bGwpKVxuICAgICAgOiBvZihudWxsKTtcblxuICAgIHJldHVybiByZXNvdXJjZSQucGlwZShcbiAgICAgIG1hcChzbmFwc2hvdCA9PlxuICAgICAgICBnZXREaXNhYmxlZFN0YXRlKFxuICAgICAgICAgICgpID0+IGdldFB2Y1JlYnVpbGRpbmdEaXNhYmxlZFN0YXRlKHB2YyksXG4gICAgICAgICAgKCkgPT4gZ2V0UHZjRGVsZXRpbmdEaXNhYmxlZFN0YXRlKHB2YyksXG4gICAgICAgICAgKCkgPT4gKHtcbiAgICAgICAgICAgIGRpc2FibGVkOiBwdmM/LnNwZWM/LnN0b3JhZ2VDbGFzc05hbWUgPT09ICcnLFxuICAgICAgICAgICAgdG9vbHRpcDogJ29ubHlfc3VwcG9ydGVkX3JlYnVpbGRfZHluYW1pY19wdmMnLFxuICAgICAgICAgIH0pLFxuICAgICAgICAgICgpID0+ICh7XG4gICAgICAgICAgICBkaXNhYmxlZDogcHZjPy5zcGVjPy5kYXRhU291cmNlPy5uYW1lICYmICFzbmFwc2hvdCxcbiAgICAgICAgICAgIHRvb2x0aXA6ICdwdmNfZGF0YV9zb3VyY2Vfbm90X29wZXJhdGUnLFxuICAgICAgICAgIH0pLFxuICAgICAgICApLFxuICAgICAgKSxcbiAgICAgIHB1Ymxpc2hSZWYoKSxcbiAgICApO1xuICB9XG5cbiAgZ2V0UHZjRGVsZXRlRGlzYWJsZWRTdGF0ZShwdmM6IFBlcnNpc3RlbnRWb2x1bWVDbGFpbSkge1xuICAgIHJldHVybiBnZXREaXNhYmxlZFN0YXRlKCgpID0+IGdldFB2Y1JlYnVpbGRpbmdEaXNhYmxlZFN0YXRlKHB2YykpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRQdmNTbmFwc2hvdERpc2FibGVkUmVhc29uKFxuICAgIGNhblVwZGF0ZTogYm9vbGVhbixcbiAgICBzYzogU3RvcmFnZUNsYXNzLFxuICAgIHBsdWdpbkVuYWJsZWQ6IGJvb2xlYW4sXG4gICAgc3VwcG9ydFNuYXBzaG90OiBib29sZWFuLFxuICAgIGlzU3RhdGljUHZjOiBib29sZWFuLFxuICAgIGlzUHZjRGVsZXRpbmc6IGJvb2xlYW4sXG4gICAgaXNQdmNFeHBhbmRpbmc6IGJvb2xlYW4sXG4gICkge1xuICAgIGlmIChpc1B2Y0RlbGV0aW5nKSB7XG4gICAgICByZXR1cm4gUFZDU25hcHNob3REaXNhYmxlZFJlYXNvbi5QVkNfREVMRVRJTkc7XG4gICAgfVxuXG4gICAgaWYgKCFwbHVnaW5FbmFibGVkKSB7XG4gICAgICByZXR1cm4gUFZDU25hcHNob3REaXNhYmxlZFJlYXNvbi5TTkFQU0hPVF9QTFVHSU5fTk9UX0lOU1RBTExFRDtcbiAgICB9XG5cbiAgICBpZiAoIXNjKSB7XG4gICAgICByZXR1cm4gaXNTdGF0aWNQdmNcbiAgICAgICAgPyBQVkNTbmFwc2hvdERpc2FibGVkUmVhc29uLldJVEhPVVRfU1RPUkFHRV9DTEFTU1xuICAgICAgICA6IFBWQ1NuYXBzaG90RGlzYWJsZWRSZWFzb24uU1RPUkFHRV9DTEFTU19OT1RGT1VORDtcbiAgICB9XG5cbiAgICBpZiAoIXN1cHBvcnRTbmFwc2hvdCkge1xuICAgICAgcmV0dXJuIFtcbiAgICAgICAgU3RvcmFnZVByb3Zpc2lvbmVyLkNFUEhfRlNfSU5URVJOQUwsXG4gICAgICAgIFN0b3JhZ2VQcm92aXNpb25lci5DRVBIX0ZTX1JCRCxcbiAgICAgICAgU3RvcmFnZVByb3Zpc2lvbmVyLlRPUE9MVk0sXG4gICAgICBdLmluY2x1ZGVzKHNjLnByb3Zpc2lvbmVyKVxuICAgICAgICA/IFBWQ1NuYXBzaG90RGlzYWJsZWRSZWFzb24uU1RPUkFHRV9DTEFTU19GT1JCSURcbiAgICAgICAgOiBQVkNTbmFwc2hvdERpc2FibGVkUmVhc29uLlNOQVBTSE9UX1VOU1VQUE9SVEVEO1xuICAgIH1cblxuICAgIGlmICghY2FuVXBkYXRlKSB7XG4gICAgICByZXR1cm4gUFZDU25hcHNob3REaXNhYmxlZFJlYXNvbi5QVkNfU1RBVFVTX0ZPUkJJRDtcbiAgICB9XG5cbiAgICBpZiAoaXNQdmNFeHBhbmRpbmcpIHtcbiAgICAgIHJldHVybiBQVkNTbmFwc2hvdERpc2FibGVkUmVhc29uLlBWQ19FWFBBTkRJTkc7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { GenericStatusColor, GenericStatusIcon, } from '@alauda-fe/common';
|
|
2
|
+
export var StorageProvisioner;
|
|
3
|
+
(function (StorageProvisioner) {
|
|
4
|
+
StorageProvisioner["CEPH_FS_INTERNAL"] = "rook-ceph.cephfs.csi.ceph.com";
|
|
5
|
+
StorageProvisioner["CEPH_FS_RBD"] = "rook-ceph.rbd.csi.ceph.com";
|
|
6
|
+
StorageProvisioner["CEPH_OBJECT"] = "rook-ceph.ceph.rook.io/bucket";
|
|
7
|
+
StorageProvisioner["CEPH_COSI"] = "ceph.objectstorage.k8s.io";
|
|
8
|
+
StorageProvisioner["CEPH_FS"] = "ceph.com/cephfs";
|
|
9
|
+
// todo nfs功能已经下线部分,禁止再次创建,但是还是保留显示功能,未来可能完全下掉,可以把这里删除,然后那里有异常去掉那里
|
|
10
|
+
StorageProvisioner["NFS"] = "cpaas.io/nfs-client";
|
|
11
|
+
StorageProvisioner["TOPOLVM"] = "topolvm.cybozu.com";
|
|
12
|
+
StorageProvisioner["HUAWEI_CSI"] = "csi.huawei.com";
|
|
13
|
+
StorageProvisioner["NFS_CSI"] = "nfs.csi.k8s.io";
|
|
14
|
+
StorageProvisioner["CSTOR_CSI"] = "cstor.csi.openebs.io";
|
|
15
|
+
StorageProvisioner["MINIO"] = "minio.objectstorage.k8s.io";
|
|
16
|
+
})(StorageProvisioner || (StorageProvisioner = {}));
|
|
17
|
+
export const StorageType = {
|
|
18
|
+
FILE_STORAGE: 'file_storage',
|
|
19
|
+
OBJECT_STORAGE: 'object_storage',
|
|
20
|
+
BLOCK_STORAGE: 'block_storage',
|
|
21
|
+
};
|
|
22
|
+
export var StorageclassFeature;
|
|
23
|
+
(function (StorageclassFeature) {
|
|
24
|
+
StorageclassFeature["SNAPSHOT"] = "snapshot";
|
|
25
|
+
StorageclassFeature["EXPANSION"] = "expansion";
|
|
26
|
+
})(StorageclassFeature || (StorageclassFeature = {}));
|
|
27
|
+
export var VolumeBindingMode;
|
|
28
|
+
(function (VolumeBindingMode) {
|
|
29
|
+
VolumeBindingMode["Immediate"] = "Immediate";
|
|
30
|
+
VolumeBindingMode["WaitForFirstConsumer"] = "WaitForFirstConsumer";
|
|
31
|
+
})(VolumeBindingMode || (VolumeBindingMode = {}));
|
|
32
|
+
export var ReclaimPolicy;
|
|
33
|
+
(function (ReclaimPolicy) {
|
|
34
|
+
ReclaimPolicy["Retain"] = "Retain";
|
|
35
|
+
ReclaimPolicy["Delete"] = "Delete";
|
|
36
|
+
})(ReclaimPolicy || (ReclaimPolicy = {}));
|
|
37
|
+
export var PvcStatusEnum;
|
|
38
|
+
(function (PvcStatusEnum) {
|
|
39
|
+
PvcStatusEnum["processing"] = "processing";
|
|
40
|
+
PvcStatusEnum["bound"] = "bound";
|
|
41
|
+
PvcStatusEnum["invalid"] = "invalid";
|
|
42
|
+
PvcStatusEnum["waiting"] = "waiting_to_bind_after_mounting";
|
|
43
|
+
})(PvcStatusEnum || (PvcStatusEnum = {}));
|
|
44
|
+
export const PvcStatusColorMapper = {
|
|
45
|
+
[PvcStatusEnum.processing]: GenericStatusColor.Pending,
|
|
46
|
+
[PvcStatusEnum.waiting]: GenericStatusColor.Pending,
|
|
47
|
+
[PvcStatusEnum.bound]: GenericStatusColor.Running,
|
|
48
|
+
[PvcStatusEnum.invalid]: GenericStatusColor.Empty,
|
|
49
|
+
};
|
|
50
|
+
export const PvcStatusIconMapper = {
|
|
51
|
+
[PvcStatusEnum.processing]: GenericStatusIcon.Pending,
|
|
52
|
+
[PvcStatusEnum.waiting]: GenericStatusIcon.Pending,
|
|
53
|
+
[PvcStatusEnum.bound]: 'link_circle_s',
|
|
54
|
+
[PvcStatusEnum.invalid]: GenericStatusIcon.Invalid,
|
|
55
|
+
};
|
|
56
|
+
export var PvStatusEnum;
|
|
57
|
+
(function (PvStatusEnum) {
|
|
58
|
+
PvStatusEnum["AVAILABLE"] = "available";
|
|
59
|
+
PvStatusEnum["BOUND"] = "bound";
|
|
60
|
+
PvStatusEnum["WAITING_RECYCLE"] = "waiting_recycle";
|
|
61
|
+
PvStatusEnum["RECYCLE_FAILED"] = "recycle_failed";
|
|
62
|
+
})(PvStatusEnum || (PvStatusEnum = {}));
|
|
63
|
+
export const PvStatusColorMapper = {
|
|
64
|
+
[PvStatusEnum.AVAILABLE]: GenericStatusColor.Succeeded,
|
|
65
|
+
[PvStatusEnum.BOUND]: GenericStatusColor.Running,
|
|
66
|
+
[PvStatusEnum.WAITING_RECYCLE]: GenericStatusColor.Warning,
|
|
67
|
+
[PvStatusEnum.RECYCLE_FAILED]: GenericStatusColor.Failed,
|
|
68
|
+
};
|
|
69
|
+
export const PvStatusIconMapper = {
|
|
70
|
+
[PvStatusEnum.AVAILABLE]: GenericStatusIcon.Check,
|
|
71
|
+
[PvStatusEnum.BOUND]: 'link_circle_s',
|
|
72
|
+
[PvStatusEnum.WAITING_RECYCLE]: 'trash_circle_s',
|
|
73
|
+
[PvStatusEnum.RECYCLE_FAILED]: GenericStatusIcon.Error,
|
|
74
|
+
};
|
|
75
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL21vZHVsZXMvc3RvcmFnZS9zcmMvbGliL3R5cGVzL2NvbW1vbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUtMLGtCQUFrQixFQUNsQixpQkFBaUIsR0FDbEIsTUFBTSxtQkFBbUIsQ0FBQztBQUkzQixNQUFNLENBQU4sSUFBWSxrQkFhWDtBQWJELFdBQVksa0JBQWtCO0lBQzVCLHdFQUFrRCxDQUFBO0lBQ2xELGdFQUEwQyxDQUFBO0lBQzFDLG1FQUE2QyxDQUFBO0lBQzdDLDZEQUF1QyxDQUFBO0lBQ3ZDLGlEQUEyQixDQUFBO0lBQzNCLGtFQUFrRTtJQUNsRSxpREFBMkIsQ0FBQTtJQUMzQixvREFBOEIsQ0FBQTtJQUM5QixtREFBNkIsQ0FBQTtJQUM3QixnREFBMEIsQ0FBQTtJQUMxQix3REFBa0MsQ0FBQTtJQUNsQywwREFBb0MsQ0FBQTtBQUN0QyxDQUFDLEVBYlcsa0JBQWtCLEtBQWxCLGtCQUFrQixRQWE3QjtBQUVELE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRztJQUN6QixZQUFZLEVBQUUsY0FBYztJQUM1QixjQUFjLEVBQUUsZ0JBQWdCO0lBQ2hDLGFBQWEsRUFBRSxlQUFlO0NBQ3RCLENBQUM7QUFJWCxNQUFNLENBQU4sSUFBWSxtQkFHWDtBQUhELFdBQVksbUJBQW1CO0lBQzdCLDRDQUFxQixDQUFBO0lBQ3JCLDhDQUF1QixDQUFBO0FBQ3pCLENBQUMsRUFIVyxtQkFBbUIsS0FBbkIsbUJBQW1CLFFBRzlCO0FBbUJELE1BQU0sQ0FBTixJQUFZLGlCQUdYO0FBSEQsV0FBWSxpQkFBaUI7SUFDM0IsNENBQXVCLENBQUE7SUFDdkIsa0VBQTZDLENBQUE7QUFDL0MsQ0FBQyxFQUhXLGlCQUFpQixLQUFqQixpQkFBaUIsUUFHNUI7QUFFRCxNQUFNLENBQU4sSUFBWSxhQUdYO0FBSEQsV0FBWSxhQUFhO0lBQ3ZCLGtDQUFpQixDQUFBO0lBQ2pCLGtDQUFpQixDQUFBO0FBQ25CLENBQUMsRUFIVyxhQUFhLEtBQWIsYUFBYSxRQUd4QjtBQUVELE1BQU0sQ0FBTixJQUFZLGFBS1g7QUFMRCxXQUFZLGFBQWE7SUFDdkIsMENBQXlCLENBQUE7SUFDekIsZ0NBQWUsQ0FBQTtJQUNmLG9DQUFtQixDQUFBO0lBQ25CLDJEQUEwQyxDQUFBO0FBQzVDLENBQUMsRUFMVyxhQUFhLEtBQWIsYUFBYSxRQUt4QjtBQUVELE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHO0lBQ2xDLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxFQUFFLGtCQUFrQixDQUFDLE9BQU87SUFDdEQsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLEVBQUUsa0JBQWtCLENBQUMsT0FBTztJQUNuRCxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsRUFBRSxrQkFBa0IsQ0FBQyxPQUFPO0lBQ2pELENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxFQUFFLGtCQUFrQixDQUFDLEtBQUs7Q0FDbEQsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHO0lBQ2pDLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxFQUFFLGlCQUFpQixDQUFDLE9BQU87SUFDckQsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLEVBQUUsaUJBQWlCLENBQUMsT0FBTztJQUNsRCxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsRUFBRSxlQUFlO0lBQ3RDLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxFQUFFLGlCQUFpQixDQUFDLE9BQU87Q0FDbkQsQ0FBQztBQUVGLE1BQU0sQ0FBTixJQUFZLFlBS1g7QUFMRCxXQUFZLFlBQVk7SUFDdEIsdUNBQXVCLENBQUE7SUFDdkIsK0JBQWUsQ0FBQTtJQUNmLG1EQUFtQyxDQUFBO0lBQ25DLGlEQUFpQyxDQUFBO0FBQ25DLENBQUMsRUFMVyxZQUFZLEtBQVosWUFBWSxRQUt2QjtBQUVELE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHO0lBQ2pDLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxFQUFFLGtCQUFrQixDQUFDLFNBQVM7SUFDdEQsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLEVBQUUsa0JBQWtCLENBQUMsT0FBTztJQUNoRCxDQUFDLFlBQVksQ0FBQyxlQUFlLENBQUMsRUFBRSxrQkFBa0IsQ0FBQyxPQUFPO0lBQzFELENBQUMsWUFBWSxDQUFDLGNBQWMsQ0FBQyxFQUFFLGtCQUFrQixDQUFDLE1BQU07Q0FDekQsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHO0lBQ2hDLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxFQUFFLGlCQUFpQixDQUFDLEtBQUs7SUFDakQsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLEVBQUUsZUFBZTtJQUNyQyxDQUFDLFlBQVksQ0FBQyxlQUFlLENBQUMsRUFBRSxnQkFBZ0I7SUFDaEQsQ0FBQyxZQUFZLENBQUMsY0FBYyxDQUFDLEVBQUUsaUJBQWlCLENBQUMsS0FBSztDQUN2RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWNjZXNzTW9kZSxcbiAgVm9sdW1lTW9kZSxcbiAgVmFsdWVPZixcbiAgVHJhbnNsYXRpb24sXG4gIEdlbmVyaWNTdGF0dXNDb2xvcixcbiAgR2VuZXJpY1N0YXR1c0ljb24sXG59IGZyb20gJ0BhbGF1ZGEtZmUvY29tbW9uJztcblxuaW1wb3J0IHsgU3RvcmFnZVByb3ZpZGVyIH0gZnJvbSAnLi9pbnRlcm5hbCc7XG5cbmV4cG9ydCBlbnVtIFN0b3JhZ2VQcm92aXNpb25lciB7XG4gIENFUEhfRlNfSU5URVJOQUwgPSAncm9vay1jZXBoLmNlcGhmcy5jc2kuY2VwaC5jb20nLFxuICBDRVBIX0ZTX1JCRCA9ICdyb29rLWNlcGgucmJkLmNzaS5jZXBoLmNvbScsXG4gIENFUEhfT0JKRUNUID0gJ3Jvb2stY2VwaC5jZXBoLnJvb2suaW8vYnVja2V0JyxcbiAgQ0VQSF9DT1NJID0gJ2NlcGgub2JqZWN0c3RvcmFnZS5rOHMuaW8nLFxuICBDRVBIX0ZTID0gJ2NlcGguY29tL2NlcGhmcycsXG4gIC8vIHRvZG8gbmZz5Yqf6IO95bey57uP5LiL57q/6YOo5YiGLOemgeatouWGjeasoeWIm+W7uizkvYbmmK/ov5jmmK/kv53nlZnmmL7npLrlip/og70s5pyq5p2l5Y+v6IO95a6M5YWo5LiL5o6JLOWPr+S7peaKiui/memHjOWIoOmZpCznhLblkI7pgqPph4zmnInlvILluLjljrvmjonpgqPph4xcbiAgTkZTID0gJ2NwYWFzLmlvL25mcy1jbGllbnQnLFxuICBUT1BPTFZNID0gJ3RvcG9sdm0uY3lib3p1LmNvbScsXG4gIEhVQVdFSV9DU0kgPSAnY3NpLmh1YXdlaS5jb20nLFxuICBORlNfQ1NJID0gJ25mcy5jc2kuazhzLmlvJyxcbiAgQ1NUT1JfQ1NJID0gJ2NzdG9yLmNzaS5vcGVuZWJzLmlvJyxcbiAgTUlOSU8gPSAnbWluaW8ub2JqZWN0c3RvcmFnZS5rOHMuaW8nLFxufVxuXG5leHBvcnQgY29uc3QgU3RvcmFnZVR5cGUgPSB7XG4gIEZJTEVfU1RPUkFHRTogJ2ZpbGVfc3RvcmFnZScsXG4gIE9CSkVDVF9TVE9SQUdFOiAnb2JqZWN0X3N0b3JhZ2UnLFxuICBCTE9DS19TVE9SQUdFOiAnYmxvY2tfc3RvcmFnZScsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBTdG9yYWdlVHlwZSA9IFZhbHVlT2Y8dHlwZW9mIFN0b3JhZ2VUeXBlPjtcblxuZXhwb3J0IGVudW0gU3RvcmFnZWNsYXNzRmVhdHVyZSB7XG4gIFNOQVBTSE9UID0gJ3NuYXBzaG90JyxcbiAgRVhQQU5TSU9OID0gJ2V4cGFuc2lvbicsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RvcmFnZU9wdGlvbiB7XG4gIHByb3Zpc2lvbmVyOiBTdG9yYWdlUHJvdmlzaW9uZXI7XG4gIGdhdGU/OiBzdHJpbmc7XG4gIGNsdXN0ZXJHYXRlPzogc3RyaW5nO1xuICBtb2R1bGU/OiBzdHJpbmc7IC8vIOaPkuS7tuS4reW/g+S+nei1llxuICBwcm92aWRlcjogU3RvcmFnZVByb3ZpZGVyO1xuICB0eXBlPzogU3RvcmFnZVR5cGU7XG4gIGRpc3BsYXk/OiBUcmFuc2xhdGlvbjtcbiAgYWNjZXNzTW9kZXM6IEFjY2Vzc01vZGVbXTtcbiAgLyoqIGZlYXR1cmVz5a2X5q615Lit5pyJU3RvcmFnZWNsYXNzRmVhdHVyZS5TTkFQU0hPVOaJjeaciei/meS4qiAqL1xuICBzbmFwc2hvdEFjY2Vzc01vZGVzPzogQWNjZXNzTW9kZVtdO1xuICBmZWF0dXJlczogU3RvcmFnZWNsYXNzRmVhdHVyZVtdO1xuICB2b2x1bWVNb2RlczogVm9sdW1lTW9kZVtdO1xuICBzdXBwb3J0VHlwZXM/OiBTdG9yYWdlVHlwZVtdO1xuICBkaXNhYmxlZD86IGJvb2xlYW47IC8vIOWIm+W7uuWKn+iDveS4i+e6v++8jOS9huS/neeVmeW3suWIm+W7uuWKn+iDveeahOWxleekulxufVxuXG5leHBvcnQgZW51bSBWb2x1bWVCaW5kaW5nTW9kZSB7XG4gIEltbWVkaWF0ZSA9ICdJbW1lZGlhdGUnLFxuICBXYWl0Rm9yRmlyc3RDb25zdW1lciA9ICdXYWl0Rm9yRmlyc3RDb25zdW1lcicsXG59XG5cbmV4cG9ydCBlbnVtIFJlY2xhaW1Qb2xpY3kge1xuICBSZXRhaW4gPSAnUmV0YWluJyxcbiAgRGVsZXRlID0gJ0RlbGV0ZScsXG59XG5cbmV4cG9ydCBlbnVtIFB2Y1N0YXR1c0VudW0ge1xuICBwcm9jZXNzaW5nID0gJ3Byb2Nlc3NpbmcnLFxuICBib3VuZCA9ICdib3VuZCcsXG4gIGludmFsaWQgPSAnaW52YWxpZCcsXG4gIHdhaXRpbmcgPSAnd2FpdGluZ190b19iaW5kX2FmdGVyX21vdW50aW5nJyxcbn1cblxuZXhwb3J0IGNvbnN0IFB2Y1N0YXR1c0NvbG9yTWFwcGVyID0ge1xuICBbUHZjU3RhdHVzRW51bS5wcm9jZXNzaW5nXTogR2VuZXJpY1N0YXR1c0NvbG9yLlBlbmRpbmcsXG4gIFtQdmNTdGF0dXNFbnVtLndhaXRpbmddOiBHZW5lcmljU3RhdHVzQ29sb3IuUGVuZGluZyxcbiAgW1B2Y1N0YXR1c0VudW0uYm91bmRdOiBHZW5lcmljU3RhdHVzQ29sb3IuUnVubmluZyxcbiAgW1B2Y1N0YXR1c0VudW0uaW52YWxpZF06IEdlbmVyaWNTdGF0dXNDb2xvci5FbXB0eSxcbn07XG5cbmV4cG9ydCBjb25zdCBQdmNTdGF0dXNJY29uTWFwcGVyID0ge1xuICBbUHZjU3RhdHVzRW51bS5wcm9jZXNzaW5nXTogR2VuZXJpY1N0YXR1c0ljb24uUGVuZGluZyxcbiAgW1B2Y1N0YXR1c0VudW0ud2FpdGluZ106IEdlbmVyaWNTdGF0dXNJY29uLlBlbmRpbmcsXG4gIFtQdmNTdGF0dXNFbnVtLmJvdW5kXTogJ2xpbmtfY2lyY2xlX3MnLFxuICBbUHZjU3RhdHVzRW51bS5pbnZhbGlkXTogR2VuZXJpY1N0YXR1c0ljb24uSW52YWxpZCxcbn07XG5cbmV4cG9ydCBlbnVtIFB2U3RhdHVzRW51bSB7XG4gIEFWQUlMQUJMRSA9ICdhdmFpbGFibGUnLFxuICBCT1VORCA9ICdib3VuZCcsXG4gIFdBSVRJTkdfUkVDWUNMRSA9ICd3YWl0aW5nX3JlY3ljbGUnLFxuICBSRUNZQ0xFX0ZBSUxFRCA9ICdyZWN5Y2xlX2ZhaWxlZCcsXG59XG5cbmV4cG9ydCBjb25zdCBQdlN0YXR1c0NvbG9yTWFwcGVyID0ge1xuICBbUHZTdGF0dXNFbnVtLkFWQUlMQUJMRV06IEdlbmVyaWNTdGF0dXNDb2xvci5TdWNjZWVkZWQsXG4gIFtQdlN0YXR1c0VudW0uQk9VTkRdOiBHZW5lcmljU3RhdHVzQ29sb3IuUnVubmluZyxcbiAgW1B2U3RhdHVzRW51bS5XQUlUSU5HX1JFQ1lDTEVdOiBHZW5lcmljU3RhdHVzQ29sb3IuV2FybmluZyxcbiAgW1B2U3RhdHVzRW51bS5SRUNZQ0xFX0ZBSUxFRF06IEdlbmVyaWNTdGF0dXNDb2xvci5GYWlsZWQsXG59O1xuXG5leHBvcnQgY29uc3QgUHZTdGF0dXNJY29uTWFwcGVyID0ge1xuICBbUHZTdGF0dXNFbnVtLkFWQUlMQUJMRV06IEdlbmVyaWNTdGF0dXNJY29uLkNoZWNrLFxuICBbUHZTdGF0dXNFbnVtLkJPVU5EXTogJ2xpbmtfY2lyY2xlX3MnLFxuICBbUHZTdGF0dXNFbnVtLldBSVRJTkdfUkVDWUNMRV06ICd0cmFzaF9jaXJjbGVfcycsXG4gIFtQdlN0YXR1c0VudW0uUkVDWUNMRV9GQUlMRURdOiBHZW5lcmljU3RhdHVzSWNvbi5FcnJvcixcbn07XG4iXX0=
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
// @internal
|
|
2
|
+
export var StorageProvider;
|
|
3
|
+
(function (StorageProvider) {
|
|
4
|
+
StorageProvider["PLATFORM"] = "platform";
|
|
5
|
+
StorageProvider["THIRD_PARTY"] = "third_party";
|
|
6
|
+
})(StorageProvider || (StorageProvider = {}));
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJuYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9tb2R1bGVzL3N0b3JhZ2Uvc3JjL2xpYi90eXBlcy9pbnRlcm5hbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZO0FBQ1osTUFBTSxDQUFOLElBQVksZUFHWDtBQUhELFdBQVksZUFBZTtJQUN6Qix3Q0FBcUIsQ0FBQTtJQUNyQiw4Q0FBMkIsQ0FBQTtBQUM3QixDQUFDLEVBSFcsZUFBZSxLQUFmLGVBQWUsUUFHMUIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAaW50ZXJuYWxcbmV4cG9ydCBlbnVtIFN0b3JhZ2VQcm92aWRlciB7XG4gIFBMQVRGT1JNID0gJ3BsYXRmb3JtJyxcbiAgVEhJUkRfUEFSVFkgPSAndGhpcmRfcGFydHknLFxufVxuIl19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiazhzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy9zdG9yYWdlL3NyYy9saWIvdHlwZXMvazhzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBY2Nlc3NNb2RlLCBLdWJlcm5ldGVzUmVzb3VyY2UsIFN0cmluZ01hcCB9IGZyb20gJ0BhbGF1ZGEtZmUvY29tbW9uJztcblxuaW1wb3J0IHtcbiAgUmVjbGFpbVBvbGljeSxcbiAgU3RvcmFnZVByb3Zpc2lvbmVyLFxuICBWb2x1bWVCaW5kaW5nTW9kZSxcbn0gZnJvbSAnLi9jb21tb25zJztcblxuZXhwb3J0IGludGVyZmFjZSBWb2x1bWVTbmFwc2hvdENsYXNzIGV4dGVuZHMgS3ViZXJuZXRlc1Jlc291cmNlIHtcbiAgZHJpdmVyOiBzdHJpbmc7XG4gIHBhcmFtZXRlcnM/OiBTdHJpbmdNYXA7XG4gIGRlbGV0aW9uUG9saWN5Pzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFZvbHVtZVNuYXBzaG90IGV4dGVuZHMgS3ViZXJuZXRlc1Jlc291cmNlIHtcbiAgc3BlYzogVm9sdW1lU25hcHNob3RTcGVjO1xuICBzdGF0dXM/OiB7XG4gICAgYm91bmRWb2x1bWVTbmFwc2hvdENvbnRlbnROYW1lPzogc3RyaW5nO1xuICAgIHJlYWR5VG9Vc2U/OiBib29sZWFuO1xuICAgIGVycm9yPzogc3RyaW5nO1xuICAgIHJlc3RvcmVTaXplPzogc3RyaW5nO1xuICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFZvbHVtZVNuYXBzaG90U3BlYyB7XG4gIHZvbHVtZVNuYXBzaG90Q2xhc3NOYW1lOiBzdHJpbmc7XG4gIHNvdXJjZT86IHtcbiAgICBwZXJzaXN0ZW50Vm9sdW1lQ2xhaW1OYW1lPzogc3RyaW5nO1xuICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFN0b3JhZ2VDbGFzcyBleHRlbmRzIEt1YmVybmV0ZXNSZXNvdXJjZSB7XG4gIGFwaVZlcnNpb246ICdzdG9yYWdlLms4cy5pby92MSc7XG4gIGtpbmQ6ICdTdG9yYWdlQ2xhc3MnO1xuICBtb3VudE9wdGlvbnM/OiBzdHJpbmdbXTtcbiAgcGFyYW1ldGVycz86IFN0cmluZ01hcDtcbiAgcHJvdmlzaW9uZXI/OiBTdG9yYWdlUHJvdmlzaW9uZXI7XG4gIHJlY2xhaW1Qb2xpY3k/OiBSZWNsYWltUG9saWN5O1xuICB2b2x1bWVCaW5kaW5nTW9kZT86IFZvbHVtZUJpbmRpbmdNb2RlO1xuICBhbGxvd1ZvbHVtZUV4cGFuc2lvbj86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQnVja2V0Q2xhc3MgZXh0ZW5kcyBLdWJlcm5ldGVzUmVzb3VyY2Uge1xuICBraW5kOiAnQnVja2V0Q2xhc3MnO1xuICBkcml2ZXJOYW1lOiBTdG9yYWdlUHJvdmlzaW9uZXI7XG4gIGRlbGV0aW9uUG9saWN5PzogUmVjbGFpbVBvbGljeTtcbiAgaXNEZWZhdWx0QnVja2V0Q2xhc3M/OiBib29sZWFuO1xuICBwYXJhbWV0ZXJzPzogU3RyaW5nTWFwO1xuICBwcm90b2NvbD86IHtcbiAgICBzMzoge1xuICAgICAgcmVnaW9uOiBzdHJpbmc7XG4gICAgICBzaWduYXR1cmVWZXJzaW9uOiBzdHJpbmc7XG4gICAgfTtcbiAgfTtcbn1cblxuZXhwb3J0IHR5cGUgQ29tbW9uU3RvcmFnZUNsYXNzID0gU3RvcmFnZUNsYXNzIHwgQnVja2V0Q2xhc3M7XG5cbmV4cG9ydCB0eXBlIENvbW1vblN0b3JhZ2VDbGFzc0tpbmQgPSBDb21tb25TdG9yYWdlQ2xhc3MgZXh0ZW5kcyB7XG4gIGtpbmQ6IGluZmVyIEs7XG59XG4gID8gS1xuICA6IG5ldmVyO1xuXG5leHBvcnQgaW50ZXJmYWNlIENlcGhGU1BlcnNpc3RlbnRWb2x1bWVTb3VyY2Uge1xuICBtb25pdG9yczogc3RyaW5nW107XG4gIHBhdGg/OiBzdHJpbmc7XG4gIHNlY3JldFJlZjogU2VjcmV0UmVmZXJlbmNlO1xuICB1c2VyOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VjcmV0UmVmZXJlbmNlIHtcbiAgbmFtZTogc3RyaW5nO1xuICBuYW1lc3BhY2U6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQZXJzaXN0ZW50Vm9sdW1lU3BlYyBleHRlbmRzIFBlcnNpc3RlbnRWb2x1bWVTcGVjTWV0YSB7XG4gIGFjY2Vzc01vZGVzOiBbQWNjZXNzTW9kZV07XG4gIC8vIG51bGwg6KGo56S65L2/55So6buY6K6kIHNjXG4gIC8vIFwiXCIg5oiW5LiN5YaZ6K+l5a2X5q616KGo56S65LiN6K6+572u5a2Y5YKo57G7XG4gIHN0b3JhZ2VDbGFzc05hbWU/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGVyc2lzdGVudFZvbHVtZSBleHRlbmRzIEt1YmVybmV0ZXNSZXNvdXJjZSB7XG4gIGFwaVZlcnNpb246IHN0cmluZztcbiAga2luZDogc3RyaW5nO1xuICBzcGVjOiBQZXJzaXN0ZW50Vm9sdW1lU3BlYztcbiAgc3RhdHVzPzoge1xuICAgIHBoYXNlOiBzdHJpbmc7XG4gIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGVyc2lzdGVudFZvbHVtZVNwZWNNZXRhIHtcbiAgY2FwYWNpdHk6IHtcbiAgICBzdG9yYWdlOiBzdHJpbmc7XG4gIH07XG4gIGNsYWltUmVmPzoge1xuICAgIGFwaVZlcnNpb246IHN0cmluZztcbiAgICBraW5kOiAnUGVyc2lzdGVudFZvbHVtZUNsYWltJztcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgbmFtZXNwYWNlOiBzdHJpbmc7XG4gICAgdWlkOiBzdHJpbmc7XG4gIH07XG4gIHBlcnNpc3RlbnRWb2x1bWVSZWNsYWltUG9saWN5OiAnUmV0YWluJyB8ICdEZWxldGUnO1xuICBob3N0UGF0aD86IHtcbiAgICBwYXRoOiBzdHJpbmc7XG4gIH07XG4gIG5mcz86IHtcbiAgICBzZXJ2ZXI6IHN0cmluZztcbiAgICBwYXRoOiBzdHJpbmc7XG4gIH07XG4gIGNlcGhmcz86IENlcGhGU1BlcnNpc3RlbnRWb2x1bWVTb3VyY2U7XG4gIG1vdW50T3B0aW9ucz86IHN0cmluZ1tdO1xuICBjc2k/OiB7XG4gICAgZHJpdmVyPzogc3RyaW5nO1xuICAgIHJlYWRPbmx5PzogYm9vbGVhbjtcbiAgICAvKiog6K+l5a2X5q6155SxVUnnlJ/miJDvvIwg6ZyA5L+d6K+B6ZuG576k5ZSv5LiA77yMIOWPr+mHh+eUqHV1aWQgKi9cbiAgICB2b2x1bWVIYW5kbGU/OiBzdHJpbmc7XG4gICAgdm9sdW1lQXR0cmlidXRlczoge1xuICAgICAgLyoqIG5mcyDmnI3liqHnq6/lnLDlnYAgKi9cbiAgICAgIHNlcnZlcjogc3RyaW5nO1xuICAgICAgLyoqIG5mcyDmnI3liqHnq69mc+ebruW9lSAqL1xuICAgICAgc2hhcmU6IHN0cmluZztcbiAgICB9O1xuICB9O1xufVxuIl19
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { createResourceDefinitions } from '@alauda-fe/common';
|
|
2
|
+
export const VOLUME_SNAPSHOT_GROUP = 'snapshot.storage.k8s.io';
|
|
3
|
+
export const StorageResourceDefinitions = {
|
|
4
|
+
VOLUME_SNAPSHOT: {
|
|
5
|
+
type: 'volumesnapshots',
|
|
6
|
+
apiGroup: VOLUME_SNAPSHOT_GROUP,
|
|
7
|
+
apiVersion: 'v1',
|
|
8
|
+
},
|
|
9
|
+
};
|
|
10
|
+
const _ = createResourceDefinitions(StorageResourceDefinitions);
|
|
11
|
+
export const STORAGE_RESOURCE_DEFINITIONS = _.RESOURCE_DEFINITIONS;
|
|
12
|
+
export const STORAGE_RESOURCE_TYPES = _.RESOURCE_TYPES;
|
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2UtZGVmaW5pdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL21vZHVsZXMvc3RvcmFnZS9zcmMvbGliL3R5cGVzL3Jlc291cmNlLWRlZmluaXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFOUQsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcseUJBQXlCLENBQUM7QUFFL0QsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQUc7SUFDeEMsZUFBZSxFQUFFO1FBQ2YsSUFBSSxFQUFFLGlCQUFpQjtRQUN2QixRQUFRLEVBQUUscUJBQXFCO1FBQy9CLFVBQVUsRUFBRSxJQUFJO0tBQ2pCO0NBQ08sQ0FBQztBQUVYLE1BQU0sQ0FBQyxHQUFHLHlCQUF5QixDQUFDLDBCQUEwQixDQUFDLENBQUM7QUFFaEUsTUFBTSxDQUFDLE1BQU0sNEJBQTRCLEdBQUcsQ0FBQyxDQUFDLG9CQUFvQixDQUFDO0FBRW5FLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLENBQUMsQ0FBQyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVSZXNvdXJjZURlZmluaXRpb25zIH0gZnJvbSAnQGFsYXVkYS1mZS9jb21tb24nO1xuXG5leHBvcnQgY29uc3QgVk9MVU1FX1NOQVBTSE9UX0dST1VQID0gJ3NuYXBzaG90LnN0b3JhZ2UuazhzLmlvJztcblxuZXhwb3J0IGNvbnN0IFN0b3JhZ2VSZXNvdXJjZURlZmluaXRpb25zID0ge1xuICBWT0xVTUVfU05BUFNIT1Q6IHtcbiAgICB0eXBlOiAndm9sdW1lc25hcHNob3RzJyxcbiAgICBhcGlHcm91cDogVk9MVU1FX1NOQVBTSE9UX0dST1VQLFxuICAgIGFwaVZlcnNpb246ICd2MScsXG4gIH0sXG59IGFzIGNvbnN0O1xuXG5jb25zdCBfID0gY3JlYXRlUmVzb3VyY2VEZWZpbml0aW9ucyhTdG9yYWdlUmVzb3VyY2VEZWZpbml0aW9ucyk7XG5cbmV4cG9ydCBjb25zdCBTVE9SQUdFX1JFU09VUkNFX0RFRklOSVRJT05TID0gXy5SRVNPVVJDRV9ERUZJTklUSU9OUztcblxuZXhwb3J0IGNvbnN0IFNUT1JBR0VfUkVTT1VSQ0VfVFlQRVMgPSBfLlJFU09VUkNFX1RZUEVTO1xuIl19
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export var ResourceSize;
|
|
2
|
+
(function (ResourceSize) {
|
|
3
|
+
ResourceSize["SMALL"] = "small";
|
|
4
|
+
ResourceSize["MEDIUM"] = "medium";
|
|
5
|
+
ResourceSize["LARGE"] = "large";
|
|
6
|
+
ResourceSize["CUSTOMIZE"] = "customize";
|
|
7
|
+
})(ResourceSize || (ResourceSize = {}));
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2UtZXhwb3J0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL21vZHVsZXMvc3RvcmFnZS9zcmMvbGliL3R5cGVzL3Jlc291cmNlLWV4cG9ydHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBYUEsTUFBTSxDQUFOLElBQVksWUFLWDtBQUxELFdBQVksWUFBWTtJQUN0QiwrQkFBZSxDQUFBO0lBQ2YsaUNBQWlCLENBQUE7SUFDakIsK0JBQWUsQ0FBQTtJQUNmLHVDQUF1QixDQUFBO0FBQ3pCLENBQUMsRUFMVyxZQUFZLEtBQVosWUFBWSxRQUt2QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlc291cmNlTW9kZWwgfSBmcm9tICcuL3Jlc291cmNlLWludGVybmFscyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVzb3VyY2VTaXplVGlwIHtcbiAgc2l6ZTogUmVzb3VyY2VTaXplO1xuICB0aXA6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZXNvdXJjZVNwZWNpZmljYXRpb24ge1xuICBzaXplOiBSZXNvdXJjZVNpemU7XG4gIGxpbWl0cz86IFJlc291cmNlTW9kZWw7XG4gIHJlcXVlc3RzPzogUmVzb3VyY2VNb2RlbDtcbn1cblxuZXhwb3J0IGVudW0gUmVzb3VyY2VTaXplIHtcbiAgU01BTEwgPSAnc21hbGwnLFxuICBNRURJVU0gPSAnbWVkaXVtJyxcbiAgTEFSR0UgPSAnbGFyZ2UnLFxuICBDVVNUT01JWkUgPSAnY3VzdG9taXplJyxcbn1cbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2UtaW50ZXJuYWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy9zdG9yYWdlL3NyYy9saWIvdHlwZXMvcmVzb3VyY2UtaW50ZXJuYWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIFJlc291cmNlUmVxdWlyZW1lbnRzIHtcbiAgbGltaXRzPzoge1xuICAgIGNwdTogc3RyaW5nO1xuICAgIG1lbW9yeTogc3RyaW5nO1xuICB9O1xuICByZXF1ZXN0cz86IHtcbiAgICBjcHU6IHN0cmluZztcbiAgICBtZW1vcnk6IHN0cmluZztcbiAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZXNvdXJjZU1vZGVsIHtcbiAgY3B1OiB7XG4gICAgdmFsdWU6IG51bWJlcjtcbiAgICB1bml0OiAnY29yZScgfCAnbSc7XG4gIH07XG4gIG1lbW9yeToge1xuICAgIHZhbHVlOiBudW1iZXI7XG4gICAgdW5pdDogJ0dpJyB8ICdNaSc7XG4gIH07XG59XG4iXX0=
|