import { AccessMode, VolumeMode, K8sUtilService, K8sApiService, StringMap, CacheStore } from '@alauda-fe/common'; import { StorageclassFeature, StorageProvisioner } from '../types/commons'; import { CommonStorageClass, StorageClass } from '../types/k8s'; import * as i0 from "@angular/core"; export interface StorageSelectOption { key: string; value: string; isDefault: boolean; accessModes: AccessMode[]; blockAccessModes?: AccessMode[]; features: StorageclassFeature[]; volumeModes: VolumeMode[]; provisioner: StorageProvisioner; storageClass: StorageClass; displayName?: string; } export declare class StorageCommonUtilService { private readonly k8sUtil; private readonly k8sApi; readonly storageDescriptionMapCache: CacheStore; constructor(k8sUtil: K8sUtilService, k8sApi: K8sApiService); getStorageClassFeatures(storageClass: StorageClass): StorageclassFeature[]; isStorageClassFeatureSupported(storageclass: StorageClass, feature: StorageclassFeature): boolean; mapToStorageClassOption(sc: StorageClass, storageDescriptionMaps?: StringMap[], isFromSnapshot?: boolean): StorageSelectOption; isClusterSnapshotPluginEnabled$(cluster: string): import("rxjs").Observable; /** * 获取第三方快照能力支持情况,若返回 null 表示未匹配到三方存储 */ getThirdPartyFeatureSupported(sc: CommonStorageClass, storageDescriptionMaps: StringMap[], feature: StorageclassFeature): boolean | null; getStorageclassAccessModes(sc: CommonStorageClass, storageDescriptionMaps: StringMap[], isFromSnapshot: boolean): ("ReadWriteOnce" | "ReadOnlyMany" | "ReadWriteMany" | "ReadWriteOncePod")[]; getStorageclassVolumeModes(sc: CommonStorageClass, storageDescriptionMaps: StringMap[]): ("Filesystem" | "Block")[]; isAccessModeDisabled(accessMode: AccessMode, storageClassOption: StorageSelectOption, isBlock?: boolean): boolean; isVolumeModeDisabled(volumeMode: VolumeMode, storageClassOption: StorageSelectOption): boolean; private findStorageDescriptionMap; private getThirdPartyStorageclassAccessModes; private getThirdPartyStorageclassBlockAccessModes; private getThirdPartyStorageclassVolumeModes; /** * 解析 ConfigMap 中的 AccessModes 和 VolumeModes, 要求 cm 中的配置不区分大小,满足 AccessModes 或 VolumeModes 中定义即可 * * @example * ``` * const result = filterByAllowedValues(['ReadOnlyMany', 'Invalid'],['ReadOnlyMany', 'ReadWriteOnce', 'ReadWriteMany']) * console.log(result) // ['ReadOnlyMany'] * ``` */ private filterByAllowedValues; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵprov: i0.ɵɵInjectableDeclaration; }