diff --git a/frontend/packages/console-app/src/components/modals/clone/clone-pvc-modal.tsx b/frontend/packages/console-app/src/components/modals/clone/clone-pvc-modal.tsx index e48e008ae2fb..8692eebd4057 100644 --- a/frontend/packages/console-app/src/components/modals/clone/clone-pvc-modal.tsx +++ b/frontend/packages/console-app/src/components/modals/clone/clone-pvc-modal.tsx @@ -34,6 +34,7 @@ import { } from '@console/internal/components/utils'; import { useK8sGet } from '@console/internal/components/utils/k8s-get-hook'; import { HandlePromiseProps } from '@console/internal/components/utils/promise-component'; +import { StorageClassDropdown } from '@console/internal/components/utils/storage-class-dropdown'; import { NamespaceModel, PersistentVolumeClaimModel, @@ -46,13 +47,14 @@ import { StorageClassResourceKind, } from '@console/internal/module/k8s'; import { RedExclamationCircleIcon, isCephProvisioner } from '@console/shared'; -import { getRequestedPVCSize } from '@console/shared/src/selectors'; +import { getName, getRequestedPVCSize } from '@console/shared/src/selectors'; import { getPVCAccessModes, AccessModeSelector } from '../../access-modes/access-mode'; import './_clone-pvc-modal.scss'; const ClonePVCModal = withHandlePromise((props: ClonePVCModalProps) => { const { t } = useTranslation(); + const [storageClassName, setStorageClassName] = React.useState(''); const { close, cancel, resource, handlePromise, errorMessage, inProgress } = props; const { name: pvcName, namespace } = resource?.metadata; const baseValue = convertToBaseValue(getRequestedPVCSize(resource)); @@ -65,12 +67,19 @@ const ClonePVCModal = withHandlePromise((props: ClonePVCModalProps) => { const [requestedUnit, setRequestedUnit] = React.useState(defaultSize[1] || 'Ti'); const [validSize, setValidSize] = React.useState(true); const pvcAccessMode = getPVCAccessModes(resource, 'title'); + const handleStorageClass = (storageClass) => { + setStorageClassName(getName(storageClass)); + }; const [scResource, scResourceLoaded, scResourceLoadError] = useK8sGet( StorageClassModel, resource?.spec?.storageClassName, ); + const onlyPvcSCs = (scObj: StorageClassResourceKind) => + !scResourceLoadError && + scObj.provisioner.includes(scResource?.provisioner) && + scObj?.resource?.parameters?.encrypted === scResource?.parameters?.encrypted; const pvcUsedCapacityQuery: string = `kubelet_volume_stats_used_bytes{persistentvolumeclaim='${pvcName}'}`; const [response, error, loading] = usePrometheusPoll({ endpoint: PrometheusEndpoint.QUERY, @@ -103,7 +112,8 @@ const ClonePVCModal = withHandlePromise((props: ClonePVCModalProps) => { namespace: resource.metadata.namespace, }, spec: { - storageClassName: resource.spec.storageClassName, + // eslint-disable-next-line object-shorthand + storageClassName: storageClassName || resource.spec?.storageClassName, dataSource: { name: pvcName, kind: PersistentVolumeClaimModel.kind, @@ -186,6 +196,12 @@ const ClonePVCModal = withHandlePromise((props: ClonePVCModalProps) => { )} +

{t('console-app~PVC details')}

@@ -201,7 +217,7 @@ const ClonePVCModal = withHandlePromise((props: ClonePVCModalProps) => {

{t('console-app~StorageClass')}

- {resource.spec?.storageClassName || '-'} + {storageClassName || '-'}

diff --git a/frontend/public/module/k8s/types.ts b/frontend/public/module/k8s/types.ts index 5a516003bc1d..f7be31b33324 100644 --- a/frontend/public/module/k8s/types.ts +++ b/frontend/public/module/k8s/types.ts @@ -470,6 +470,11 @@ export type StorageClassResourceKind = { parameters?: { [key: string]: string; }; + resource?: { + parameters?: { + encrypted: string; + }; + }; } & K8sResourceCommon; export type ConfigMapKind = {